.pt-upload { width: 100%; max-width: 320px; padding: 1rem; border: 1px solid var(--color-border); border-radius: var(--radius-panel); background: var(--color-surface); color: var(--color-text); }
.pt-upload-label { display: block; font-weight: 600; margin-bottom: .6rem; }
.pt-upload-preview { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .6rem; min-height: 170px; padding: .75rem; margin-top: .5rem; border: 2px dashed var(--color-border); border-radius: var(--radius-control); background: var(--color-surface-alt); color: var(--color-primary); cursor: pointer; }
.pt-upload-preview:hover { border-color: var(--color-primary); }
.pt-upload-preview img { max-width: 100%; height: 150px; object-fit: contain; }
.pt-upload-preview i { font-size: 2.5rem; }
.pt-upload-status { font-size: .85rem; overflow-wrap: anywhere; margin: .75rem 0; }
.pt-upload-actions { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .5rem; }
.pt-upload [hidden] { display: none !important; }
.pt-upload.is-enhanced .pt-upload-input { position: absolute; width: 1px; height: 1px; padding: 0; clip-path: inset(50%); overflow: hidden; }
.pt-upload:focus-within .pt-upload-preview { border-color: var(--color-primary); }

/* Three upload slots share one row; side cards create a subtle depth effect. */
.upload-carousel { max-width: 470px; margin-inline: auto; }
.upload-carousel-stage { display: grid; gap: 1rem; }
.upload-carousel.is-enhanced .upload-carousel-stage { grid-template-columns: minmax(0, 1fr); perspective: 1000px; padding: .75rem 0 1rem; isolation: isolate; }
.upload-carousel.is-enhanced .pt-upload { grid-area: 1 / 1; justify-self: center; align-self: start; width: 78%; max-width: 340px; transition: transform .25s ease, opacity .25s ease; transform-origin: center; }
.upload-carousel .pt-upload.is-current { z-index: 2; box-shadow: 0 8px 24px rgb(21 35 43 / 10%); }
.upload-carousel .pt-upload.is-before { transform: translateX(-12%) scale(.88) rotateY(8deg); opacity: .45; pointer-events: none; z-index: 0; }
.upload-carousel .pt-upload.is-after { transform: translateX(12%) scale(.88) rotateY(-8deg); opacity: .45; pointer-events: none; z-index: 0; }
.upload-carousel-controls, .upload-carousel-pages { display: flex; align-items: center; justify-content: center; gap: .5rem; }
.upload-carousel-controls[hidden] { display: none; }
.upload-carousel-pages [aria-current="true"] { background: var(--color-primary); color: white; }
@media (prefers-reduced-motion: reduce) {
  .upload-carousel.is-enhanced .pt-upload { transition: none; }
}
