/* Shared modal surfaces and dismissal controls. Loaded after component styles. */
:root {
  --modal-radius: 8px;
  --modal-shadow: 0 28px 80px rgba(7, 10, 18, .3);
  --modal-backdrop: rgba(7, 10, 18, .68);
  --modal-close-inset: 16px;
  --modal-close-size: 44px;
  --modal-close-ink: #fff;
  --modal-close-surface: #121722;
  --modal-accent: #e71d36;
}

:is(.promo-quiz-dialog__shell, .modal-card, .mod-offer-dialog, .quiz-offer-dialog, .project-policy-dialog) {
  border-radius: var(--modal-radius);
  box-shadow: var(--modal-shadow);
}
:is(.modal-card, .mod-offer-dialog, .quiz-offer-dialog, .project-policy-dialog) { background: #fff; }
:is(.promo-quiz-dialog, .modal-bg, .mod-offer-backdrop, .quiz-offer-modal__backdrop) {
  background: var(--modal-backdrop);
  backdrop-filter: blur(4px);
}
.project-policy-dialog::backdrop { background: var(--modal-backdrop); backdrop-filter: blur(4px); }

:is(.promo-quiz-dialog__close, .modal-close, .mod-offer-close, .quiz-offer-dialog__close, .project-policy-close) {
  box-sizing: border-box;
  position: absolute;
  top: var(--modal-close-inset);
  right: var(--modal-close-inset);
  z-index: 4;
  display: grid;
  place-items: center;
  flex: 0 0 var(--modal-close-size);
  width: var(--modal-close-size);
  height: var(--modal-close-size);
  padding: 0;
  border: 1px solid #454b55;
  border-radius: 4px;
  color: var(--modal-close-ink);
  background: var(--modal-close-surface);
  box-shadow: 0 6px 18px rgba(7, 10, 18, .24);
  font-size: 0;
  line-height: 1;
  cursor: pointer;
  transition: background-color .15s ease, border-color .15s ease;
}
:is(.promo-quiz-dialog__close, .modal-close, .mod-offer-close, .quiz-offer-dialog__close, .project-policy-close)::before,
:is(.promo-quiz-dialog__close, .modal-close, .mod-offer-close, .quiz-offer-dialog__close, .project-policy-close)::after {
  content: '';
  position: absolute;
  width: 16px;
  height: 2px;
  border-radius: 1px;
  background: currentColor;
  transform: rotate(45deg);
}
:is(.promo-quiz-dialog__close, .modal-close, .mod-offer-close, .quiz-offer-dialog__close, .project-policy-close)::after { transform: rotate(-45deg); }
:is(.promo-quiz-dialog__close, .modal-close, .mod-offer-close, .quiz-offer-dialog__close, .project-policy-close):hover {
  background: var(--modal-accent);
  border-color: var(--modal-accent);
}
:is(.promo-quiz-dialog__close, .modal-close, .mod-offer-close, .quiz-offer-dialog__close, .project-policy-close):focus-visible {
  outline: 2px solid var(--modal-accent);
  outline-offset: 3px;
  box-shadow: 0 0 0 2px #fff;
}
:is(.promo-quiz-dialog, .quiz-offer-modal, .promo-quiz-dialog__close, .modal-close, .mod-offer-close, .quiz-offer-dialog__close, .project-policy-close)[hidden] { display: none; }
/* Nested dialogs expose only the active surface's dismissal control. */
body:has(.project-policy-dialog[open]) :is(.modal-close, .mod-offer-close, .quiz-offer-dialog__close, .promo-quiz-dialog__close),
body:has(.mod-offer-backdrop:not([hidden])) :is(.modal-close, .quiz-offer-dialog__close, .promo-quiz-dialog__close) { visibility: hidden; }

.modal-card { max-height: calc(100dvh - 40px); overflow-y: auto; overscroll-behavior: contain; }
.modal-card h3 { margin-right: 44px; }
.mod-offer-dialog { display: grid; grid-template-rows: auto minmax(0, 1fr); overflow: hidden; }
.mod-offer-head { grid-area: 1 / 1; padding-right: 76px; background: #fff; }
.mod-offer-close { grid-area: 1 / 1; position: relative; align-self: start; justify-self: end; }
.mod-offer-body { grid-area: 2 / 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.quiz-offer-dialog { display: flex; flex-direction: column; max-height: calc(100dvh - 40px); }
.quiz-offer-dialog__header { flex: 0 0 auto; grid-template-columns: 54px minmax(0, 1fr) var(--modal-close-size); padding: 16px; }
.quiz-offer-dialog__identity { min-width: 0; overflow-wrap: anywhere; }
.quiz-offer-dialog__body { min-height: 0; overflow-y: auto; overscroll-behavior: contain; }

@media (max-width: 600px) {
  :root { --modal-close-inset: 12px; }
  .quiz-offer-dialog { max-height: calc(100dvh - 56px); }
  .quiz-offer-dialog__header { grid-template-columns: 46px minmax(0, 1fr) var(--modal-close-size); padding: 12px; }
  .mod-offer-head { padding-right: 72px; }
}
@media (max-width: 520px) {
  /* The embedded chat continues to fill a phone screen. */
  .promo-quiz-dialog__shell { border-radius: 0; }
}
