.photo-upload{display:flex;flex-direction:column;gap:.75rem}.photo-upload-label{font-size:.9rem;font-weight:500;color:var(--color-text)}.photo-upload-hint{font-weight:400;color:var(--color-text-muted)}.photo-upload-input,.photo-upload-label--sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.photo-upload-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem 1.5rem;border:2px dashed var(--color-border);border-radius:12px;background:var(--color-bg-subtle);cursor:pointer;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease;text-align:center}.photo-upload-dropzone:hover{border-color:var(--color-brand);background:var(--color-bg-muted)}.photo-upload-dropzone.is-dragover{border-color:var(--color-brand);background:var(--color-surface);box-shadow:var(--focus-ring)}.photo-upload-dropzone.is-busy{opacity:.65;cursor:wait;pointer-events:none}.photo-upload-status{margin:0;font-size:.85rem;color:var(--color-text-muted)}.photo-upload-dropzone.is-full{padding:1rem 1.5rem;cursor:default}.photo-upload-icon{width:40px;height:40px;color:var(--color-text);opacity:.85}.photo-upload-title{margin:0;font-size:.95rem;font-weight:600;color:var(--color-text)}.photo-upload-subtitle{margin:0;font-size:.85rem;color:var(--color-text-muted);line-height:1.4}.photo-upload-browse{color:var(--color-brand);font-weight:600;text-decoration:underline;text-underline-offset:2px}.photo-upload-previews{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));grid-gap:.65rem;gap:.65rem}.photo-upload-tray{padding:.875rem;border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-surface);transition:border-color .15s ease,background-color .15s ease;max-height:min(30rem,65vh);overflow-y:auto;background-image:linear-gradient(var(--color-surface) 30%,rgba(255,255,255,0)),linear-gradient(rgba(255,255,255,0),var(--color-surface) 70%),linear-gradient(rgba(28,28,30,.11),rgba(28,28,30,0)),linear-gradient(rgba(28,28,30,0),rgba(28,28,30,.11));background-position:0 0,0 100%,0 0,0 100%;background-repeat:no-repeat;background-size:100% 2.25rem,100% 2.25rem,100% .7rem,100% .7rem;background-attachment:local,local,scroll,scroll}.photo-upload-tray.is-dragover{border-color:var(--color-baby-blue);background-color:var(--color-baby-blue-soft);background-image:none}.photo-upload-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:.75rem;gap:.75rem}@media (min-width:34rem){.photo-upload-gallery{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:48rem){.photo-upload-gallery{grid-template-columns:repeat(4,minmax(0,1fr))}}.photo-upload-tile{position:relative;aspect-ratio:3/4;border-radius:.5rem;overflow:hidden;background:var(--color-bg-muted);box-shadow:0 1px 1px rgba(28,28,30,.09),0 6px 14px -4px rgba(28,28,30,.16),inset 0 0 0 1px rgba(28,28,30,.07)}@keyframes photo-upload-deal{0%{opacity:0;transform:translateY(-.75rem) rotate(var(--deal-tilt,-4deg)) scale(.94)}to{opacity:1;transform:none}}.photo-upload-add-tile,.photo-upload-tile{animation:photo-upload-deal .42s cubic-bezier(.34,1.32,.64,1) backwards;animation-delay:calc(var(--deal-i, 0) * 45ms)}.photo-upload-tile:nth-child(2n){--deal-tilt:4.5deg}@media (hover:hover) and (pointer:fine){.photo-upload-tile{transition:box-shadow .18s ease}.photo-upload-tile:hover{box-shadow:0 2px 3px rgba(28,28,30,.12),0 12px 24px -6px rgba(28,28,30,.28);outline:2px solid var(--color-baby-blue);outline-offset:-2px}}@media (prefers-reduced-motion:reduce){.photo-upload-add-tile,.photo-upload-tile{animation:none}.photo-upload-tile{transition:none}}.photo-upload-tile img{width:100%;height:100%;object-fit:cover;display:block}.photo-upload-add-tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;aspect-ratio:3/4;padding:0;overflow:hidden;background:linear-gradient(158deg,#fbfdff,#f2f8fe 46%,#e8f3fd);color:var(--color-soft-blue-text);font-family:inherit;font-size:.8125rem;cursor:pointer;transition:border-color .15s ease,color .15s ease,box-shadow .15s ease,background .15s ease}.photo-upload-add-tile,.photo-upload-add-tile:before{border:1px dashed var(--color-baby-blue);border-radius:.5rem}.photo-upload-add-tile:before{content:"";position:absolute;inset:14% 14% -30% -30%;opacity:.8;transform:rotate(-9deg);transition:transform .22s ease,opacity .22s ease,border-color .22s ease;pointer-events:none}.photo-upload-add-tile:hover:not(:disabled){border-color:var(--color-soft-blue-text);background:linear-gradient(158deg,#f2f9ff,#e6f2fd 46%,#d7e9fa);color:var(--color-soft-blue-text);box-shadow:0 6px 16px -6px rgba(62,110,136,.3)}.photo-upload-add-tile:hover:not(:disabled):before{transform:rotate(-13deg) translate(-2px,-2px);opacity:1;border-color:var(--color-soft-blue-text)}.photo-upload-add-tile:hover:not(:disabled) .photo-upload-add-tile__mark{border-color:var(--color-soft-blue-text);background:#cfe6f8;color:var(--color-soft-blue-text)}.photo-upload-add-tile:disabled{opacity:.65;cursor:wait}.photo-upload-add-tile__label,.photo-upload-add-tile__mark{position:relative}.photo-upload-add-tile__mark{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:999px;border:1px solid var(--color-baby-blue);background:var(--color-baby-blue-soft);color:var(--color-soft-blue-text);font-size:1.25rem;line-height:1;transition:border-color .15s ease,background .15s ease,color .15s ease}@media (prefers-reduced-motion:reduce){.photo-upload-add-tile:before,.photo-upload-add-tile:hover:not(:disabled):before{transition:none;transform:rotate(-9deg)}}.photo-upload-preview{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;border:1px solid var(--color-border);background:var(--color-bg-muted)}.photo-upload-preview img{width:100%;height:100%;object-fit:cover;display:block}.photo-upload-remove{position:absolute;top:6px;right:6px;width:26px;height:26px;padding:0;border:none;border-radius:999px;background:rgba(0,0,0,.62);color:var(--color-text-light);font-size:1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease}.photo-upload-remove:hover{background:rgba(0,0,0,.82)}.photo-upload-add-more{align-self:flex-start;padding:.45rem .9rem;font-size:.85rem;font-weight:500;color:var(--color-text);background:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:8px;cursor:pointer;transition:border-color .15s ease,background .15s ease;font-family:inherit}.photo-upload-add-more:hover{border-color:var(--color-brand);background:var(--color-bg-muted)}.photo-upload-add-more:disabled{opacity:.65;cursor:wait}