.photo-upload{min-height:100vh;min-height:100dvh;padding:clamp(2rem,6vw,3.5rem) clamp(1.25rem,5vw,2rem) 3rem;max-width:480px;margin:0 auto;background:radial-gradient(ellipse 120% 80% at 50% -10%,color-mix(in srgb,var(--color-gold-light) 35%,transparent),transparent 55%),linear-gradient(180deg,var(--color-ivory) 0,var(--color-ivory-dark) 100%)}.photo-upload__header{text-align:center;margin-bottom:2rem}.photo-upload__eyebrow{font-family:var(--font-sans);font-size:.7rem;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--text-label);margin-bottom:.85rem}.photo-upload__names{font-size:clamp(2.6rem,11vw,3.4rem);color:var(--text-heading);line-height:1.05;margin-bottom:.5rem}.photo-upload__date{font-family:var(--font-serif);font-size:1.05rem;letter-spacing:.18em;color:var(--text-muted);margin-bottom:1.25rem}.photo-upload__hint{font-size:.92rem;color:var(--text-muted);line-height:1.55;max-width:28ch;margin:0 auto}.photo-upload__form{display:flex;flex-direction:column;gap:1.25rem;margin-bottom:2rem}.photo-upload__name-field{display:flex;flex-direction:column;gap:.45rem;text-align:left}.photo-upload__name-label{font-family:var(--font-sans);font-size:.78rem;font-weight:500;letter-spacing:.04em;color:var(--text-muted)}.photo-upload__name-input{width:100%;padding:.85rem 1rem;font-family:var(--font-sans);font-size:1rem;color:var(--text-body);background:color-mix(in srgb,var(--color-white) 92%,transparent);border:1px solid color-mix(in srgb,var(--color-primary) 18%,transparent);border-radius:12px;outline:none;transition:border-color .25s ease,box-shadow .25s ease}.photo-upload__name-input::placeholder{color:color-mix(in srgb,var(--text-muted) 70%,transparent)}.photo-upload__name-input:focus{border-color:var(--color-primary-light);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-gold) 28%,transparent)}.photo-upload__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem}.photo-upload__btn{display:inline-flex;align-items:center;justify-content:center;flex:1 1 140px;min-width:140px;max-width:220px;padding:1rem 1.25rem;font-family:var(--font-sans);font-size:.85rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--color-white);background:var(--color-primary);border:2px solid var(--color-primary);border-radius:var(--radius-pill);cursor:pointer;box-shadow:var(--shadow-soft);transition:var(--transition-smooth)}.photo-upload__btn-icon{width:1.15rem;height:1.15rem;margin-right:.5rem;flex-shrink:0}.photo-upload__btn--secondary{color:var(--color-primary);background:transparent;box-shadow:none}.photo-upload__btn:hover:not(.photo-upload__btn--disabled){background:var(--color-primary-light);border-color:var(--color-primary-light);color:var(--color-white);transform:translateY(-1px)}.photo-upload__btn--disabled{opacity:.65;cursor:wait}.photo-upload__input{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__list{list-style:none;display:flex;flex-direction:column;gap:.85rem}.photo-upload__item{display:grid;grid-template-columns:64px 1fr;grid-gap:.9rem;gap:.9rem;align-items:center;padding:.75rem;background:color-mix(in srgb,var(--color-white) 88%,transparent);border-radius:12px;border:1px solid color-mix(in srgb,var(--color-primary) 12%,transparent)}.photo-upload__thumb{width:64px;height:64px;border-radius:8px;background-size:cover;background-position:50%;background-color:var(--color-ivory-dark)}.photo-upload__filename{font-size:.78rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:.4rem}.photo-upload__progress-wrap{position:relative;height:6px;background:color-mix(in srgb,var(--color-primary) 12%,transparent);border-radius:999px;overflow:hidden;margin-bottom:.35rem}.photo-upload__progress-bar{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-gold));border-radius:inherit;transition:width .25s ease}.photo-upload__progress-label{display:block;font-size:.72rem;color:var(--text-muted)}.photo-upload__msg{font-size:.84rem;line-height:1.4;font-weight:500}.photo-upload__msg--ok{color:var(--color-primary)}.photo-upload__msg--err{color:#8b3a3a}.photo-upload__item--success{border-color:color-mix(in srgb,var(--color-gold) 40%,transparent)}.photo-upload__item--error{border-color:color-mix(in srgb,#8b3a3a 35%,transparent)}@media (min-width:640px){.photo-upload{padding-top:4rem}}