/* Scoped to physical-product upload and product detail galleries. */
.product-image-uploader { border:1px solid var(--border); border-radius:10px; padding:12px; margin:12px 0; min-width:0; }
.product-image-uploader legend { padding:0 5px; font-weight:600; }
.product-upload-options { display:flex; flex-wrap:wrap; gap:8px; }
.product-image-uploader .product-upload-help,.product-upload-status { font-size:.78rem; color:var(--text-muted); margin:8px 0; }
.product-upload-previews { list-style:none; padding:0; margin:10px 0 0; display:grid; grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); gap:10px; }
.product-upload-item { min-width:0; border:1px solid var(--border); border-radius:8px; overflow:hidden; background:var(--surface-alt); }
.product-upload-item img { display:block; width:100%; height:100px; object-fit:contain; }
.product-upload-name { display:block; padding:5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.7rem; }
.product-upload-actions { display:flex; gap:3px; padding:4px; flex-wrap:wrap; }
.product-upload-actions button,.product-share-fallback button { border:1px solid var(--border); border-radius:5px; padding:5px 7px; background:var(--surface); color:var(--text); cursor:pointer; min-height:30px; font:inherit; font-size:.75rem; }
.product-upload-actions button:disabled { opacity:.4; cursor:default; }
.product-detail-title { font-size:clamp(1.2rem,3vw,1.6rem); margin:0 28px 16px 0; overflow-wrap:anywhere; }
.product-gallery { min-width:0; }
.product-detail-grid { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
.product-detail-grid > * { min-width:0; }
.product-gallery-viewport { position:relative; border-radius:10px; background:var(--surface-alt); overflow:hidden; }
.product-gallery-track { display:flex; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; scrollbar-width:none; width:100%; }
.product-gallery-track::-webkit-scrollbar { display:none; }
.product-gallery-slide { flex:0 0 100%; min-width:0; scroll-snap-align:start; scroll-snap-stop:always; }
.product-gallery-slide img { display:block; width:100%; height:clamp(260px,52vh,560px); object-fit:contain; }
.product-gallery-arrow { position:absolute; top:45%; width:32px; height:42px; border:1px solid var(--border); border-radius:8px; background:var(--surface); color:var(--text); font-size:1.7rem; cursor:pointer; }
.product-gallery-arrow.previous { left:5px; }.product-gallery-arrow.next { right:5px; }
.product-gallery-arrow:disabled { opacity:.3; cursor:default; }
.product-gallery-tools { display:flex; align-items:center; gap:8px; justify-content:space-between; flex-wrap:wrap; padding-top:8px; }
.product-gallery-dots { display:flex; align-items:center; flex-wrap:wrap; justify-content:center; flex:1 1 150px; }
.product-gallery-dots button { width:24px; height:30px; padding:0; border:0; background:transparent; cursor:pointer; }
.product-gallery-dots button::after { content:''; display:block; margin:auto; width:7px; height:7px; border-radius:50%; background:var(--text-muted); opacity:.35; }
.product-gallery-dots button.active::after { background:var(--teal-600); opacity:1; transform:scale(1.2); }
.product-gallery-controls { display:flex; gap:6px; margin-left:auto; }
.product-gallery-controls button { display:flex; align-items:center; justify-content:center; width:36px; height:36px; border:1px solid var(--border); border-radius:50%; background:var(--surface); color:var(--text); cursor:pointer; }
.product-gallery-fav[aria-pressed="true"] { color:var(--danger); }
.product-gallery-counter { text-align:center; font-size:.72rem; color:var(--text-muted); margin:3px 0 8px; }
.product-gallery button:focus-visible,.product-gallery-track:focus-visible,.product-image-uploader button:focus-visible { outline:2px solid var(--teal-600); outline-offset:2px; }
.product-gallery-controls button:hover,.product-upload-actions button:hover { background:var(--surface-alt); }
.product-share-fallback { padding:10px; border:1px solid var(--border); border-radius:8px; font-size:.8rem; }
.product-share-fallback input { width:100%; margin:5px 0; }
@media (max-width:768px) { .product-detail-grid { grid-template-columns:1fr; }.product-gallery-slide img { height:clamp(280px,54vh,500px); }.product-upload-previews { grid-template-columns:repeat(auto-fill,minmax(110px,1fr)); } }
