.player{width:100%;min-height:100vh;flex-direction:column;justify-content:space-between;padding:24px;position:relative;background:var(--gift-bg)}.player,.player-entry-music{display:flex;align-items:center}.player-entry-music{gap:12px;width:min(100%,540px);margin:0 auto 14px;padding:12px 14px;border:1px solid var(--border-light,#e8ddd4);border-radius:15px;background:#ffffffb3;color:var(--text-main)}.player-entry-music>svg{flex-shrink:0;color:var(--gift-accent,#bf4c3c)}.player-entry-music>span{min-width:0;flex:1 1;overflow-wrap:anywhere}.player-entry-music strong{display:block;font-size:.8rem}.player-entry-music small{display:block;margin-top:3px;font-size:.71rem;line-height:1.5;color:var(--text-secondary)}.player-entry-music button{display:flex;align-items:center;justify-content:center;gap:6px;min-height:44px;min-width:44px;flex-shrink:0;padding:9px 12px;border:1px solid var(--border-light,#e8ddd4);border-radius:10px;color:var(--text-main);background:#fffaf5;cursor:pointer;font:inherit;font-size:.78rem}.player-entry-music button:disabled{opacity:.5;cursor:wait}.player-entry-music button:focus-visible{outline:3px solid var(--gift-accent,#bf4c3c);outline-offset:3px}.player-entry-spotify{width:min(100%,540px);margin:0 auto 14px}.player-entry-spotify iframe{width:100%;border:0;border-radius:12px}.player-entry-spotify .player-entry-music{margin-bottom:8px}.theme-dark .player-entry-music{background:#ffffff0d}.theme-dark .player-entry-music button{background:#ffffff12}.player-toolbar{width:100%;max-width:600px;display:flex;justify-content:space-between;align-items:center;font-size:.88rem;color:var(--text-secondary);z-index:10}.player-toolbar>span{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--gift-accent)}.player-toolbar>div{display:flex;gap:8px}.scene-progress{display:flex;gap:6px;width:100%;max-width:480px;margin:12px 0}.scene-progress span{flex:1 1;height:4px;background:rgba(0,0,0,.08);border-radius:var(--radius-full);transition:background .3s}.scene-progress span.active{background:var(--gift-accent)}.player-bottom{max-width:540px;justify-content:space-between;padding:16px 0;font-size:.85rem;color:var(--text-muted)}.player-bottom,.player-music-bar{width:100%;display:flex;align-items:center;z-index:10}.player-music-bar{max-width:480px;margin:10px auto 4px;justify-content:center}.player-credit{font-size:.75rem;color:var(--text-muted);display:flex;align-items:center;gap:4px;margin-top:8px}.preview-viewport-frame .player{width:100%!important;height:100%!important;min-height:100%!important;max-height:100%!important;padding:14px 16px 10px!important;overflow:hidden!important;display:flex!important;flex-direction:column!important;justify-content:space-between!important;box-sizing:border-box!important}.preview-viewport-frame .player .player-toolbar{flex-shrink:0;width:100%;margin-bottom:2px}.preview-viewport-frame .player .scene-progress{flex-shrink:0;margin:4px 0 8px}@media (min-width:768px){.player .scene-split-container,.preview-viewport-frame.frame-fullscreen .scene-split-container{display:grid;grid-template-columns:1fr 1.15fr;grid-gap:28px;gap:28px;align-items:center;max-width:860px;margin:auto;padding:8px 16px}.player .scene-split-left{align-items:center;text-align:center}.player .scene-split-left .scene-custom-photo-card{max-width:250px;margin:8px auto 0}.player .scene-split-right{align-items:center;justify-content:center}}.preview-viewport-frame .player .balloons{margin:10px 0;gap:8px}.preview-viewport-frame .player .balloons button{width:44px;height:56px;font-size:1rem}.preview-viewport-frame .player .interactive-candles{margin:0}.preview-viewport-frame .player .birthday-cake{margin:12px 0}.preview-viewport-frame .player .fortune-scratch,.preview-viewport-frame .player .scratch-card{max-width:340px;max-height:220px}.preview-viewport-frame .player .wheel-container{transform:scale(.85);margin:-15px 0}.preview-viewport-frame .player .player-bottom{flex-shrink:0;width:100%;padding:8px 0 2px;margin-top:auto}.preview-viewport-frame .player .player-credit{flex-shrink:0;margin-top:2px;font-size:.72rem}.admin-preview-stage .player{height:580px;max-height:580px;min-height:480px!important;overflow:hidden!important;display:flex!important;flex-direction:column!important;justify-content:space-between!important;padding:16px 20px!important}.player-music-loader-overlay{position:absolute;inset:0;background:rgba(255,252,248,.94);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;animation:fadeIn .3s ease-out}.player-music-loader-box{background:#ffffff;border:1px solid var(--border-light,#efe6dc);border-radius:24px;padding:32px 24px;max-width:380px;width:100%;text-align:center;box-shadow:0 16px 40px rgba(78,59,54,.12);display:flex;flex-direction:column;align-items:center}.player-music-loader-box h3{font-size:1.15rem;font-weight:700;color:var(--text-primary,#2A1F1D);margin-bottom:6px}.player-music-loader-box p{font-size:.84rem;color:var(--text-secondary,#7A6963);margin-bottom:20px}.phone-screen-scroll .player{min-height:720px;padding-bottom:36px}.youtube-bar{padding:6px 14px;background:rgba(255,255,255,.85);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-full);box-shadow:var(--shadow-sm);border:1px solid rgba(0,0,0,.06);gap:8px;font-size:.8rem;color:var(--text-secondary)}.music-pulse{display:flex;align-items:center;justify-content:center;color:var(--gift-accent);animation:pulse 1.5s ease-in-out infinite}.music-title{font-weight:500;color:var(--text-main);font-size:.8rem}button.youtube-bar{border:1px solid rgba(0,0,0,.08);font-family:inherit;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,background-color .16s ease}button.youtube-bar:hover{transform:translateY(-1px);box-shadow:var(--shadow-md);background:rgba(255,255,255,.96)}button.youtube-bar:active{transform:translateY(0)}.music-pulse.paused{animation:none;opacity:.65}.hidden-yt-container,.hidden-yt-iframe{position:fixed;left:-9999px;top:-9999px;width:200px;height:200px;opacity:.001;pointer-events:none;overflow:hidden;border:none}.spotify-bar{border-radius:12px;overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid rgba(0,0,0,.06);background:rgba(255,255,255,.7)}.spotify-iframe{border:none;border-radius:12px;display:block}.scene{flex:1 1;width:100%;max-width:520px;display:flex;flex-direction:column;align-items:center;justify-content:center;justify-content:safe center;text-align:center;padding:24px;position:relative;z-index:2;gap:16px}.scene h2{font-size:1.8rem;line-height:1.3;color:var(--text-main);font-family:var(--font-hand)}.scene-hint{font-size:.9rem;color:var(--text-secondary);margin-bottom:8px}.letter-text{font-size:1.15rem;line-height:1.7;color:var(--text-main);white-space:pre-line;background:rgba(255,255,255,.7);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:20px 24px;border-radius:var(--radius-md);border:1px solid rgba(0,0,0,.05);box-shadow:var(--shadow-sm);max-width:440px;margin:0 auto}.preview-viewport-frame .player .scene{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start!important;overflow-y:auto!important;overflow-x:hidden!important;max-height:100%;padding:6px 12px 28px;gap:10px;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.12) transparent;scroll-behavior:smooth;-webkit-overflow-scrolling:touch}.preview-viewport-frame .player .scene::-webkit-scrollbar{width:4px}.preview-viewport-frame .player .scene::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);border-radius:99px}.preview-viewport-frame .player .scene h2{font-size:1.45rem;line-height:1.25;margin-bottom:2px}.preview-viewport-frame .player .scene p.letter-text{font-size:.98rem;padding:14px 18px;line-height:1.55;max-width:380px}.preview-viewport-frame .player .scene .letter-flower{font-size:1.35rem;color:var(--gift-accent,var(--accent-primary));opacity:.9;display:inline-block;margin:2px 0 6px}.preview-viewport-frame .player .scene p.signature{font-size:.9rem;color:var(--text-secondary);margin-top:6px;font-weight:500}.preview-viewport-frame .player .scene-hint{font-size:.84rem;margin-bottom:4px}.admin-preview-stage .player .scene{flex:1 1;overflow-y:auto;scrollbar-width:none}.finale-custom-photo-wrap{width:150px;height:150px;margin:0 auto 12px;display:flex;align-items:center;justify-content:center;position:relative}.finale-custom-photo{max-width:100%;max-height:100%;object-fit:contain;filter:drop-shadow(0 8px 22px rgba(224,90,119,.3));animation:gentleFloat 3s ease-in-out infinite}.hidden-yt-iframe{position:absolute;width:1px;height:1px;opacity:.01;pointer-events:none}.eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.1em;color:var(--accent-primary);display:flex;align-items:center;gap:6px;margin-bottom:6px}.eyebrow span{width:14px;height:2px;background:var(--accent-primary);display:inline-block}.scene-preview-player .scene{padding:8px 4px;gap:10px;min-height:100%;justify-content:center;justify-content:safe center;max-width:100%}.scene-preview-player .scene h2{font-size:1.35rem;line-height:1.25;margin-bottom:2px}.scene-preview-player .eyebrow{font-size:.68rem;margin-bottom:2px}.scene-preview-player .scene-hint{font-size:.84rem;line-height:1.35;margin-bottom:6px}.scene-preview-player .letter-text{font-size:.95rem;line-height:1.5;padding:12px 14px}@media (min-width:769px) and (max-width:1279px) and (orientation:landscape){.preview-viewport-frame.frame-fullscreen .player .scene{padding-inline:clamp(12px,3vw,28px)}}.celebration-letter-box .letter-text{font-size:.92rem;color:#5C3D42;line-height:1.55;margin:0;white-space:pre-wrap}.ds-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0}.player{height:100dvh;min-height:0;overflow:hidden;container:gift-canvas/inline-size;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}.player[data-viewport-fit]{height:var(--player-visual-height,100svh)}.player:not(.is-open){overflow-y:auto}.player>.player-bottom,.player>.player-credit,.player>.player-entry-music,.player>.player-entry-spotify,.player>.player-toolbar,.player>.scene-progress{flex-shrink:0}.player>.gift-cover{flex:1 0 auto;min-height:min(640px,calc(100cqw * 16 / 9));margin-top:8px}.player-footer{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;flex-shrink:0;width:100%;max-width:600px;min-height:44px;margin-top:8px;grid-gap:6px;gap:6px}.player-footer .player-credit{justify-self:center;margin:0;text-align:center;flex-wrap:wrap;justify-content:center}.player-cookie-settings{width:44px;height:44px;min-width:44px;min-height:44px}body:has(.player-cookie-settings) .cookie-floating-settings{display:none}.player>.scene{min-height:0;overflow-y:auto;justify-content:safe center}.player>.scene>*{flex-shrink:0}.player-toolbar{gap:10px}.player-toolbar>span{min-width:0;overflow-wrap:anywhere}.player-toolbar>div,.player-toolbar>span>svg{flex-shrink:0}.player-toolbar .icon-button{min-width:44px;min-height:44px}.player-bottom{gap:8px;flex-wrap:wrap}.player-bottom>span{flex-shrink:0;white-space:nowrap}.player-bottom>button{min-height:44px;line-height:1.4}.player .letter-text{overflow-wrap:anywhere}.player .ending a{min-height:44px;text-align:center}@container gift-canvas (max-width: 400px){.player-bottom{display:grid;grid-template-columns:auto auto minmax(0,1fr);padding:6px 0;grid-gap:6px;gap:6px;font-size:.75rem}.player-bottom>.text-button{padding-inline:4px}.player-bottom>.gift-button{width:100%;min-width:0;padding-inline:8px;justify-content:center;font-size:.75rem;white-space:normal}.player-entry-music{flex-wrap:wrap;gap:8px}.player-entry-music>span{flex-basis:calc(100% - 32px)}.player-entry-music>button{width:100%}.player .letter-text{padding:16px;font-size:1rem}}.demo-page{height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-main,#fdfbf7)}.demo-navigation{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:12px max(16px,env(safe-area-inset-right)) 12px max(16px,env(safe-area-inset-left));border-bottom:1px solid var(--border-light)}.demo-navigation>a{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-size:.85rem;text-decoration:none}.demo-navigation>span{font-size:.78rem;color:var(--text-secondary)}.demo-page .player{height:auto;flex:1 1;min-height:0}.landing-cta-group>a{min-height:44px;white-space:normal;text-align:center}.landing-shell .step-content{min-width:0}.reviews-page-content>nav{flex-wrap:wrap}.reviews-page-content .ds-btn{white-space:normal;text-align:center}.reviews-page-content [aria-controls^=review-faq-]>span{min-width:0;overflow-wrap:anywhere}@media (max-width:540px){.landing-shell{padding:20px 16px 48px}.landing-hero{padding:20px 0 28px}.landing-badge{margin-bottom:14px}.landing-title{font-size:clamp(1.75rem,7.5vw,2.25rem);line-height:1.35}.landing-subtitle{margin-bottom:24px}.landing-cta-group{gap:10px}.landing-cta-group>a{width:100%;justify-content:center;padding-inline:16px;font-size:.95rem}.landing-cta-group>a>svg{flex-shrink:0}.demo-navigation>span{order:-1;flex-basis:100%}.demo-navigation>a{font-size:.78rem}.reviews-page-content>.ds-card,.reviews-page-content>div,.reviews-page-content>section{padding:24px 16px!important}}.player-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:20;padding:12px 16px max(12px,env(safe-area-inset-bottom));background:var(--gift-bg,#fdfbf7);border-top:1px solid var(--border-light)}.player .polaroid-card{font:inherit;color:inherit;cursor:pointer;border:0;text-align:center}.player .polaroid-card:focus-visible{outline:3px solid var(--gift-accent,#C34B3C);outline-offset:6px}.scene-loading{min-height:220px;display:grid;place-items:center;padding:24px;text-align:center;color:var(--text-secondary)}@media (prefers-reduced-motion:reduce){.player *,.player :after,.player :before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@container gift-canvas (max-width: 540px){.player .keypad-polaroid-col{max-width:180px;margin-inline:auto}.player .pin-keypad-layout{gap:16px}}.player-scene-content{flex:1 1;min-height:0;width:100%;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch}.player-scene-content>.scene{min-height:100%;margin-inline:auto;gap:12px;padding:12px}.player-scene-content>.scene>*{flex-shrink:0}.player:not(:has(.scene-catcher))>.player-scene-content{container:scene-slot/size}.player.is-open:has(.scene-catcher){overflow-y:auto;justify-content:flex-start}.player:has(.scene-catcher)>.player-scene-content{flex:1 0 auto;overflow:visible}.player:has(.scene-catcher)>.player-bottom{position:static}.player:has(.scene-catcher) .catcher-buttons button{min-height:44px;min-width:88px}@media (max-height:600px){.player .scene-catcher .catcher-playfield{height:120px;flex-shrink:0}.player .scene-catcher .catcher-box{gap:8px}.player .scene-catcher .catcher-controls{gap:4px}}.preview-viewport-frame .player .player-scene-content>.scene{flex:none;max-height:none;overflow:visible!important;justify-content:safe center!important}.player.is-open>.player-entry-music{margin-bottom:4px;padding:4px 10px;flex-wrap:nowrap}.player.is-open>.player-entry-music small{display:none}.player.is-open>.player-entry-music>span{flex-basis:auto}.player.is-open>.player-entry-music>button{width:auto}.player.is-open .player-entry-spotify{margin-bottom:4px}.player-spotify-disclosure{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:44px;padding:6px 12px;border:1px solid var(--border-light);border-radius:12px;background:var(--gift-bg);color:var(--text-main);font:inherit;font-size:.8rem;cursor:pointer}.player-entry-spotify [hidden]{display:none}.player-entry-spotify iframe{display:block}.player-entry-spotify.is-compact{position:relative}.player-entry-spotify.is-compact>div{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;max-height:min(260px,60dvh);overflow-y:auto;padding:8px;border:1px solid var(--border-light);border-radius:12px;background:var(--gift-bg);box-shadow:0 8px 24px #0002}@media (max-height:480px){.player{padding-block:max(4px,env(safe-area-inset-top)) max(4px,env(safe-area-inset-bottom))}.player .scene-progress{margin-block:6px}.player .player-bottom{display:flex;flex-wrap:nowrap;padding:4px 0}.player .player-bottom>.gift-button{width:auto}.player-footer{margin-top:4px}.player-toolbar{font-size:.75rem}}