:root{--bg: #fdf6f3;--card: #ffffff;--ink: #2c2320;--muted: #8a746c;--accent: #c8827a;--accent-dark: #a85f57;--border: #f0e0da;--success: #3f8a5c;--error: #c0392b;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.page{max-width:720px;margin:0 auto;padding:24px 16px 64px}.hero{text-align:center;margin-bottom:24px}.eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:13px;color:var(--accent-dark);font-weight:600;margin:0 0 8px}.hero h1{font-size:32px;margin:0 0 8px}.subtitle{color:var(--muted);margin:0 auto;max-width:480px;line-height:1.5}.upload-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px;margin-bottom:32px}.field{display:block;margin-bottom:14px}.field span{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}.field input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:10px;font-size:16px}.dropzone{border:2px dashed var(--border);border-radius:12px;padding:28px 16px;text-align:center;cursor:pointer;color:var(--muted);transition:border-color .15s ease,background .15s ease}.dropzone:hover{border-color:var(--accent);background:#fff9f7}.upload-queue{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.upload-item{display:flex;align-items:center;gap:10px;font-size:13px}.upload-name{flex:0 0 auto;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-track{flex:1;height:6px;background:var(--border);border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);transition:width .15s ease}.badge{font-size:12px;padding:2px 8px;border-radius:999px;white-space:nowrap}.badge-done{color:var(--success);background:#e7f5ec}.badge-error{color:var(--error);background:#fbe8e6}.hint{color:var(--muted);font-size:14px;text-align:center}.gallery-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.gallery-toolbar h2{margin:0;font-size:20px}.button{display:inline-block;padding:10px 16px;border-radius:999px;border:1px solid var(--border);background:var(--card);color:var(--ink);text-decoration:none;font-size:14px;font-weight:600;cursor:pointer}.button-primary{background:var(--accent);border-color:var(--accent);color:#fff}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.photo-card{margin:0;background:var(--card);border:1px solid var(--border);border-radius:12px;overflow:hidden}.photo-media{aspect-ratio:1 / 1;background:#f4e9e5}.photo-media img,.photo-media video{width:100%;height:100%;object-fit:cover;display:block}.photo-placeholder{width:100%;height:100%;background:linear-gradient(90deg,#f4e9e5 25%,#efe0da 37%,#f4e9e5 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}.photo-unavailable{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#f4e9e5;color:var(--muted);font-size:12px;text-align:center;padding:8px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.photo-card figcaption{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;font-size:12px}.uploader{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.photo-card button{border:none;background:none;cursor:pointer;font-size:16px}.footer{text-align:center;margin-top:32px}.footer a{color:var(--accent-dark);text-decoration:none;font-size:14px}.host-page{text-align:center}.qr-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:24px;display:inline-flex;flex-direction:column;align-items:center;gap:12px;margin:16px 0}.qr-url{font-size:13px;color:var(--muted);word-break:break-all}
