:root{--gold: #d4a574;--gold-light: #e8c9a0;--cream: #faf6f0;--dark: #2a1f1a;--dark-mid: #3d2b1f;--warm-gray: #8a7b6e;--blush: #f0d5c8;--sage: #a8b5a0;--error: #e57373;--success: #81c784}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,sans-serif;background:var(--dark);color:var(--cream);-webkit-font-smoothing:antialiased;min-height:100vh}a{color:var(--gold);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:600px;margin:0 auto;padding:0 1.5rem}.container-wide{max-width:1000px;margin:0 auto;padding:0 1.5rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.8rem 2rem;border-radius:30px;font-family:Inter,sans-serif;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .3s;border:none;text-decoration:none}.btn-primary{background:var(--gold);color:var(--dark)}.btn-primary:hover{background:var(--gold-light);transform:translateY(-1px);text-decoration:none}.btn-outline{background:transparent;color:var(--gold);border:1px solid var(--gold)}.btn-outline:hover{background:var(--gold);color:var(--dark);text-decoration:none}.btn-sm{padding:.5rem 1.2rem;font-size:.85rem}.btn:disabled{opacity:.5;cursor:not-allowed}.input,.textarea,.select{width:100%;padding:.8rem 1rem;background:#ffffff0d;border:1px solid rgba(212,165,116,.2);border-radius:8px;color:var(--cream);font-family:Inter,sans-serif;font-size:.95rem;transition:border-color .2s}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--gold)}.textarea{resize:vertical;min-height:120px;line-height:1.6}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.label{display:block;font-size:.85rem;color:var(--warm-gray);margin-bottom:.5rem;font-weight:500}.card-panel{background:#ffffff08;border:1px solid rgba(212,165,116,.1);border-radius:12px;padding:1.5rem}.heading-lg{font-family:Playfair Display,serif;font-size:clamp(1.5rem,5vw,2.2rem);color:var(--gold)}.heading-md{font-family:Playfair Display,serif;font-size:1.3rem;color:var(--gold)}.heading-sm{font-family:Caveat,cursive;font-size:1.2rem;color:var(--gold-light)}.text-muted{color:var(--warm-gray);font-size:.85rem}.text-center{text-align:center}.steps{display:flex;justify-content:center;gap:.5rem;padding:1.5rem 0}.step-dot{width:10px;height:10px;border-radius:50%;background:#d4a57433;transition:all .3s}.step-dot.active{background:var(--gold);transform:scale(1.3)}.step-dot.done{background:var(--gold);opacity:.6}.builder-page{min-height:100vh;display:flex;flex-direction:column;padding-bottom:100px}.builder-header{text-align:center;padding:1.5rem;border-bottom:1px solid rgba(212,165,116,.1)}.builder-header h1{font-family:Caveat,cursive;font-size:1.5rem;color:var(--gold)}.builder-content{flex:1;padding:2rem 1.5rem;max-width:600px;margin:0 auto;width:100%}.builder-footer{position:fixed;bottom:0;left:0;right:0;padding:1rem 1.5rem;background:#2a1f1af2;border-top:1px solid rgba(212,165,116,.15);display:flex;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:50}.occasion-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;padding:1rem 0}.occasion-card{padding:1.5rem 1rem;border-radius:12px;text-align:center;background:#ffffff08;border:1px solid rgba(212,165,116,.15);cursor:pointer;transition:all .3s}.occasion-card:hover{border-color:var(--gold);background:#d4a5740d}.occasion-card.selected{border-color:var(--gold);background:#d4a5741a}.occasion-emoji{font-size:2rem;margin-bottom:.5rem}.occasion-label{font-size:.9rem;color:var(--cream)}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.photo-thumb{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;border:1px solid rgba(212,165,116,.1)}.photo-thumb img{width:100%;height:100%;object-fit:cover}.photo-thumb-remove{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;background:#000000b3;color:#fff;border:none;cursor:pointer;font-size:.8rem;display:flex;align-items:center;justify-content:center}.photo-caption-input{width:100%;padding:.4rem;background:#00000080;border:none;color:var(--cream);font-size:.7rem;position:absolute;bottom:0;left:0;right:0}.photo-caption-input::placeholder{color:#fff6}.dropzone{border:2px dashed rgba(212,165,116,.3);border-radius:12px;padding:2rem;text-align:center;cursor:pointer;transition:all .3s;margin-bottom:1rem}.dropzone:hover,.dropzone.active{border-color:var(--gold);background:#d4a5740d}.dropzone-icon{font-size:2rem;margin-bottom:.5rem}.dropzone-text{color:var(--warm-gray);font-size:.9rem}.gift-options{display:flex;gap:.5rem;flex-wrap:wrap;margin:1rem 0}.gift-option{padding:.6rem 1.2rem;border-radius:20px;cursor:pointer;background:#ffffff0d;border:1px solid rgba(212,165,116,.2);color:var(--cream);font-size:.9rem;transition:all .2s}.gift-option:hover{border-color:var(--gold)}.gift-option.selected{border-color:var(--gold);background:#d4a57426;color:var(--gold)}.music-track{display:flex;align-items:center;gap:1rem;padding:.8rem;border-radius:8px;cursor:pointer;transition:all .2s;border:1px solid transparent}.music-track:hover{background:#ffffff08}.music-track.selected{border-color:var(--gold);background:#d4a5740d}.music-track-play{font-size:1.2rem}.music-track-info{flex:1}.music-track-name{font-size:.9rem;color:var(--cream)}.music-track-mood{font-size:.75rem;color:var(--warm-gray)}.checkout-summary{margin:1.5rem 0}.checkout-row{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid rgba(212,165,116,.1)}.checkout-row:last-child{border-bottom:none;font-weight:600;color:var(--gold)}.checkout-total{font-size:1.1rem}.spinner{display:inline-block;width:20px;height:20px;border:2px solid rgba(212,165,116,.3);border-top-color:var(--gold);border-radius:50%;animation:spinAnim .6s linear infinite}@keyframes spinAnim{to{transform:rotate(360deg)}}.toast{position:fixed;bottom:80px;left:50%;transform:translate(-50%);padding:.8rem 1.5rem;border-radius:8px;font-size:.85rem;background:var(--dark-mid);border:1px solid var(--gold);color:var(--cream);z-index:200;animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translate(-50%) translateY(20px);opacity:0}}
