.photo-capture{width:100%;border:2px dashed var(--border);border-radius:var(--radius);overflow:hidden;background:#faf9f6;transition:border-color .2s}.photo-feedback{padding:10px 16px;font-size:.875rem;font-weight:500;text-align:center}.photo-feedback--ok{background:#e8f5ee;color:#1a8754}.photo-feedback--warn{background:#fff8e1;color:#b45309}.photo-feedback--error{background:#fdecea;color:#c0392b}.photo-idle{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:40px 24px}.photo-icon{font-size:2.5rem}.photo-hint{font-size:.9rem;color:var(--ink);font-weight:500}.photo-subhint{font-size:.8rem;color:var(--ink-secondary);margin-top:-4px}.photo-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:4px}.photo-camera,.camera-wrap{position:relative}.camera-feed{width:100%;aspect-ratio:1;object-fit:cover;display:block}.camera-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.scan-bar{padding:8px;text-align:center;font-size:.85rem;font-weight:600;transition:background .3s}.scan-bar--scanning{background:#fff8e1;color:#b45309}.scan-bar--ok{background:#e8f5ee;color:#1a8754}.camera-controls{display:flex;justify-content:center;gap:12px;padding:12px 16px;background:var(--white)}.shutter-btn:disabled{opacity:.4;cursor:not-allowed}.photo-preview{position:relative}.preview-img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.preview-badge{position:absolute;top:12px;left:12px;background:#ffffffeb;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:6px 12px;border-radius:20px;font-size:.8rem;font-weight:600;color:#1a8754}.retake-btn{position:absolute;bottom:12px;right:12px;background:#ffffffeb;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-size:.8rem;padding:8px 16px}.page-wrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:20px 24px 64px;gap:28px}.wedding-header{text-align:center;padding:20px;background:#fff8ed;border-radius:20px}.bride-groom{font-size:30px;font-weight:700;color:#0071ce;margin:10px 0;display:grid}.wedding-tagline{color:#6b7280;font-style:italic;font-size:16px;margin-bottom:10px}.heart{color:#f59e0b;margin:0 15px}.line{width:120px;height:2px;background:#fbbf24;margin:0 auto}.register-hero{text-align:center}.register-hero h1{font-size:clamp(2rem,5vw,2.75rem);letter-spacing:-1.5px;line-height:1.1;color:var(--ink)}.register-hero p{margin-top:10px;color:var(--ink-secondary);font-size:.95rem}.register-form{width:100%;max-width:460px;padding:32px;display:flex;flex-direction:column;gap:20px}.form-label{display:flex;align-items:center;gap:5px}.optional{font-weight:400;text-transform:none;letter-spacing:0;color:#aaa;font-size:.75rem}.form-hint{font-size:.75rem;color:#aaa;text-align:right}.submit-btn{margin-top:4px;padding:14px;font-size:1rem}.success-card{width:100%;max-width:380px;padding:48px 32px;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}.success-icon-wrap{margin-bottom:4px}.success-card h2{font-size:1.75rem;letter-spacing:-.5px}.success-name{font-size:1.05rem;color:var(--ink-secondary)}.success-phone{font-size:.9rem;color:var(--ink-secondary)}.success-photo{width:120px;height:120px;object-fit:cover;border-radius:50%;border:3px solid var(--accent);margin-top:8px}@media (max-width: 500px){.register-form{padding:24px 18px}}:root{--ink: #0d0d0d;--ink-secondary: #5a5a5a;--surface: #fff;--white: #ffffff;--accent: #0071CE;--accent-dim: #0071CE22;--accent-hover: #005a9e;--border: #e4e2dc;--success: #1a8754;--error: #c0392b;--radius: 14px;--radius-sm: 8px;--shadow: 0 4px 24px rgba(0,0,0,.08);--font-display: "Syne", sans-serif;--font-body: "Inter", sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{font-family:var(--font-body);background:var(--surface);color:var(--ink);min-height:100vh;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-display)}img{max-width:100%;display:block}button{cursor:pointer;font-family:var(--font-body);border:none;outline:none}input{font-family:var(--font-body)}.card{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:11px 24px;border-radius:var(--radius);font-size:.9rem;font-weight:600;transition:background .15s,transform .1s,opacity .15s}.btn:active{transform:scale(.97)}.btn-primary{background:var(--accent);color:var(--white)}.btn-primary:hover{background:var(--accent-hover)}.btn-outline{background:transparent;color:var(--accent);border:2px solid var(--accent)}.btn-outline:hover{background:var(--accent-dim)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-full{width:100%}.form-group{display:flex;flex-direction:column;gap:5px}.form-label{font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-secondary);display:flex;align-items:center;gap:5px}.form-input{padding:11px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:.9375rem;color:var(--ink);background:var(--white);transition:border-color .15s,box-shadow .15s}.form-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.form-input::placeholder{color:#c0beba}.alert{padding:12px 16px;border-radius:var(--radius-sm);font-size:.875rem;font-weight:500}.alert-error{background:#fdecea;color:var(--error);border:1px solid #f5c6c2}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:18px;height:18px;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.spinner-dark{border-color:var(--accent-dim);border-top-color:var(--accent)}
