/* Shared modal geometry and explicit dismiss control. */
:root { --modal-title-size:18px; --modal-close-size:var(--tap-target-adult,44px); --content-modal-padding-block:var(--content-modal-padding); --content-modal-width:460px; --content-modal-padding:24px; --modal-section-gap:12px; --modal-action-gap:16px; }
.fq-modal-shell:not(#badgeInfoModal) {
  box-sizing:border-box;
  padding:calc(10px + env(safe-area-inset-top)) calc(10px + env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) calc(10px + env(safe-area-inset-left)) !important;
}
.fq-modal-shell:not(#badgeInfoModal) > div {
  box-sizing:border-box !important; width:100% !important;
  max-width:var(--content-modal-width) !important;
  margin-left:auto !important; margin-right:auto !important;
}
.fq-modal-shell > div {
  box-sizing:border-box !important;
  padding:var(--content-modal-padding) var(--content-modal-padding) 32px !important;
  max-height:calc(100svh - 20px - env(safe-area-inset-top) - env(safe-area-inset-bottom)) !important;
  overflow-y:auto;
}
.fq-modal-shell > div > :last-child { margin-bottom:0; }
html[data-fq-app="child"] { --modal-close-size:var(--tap-target-child,48px); }
.modal-close-row {
  position:relative; height:var(--modal-close-size); min-height:var(--modal-close-size); flex:0 0 var(--modal-close-size);
  margin:calc(0px - var(--content-modal-padding-block)) 0 8px calc(0px - var(--content-modal-padding)) !important; padding:0; z-index:6;
}
button.modal-close {
  appearance:none; -webkit-appearance:none; position:absolute; top:0; left:0;
  display:block; box-sizing:border-box; width:var(--modal-close-size); min-width:var(--modal-close-size); max-width:var(--modal-close-size);
  height:var(--modal-close-size); min-height:var(--modal-close-size); max-height:var(--modal-close-size); margin:0; padding:0;
  border:0; border-radius:50%; background:radial-gradient(circle at center,var(--red,#e9152d) 11px,transparent 11px); color:var(--paper);
  font-size:0; line-height:1; box-shadow:none; cursor:pointer;
  touch-action:manipulation; flex:0 0 auto;
}
button.modal-close::before, button.modal-close::after {
  content:""; position:absolute; left:50%; top:50%;
  width:10px; height:1.5px; border-radius:2px; background:var(--paper);
  transform:translate(-50%,-50%) rotate(45deg);
}
button.modal-close::after { transform:translate(-50%,-50%) rotate(-45deg); }
button.modal-close:focus-visible { outline:3px solid var(--red,#e9152d); outline-offset:2px; }
button.modal-close:active { filter:brightness(.88); }
/* Restore full-width titles below the separate compact close row. */
.modal-close-row + :not(.ed-title-a11y) { margin-top:0; }
#imageryModal .im-head { padding-top:0; }
#imageryModal .im-title { margin-top:0; }
#quizModal .qz-done { padding-top:0; }

/* Content follows the common close hitbox with an 8px gap. */
.fq-modal-shell > div > :not(.modal-close-row) { min-width:0; overflow-wrap:anywhere; }
#quizModal > .qz-card, #imageryModal > .im-card { overflow:hidden; }
#imageryModal #imBody { min-height:0; overflow-y:auto; overscroll-behavior:contain; }
#imageryModal #imBody > * { flex-shrink:0; }
#imageryModal .im-head { padding:0; }
#imageryModal .im-title { margin:0 0 var(--modal-section-gap); }
#imageryModal #imDetails { gap:var(--modal-section-gap); }
#imageryModal[data-im-view="prepare"] .im-body { gap:var(--modal-section-gap); }
#imageryModal[data-im-view="prepare"] .im-focus { margin-top:0; }
#imageryModal .im-footer { margin-top:var(--modal-action-gap); }
#imageryModal .im-done { margin-top:var(--modal-action-gap); }
#quizModal .qz-done { padding:0; }
#quizModal .qz-done > :last-child { margin-bottom:0; }
#quizModal .qz-body > :last-child { margin-bottom:0; }
#videoModal .video-modal-head { margin-bottom:var(--modal-section-gap); }
#videoModal .video-question { margin-top:var(--modal-section-gap); }
#videoModal .video-modal-foot { margin-top:var(--modal-action-gap); }
#gearModal .gear-title { margin-bottom:var(--modal-section-gap); }
#adoInfoOverlay .ado-info-ttl { margin-bottom:var(--modal-section-gap); }
#adoInfoOverlay .ado-info-row { margin-bottom:var(--modal-section-gap); }
#compAnnModal .ca-msg, #badgeInfoModal .bi-date { margin-bottom:0; }
.fq-modal-shell .ed-btns { margin-top:var(--modal-action-gap); margin-bottom:0; }
.fq-modal-shell .ed-card > .status:empty { min-height:0; margin:0; padding:0; }
.fq-modal-shell .ed-card .row > div { min-width:0; }
#compReportModal .cr-stars { gap:3px; }
#compReportModal .cr-star { flex:1 1 0; width:auto; min-width:0; max-width:var(--tap-target-child); }
