.app-shot-frame { position: relative; width: 100%; aspect-ratio: 2200 / 1400; }
/* Zoom the shared canvas, never just the raster beneath the SVG. The image
   remains in normal flow as an intrinsic-height fallback for older WebViews. */
.app-shot .app-shot-frame > img { display: block; width: 100%; min-width: 0; max-width: none; height: auto; }
/* Explicit edges also work in older Android WebViews without inset support. */
.shot-overlay { position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%; pointer-events: none; user-select: none; }
.shot-overlay > svg { display: block; width: 100%; height: 100%; }
.shot-overlay text { font: 24px -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif; fill: #747983; font-variant-numeric: tabular-nums; white-space: pre; }
.shot-overlay [data-shot-fill] { fill: #0a6cff; }
.shot-toggle { display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; min-width: 28px; min-height: 28px; margin-left: 3px; }
.shot-toggle .icon { width: 12px; height: 12px; }
.shot-toggle:disabled { opacity: .45; cursor: default; }
@media (max-width: 640px) {
  .app-shot-frame { width: 150%; min-width: 500px; }
}
