/* Dialog frames depend on their purpose and viewport, never on transient copy. */
dialog {
  --dialog-height: 40rem;
  box-sizing: border-box;
  height: var(--dialog-height);
  max-height: calc(100dvh - 24px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
  overflow-y: auto;
  overscroll-behavior: contain;
}

#sign-in-dialog { --dialog-height: 19rem; }
#source-dialog { --dialog-height: 35rem; }
#qr-dialog { --dialog-height: 37rem; }
#my-claims-dialog { --dialog-height: 30rem; }
#claim-dialog { --dialog-height: 34rem; }
#menu-item-dialog { --dialog-height: 46rem; }
#business-auth-dialog { --dialog-height: 30rem; }
#menu-dialog, #menu-history-dialog { --dialog-height: 48rem; }

/* These dialogs already have an inner scrolling panel. */
.source-dialog .source-panel,
.camera-dialog .camera-panel {
  height: 100%;
  max-height: 100%;
  overflow-y: auto;
  overscroll-behavior: contain;
}

.camera-dialog #photo-status { flex-shrink: 0; }

/* Video metadata and camera failures must not move the following controls. */
#qr-video {
  display: block;
  height: 20rem;
  max-height: 40dvh;
  object-fit: cover;
}

/* Reserve room for routine feedback; longer messages remain scrollable. */
#magic-result,
#qr-status,
#menu-source-status,
#claim-dialog-status,
#business-auth-status {
  min-height: 3em;
  line-height: 1.5;
  overflow-wrap: anywhere;
}

#menu-source-status:empty { display: block; }

/* One shared plan and billing dialog, including nested photo upgrades. */
.mf-confirm{box-sizing:border-box;width:min(440px,calc(100vw - 32px));height:fit-content;margin:auto;padding:24px;border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--ink);box-shadow:0 24px 80px #17231233}
.mf-confirm::backdrop{background:#17231270}.mf-confirm h2{margin:0;font:700 22px/1.3 'Space Grotesk',sans-serif}.mf-confirm p{font-size:14px;line-height:1.5;color:var(--ink-soft)}.mf-confirm-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:10px;margin-top:24px}.mf-confirm .button{font-size:13px;min-height:44px}.mf-confirm:focus{outline:none}
.pro-dialog{width:min(500px,calc(100% - 24px));height:fit-content;min-height:20rem;padding:0;border:1px solid var(--line);border-radius:24px;background:var(--surface);color:var(--ink);box-shadow:0 24px 80px #17231226}
.pro-dialog[open]{display:flex;flex-direction:column;overflow:hidden}
.pro-dialog::backdrop{background:#17231275}
.pro-dialog-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:24px 24px 18px;border-bottom:1px solid var(--line);flex:none}
.pro-dialog h2{margin:0;font:700 26px/1.2 'Space Grotesk',sans-serif;letter-spacing:-.03em}
.pro-dialog-close{display:grid;place-items:center;width:44px;height:44px;flex:none;border:0;border-radius:12px;background:transparent;cursor:pointer}.pro-dialog-close:hover{background:var(--surface-strong)}.pro-dialog-close img{width:22px;height:22px}
.pro-dialog-state{margin:10px 0 0;font-size:13px;line-height:1.5;color:var(--ink-soft)}
.pro-dialog-body{flex:0 1 auto;min-height:0;padding:22px 24px 0;overflow-y:auto;overscroll-behavior:contain}
.pro-dialog-context{margin:0 0 16px;font-size:13px;line-height:1.5;color:var(--ink-soft)}
.pro-dialog-benefits{display:grid;gap:14px;list-style:none;margin:0;padding:0}
.pro-dialog-benefits li{display:flex;align-items:flex-start;gap:12px;font-size:14px;line-height:1.6}.pro-dialog-benefits img{width:20px;height:20px;flex:none;margin-top:2px}
.pro-offers{border:0;padding:0;margin:24px 0 0;min-width:0}.pro-offers>div{display:grid;gap:10px}
.pro-offer{display:flex;align-items:center;gap:12px;min-height:64px;padding:14px;border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer}
.pro-offer:has(input:checked){border-color:var(--accent-dark);background:var(--surface-strong);box-shadow:inset 0 0 0 1px var(--accent-dark)}
.pro-offer:has(input:disabled){opacity:.65;cursor:default}.pro-offer input{accent-color:var(--accent-dark);width:18px;height:18px;margin:0;flex:none}
.pro-offer-label{flex:1;font-size:14px;font-weight:700}.pro-offer-price{font-weight:700;font-size:18px;white-space:nowrap}.pro-offer-price small{display:block;font-size:11px;font-weight:500;color:var(--ink-soft);text-align:right}
.pro-dialog-detail{font-size:13px;line-height:1.6;color:var(--ink-soft);margin:18px 0 0}.pro-dialog-error{margin:16px 0 0;color:var(--danger);font-size:13px;line-height:1.5}
.pro-dialog-retry{min-height:44px;padding:8px 0;border:0;background:transparent;color:var(--accent-dark);text-decoration:underline;font:inherit;cursor:pointer}
.pro-dialog-footer{display:flex;flex-direction:column;gap:12px;flex:none;padding:22px 24px 24px}
.pro-dialog-footer p{margin:0;font-size:12px;line-height:1.6;color:var(--ink-soft);text-align:center}.pro-dialog-footer p:empty{display:none}.pro-dialog-footer .button{width:100%;min-height:48px;font-size:14px}
.pro-dialog :focus-visible{outline:3px solid var(--accent-dark);outline-offset:3px}
.bd-plan-status{display:inline-flex;align-items:center;border:0;border-radius:4px;background:none;color:var(--ink);padding:8px 10px;min-height:44px;font:600 12px/1.4 Manrope,sans-serif;cursor:pointer;white-space:nowrap;text-decoration:underline;text-underline-offset:3px}
.bd-plan-status:focus-visible{outline:3px solid var(--accent-dark);outline-offset:3px}
@media(max-width:520px){.pro-dialog-header{padding:18px 16px 14px}.pro-dialog-body{padding:18px 16px 0}.pro-dialog-footer{padding:18px 16px}.pro-dialog h2{font-size:24px}.bd-plan-status{max-width:115px;white-space:normal;padding:6px 8px;font-size:11px}}

#menu-item-dialog-feedback {
  flex-shrink: 0;
  margin: 0;
  min-height: 3em;
  padding: 12px 24px;
  line-height: 1.5;
  overflow-wrap: anywhere;
  max-height: 25%;
  overflow-y: auto;
}

/* Keep close controls visible while data, help text or validation changes. */
.bw-dialog[open],
.me-history[open],
#menu-dialog[open] {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.bw-dialog-heading,
.me-history > header,
.ba-dialog-top { flex-shrink: 0; }

#dialog-content,
.me-history-body,
#detail-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
}

.me-history-body { align-content: start; }

/* Focus belongs to a control inside the dialog, never a frame around it. */
dialog:focus,dialog:focus-visible{outline:none}
.mf-confirm,.me-confirm{position:fixed}
.mf-confirm>h2,#restore-publication-title{padding-right:28px}
.mf-confirm-close{position:absolute;right:16px;top:14px;background:none;border:0;border-radius:6px;color:var(--ink-soft);font:inherit;font-size:26px;line-height:1;padding:4px;cursor:pointer}

@media (max-width: 720px) {
  #sign-in-dialog { --dialog-height: 25rem; }
  #business-auth-dialog { --dialog-height: 33rem; }
}
