:root{--primary-pink: #ff3366;--primary-glow: #ff6584;--soft-pink: #ff8fa3;--accent-gold: #ffd166;--accent-cyan: #00f5d4;--accent-purple: #c8b6ff;--text-main: #ffffff;--text-muted: #dcd4ec;--card-bg: rgba(26, 12, 38, .88);--card-border: rgba(255, 140, 180, .3);--card-shadow: 0 25px 60px rgba(0, 0, 0, .65), 0 0 35px rgba(255, 51, 102, .15);--radius-xl: 24px;--radius-lg: 18px;--radius-md: 12px}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{width:100%;min-height:100%;height:auto;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}body{font-family:Plus Jakarta Sans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--text-main);background:radial-gradient(circle at 50% 25%,#250f35,#140622 55%,#08020e);background-attachment:fixed;position:relative;display:flex;flex-direction:column;align-items:center}.music-toggle{position:fixed;top:16px;right:16px;z-index:1000;background:#230f32cc;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1.5px solid rgba(255,180,210,.35);border-radius:50px;padding:8px 16px;font-size:.86rem;font-weight:700;color:#fff;cursor:pointer;box-shadow:0 6px 20px #0006;display:flex;align-items:center;gap:6px;transition:all .3s cubic-bezier(.34,1.56,.64,1)}.music-toggle:hover{transform:scale(1.05);border-color:var(--accent-gold);box-shadow:0 8px 25px #ffd16659}.music-toggle.playing .music-icon{animation:spinMusic 3s linear infinite}@keyframes spinMusic{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.app-container{width:100%;max-width:500px;min-height:100vh;min-height:100dvh;position:relative;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:flex-start}.scene-screen{display:none;width:100%}.scene-screen.active{display:flex;flex-direction:column;align-items:center}.scene-screen:not(#scene-cake){min-height:100vh;min-height:100dvh;padding:70px 16px 60px;justify-content:flex-start;animation:fadeInScene .4s ease forwards}@keyframes fadeInScene{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}#scene-cake{position:fixed;top:0;left:0;width:100vw;height:100vh;height:100dvh;overflow:hidden;z-index:5}.cake-3d-viewport{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;touch-action:none;cursor:grab}.cake-3d-viewport:active{cursor:grabbing}.cake-floating-hud{position:absolute;bottom:24px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:12px;z-index:20;width:90%;max-width:360px;pointer-events:auto}.gesture-hint-pill{background:#190a24d1;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:6px 16px;border-radius:50px;font-size:.84rem;font-weight:700;color:#fff;border:1px solid rgba(255,180,210,.3);box-shadow:0 4px 16px #00000073;display:inline-flex;align-items:center;gap:6px;animation:pulseHint 2.5s ease-in-out infinite}@keyframes pulseHint{0%,to{opacity:.85;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}.btn-cake-action{width:100%;background:linear-gradient(135deg,#f36,#ff70a6);color:#fff;border:none;border-radius:50px;padding:16px 26px;font-size:1.05rem;font-weight:800;cursor:pointer;box-shadow:0 10px 28px #ff336673,0 0 15px #ff70a659;display:flex;align-items:center;justify-content:center;gap:10px;transition:all .3s cubic-bezier(.34,1.56,.64,1);animation:glowPulse 2.8s infinite}.btn-cake-action:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 14px 34px #f369}.btn-cake-action:active{transform:translateY(1px) scale(.98)}.btn-cake-action:disabled{opacity:.75;cursor:not-allowed;animation:none}@keyframes glowPulse{0%,to{box-shadow:0 10px 28px #ff336673}50%{box-shadow:0 14px 38px #ff3366a6,0 0 20px #ffd16659}}.celebration-overlay{display:none;position:absolute;top:0;right:0;bottom:0;left:0;background:#0a031066;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:35;align-items:flex-end;justify-content:center;padding:20px 16px 36px}.celebration-overlay.visible{display:flex;animation:fadeInOverlay .7s ease forwards}@keyframes fadeInOverlay{0%{opacity:0}to{opacity:1}}.celebration-banner-card{background:var(--card-bg);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1.5px solid var(--card-border);border-radius:var(--radius-xl);box-shadow:var(--card-shadow);padding:28px 22px;width:100%;max-width:420px;text-align:center;animation:slideUpCard .6s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes slideUpCard{0%{transform:translateY(60px) scale(.92);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.celebration-title{font-size:1.65rem;font-weight:800;color:var(--accent-gold);margin-bottom:8px;text-shadow:0 2px 12px rgba(255,209,102,.35)}.celebration-subtitle{font-size:.94rem;color:var(--text-muted);line-height:1.5;margin-bottom:22px;font-weight:500}.content-card{background:var(--card-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1.5px solid var(--card-border);border-radius:var(--radius-xl);box-shadow:var(--card-shadow);padding:32px 24px;width:100%;max-width:440px;display:flex;flex-direction:column;align-items:center;position:relative;margin-bottom:30px}.card-eyebrow{color:var(--soft-pink);font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:1.5px;margin-bottom:10px}.card-title{font-size:1.6rem;font-weight:800;color:var(--accent-gold);text-align:center;margin-bottom:8px;line-height:1.25;text-shadow:0 2px 10px rgba(255,209,102,.25)}.card-subtitle{font-size:.92rem;color:var(--text-muted);text-align:center;margin-bottom:22px;line-height:1.5;font-weight:500}.quote-envelope{background:#281237a6;border:1px solid rgba(255,140,180,.25);border-radius:var(--radius-md);padding:24px 20px;margin-bottom:24px;text-align:center;width:100%}.quote-text{font-family:Caveat,cursive;font-size:1.65rem;font-weight:700;color:#ff8fa3;line-height:1.35;margin-bottom:14px}.quote-divider{width:40px;height:2px;background:#ffd16680;margin:0 auto 14px;border-radius:2px}.quote-subtext{font-size:.92rem;color:var(--text-muted);line-height:1.55;font-weight:500}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;font-weight:800;border:none;cursor:pointer;border-radius:50px;transition:all .25s cubic-bezier(.34,1.56,.64,1);text-decoration:none}.btn-primary{background:linear-gradient(135deg,#f36,#ff70a6);color:#fff;box-shadow:0 8px 24px #f366;padding:14px 24px;font-size:1rem}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 12px 28px #ff33668c}.btn-primary:active{transform:translateY(1px)}.btn-secondary{background:#ffffff14;color:#fff;border:1px solid rgba(255,255,255,.25);padding:13px 22px;font-size:.95rem}.btn-secondary:hover{background:#ffffff29;border-color:var(--accent-gold);color:var(--accent-gold)}.btn-large{width:100%;padding:15px 24px;font-size:1.02rem}.btn-glow{animation:glowPulse 2.8s infinite}.quiz-box{width:100%;display:flex;flex-direction:column;align-items:center}.quiz-step-counter{font-size:.8rem;font-weight:800;color:var(--accent-cyan);text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px}.quiz-prompt{font-size:1.12rem;font-weight:600;text-align:center;line-height:1.45;color:#fff;margin-bottom:24px;min-height:50px}.quiz-actions-grid{display:flex;flex-direction:column;gap:12px;width:100%}.quiz-cheeky-notice{margin-top:14px;font-size:.9rem;font-weight:700;color:var(--accent-gold);min-height:22px;text-align:center;text-shadow:0 0 8px rgba(255,209,102,.35)}.reply-form{width:100%;display:flex;flex-direction:column;gap:18px}.form-field{display:flex;flex-direction:column;gap:6px;width:100%}.form-field.text-center{align-items:center}.form-label{font-size:.88rem;font-weight:600;color:#fff}.form-input,.form-textarea{width:100%;background:#ffffff0f;border:1px solid rgba(255,140,180,.35);border-radius:var(--radius-md);padding:12px 14px;font-family:inherit;font-size:.95rem;color:#fff;outline:none;transition:all .2s ease}.form-input::placeholder,.form-textarea::placeholder{color:#fff6}.form-input:focus,.form-textarea:focus{border-color:var(--primary-pink);background:#ffffff1f;box-shadow:0 0 0 3px #ff336640}.form-textarea{min-height:85px;resize:vertical}.rating-stars-row{display:flex;gap:8px;justify-content:center;margin-top:4px}.heart-rate-btn{background:transparent;border:none;font-size:1.8rem;cursor:pointer;padding:2px 4px;transition:transform .2s cubic-bezier(.34,1.56,.64,1);filter:grayscale(1) opacity(.3)}.heart-rate-btn.selected{filter:grayscale(0) opacity(1);transform:scale(1.15)}.heart-rate-btn:active{transform:scale(1.25)}.photo-dropzone{border:1.5px dashed rgba(255,112,166,.45);background:#ff336614;border-radius:var(--radius-md);padding:18px 14px;text-align:center;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;transition:all .2s ease}.photo-dropzone:hover,.photo-dropzone.dragover{background:#ff336629;border-color:var(--accent-gold);transform:scale(1.01)}.dropzone-icon{font-size:1.6rem}.dropzone-heading{font-size:.9rem;font-weight:700;color:#ff8fa3}.dropzone-caption{font-size:.78rem;color:var(--text-muted)}.file-input-hidden{display:none}.photo-gallery-preview{display:none;width:100%;margin-top:10px}.gallery-counter-tag{font-size:.82rem;font-weight:800;color:var(--accent-gold);margin-bottom:8px}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(75px,1fr));gap:8px}.gallery-thumb-item{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;box-shadow:0 4px 12px #0006;border:1.5px solid rgba(255,255,255,.4)}.gallery-thumb-img{width:100%;height:100%;object-fit:cover}.gallery-remove-btn{position:absolute;top:4px;right:4px;background:#000000bf;color:#fff;border:none;border-radius:50%;width:22px;height:22px;font-size:.75rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s}.gallery-remove-btn:hover{background:var(--primary-pink)}.upload-more-tile{aspect-ratio:1;border-radius:10px;border:1px dashed var(--primary-pink);background:#ff33661f;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#ff8fa3;font-size:.75rem;font-weight:700;cursor:pointer;transition:all .2s}.upload-more-tile:hover{background:#ff336638}.form-feedback-msg{font-size:.88rem;font-weight:700;color:var(--accent-gold);text-align:center;min-height:20px}.actions-stack{display:flex;flex-direction:column;gap:12px;width:100%;margin-top:16px}@media (max-width: 480px){.app-container{max-width:100%}.content-card{padding:24px 18px;border-radius:var(--radius-lg)}.card-title,.celebration-title{font-size:1.45rem}.btn-cake-action{padding:15px 22px;font-size:1rem}}
