.review-image-upload {
  display: grid;
  gap: 10px;
  padding: 16px;
  border: 1px solid var(--place-color-border);
  border-radius: 16px;
}
.review-image-upload > div:first-child { display: flex; align-items: flex-end; justify-content: space-between; gap: 10px; }
.review-image-upload h2 { margin: 0; font-size: 17px; }
.review-image-upload h2 small { color: var(--place-color-text-muted); font-size: 12px; }
.review-image-upload p { margin: 0; color: var(--place-color-text-muted); font-size: 12px; line-height: 1.45; }
.review-image-upload label { position: relative; overflow: hidden; }
.review-image-upload label:has(input:focus-visible) { outline: 3px solid rgba(37,99,235,.35); outline-offset: 2px; }
.review-image-upload input[type=file] { position: absolute; width: 1px; height: 1px; opacity: 0; }
.review-image-preview { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
.review-image-preview:empty { display: none; }
.review-image-preview article { position: relative; display: grid; overflow: hidden; border-radius: 11px; background: #eee; aspect-ratio: 1; place-items: center; }
.review-image-preview img { width: 100%; height: 100%; object-fit: cover; }
.review-image-preview__unsupported { padding: 12px; color: #555; font-size: 12px; line-height: 1.4; text-align: center; }
.review-image-preview button { position: absolute; top: 5px; right: 5px; display: grid; width: 44px; height: 44px; border: 0; border-radius: 50%; background: rgba(0,0,0,.72); color: #fff; font-size: 22px; place-items: center; }
.review-gallery { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 6px; margin-top: 12px; }
.review-gallery button { min-width: 0; padding: 0; overflow: hidden; border: 0; border-radius: 10px; background: #eee; aspect-ratio: 1; cursor: zoom-in; }
.review-gallery img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .2s; }
.review-gallery button:hover img { transform: scale(1.035); }
.review-gallery button:focus-visible { outline: 3px solid #2563eb; outline-offset: 2px; }
.review-lightbox {
  position: fixed;
  z-index: 1000;
  inset: 0;
  display: grid;
  width: 100%;
  height: 100dvh;
  grid-template-columns: 54px minmax(0,1fr) 54px;
  align-items: center;
  gap: 8px;
  padding: max(18px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));
  background: rgba(0,0,0,.92);
  color: #fff;
}
.review-lightbox > button { display: grid; width: 46px; height: 46px; border: 1px solid rgba(255,255,255,.34); border-radius: 50%; background: rgba(0,0,0,.45); color: #fff; font-size: 24px; place-items: center; }
.review-lightbox--single { grid-template-columns: minmax(0,1fr); }
.review-lightbox > [data-review-lightbox-close] { position: absolute; z-index: 2; top: max(16px,env(safe-area-inset-top)); right: max(16px,env(safe-area-inset-right)); }
.review-lightbox figure { display: grid; min-width: 0; margin: 0; justify-items: center; gap: 10px; }
.review-lightbox img { max-width: 100%; max-height: calc(100dvh - 100px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); object-fit: contain; }
.review-lightbox figcaption { font-size: 13px; text-align: center; }
.review-lightbox-open { position: fixed; right: 0; left: 0; width: 100%; overflow: hidden; }
.review-image-help { padding-top: 3px; }
.review-existing-images button { min-height: 44px; padding: 7px 10px; }
@media (max-width: 420px) {
  .review-image-preview,.review-gallery { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .review-lightbox { grid-template-columns: 44px minmax(0,1fr) 44px; padding: max(10px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left)); }
  .review-lightbox > button { width: 44px; height: 44px; }
  .review-lightbox > [data-review-lightbox-close] { top: max(10px,env(safe-area-inset-top)); right: max(10px,env(safe-area-inset-right)); }
}
