:root{--pastel-yellow: #f59e0b;--pastel-yellow-light: #fff8db;--pastel-orange: #ff8c52;--pastel-orange-light: #ffede0;--pastel-red: #ff5e6c;--pastel-red-light: #ffe5e8;--bg-primary: #fffaf5;--bg-card: rgba(255, 255, 255, .96);--border-card: rgba(255, 140, 82, .28);--border-hover: rgba(255, 94, 108, .5);--text-primary: #331e36;--text-secondary: #6e4c73;--text-muted: #9e7f9f;--font-heading: "Outfit", sans-serif;--font-body: "Plus Jakarta Sans", sans-serif;--font-romantic: "Dancing Script", cursive;--transition-smooth: all .35s cubic-bezier(.25, 1, .5, 1)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{width:100%;min-height:100%;overflow-x:hidden;font-size:16px}body{width:100%;min-height:100vh;min-height:100dvh;background:linear-gradient(135deg,#fffaf5,#fff0f3,#fff7e6);color:var(--text-primary);font-family:var(--font-body);position:relative;overflow-x:hidden}.modal-overlay,.modal-backdrop{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;height:100dvh!important;background:#331e36a6!important;backdrop-filter:blur(14px)!important;-webkit-backdrop-filter:blur(14px)!important;z-index:999999!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:clamp(16px,4vw,32px)!important;box-sizing:border-box!important}.modal-card-box{background:#fff!important;border:2px solid rgba(255,140,82,.35)!important;border-radius:clamp(24px,3.5vw,34px)!important;box-shadow:0 30px 80px #331e364d,0 0 40px #ff5e6c40!important;padding:clamp(28px,4vw,40px) clamp(22px,3.5vw,32px)!important;width:100%!important;max-width:520px!important;max-height:90vh!important;overflow-y:auto!important;position:relative!important;animation:zoomInModal .3s cubic-bezier(.175,.885,.32,1.275) forwards!important;z-index:1000000!important}.modal-close-btn{position:absolute!important;top:16px!important;right:16px!important;width:38px!important;height:38px!important;border-radius:50%!important;background:#ff5e6c1f!important;color:var(--pastel-red)!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;border:none!important;font-size:1.2rem!important;z-index:10!important;transition:var(--transition-smooth)!important}.modal-close-btn:hover{background:var(--pastel-red)!important;color:#fff!important;transform:rotate(90deg) scale(1.1)!important}@keyframes zoomInModal{0%{opacity:0;transform:scale(.85) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}button{font-family:var(--font-body);outline:none;border:none;-webkit-appearance:none}.slide-btn{padding:12px 24px;border-radius:30px;font-family:var(--font-body);font-size:.9rem;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:var(--transition-smooth);border:none;outline:none;-webkit-user-select:none;user-select:none;box-shadow:0 6px 18px #ff5e6c38}.slide-next-btn{background:linear-gradient(135deg,#ff5e6c,#ff8c52);color:#fff;box-shadow:0 8px 22px #ff5e6c59;border:none}.slide-next-btn:hover:not(:disabled){transform:translateY(-2px) scale(1.025);box-shadow:0 12px 28px #ff5e6c80;background:linear-gradient(135deg,#ff4757,#ff793f);color:#fff}.slide-prev-btn{background:#fff;border:2px solid rgba(255,140,82,.35);color:var(--text-primary);box-shadow:0 4px 15px #ff8c521a}.slide-prev-btn:hover:not(:disabled){background:#fff0f3;border-color:var(--pastel-red);color:var(--pastel-red);transform:translateY(-2px)}input[type=text],.photostrip-input{width:100%;padding:14px 22px;border-radius:25px;border:2px solid rgba(255,140,82,.35);background:#fffaf5;font-family:var(--font-heading);font-size:1.15rem;font-weight:700;color:var(--text-primary);outline:none;transition:var(--transition-smooth);box-shadow:0 4px 14px #ff8c5214;box-sizing:border-box}input[type=text]:focus,.photostrip-input:focus{background:#fff;border-color:var(--pastel-red);box-shadow:0 0 18px #ff5e6c4d,0 4px 14px #ff8c5226;transform:translateY(-1px)}input[type=text]::placeholder,.photostrip-input::placeholder{color:var(--text-muted);font-weight:600;opacity:.7}.music-play-btn,.download-btn{background:linear-gradient(135deg,#ff5e6c,#ff8c52);color:#fff;border:none;outline:none;padding:14px 28px;border-radius:30px;font-family:var(--font-body);font-size:.95rem;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 10px 25px #ff5e6c59;transition:var(--transition-smooth);width:100%;-webkit-user-select:none;user-select:none;margin-top:12px}.music-play-btn:hover:not(:disabled),.download-btn:hover:not(:disabled){transform:translateY(-2px) scale(1.02);box-shadow:0 14px 32px #ff5e6c80;background:linear-gradient(135deg,#ff4757,#ff793f);color:#fff}.music-play-btn:disabled,.download-btn:disabled{background:#ff8c521f;color:var(--text-secondary);border:1.5px dashed rgba(255,140,82,.35);box-shadow:none;cursor:not-allowed;opacity:.75;transform:none}#bg-canvas{position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:0;pointer-events:none}.pin-screen-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;height:100dvh;z-index:9999;background:linear-gradient(135deg,#fffaf5,#ffe8ec,#ffede0);display:flex;align-items:center;justify-content:center;padding:clamp(16px,3vw,28px);overflow-y:auto;box-sizing:border-box}.pin-card-box{background:#fff;border:2px solid rgba(255,140,82,.35);border-radius:clamp(24px,3.5vw,34px);box-shadow:0 25px 65px #331e3629,0 0 35px #ff5e6c33;padding:clamp(26px,4vw,36px) clamp(20px,3.5vw,30px);width:100%;max-width:380px;text-align:center;display:flex;flex-direction:column;align-items:center}.pin-icon-wrapper{width:64px;height:64px;border-radius:50%;background:#ffe5e8;color:var(--pastel-red);display:flex;align-items:center;justify-content:center;font-size:1.6rem;margin-bottom:16px;box-shadow:0 8px 20px #ff5e6c40;transition:var(--transition-smooth)}.pin-icon-wrapper.unlocked-icon{background:#fff8db;color:var(--pastel-yellow)}.pin-title{font-family:var(--font-heading);font-size:1.4rem;font-weight:800;color:var(--text-primary);margin-bottom:8px}.pin-subtitle{font-size:.88rem;color:var(--text-secondary);line-height:1.5;margin-bottom:20px}.pin-dots-container{display:flex;gap:12px;justify-content:center;margin-bottom:18px}.pin-dot{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,140,82,.35);background:transparent;transition:var(--transition-smooth)}.pin-dot.active{background:linear-gradient(135deg,#ff5e6c,#ff8c52);border-color:transparent;transform:scale(1.2);box-shadow:0 4px 10px #ff5e6c66}.pin-dot.error{border-color:#ef4444;background:#fee2e2}.pin-error-text{font-size:.82rem;font-weight:700;color:#ef4444;margin-bottom:16px}.keypad-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:100%;max-width:280px;margin:0 auto}.keypad-btn{aspect-ratio:1;border-radius:50%;border:1.5px solid rgba(255,140,82,.28);background:#fff;color:var(--text-primary);font-family:var(--font-heading);font-size:1.35rem;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition-smooth);box-shadow:0 4px 12px #ff8c521a}.keypad-btn:hover,.keypad-btn:active{background:linear-gradient(135deg,#ff5e6c,#ff8c52);color:#fff;border-color:transparent;transform:scale(1.08);box-shadow:0 8px 20px #ff5e6c59}.keypad-btn.action-key{background:#fff5eb;color:var(--pastel-orange);font-size:1.1rem}.keypad-btn.action-key:hover{background:var(--pastel-orange);color:#fff}.love-meter-card{max-width:420px;padding:clamp(26px,4vw,38px) clamp(20px,3.5vw,30px)}.tap-heart-box{width:110px;height:110px;border-radius:50%;background:linear-gradient(135deg,#ff5e6c,#ff8c52);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 14px 35px #ff5e6c73;transition:transform .15s cubic-bezier(.175,.885,.32,1.275),box-shadow .2s ease;margin:18px 0 14px;-webkit-user-select:none;user-select:none}.tap-heart-box:active{transform:scale(.9);box-shadow:0 6px 18px #ff5e6c99}.giant-heart-icon{font-size:2.8rem;color:#fff;filter:drop-shadow(0 4px 10px rgba(0,0,0,.2));margin-bottom:2px}.tap-hint-text{font-family:var(--font-heading);font-size:.72rem;font-weight:800;letter-spacing:1px;color:#fff;text-transform:uppercase}.love-progress-wrapper{width:100%;display:flex;flex-direction:column;align-items:center;margin-top:14px}.love-progress-bar-container{width:100%;height:14px;background:#f1f5f9;border-radius:10px;overflow:hidden;margin-bottom:10px;border:1px solid rgba(255,140,82,.25);box-sizing:border-box}.love-progress-fill{height:100%;background:linear-gradient(90deg,#ff5e6c,#ff8c52,#f59e0b);border-radius:10px;transition:width .2s cubic-bezier(.25,1,.5,1);box-shadow:0 0 12px #ff5e6c99}.love-percent-badge{font-family:var(--font-heading);font-size:1.1rem;font-weight:800;color:var(--pastel-red)}.love-percent-badge span{font-size:1.4rem}.love-complete-text{font-size:.88rem;font-weight:800;color:var(--pastel-red);margin-top:14px;animation:fadeInDown .4s ease-out}.shake{animation:shakeKeypad .4s ease-in-out}.app-container{position:relative;z-index:1;width:100%;max-width:1250px;margin:0 auto;padding:clamp(45px,5vw,65px) clamp(16px,4vw,48px) 36px clamp(16px,4vw,48px);display:flex;flex-direction:column;align-items:center;justify-content:space-between;min-height:100vh;min-height:100dvh;box-sizing:border-box}.hero-header{text-align:center;margin-bottom:clamp(24px,4vw,44px);animation:fadeInDown .8s ease-out;width:100%}.heart-badge{display:inline-flex;align-items:center;gap:8px;background:#ff5e6c1a;border:1px solid rgba(255,94,108,.3);padding:6px 16px;border-radius:24px;font-size:clamp(.7rem,2vw,.85rem);font-weight:700;color:var(--pastel-red);margin-bottom:14px;letter-spacing:.5px;text-transform:uppercase}.pulse-fast{animation:pulse 1.2s ease-in-out infinite}.main-title{font-family:var(--font-heading);font-size:clamp(1.8rem,5vw,3.8rem);font-weight:800;background:linear-gradient(135deg,#ff5e6c,#ff8c52,#e69d00);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:12px;line-height:1.25}.subtitle{font-size:clamp(.85rem,2.2vw,1.15rem);color:var(--text-secondary);max-width:750px;margin:0 auto;line-height:1.6}.cards-grid-2x2{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(18px,3vw,36px);width:100%;margin-bottom:40px}.revamped-love-card{background:#fff;border:1.5px solid rgba(255,140,82,.25);border-radius:clamp(22px,2.5vw,30px);position:relative;overflow:hidden;cursor:pointer;transition:var(--transition-smooth);box-shadow:0 10px 30px #ff8c521a;display:flex;flex-direction:column;min-height:260px;width:100%;padding:0}.card-accent-bar{width:100%;height:6px;display:block}.accent-rose{background:linear-gradient(90deg,#ff5e6c,#ff8c52)}.accent-envelope{background:linear-gradient(90deg,#ff8c52,#f59e0b)}.accent-music{background:linear-gradient(90deg,#8b5cf6,#ec4899)}.accent-photo{background:linear-gradient(90deg,#ec4899,#ff5e6c)}.accent-birthday{background:linear-gradient(90deg,#ec4899,#f59e0b,#ff5e6c)}.revamped-card-inner{padding:clamp(22px,3vw,32px) clamp(18px,3vw,28px);display:flex;flex-direction:column;height:100%;justify-content:space-between;width:100%}.card-top-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.revamped-badge{display:inline-flex;align-items:center;gap:6px;font-size:clamp(.68rem,1.1vw,.8rem);font-weight:800;padding:4px 12px;border-radius:16px;letter-spacing:.8px;text-transform:uppercase}.badge-rose{background:#ffe5e8;color:#ff5e6c}.badge-envelope{background:#ffede0;color:#ff8c52}.badge-music{background:#f3e8ff;color:#8b5cf6}.badge-photo{background:#fce7f3;color:#ec4899}.badge-birthday{background:#fdf2f8;color:#db2777;border:1px solid rgba(219,39,119,.2)}.revamped-icon-box{width:clamp(52px,4.5vw,64px);height:clamp(52px,4.5vw,64px);border-radius:20px;display:flex;align-items:center;justify-content:center;font-size:clamp(1.5rem,2.5vw,1.9rem);margin-bottom:16px;transition:var(--transition-smooth)}.glow-rose{background:#ffe5e8;color:#ff5e6c}.glow-envelope{background:#ffede0;color:#ff8c52}.glow-music{background:#f3e8ff;color:#8b5cf6}.glow-photo{background:#fce7f3;color:#ec4899}.glow-birthday{background:linear-gradient(135deg,#fdf2f8,#fef3c7);color:#db2777;box-shadow:0 4px 14px #db277740}.revamped-love-card:hover .revamped-icon-box,.main-portal-card:hover .glow-birthday{transform:scale(1.15) rotate(6deg)}.revamped-card-title{font-family:var(--font-heading);font-size:clamp(1.25rem,2vw,1.65rem);font-weight:800;color:var(--text-primary);margin-bottom:8px}.revamped-card-desc{font-size:clamp(.85rem,1.3vw,.98rem);color:var(--text-secondary);line-height:1.6;margin-bottom:20px;flex-grow:1}.revamped-card-action{display:inline-flex;align-items:center;gap:8px;font-size:clamp(.82rem,1.2vw,.92rem);font-weight:800;padding:10px 18px;border-radius:24px;transition:var(--transition-smooth);width:fit-content}.action-rose{background:#ffe5e8;color:#ff5e6c}.action-envelope{background:#ffede0;color:#ff8c52}.action-music{background:#f3e8ff;color:#8b5cf6}.action-photo{background:#fce7f3;color:#ec4899}.action-birthday{background:#fdf2f8;color:#db2777}.arrow-icon{transition:transform .3s ease}.revamped-love-card:hover{transform:translateY(-6px) scale(1.015);box-shadow:0 20px 45px #ff5e6c33;border-color:var(--pastel-red)}.revamped-love-card:hover .arrow-icon{transform:translate(8px)}.revamped-love-card:hover .action-rose{background:#ff5e6c;color:#fff}.revamped-love-card:hover .action-envelope{background:#ff8c52;color:#fff}.revamped-love-card:hover .action-music{background:#8b5cf6;color:#fff}.revamped-love-card:hover .action-photo{background:#ec4899;color:#fff}.revamped-love-card:hover .action-birthday,.main-portal-card:hover .action-birthday{background:linear-gradient(135deg,#ec4899,#f59e0b);color:#fff}.main-portal-grid-3,.main-portal-grid-4{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(20px,2.5vw,32px);width:100%;margin-bottom:40px}.main-portal-card{text-decoration:none;color:inherit;background:#fff;border:1.5px solid rgba(255,140,82,.28);border-radius:clamp(22px,3vw,32px);padding:0;cursor:pointer;position:relative;overflow:hidden;transition:var(--transition-smooth);display:flex;flex-direction:column;justify-content:space-between;min-height:280px;width:100%;box-shadow:0 12px 35px #ff8c521f}.main-portal-card:hover,.main-portal-card:active{transform:translateY(-6px) scale(1.015);border-color:var(--pastel-red);box-shadow:0 22px 48px #ff5e6c33,0 0 25px #ffe78f40}.portal-card-inner{position:relative;z-index:2;display:flex;flex-direction:column;height:100%;padding:clamp(24px,3.5vw,36px) clamp(20px,3vw,30px)}.portal-badge{font-size:clamp(.72rem,1.2vw,.82rem);font-weight:800;color:var(--pastel-orange);letter-spacing:1.2px;margin-bottom:14px}.portal-icon-box{width:clamp(56px,5vw,68px);height:clamp(56px,5vw,68px);border-radius:22px;display:flex;align-items:center;justify-content:center;margin-bottom:18px;transition:var(--transition-smooth)}.glow-coral{background:var(--pastel-red-light);color:var(--pastel-red)}.glow-gold{background:var(--pastel-yellow-light);color:var(--pastel-yellow)}.portal-icon{font-size:clamp(1.6rem,2.8vw,2.2rem)}.main-portal-card:hover .portal-icon{transform:scale(1.18) rotate(6deg)}.portal-title{font-family:var(--font-heading);font-size:clamp(1.3rem,2.2vw,1.8rem);font-weight:800;color:var(--text-primary);margin-bottom:10px}.portal-desc{font-size:clamp(.85rem,1.4vw,1rem);color:var(--text-secondary);line-height:1.6;margin-bottom:24px;flex-grow:1}.portal-action{display:flex;align-items:center;gap:8px;font-size:clamp(.85rem,1.3vw,.98rem);font-weight:800;color:var(--pastel-red);transition:var(--transition-smooth)}.main-portal-card:hover .portal-action{gap:12px;color:var(--pastel-orange)}.modal-card-box{background:#fff!important;border:2px solid rgba(255,140,82,.35)!important;box-shadow:0 25px 65px #331e3640,0 0 35px #ff5e6c2e!important;border-radius:clamp(20px,3.5vw,30px)!important;width:100%!important;max-width:650px!important;max-height:88vh!important;overflow-y:auto!important;position:relative!important;padding:clamp(18px,3vw,28px) clamp(16px,3vw,24px)!important;color:var(--text-primary)!important;animation:zoomIn .35s cubic-bezier(.175,.885,.32,1.275)!important;box-sizing:border-box!important}.modal-header-bar{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:12px;gap:12px}.modal-header-badge{display:inline-flex;align-items:center;gap:6px;font-size:clamp(.68rem,1.2vw,.78rem);font-weight:800;padding:5px 12px;border-radius:16px;letter-spacing:.8px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 46px)}.modal-close-btn{background:#0000000f;border:none;color:var(--text-secondary);width:36px;height:36px;min-width:36px;border-radius:50%;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition-smooth)}.modal-close-btn:hover{background:var(--pastel-red);color:#fff}.modal-main-title{font-family:var(--font-heading);font-size:clamp(1.25rem,2.5vw,1.65rem);font-weight:800;color:var(--text-primary);margin-bottom:6px;text-align:left}.modal-subtitle{font-size:clamp(.82rem,1.8vw,.9rem);color:var(--text-secondary);line-height:1.5;margin-bottom:14px;text-align:left}.flower-revamp-stage{display:flex;flex-direction:column;align-items:stretch;width:100%}.flower-stage{position:relative;width:100%;height:clamp(200px,35vh,250px);display:flex;align-items:center;justify-content:center;margin:12px 0;background:linear-gradient(135deg,#fffbf7,#ffede0);border-radius:20px;border:1px solid rgba(255,140,82,.25);overflow:hidden}.bloom-trigger-btn{position:absolute;bottom:10px;left:50%;transform:translate(-50%);background:#fff;border:1.5px solid var(--pastel-orange);color:var(--pastel-red);padding:7px 16px;border-radius:25px;font-family:var(--font-body);font-size:.8rem;font-weight:800;cursor:pointer;transition:var(--transition-smooth);display:inline-flex;align-items:center;gap:6px;box-shadow:0 4px 15px #ff8c5238;white-space:nowrap}.bloom-trigger-btn:hover{background:linear-gradient(135deg,#ff5e6c,#ff8c52);color:#fff;border-color:transparent;box-shadow:0 8px 22px #ff5e6c66;transform:translate(-50%) translateY(-2px)}.ldr-map-box{background:linear-gradient(135deg,#fff9f5,#ffede0);border:1.5px solid rgba(255,140,82,.3);border-radius:18px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;margin:14px 0;width:100%;gap:8px}.city-node{text-align:center;flex:1}.city-icon{font-size:1.3rem;color:var(--pastel-red);margin-bottom:2px;display:block}.city-name{font-size:.82rem;font-weight:800;color:var(--text-primary)}.distance-connector{flex:1.3;display:flex;flex-direction:column;align-items:center}.plane-line{width:100%;height:2px;border-top:2px dashed var(--pastel-orange);margin:6px 0;position:relative}.flying-plane{position:absolute;top:-9px;left:45%;color:var(--pastel-orange);font-size:.9rem;animation:flyFlight 3s ease-in-out infinite alternate}.distance-badge{background:#fff;border:1px solid var(--pastel-yellow);color:var(--pastel-orange);padding:3px 10px;border-radius:12px;font-size:.72rem;font-weight:800;white-space:nowrap;box-shadow:0 2px 8px #ff8c521a}.romantic-letter-stage{display:flex;flex-direction:column;align-items:stretch;width:100%}.story-timeline-strip{display:flex;align-items:center;justify-content:space-between;width:100%;background:linear-gradient(135deg,#fff9f5,#ffede0);border:1px solid rgba(255,140,82,.3);border-radius:16px;padding:8px 12px;margin-bottom:16px}.timeline-step{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1}.step-icon{font-size:1rem;color:var(--pastel-orange)}.step-label{font-size:.68rem;font-weight:800;color:var(--text-secondary);text-align:center}.timeline-arrow{font-size:.75rem;color:var(--pastel-red);opacity:.6}.timeline-step.active-step .step-icon{color:var(--pastel-red);transform:scale(1.15)}.romantic-parchment-box{background:#fffdfa;border:1.5px solid rgba(255,140,82,.35);border-radius:20px;padding:clamp(16px,3vw,24px);position:relative;box-shadow:inset 0 0 20px #ff8c5214}.wax-seal-badge{position:absolute;top:-14px;right:20px;background:linear-gradient(135deg,#ff5e6c,#ff8c52);color:#fff;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.9rem;box-shadow:0 4px 12px #ff5e6c66}.parchment-header{margin-bottom:12px}.dear-name{font-family:var(--font-heading);font-size:.95rem;font-weight:800;color:var(--pastel-red)}.parchment-content{display:flex;flex-direction:column;gap:10px;max-height:260px;overflow-y:auto;padding-right:6px}.parchment-paragraph{font-size:.88rem;line-height:1.6;color:var(--text-primary);text-align:justify}.highlight-quote{background:#fff5eb;border-left:3px solid var(--pastel-orange);padding:8px 12px;border-radius:0 12px 12px 0;font-style:italic;font-weight:600;color:var(--text-primary)}.vinyl-container{display:flex;flex-direction:column;align-items:center;text-align:center;width:100%}.vinyl-deck{position:relative;width:clamp(200px,45vw,240px);height:clamp(180px,40vw,210px);background:linear-gradient(135deg,#2b172a,#1e101e);border-radius:24px;display:flex;align-items:center;justify-content:center;margin:16px 0 20px;box-shadow:0 15px 35px #331e3659;border:2px solid rgba(255,140,82,.3)}.vinyl-disc{width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,#2d2d2d 30%,#111 70%,#000);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 15px #00000080;border:3px solid #333333;transition:transform .3s ease}.vinyl-disc.playing{animation:spin 4s linear infinite}.vinyl-center{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#ff5e6c,#ff8c52);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.1rem;box-shadow:0 2px 8px #0000004d}.vinyl-arm{position:absolute;top:20px;right:25px;width:6px;height:70px;background:#d1d5db;border-radius:4px;transform-origin:top center;transform:rotate(-35deg);transition:transform .5s cubic-bezier(.25,1,.5,1);box-shadow:0 2px 6px #0000004d}.vinyl-arm.on-disc{transform:rotate(15deg)}.flipbook-container{display:flex;flex-direction:column;align-items:center;width:100%}.flipbook-spine{width:100%;display:flex;justify-content:center;margin:12px 0 18px}.polaroid-book-frame{background:#fff;padding:12px 12px 20px;border-radius:18px;box-shadow:0 15px 35px #331e362e;border:1px solid rgba(255,140,82,.25);max-width:320px;width:100%;text-align:center}.book-tape-sticker{font-size:.76rem;font-weight:800;color:var(--pastel-red);background:var(--pastel-red-light);padding:4px 12px;border-radius:12px;display:inline-block;margin-bottom:10px}.polaroid-img-box{width:100%;height:250px;border-radius:12px;overflow:hidden;background:#f8fafc}.polaroid-img-box img{width:100%;height:100%;object-fit:cover}.book-controls{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:320px;gap:8px}.fullscreen-letter-stage{min-height:100vh;min-height:100dvh;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(75px,8vw,85px) clamp(16px,4vw,32px) clamp(30px,5vw,50px) clamp(16px,4vw,32px);position:relative;box-sizing:border-box;transition:background .6s ease}.fullscreen-slide-box{background:#fff;border:2px solid rgba(255,140,82,.35);border-radius:clamp(24px,3.5vw,36px);box-shadow:0 30px 75px #331e3629,0 0 45px #ff5e6c33;padding:clamp(24px,4vw,40px) clamp(16px,3.5vw,32px);width:100%;max-width:720px;max-height:92vh;overflow-y:auto;text-align:center;display:flex;flex-direction:column;align-items:center;position:relative}.fullscreen-tracker-bar{width:100%;height:6px;background:#f1f5f9;border-radius:10px;overflow:hidden;margin-bottom:14px}.tracker-fill{height:100%;border-radius:10px;transition:width .4s ease,background .4s ease;box-shadow:0 0 10px #ff5e6c80}.heart-matrix-stage{position:relative;display:flex;align-items:center;justify-content:center;margin:8px 0 14px;width:100%;min-height:180px}.char-glow-orb{position:absolute;width:200px;height:200px;border-radius:50%;filter:blur(40px);z-index:1}.heart-matrix-grid{position:relative;z-index:2;display:flex;flex-direction:column;gap:clamp(5px,1vw,8px);padding:clamp(12px,2vw,18px) clamp(16px,3vw,26px);background:#ffffffbf;border:1px solid rgba(255,140,82,.25);border-radius:20px;box-shadow:0 10px 28px #ff8c5224}.heart-matrix-row{display:flex;gap:clamp(6px,1.2vw,10px);justify-content:center}.heart-matrix-cell{width:clamp(20px,4vw,30px);height:clamp(20px,4vw,30px);display:flex;align-items:center;justify-content:center}.heart-matrix-dot{font-size:clamp(1.15rem,3.2vw,1.55rem);filter:drop-shadow(0 4px 10px rgba(255,94,108,.4));transition:transform .2s ease}.heart-matrix-dot.animated-pop-heart{opacity:0;animation:popInHeart .5s cubic-bezier(.175,.885,.32,1.275) forwards}.fullscreen-word-title{font-family:var(--font-heading);font-size:clamp(1.6rem,4vw,2.5rem);font-weight:800;color:var(--text-primary);margin-bottom:10px}.fullscreen-meaning-paper{background:#fffaf5;border:1px solid rgba(255,140,82,.3);border-radius:18px;padding:clamp(14px,2.5vw,22px);position:relative;margin-bottom:22px;width:100%;box-shadow:0 10px 25px #ff8c521f}.meaning-text{font-size:clamp(.88rem,2vw,1.1rem);color:var(--text-primary);line-height:1.6;font-style:italic}.fullscreen-nav-controls{display:flex;align-items:center;justify-content:space-between;width:100%;gap:10px}.mode-selection-stage{width:100%;display:flex;justify-content:center;margin-bottom:40px}.mode-selection-box{background:#fff;border:2px solid rgba(255,140,82,.35);border-radius:clamp(24px,3.5vw,36px);box-shadow:0 25px 65px #331e3624,0 0 35px #ff5e6c2e;padding:clamp(32px,4vw,48px) clamp(24px,3.5vw,36px);width:100%;max-width:820px;text-align:center}.mode-selection-title{font-family:var(--font-heading);font-size:clamp(1.6rem,3.5vw,2.4rem);font-weight:800;color:var(--text-primary);margin-bottom:10px}.mode-selection-desc{font-size:clamp(.9rem,1.8vw,1.05rem);color:var(--text-secondary);margin-bottom:32px}.mode-cards-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(20px,3vw,32px)}.mode-card{background:#fffaf5;border:2px solid rgba(255,140,82,.28);border-radius:26px;padding:28px 22px;cursor:pointer;transition:var(--transition-smooth);display:flex;flex-direction:column;align-items:center;text-align:center}.mode-card:hover{transform:translateY(-8px) scale(1.02);border-color:var(--pastel-red);box-shadow:0 20px 45px #ff5e6c38}.mode-card-icon{width:68px;height:68px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.8rem;margin-bottom:18px}.mode-card-title{font-family:var(--font-heading);font-size:1.25rem;font-weight:800;color:var(--text-primary);margin-bottom:10px}.mode-card-desc{font-size:.88rem;color:var(--text-secondary);line-height:1.6;margin-bottom:22px;flex-grow:1}.room-code-display-box{background:linear-gradient(135deg,#fffaf5,#ffede0);border:2px dashed var(--pastel-orange);border-radius:20px;padding:20px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;margin:20px 0}.code-text{font-family:var(--font-heading);font-size:2.2rem;font-weight:800;letter-spacing:4px;color:var(--pastel-red)}.partner-status-badge{padding:12px 20px;border-radius:20px;font-size:.88rem;font-weight:800;margin-top:10px}.status-online{background:#dcfce7;color:#166534;border:1px solid #86efac;display:inline-flex;align-items:center;gap:8px}.status-waiting{background:#fff8db;color:#9a3412;border:1px solid #fde047;display:inline-flex;align-items:center;gap:8px}.online-sync-bar{width:100%;padding:8px 14px;border-radius:14px;font-size:.78rem;font-weight:800;text-align:center}.badge-online{background:#dcfce7;color:#166534;padding:5px 12px;border-radius:12px;display:inline-flex;align-items:center;gap:6px}.badge-offline{background:#fff8db;color:#9a3412;padding:5px 12px;border-radius:12px;display:inline-flex;align-items:center;gap:6px}.photobooth-studio-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(20px,3vw,36px);width:100%;align-items:start;margin-bottom:40px}.photobooth-sidebar-card{background:#fff;border:2px solid rgba(255,140,82,.3);border-radius:clamp(22px,3vw,32px);padding:clamp(24px,3.5vw,32px) clamp(20px,3vw,28px);box-shadow:0 14px 40px #ff8c521f;display:flex;flex-direction:column;gap:18px}.sidebar-header-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:10px;border-bottom:2px dashed rgba(255,140,82,.25)}.mode-change-btn{background:var(--pastel-red-light);color:var(--pastel-red);border:1px solid rgba(255,94,108,.3);padding:6px 14px;border-radius:18px;font-size:.78rem;font-weight:800;cursor:pointer;transition:var(--transition-smooth);display:inline-flex;align-items:center;gap:6px}.mode-change-btn:hover{background:var(--pastel-red);color:#fff}.voice-comm-bar{background:linear-gradient(135deg,#ff5e6c1a,#ff8c5224);border:1.5px solid rgba(255,140,82,.35);border-radius:20px;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 4px 14px #ff5e6c14}.voice-comm-status{display:flex;align-items:center;gap:10px}.voice-pulse-dot{width:10px;height:10px;border-radius:50%;background:#10b981;box-shadow:0 0 #10b981b3;animation:voicePulse 1.8s infinite;flex-shrink:0}.voice-pulse-dot.voice-pulse-muted{background:#94a3b8;box-shadow:none;animation:none}@keyframes voicePulse{0%{transform:scale(.95);box-shadow:0 0 #10b981b3}70%{transform:scale(1.15);box-shadow:0 0 0 8px #10b98100}to{transform:scale(.95);box-shadow:0 0 #10b98100}}.voice-text-group{display:flex;flex-direction:column;gap:2px}.voice-title{font-size:.82rem;font-weight:800;color:var(--text-primary)}.voice-sub{font-size:.72rem;color:var(--text-secondary)}.voice-comm-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.voice-btn{border:none;outline:none;padding:6px 12px;border-radius:12px;font-size:.74rem;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:var(--transition-smooth)}.voice-btn-active{background:linear-gradient(135deg,#ff5e6c,#ff8c52);color:#fff;box-shadow:0 3px 10px #ff5e6c4d}.voice-btn-muted{background:#e2e8f0;color:#64748b;border:1px solid #cbd5e1}.voice-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #ff5e6c59}.dual-camera-view-grid{display:grid!important;grid-template-columns:1fr 1fr!important;gap:clamp(8px,2vw,14px)!important;width:100%!important;align-items:stretch!important}.dual-camera-view-grid .live-camera-view-box{aspect-ratio:4 / 5!important;border-radius:clamp(16px,2.5vw,24px)!important}.camera-label-tag{position:absolute;top:8px;left:8px;right:8px;z-index:12;background:linear-gradient(135deg,#ff5e6ce6,#ff8c52e6);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;font-size:clamp(.65rem,1.1vw,.76rem);font-weight:800;padding:3px 8px;border-radius:14px;box-shadow:0 3px 10px #ff5e6c59;letter-spacing:.4px;display:inline-flex;align-items:center;justify-content:space-between;gap:4px;pointer-events:auto;white-space:nowrap}.camera-tag-action-btn{background:#ffffff47;border:1px solid rgba(255,255,255,.5);color:#fff;font-size:.64rem;font-weight:700;padding:2px 7px;border-radius:10px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;transition:var(--transition-smooth);line-height:1}.camera-tag-action-btn:hover{background:#fff;color:var(--pastel-red)}.live-camera-view-box{position:relative;width:100%;aspect-ratio:1;background:linear-gradient(135deg,#1e121d,#331e36);border-radius:26px;overflow:hidden;box-shadow:0 16px 40px #331e3638,0 0 25px #ff5e6c26;border:3px solid rgba(255,140,82,.4);transition:var(--transition-smooth)}.live-video-feed{width:100%;height:100%;object-fit:cover}.live-video-feed.mirror-camera{transform:scaleX(-1)}.camera-flash-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#fff;z-index:20;animation:flashShutter .25s ease-out forwards}.camera-start-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#331e36bf;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:10}.camera-actions-row{display:flex;gap:10px;align-items:center}.flex-1{flex:1}.photos-complete-card{background:linear-gradient(135deg,#22c55e1f,#ff5e6c1a);border:1.5px dashed rgba(34,197,94,.5);border-radius:16px;padding:12px 14px;margin-bottom:12px;animation:fadeInDown .3s ease-out}.complete-title-row{display:flex;align-items:center;gap:8px;font-size:.88rem;font-weight:800;color:#15803d}.complete-title-row i{font-size:1rem;color:#16a34a}.complete-subtitle{font-size:.74rem;color:var(--text-secondary);margin-top:4px;line-height:1.4}.slide-btn.retake-btn{background:linear-gradient(135deg,#ff5e6c,#ff8c52);box-shadow:0 4px 14px #ff5e6c59}.slide-btn.reset-btn{background:#fff;border:2px solid rgba(255,94,108,.35);color:#e11d48;padding:12px 16px;font-size:.84rem;font-weight:800;border-radius:25px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:var(--transition-smooth);box-shadow:0 3px 10px #0000000f}.slide-btn.reset-btn:hover:not(:disabled){background:#fff0f3;border-color:#e11d48;transform:translateY(-2px);box-shadow:0 6px 16px #e11d4833}.slide-btn.reset-btn:disabled{opacity:.5;cursor:not-allowed}.photostrip-actions-group{display:flex;flex-direction:column;gap:8px;width:100%;margin-top:10px}.photostrip-reset-btn{width:100%;background:#fffffff2;border:2px dashed rgba(255,94,108,.4);color:#e11d48;border-radius:20px;padding:11px 18px;font-size:.82rem;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:var(--transition-smooth);box-shadow:0 2px 8px #ff5e6c14}.photostrip-reset-btn:hover:not(:disabled){background:#fff0f3;border-color:#e11d48;transform:translateY(-1px);box-shadow:0 4px 14px #e11d482e}.photostrip-reset-btn:disabled{opacity:.5;cursor:not-allowed}.photostrip-stage-inner{display:flex;flex-direction:column;align-items:center;width:100%;max-width:360px}.photostrip-stage-topbar{display:flex;justify-content:space-between;align-items:center;width:100%;margin-bottom:10px;padding:0 4px}.stage-photo-count{font-size:.78rem;font-weight:800;color:var(--text-secondary);display:inline-flex;align-items:center;gap:6px}.stage-photo-count i{color:var(--pastel-red)}.stage-reset-btn{background:#ffffffe6;border:1.5px solid rgba(255,94,108,.3);color:#e11d48;font-size:.72rem;font-weight:800;padding:4px 12px;border-radius:14px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:var(--transition-smooth)}.stage-reset-btn:hover:not(:disabled){background:#fff0f3;border-color:#e11d48;transform:translateY(-1px)}.stage-reset-btn:disabled{opacity:.5;cursor:not-allowed}.slot-action-btn.delete-btn{background:#fff0f3;color:#e11d48}.slot-action-btn.delete-btn:hover{background:#e11d48;color:#fff}.photostrip-title-input{background:#ffffff73;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:2px dashed currentColor;font-family:var(--font-heading);font-size:clamp(.9rem,1.4vw,1.05rem);font-weight:800;text-align:center;margin-bottom:16px;letter-spacing:.5px;outline:none;width:100%;max-width:100%;padding:8px 12px;border-radius:20px;box-shadow:0 4px 12px #0000000d;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-slot-placeholder{width:100%;height:100%;background:linear-gradient(135deg,#fffaf5,#ffe5e8);border:2px dashed rgba(255,94,108,.45);border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--pastel-red);font-size:.84rem;font-weight:800;gap:8px;cursor:pointer;transition:var(--transition-smooth);box-shadow:inset 0 2px 8px #ff5e6c14}.empty-slot-placeholder:hover{background:linear-gradient(135deg,#ffe5e8,#ffede0);color:var(--pastel-orange);border-color:var(--pastel-orange);transform:scale(1.01)}.empty-slot-placeholder i{font-size:1.8rem;color:var(--pastel-red);animation:pulse 2s ease-in-out infinite}.couple-slot-tag{position:absolute;top:12px;left:12px;background:linear-gradient(135deg,#ff5e6c,#ff8c52);color:#fff;font-size:.68rem;font-weight:800;padding:4px 12px;border-radius:14px;box-shadow:0 4px 12px #ff5e6c4d;letter-spacing:.6px}.sidebar-section-title{font-family:var(--font-heading);font-size:1.15rem;font-weight:800;color:var(--text-primary);display:flex;align-items:center;gap:8px}.sidebar-section-title i{color:var(--pastel-red)}.control-group{display:flex;flex-direction:column;gap:8px}.control-label{font-size:.85rem;font-weight:800;color:var(--text-secondary)}.frame-theme-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.frame-theme-card{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 4px;border-radius:14px;background:#fff;border:2px solid rgba(255,140,82,.25);cursor:pointer;transition:var(--transition-smooth);text-align:center}.frame-theme-card:hover{border-color:var(--pastel-red);transform:translateY(-2px);box-shadow:0 6px 14px #ff5e6c2e}.frame-theme-card.active{border-color:var(--pastel-red);background:linear-gradient(135deg,#ff5e6c14,#ff8c521a);box-shadow:0 6px 16px #ff5e6c3d;transform:translateY(-2px) scale(1.02)}.frame-preview-swatch{width:28px;height:28px;border-radius:8px;border:1.5px solid rgba(0,0,0,.12);box-shadow:0 2px 6px #00000014}.frame-card-label{font-size:.65rem;font-weight:800;color:var(--text-primary);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.filter-pill-grid{display:flex;flex-wrap:wrap;gap:8px}.filter-pill{padding:6px 14px;border-radius:18px;border:1.5px solid rgba(255,140,82,.3);background:#fff;font-size:.78rem;font-weight:800;color:var(--text-secondary);cursor:pointer;transition:var(--transition-smooth)}.filter-pill.active,.filter-pill:hover{background:linear-gradient(135deg,#ff5e6c,#ff8c52);color:#fff;border-color:transparent}.photostrip-display-stage{display:flex;justify-content:center;width:100%}.photostrip-paper-frame{width:100%;max-width:360px;padding:24px 20px 20px;border-radius:24px;box-shadow:0 20px 50px #331e362e,0 0 30px #ff5e6c26;border:3px solid rgba(255,140,82,.3);display:flex;flex-direction:column;align-items:center;transition:var(--transition-smooth)}.photostrip-cuts-list{display:flex;flex-direction:column;gap:14px;width:100%}.photostrip-cut-box{position:relative;width:100%;aspect-ratio:4 / 3;background:#fff;padding:8px;border-radius:14px;box-shadow:0 6px 18px #0000001a;overflow:hidden}.cut-img-wrapper{width:100%;height:100%;border-radius:10px;overflow:hidden}.photostrip-img{width:100%;height:100%;object-fit:cover;transition:filter .3s ease}.filter-vintage{filter:sepia(.35) contrast(1.1) brightness(.95)}.filter-warm{filter:saturate(1.35) contrast(1.05) hue-rotate(-10deg)}.filter-rose{filter:sepia(.25) hue-rotate(320deg) saturate(1.4)}.filter-bw{filter:grayscale(1) contrast(1.2)}.filter-normal{filter:none}.cut-slot-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#331e368c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;gap:12px;opacity:0;transition:opacity .3s ease;border-radius:14px}.photostrip-cut-box:hover .cut-slot-overlay{opacity:1}.slot-action-btn{background:#fff;border:none;color:var(--text-primary);padding:8px 14px;border-radius:20px;font-size:.75rem;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;gap:6px;box-shadow:0 4px 12px #0003;transition:var(--transition-smooth)}.slot-action-btn:hover{background:var(--pastel-red);color:#fff;transform:scale(1.05)}.cut-number-badge{position:absolute;bottom:12px;right:12px;width:22px;height:22px;border-radius:50%;background:#ffffffe6;color:var(--text-primary);font-size:.7rem;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #00000026}.photostrip-footer-info{font-size:.78rem;font-weight:800;text-align:center;margin-top:18px;letter-spacing:.5px}.webcam-countdown-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000073;display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--font-heading);font-size:3.5rem;font-weight:800;z-index:15}.top-controls{position:fixed;top:clamp(12px,2.5vw,24px);left:clamp(12px,3vw,24px);z-index:50;display:flex;gap:10px}.control-btn{background:#fffffff2;border:1px solid var(--border-card);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--text-primary);padding:8px 18px;border-radius:25px;font-size:clamp(.78rem,1.2vw,.88rem);font-weight:700;display:flex;align-items:center;gap:6px;cursor:pointer;text-decoration:none;transition:var(--transition-smooth);box-shadow:0 6px 18px #ff8c5226}.control-btn:hover{background:#fff;border-color:var(--pastel-red);color:var(--pastel-red);transform:translateY(-2px)}.footer{font-size:clamp(.78rem,1.4vw,.88rem);color:var(--text-muted);text-align:center;line-height:1.5;width:100%;margin-top:auto;padding-top:16px}.heart-beat{color:var(--pastel-red);animation:heartBeat 1.3s infinite;display:inline-block;margin:0 4px}.birthday-countdown-card{background:linear-gradient(135deg,#fffffff2,#fdf2f8e6);border:2px solid rgba(236,72,153,.3);border-radius:28px;padding:clamp(20px,3vw,30px);box-shadow:0 16px 40px #ec48991f,0 0 25px #f59e0b1a;margin-bottom:36px;text-align:center}.countdown-header-row{display:flex;align-items:center;justify-content:center;gap:10px;font-size:clamp(.9rem,1.5vw,1.1rem);font-weight:800;color:#db2777;margin-bottom:18px}.countdown-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(10px,2vw,20px);max-width:520px;margin:0 auto}.countdown-box{background:#fff;border:1.5px solid rgba(236,72,153,.25);border-radius:20px;padding:14px 10px;display:flex;flex-direction:column;align-items:center;box-shadow:0 6px 18px #ec489914;transition:var(--transition-smooth)}.countdown-box:hover{transform:translateY(-3px);border-color:#ec4899;box-shadow:0 10px 24px #ec489933}.count-num{font-family:var(--font-heading);font-size:clamp(1.6rem,3vw,2.4rem);font-weight:800;background:linear-gradient(135deg,#ec4899,#f59e0b);-webkit-background-clip:text;-webkit-text-fill-color:transparent;line-height:1.1}.count-label{font-size:clamp(.68rem,1vw,.78rem);font-weight:800;color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px;margin-top:4px}.birthday-cake-card{background:linear-gradient(135deg,#fffaf6,#fff0f5);border:2px solid rgba(255,140,82,.28);border-radius:32px;padding:clamp(28px,4vw,44px) clamp(20px,3vw,32px);margin-bottom:40px;box-shadow:0 20px 50px #ec489926;display:flex;flex-direction:column;align-items:center;position:relative;overflow:hidden}.cake-stage-container{display:flex;justify-content:center;align-items:flex-end;min-height:240px;margin-bottom:24px;position:relative;width:100%}.interactive-cake{display:flex;flex-direction:column;align-items:center;position:relative}.cake-candle{position:relative;display:flex;flex-direction:column;align-items:center;margin-bottom:-4px;z-index:5}.candle-flame{width:16px;height:28px;background:linear-gradient(180deg,#ffedd5,#f59e0b,#ea580c);border-radius:50% 50% 35% 35%/60% 60% 40% 40%;box-shadow:0 0 16px #f59e0bcc,0 0 30px #ef444480;animation:flickerFlame .8s ease-in-out infinite alternate;position:relative}.flame-core{width:8px;height:14px;background:#fff;border-radius:50%;position:absolute;bottom:2px;left:4px;opacity:.9}@keyframes flickerFlame{0%{transform:rotate(-2deg) scale(1)}50%{transform:rotate(3deg) scale(1.08,.96)}to{transform:rotate(-1deg) scale(.95,1.05)}}.candle-smoke span{display:block;width:8px;height:8px;background:#96969699;border-radius:50%;animation:puffSmoke 1.5s ease-out infinite;position:absolute;top:-12px}.candle-smoke span:nth-child(2){animation-delay:.4s;top:-20px}@keyframes puffSmoke{0%{transform:translateY(0) scale(.6);opacity:.8}to{transform:translateY(-35px) translate(12px) scale(2);opacity:0}}.candle-stick{width:12px;height:38px;background:repeating-linear-gradient(45deg,#fff,#fff 6px,#ec4899 6px,#ec4899 12px);border-radius:4px;box-shadow:inset -2px 0 4px #00000026}.cake-tier{position:relative;border-radius:16px 16px 8px 8px;display:flex;justify-content:center;align-items:center;box-shadow:0 4px 12px #00000014}.tier-top{width:130px;height:48px;background:linear-gradient(180deg,#fce7f3,#fbcfe8);border:2px solid #f472b6;z-index:3}.cake-tag{font-size:.72rem;font-weight:800;color:#be185d;letter-spacing:1px}.tier-middle{width:190px;height:56px;background:linear-gradient(180deg,#fef3c7,#fde68a);border:2px solid #fbbf24;margin-top:-6px;z-index:2}.tier-bottom{width:250px;height:64px;background:linear-gradient(180deg,#ffe4e6,#fecdd3);border:2px solid #fb7185;margin-top:-6px;z-index:1}.cake-plate{position:absolute;bottom:-10px;width:290px;height:14px;background:#fff;border-radius:12px;box-shadow:0 8px 24px #00000026;border:2px solid rgba(255,140,82,.3)}.cake-action-box{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:400px}.blow-candle-btn{background:linear-gradient(135deg,#ec4899,#ff5e6c,#f59e0b);color:#fff;border:none;padding:14px 30px;border-radius:30px;font-family:var(--font-heading);font-size:1.05rem;font-weight:800;cursor:pointer;box-shadow:0 8px 25px #ec489966;transition:var(--transition-smooth);display:flex;align-items:center;gap:10px}.blow-candle-btn:hover{transform:scale(1.05) translateY(-2px);box-shadow:0 14px 35px #ec48998c}.blown-candle-state{display:flex;flex-direction:column;align-items:center;gap:12px;animation:zoomIn .35s ease-out}.wish-granted-banner{background:#fdf2f8;border:1.5px solid #ec4899;color:#db2777;padding:10px 20px;border-radius:20px;font-size:.88rem;font-weight:800;text-align:center;display:flex;align-items:center;gap:8px}.relight-candle-btn{background:#fff;border:2px solid #f59e0b;color:#d97706;padding:9px 20px;border-radius:25px;font-size:.84rem;font-weight:800;cursor:pointer;display:flex;align-items:center;gap:6px;transition:var(--transition-smooth)}.relight-candle-btn:hover{background:#fffbeb;transform:translateY(-2px)}.birthday-wishes-section,.birthday-memories-section{width:100%;margin-bottom:40px}.section-title-wrap{text-align:center;margin-bottom:24px}.section-title{font-family:var(--font-heading);font-size:clamp(1.4rem,2.5vw,1.9rem);font-weight:800;color:var(--text-primary);margin-bottom:6px}.section-subtitle{font-size:clamp(.85rem,1.4vw,1rem);color:var(--text-secondary)}.wishes-cards-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}@media (max-width: 860px){.wishes-cards-grid{grid-template-columns:1fr}}.wish-item-card{background:#fff;border:1.5px solid rgba(236,72,153,.25);border-radius:24px;padding:24px 20px;cursor:pointer;transition:var(--transition-smooth);display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 10px 25px #ec489914}.wish-item-card:hover{transform:translateY(-5px);border-color:#ec4899;box-shadow:0 18px 36px #ec489933}.wish-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.wish-badge{font-size:.68rem;font-weight:800;color:#ec4899;background:#fdf2f8;padding:4px 10px;border-radius:12px}.wish-icon-box{width:44px;height:44px;border-radius:14px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.2rem}.wish-icon-box.large{width:60px;height:60px;border-radius:18px;font-size:1.6rem;margin:0 auto 12px}.wish-card-title{font-family:var(--font-heading);font-size:1.2rem;font-weight:800;color:var(--text-primary);margin-bottom:8px}.wish-card-desc{font-size:.85rem;color:var(--text-secondary);line-height:1.5;margin-bottom:16px;flex-grow:1}.wish-card-action{display:flex;align-items:center;gap:6px;font-size:.82rem;font-weight:800;color:#ec4899}.wish-item-card.is-expanded{border-color:#ec4899;box-shadow:0 18px 45px #ec489938;background:linear-gradient(180deg,#fff,#fffbfd)}.wish-expanded-body{margin-top:14px;padding:18px 16px;background:#fff8fb;border-radius:18px;border:1.5px dashed rgba(236,72,153,.35);animation:fadeInDown .35s ease-out}.wish-full-message-text{font-size:.92rem;line-height:1.85;color:var(--text-primary);white-space:pre-line;margin-bottom:16px;font-weight:500}.wish-expanded-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;padding-top:12px;border-top:1px solid rgba(236,72,153,.15)}.btn-letter-action{background:#fff;border:1.5px solid rgba(236,72,153,.35);color:#db2777;font-size:.78rem;font-weight:800;padding:7px 14px;border-radius:20px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:var(--transition-smooth)}.btn-letter-action:hover{background:#ec4899;color:#fff;border-color:#ec4899;transform:translateY(-1px)}.btn-letter-action.action-primary{background:linear-gradient(135deg,#ec4899,#ff5e6c);color:#fff;border-color:transparent}.btn-letter-action.action-primary:hover{box-shadow:0 4px 14px #ec489966;transform:translateY(-2px)}.birthday-polaroid-row{display:flex;gap:18px;overflow-x:auto;padding:10px 4px 20px;scroll-snap-type:x mandatory}.birthday-polaroid-card{flex:0 0 220px;background:#fff;border-radius:18px;padding:12px 12px 16px;box-shadow:0 8px 24px #331e361a;border:1.5px solid rgba(255,140,82,.2);scroll-snap-align:start;transition:var(--transition-smooth)}.birthday-polaroid-card:hover{transform:translateY(-4px) rotate(1deg);box-shadow:0 14px 32px #ff5e6c38}.polaroid-photo-frame{width:100%;height:200px;border-radius:12px;overflow:hidden;margin-bottom:10px}.polaroid-photo-frame img{width:100%;height:100%;object-fit:cover}.polaroid-photo-caption{font-size:.76rem;font-weight:800;color:var(--text-primary);text-align:center;line-height:1.4}.birthday-wishboard-card{background:#fff;border:2px solid rgba(236,72,153,.25);border-radius:28px;padding:clamp(22px,3.5vw,36px);width:100%;margin-bottom:40px;box-shadow:0 12px 35px #ec489914}.wishboard-header{text-align:center;margin-bottom:20px}.wishboard-header i{font-size:2rem;color:#ec4899;margin-bottom:6px}.wishboard-header h2{font-family:var(--font-heading);font-size:clamp(1.25rem,2vw,1.6rem);font-weight:800;color:var(--text-primary)}.wishboard-header p{font-size:.88rem;color:var(--text-secondary);margin-top:4px}.wish-input-row{display:flex;gap:10px;max-width:600px;margin:0 auto 24px}@media (max-width: 580px){.wish-input-row{flex-direction:column}}.wish-input{flex:1;padding:12px 18px;border-radius:25px;border:1.5px solid rgba(236,72,153,.35);font-size:.88rem;outline:none;transition:var(--transition-smooth)}.wish-input:focus{border-color:#ec4899;box-shadow:0 0 12px #ec489940}.submit-wish-btn{background:linear-gradient(135deg,#ec4899,#ff5e6c);color:#fff;border:none;padding:12px 22px;border-radius:25px;font-weight:800;font-size:.85rem;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:var(--transition-smooth)}.submit-wish-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 18px #ec489959}.submit-wish-btn:disabled{opacity:.5;cursor:not-allowed}.wishes-cloud-list{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.wish-bubble{background:#fdf2f8;border:1px solid rgba(236,72,153,.25);padding:8px 16px;border-radius:20px;font-size:.82rem;font-weight:700;color:#be185d;display:flex;align-items:center;gap:8px;animation:fadeInDown .3s ease-out}.wish-bubble i{color:#ec4899}.modal-wish-header{text-align:center;margin-bottom:18px}.modal-wish-title{font-family:var(--font-heading);font-size:1.5rem;font-weight:800;color:var(--text-primary);margin-top:8px}.modal-wish-body{background:#fffaf6;border-radius:18px;padding:20px;border:1px solid rgba(255,140,82,.2);margin-bottom:20px}.modal-wish-text{font-size:.95rem;line-height:1.75;color:var(--text-primary)}.modal-wish-footer{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;font-weight:800;color:var(--text-secondary)}@media (max-width: 540px){.modal-wish-footer{flex-direction:column;gap:12px}}.modal-overlay{position:fixed!important;top:0;left:0;width:100vw;height:100vh;background:#0f0a14bf;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;z-index:999999!important;padding:20px;box-sizing:border-box;animation:fadeInDown .25s ease-out}.modal-card-box{background:#fff;border-radius:28px;padding:clamp(24px,4vw,36px);max-width:620px;width:100%;position:relative;box-shadow:0 25px 60px #00000059,0 0 35px #ec489940;border:2px solid rgba(236,72,153,.35);max-height:90vh;overflow-y:auto;animation:zoomIn .3s cubic-bezier(.16,1,.3,1)}.modal-close-btn{position:absolute;top:18px;right:18px;width:38px;height:38px;border-radius:50%;background:#fff0f3;border:1.5px solid rgba(236,72,153,.3);color:#db2777;font-size:1rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--transition-smooth);z-index:10}.modal-close-btn:hover{background:#db2777;color:#fff;transform:scale(1.1) rotate(90deg)}.birthday-lock-modal{background:#fff;border-radius:32px;padding:clamp(28px,4vw,40px);max-width:520px;width:100%;text-align:center;position:relative;box-shadow:0 25px 70px #0f0a1466,0 0 40px #ec489940;border:2px solid rgba(236,72,153,.4);animation:zoomIn .3s cubic-bezier(.16,1,.3,1)}.lock-modal-icon-wrap{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#fdf2f8,#ffe4e6);border:2px solid rgba(236,72,153,.4);display:flex;align-items:center;justify-content:center;margin:0 auto 18px;position:relative;box-shadow:0 10px 25px #ec489933}.lock-modal-icon{font-size:2.2rem;color:#db2777;animation:pulse 2s infinite ease-in-out}.lock-sparkle-tag{position:absolute;top:-4px;right:-4px;background:#f59e0b;color:#fff;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;box-shadow:0 2px 8px #f59e0b66}.lock-modal-title{font-family:var(--font-heading);font-size:clamp(1.35rem,2.5vw,1.75rem);font-weight:800;color:var(--text-primary);margin-bottom:10px}.lock-modal-desc{font-size:.92rem;color:var(--text-secondary);line-height:1.65;margin-bottom:20px}.lock-countdown-wrap{background:linear-gradient(135deg,#fff5f7,#fffbf0);border:1.5px dashed rgba(236,72,153,.4);border-radius:20px;padding:16px;margin-bottom:22px}.lock-countdown-label{font-size:.78rem;font-weight:800;color:#db2777;margin-bottom:12px;display:flex;align-items:center;justify-content:center;gap:6px;letter-spacing:.5px}.lock-modal-actions{display:flex;flex-direction:column;gap:10px}.btn-lock-close{background:linear-gradient(135deg,#ec4899,#ff5e6c);border:none;color:#fff;padding:13px 28px;border-radius:25px;font-family:var(--font-heading);font-size:.95rem;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 8px 22px #ec489959;transition:var(--transition-smooth)}.btn-lock-close:hover{transform:translateY(-2px);box-shadow:0 12px 28px #ec489980}.birthday-locked-fullpage{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:70vh;padding:30px 16px;width:100%;animation:fadeInDown .4s ease-out}@media (max-width: 900px){.main-portal-grid-3,.main-portal-grid-4{grid-template-columns:1fr;gap:20px}.photobooth-studio-grid{grid-template-columns:1fr;gap:28px}.mode-cards-grid{grid-template-columns:1fr;gap:16px}}@media (max-width: 768px){.app-container{padding:78px 16px 36px}.hero-header{margin-bottom:24px}.cards-grid-2x2{grid-template-columns:1fr;gap:16px}.revamped-love-card,.main-portal-card{min-height:auto}.revamped-card-inner,.portal-card-inner{padding:20px 18px}.photobooth-sidebar-card{padding:20px 16px;border-radius:24px}.sidebar-section-title{font-size:1rem}.photostrip-paper-frame{padding:22px 18px 18px;border-radius:24px;max-width:360px;margin:0 auto}.camera-actions-row .slide-next-btn{padding:14px 20px;font-size:.92rem}}@media (max-width: 480px){.app-container{padding:74px 12px 30px}.main-title{font-size:1.75rem}.subtitle{font-size:.85rem}.photobooth-sidebar-card{padding:16px 12px}.frame-theme-grid{grid-template-columns:repeat(2,1fr)}.sidebar-section-title{font-size:.92rem}.photostrip-paper-frame{padding:18px 14px 14px;max-width:100%}.camera-label-tag{font-size:.65rem;padding:3px 8px}}@keyframes flashShutter{0%{opacity:1}to{opacity:0}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}@keyframes zoomIn{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}@keyframes popInHeart{0%{opacity:0;transform:scale(0) translateY(18px)}65%{opacity:1;transform:scale(1.35) translateY(-3px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes flyFlight{0%{left:5%;transform:rotate(0)}to{left:85%;transform:rotate(5deg)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}@keyframes heartBeat{0%,to{transform:scale(1)}14%{transform:scale(1.25)}28%{transform:scale(1)}42%{transform:scale(1.25)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
