
:root{--wine:#782a3c;--ink:#3c2630;--muted:#8b7577;--cream:#faf6f0;--line:#e8dcd5;--blush:#f1d7d3;--gold:#ad855b}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--cream);font-family:Arial,sans-serif;font-size:14px}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #bc935d;outline-offset:4px}button{border:0}header{max-width:1250px;margin:auto;padding:25px 36px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:16px}.brand{display:flex;align-items:center;gap:12px}.brand-icon{font-size:32px;color:var(--wine)}.brand-name{font-family:Georgia,serif;letter-spacing:2px;font-size:19px}.brand-sub{font-size:10px;letter-spacing:2.5px;color:var(--muted);margin-top:6px}.badge{border:1px solid #d8c6be;padding:8px 13px;border-radius:30px;color:var(--muted);font-size:11px;white-space:nowrap}.lead{max-width:1250px;margin:36px auto 28px;padding:0 36px;display:flex;justify-content:space-between;align-items:end;gap:25px}.eyebrow{font-size:10px;letter-spacing:2.5px;color:var(--gold);font-weight:600;margin:0 0 11px}.lead h1{font-family:Georgia,serif;font-weight:400;line-height:1.15;font-size:38px;margin:0 0 14px}.lead p{color:var(--muted);line-height:1.8;margin:0;font-size:13px}.product{display:flex;align-items:center;gap:12px;text-align:left;flex-shrink:0}.product img{width:63px;height:75px;object-fit:cover;border-radius:5px}.product span{display:block;font-family:Georgia,serif;font-size:16px}.product small{display:block;color:var(--muted);margin-top:6px;font-size:11px}.workspace{max-width:1250px;padding:0 36px 32px;margin:auto;display:grid;grid-template-columns:minmax(0,470px) minmax(0,1fr);gap:32px;align-items:start}.editor{background:#fffefa;border:1px solid var(--line);border-radius:18px;padding:27px}.section-heading{display:flex;align-items:center;gap:10px;margin:0 0 18px;font-size:15px;font-weight:500}.number{border:1px solid #ddc9c1;width:25px;height:25px;display:grid;place-items:center;border-radius:50%;font-size:11px;color:var(--wine)}.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}label{display:block;color:#6a5358;font-size:12px;margin-bottom:8px}input,textarea,select{width:100%;padding:12px 13px;background:white;border:1px solid #e0d3cb;border-radius:8px;color:var(--ink);min-width:0}textarea{resize:vertical;min-height:123px;line-height:1.65;margin-top:12px}select{font-size:12px}.section{padding-bottom:22px;margin-bottom:21px;border-bottom:1px solid var(--line)}.caption{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:10px;margin-top:7px}.upload-label{border:1px dashed #c7aca1;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:12px;padding:20px 10px;cursor:pointer;background:#faf4ef;color:var(--wine);font-size:12px}.upload-label b{font-size:22px;font-weight:400}.upload-label small{display:block;color:var(--muted);font-size:10px;margin-top:5px}.visually-hidden{position:absolute;clip:rect(0,0,0,0);clip-path:inset(50%);width:1px;height:1px;overflow:hidden;white-space:nowrap}.thumbs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:12px}.thumb{height:92px;border-radius:7px;overflow:hidden;position:relative}.thumb img{width:100%;height:100%;object-fit:cover}.thumb button{position:absolute;right:5px;top:5px;background:#fff7ee;color:var(--wine);border-radius:50%;height:23px;width:23px;font-size:16px}.hint{font-size:11px;line-height:1.75;color:var(--muted);margin:10px 0 0}.music-row{display:flex;gap:9px;align-items:center}.music-row select{flex:1;min-width:0}.music-row button{flex-shrink:0;min-height:43px;font-size:11px;padding:8px 13px}.preview-bottom{flex-wrap:wrap}.viewer-top{flex-wrap:wrap}.controls{flex-wrap:wrap}.section-heading{flex-wrap:wrap}.caption{gap:10px}.caption span:last-child{white-space:nowrap}.lead h1{max-width:600px}.lead p{max-width:540px}.two>*{min-width:0}.number{flex-shrink:0}.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.primary,.secondary{min-height:45px;border-radius:8px;padding:11px 16px;line-height:1.4}.primary{background:var(--wine);color:#fff7f0}.secondary{background:transparent;color:var(--wine);border:1px solid #d9c3b8}.wide{grid-column:1/-1}.check{display:flex;gap:8px;align-items:center;font-size:12px;margin:0 0 15px}.check input{width:auto;accent-color:var(--wine)}.demo-note{margin-top:15px;padding:12px;border-radius:8px;background:#f4ede6;color:#8b7469;line-height:1.7;font-size:10px}.preview-side{position:sticky;top:22px}.preview-label{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:11px;margin-bottom:12px}.live{width:5px;height:5px;border-radius:50%;background:#9d6b4d;display:inline-block;margin-right:6px}.cover{background:#6b2539;border-radius:18px;padding:34px 38px;min-height:560px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden;box-shadow:0 20px 40px #4a1e2b15}.cover:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 0 100%,#b2765360,transparent 60%),radial-gradient(ellipse at 100% 0,#c2646040,transparent 55%)}.cover .corner{position:absolute;width:160px;opacity:.25;pointer-events:none}.corner.top{top:-38px;right:-40px;transform:rotate(35deg)}.corner.bottom{bottom:-50px;left:-40px;transform:rotate(205deg)}.paper{background:#fcf5e9;box-shadow:0 20px 40px #240b1b40;padding:40px 24px 24px;text-align:center;width:100%;position:relative;border-radius:3px;min-height:392px;display:flex;flex-direction:column;align-items:center}.paper:after{content:"";position:absolute;inset:10px;border:1px solid #cfaca1;pointer-events:none}.paper .eyebrow{font-size:8px;letter-spacing:3px;margin-top:7px}.paper h2{font-family:Georgia,serif;font-size:48px;line-height:1.05;font-weight:400;color:var(--wine);margin:17px 0 10px}.to{font-family:Georgia,serif;font-style:italic;font-size:23px;overflow-wrap:anywhere;max-width:100%}.paper p{font-family:Georgia,serif;font-size:14px;line-height:1.7;color:#916e63;max-width:250px;margin:13px 0 20px}.paper .primary{margin-top:auto;z-index:1;font-size:12px}.cover-caption{font-family:Georgia,serif;font-style:italic;color:#e9c4b1;position:relative;margin:23px 0 0;font-size:16px;letter-spacing:1px}.preview-bottom{padding:19px 3px;display:flex;gap:22px;color:var(--muted);font-size:11px;justify-content:center}.preview-bottom span{display:flex;align-items:center;gap:6px}.footer{max-width:1250px;margin:auto;padding:21px 36px;border-top:1px solid var(--line);font-size:10px;color:var(--muted);display:flex;justify-content:space-between;gap:15px}.recipient{position:fixed;inset:0;background:#542034;z-index:20;display:none;overflow:auto;color:#fff4e9;background-image:radial-gradient(ellipse at 50% 15%,#94475980,transparent 70%)}.recipient.active{display:block}.viewer-top{position:relative;z-index:2;max-width:1120px;margin:0 auto;padding:25px;display:flex;align-items:center;justify-content:space-between;gap:15px}.viewer-top .brand-name{font-size:16px}.viewer-top button{color:#ecd3c8;border:1px solid #ab7881;background:transparent;border-radius:30px;padding:9px 16px;font-size:11px}.gift-intro{min-height:calc(100svh - 90px);display:flex;align-items:center;justify-content:center;padding:20px 24px 60px}.gift-intro-inner{text-align:center;max-width:470px;width:100%}.intro-kicker{color:#d6a785;font-size:10px;letter-spacing:4px}.envelope{margin:30px auto 28px;position:relative;width:260px;height:165px;background:#f3e2cc;border-radius:5px;box-shadow:0 20px 55px #21081950;overflow:hidden}.envelope:before{content:"";position:absolute;inset:0;background:linear-gradient(145deg,transparent 49.6%,#d6b3a0 50%,transparent 50.4%),linear-gradient(215deg,transparent 49.6%,#d6b3a0 50%,transparent 50.4%)}.seal{background:#8a3548;border:2px solid #a8515e;border-radius:50%;width:47px;height:47px;display:grid;place-items:center;position:absolute;top:63px;left:107px;font-size:25px;box-shadow:0 3px 8px #30112030}.gift-intro h2{font-family:Georgia,serif;font-size:43px;font-weight:400;margin:15px 0;overflow-wrap:anywhere}.gift-intro p{font-family:Georgia,serif;color:#dfb6ac;line-height:1.8;font-size:16px}.gift-intro .primary{background:#f1dcc5;color:#67283c;width:230px;margin-top:18px}.gift-intro small{display:block;font-size:10px;color:#c99492;line-height:1.8;margin-top:13px}.slideshow{max-width:1040px;margin:12px auto 30px;display:none;padding:0 25px}.slideshow.shown{display:block}.slide-frame{position:relative;background:#fcf4e8;border-radius:12px;overflow:hidden;min-height:530px;display:grid;grid-template-columns:1.08fr 1fr;box-shadow:0 28px 65px #290c1d35;color:var(--ink)}.visual{position:relative;min-height:530px;background:#edd9c8;overflow:hidden}.visual img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:slowzoom 7s ease-out both}.visual img.contain{object-fit:contain}.slide-copy{padding:45px 35px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;position:relative}.slide-copy:after{position:absolute;inset:15px;border:1px solid #e4cab8;content:"";pointer-events:none}.slide-copy .eyebrow{font-size:9px;letter-spacing:3px}.slide-copy h2{font-family:Georgia,serif;font-weight:400;color:var(--wine);font-size:38px;line-height:1.2;margin:10px 0 22px;overflow-wrap:anywhere;max-width:100%}.slide-message{white-space:pre-wrap;overflow-wrap:anywhere;font-family:Georgia,serif;font-size:17px;line-height:1.8;max-width:100%;margin:0}.signature{font-family:Georgia,serif;font-style:italic;color:var(--wine);font-size:18px;margin-top:25px;overflow-wrap:anywhere;max-width:100%}.progress{display:flex;gap:5px;margin:18px 0 14px}.progress span{height:3px;flex:1;background:#9c677b60;border-radius:2px}.progress span.done{background:#efcfac}.controls{display:flex;align-items:center;justify-content:center;gap:13px}.controls button{width:38px;height:38px;border:1px solid #ab7881;border-radius:50%;background:transparent;color:#ffe6d4;font-size:16px}.controls button.replay{width:auto;border-radius:24px;padding:0 15px;font-size:11px}.slide-count{font-size:11px;color:#d9b0a9;min-width:50px;text-align:center}.viewer-note{color:#ce989c;text-align:center;font-size:10px;line-height:1.8;margin-top:20px}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#34252b;color:white;padding:13px 20px;border-radius:10px;z-index:40;font-size:12px;max-width:90%;display:none;line-height:1.6}.toast.shown{display:block}.readonly .editor,.readonly header,.readonly .lead,.readonly .workspace,.readonly .footer{display:none}.readonly .recipient{display:block}.readonly #back{display:none}.heart-art{width:34px;height:34px;margin-top:14px;color:var(--wine)}@keyframes slowzoom{from{transform:scale(1)}to{transform:scale(1.035)}}@media(max-width:1000px){.workspace{gap:20px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.cover{padding:25px;min-height:535px}.editor{padding:22px}.paper h2{font-size:40px}.lead h1{font-size:32px}.product{display:none}}@media(max-width:720px){header{padding:20px}.brand-name{font-size:16px}.badge{font-size:10px;padding:7px 10px}.lead{padding:0 20px;margin:25px 0 22px}.lead h1{font-size:30px}.workspace{padding:0 20px 24px;grid-template-columns:1fr;gap:24px}.preview-side{position:static;grid-row:1}.cover{min-height:430px;padding:26px 29px}.paper{min-height:335px;padding:29px 20px 22px}.paper h2{font-size:40px}.paper p{margin:10px 0 16px}.cover-caption{margin-top:17px}.preview-bottom{padding-bottom:0}.footer{padding:18px 20px;flex-direction:column;line-height:1.7}.slide-frame{grid-template-columns:1fr;min-height:0}.visual{min-height:0;height:42svh;max-height:440px}.slide-copy{padding:35px 29px;min-height:290px}.slide-copy h2{font-size:31px;margin-bottom:14px}.slide-message{font-size:15px;line-height:1.8}.signature{margin-top:17px;font-size:17px}.viewer-top{padding:18px 20px}.slideshow{padding:0 16px;margin-top:5px}.gift-intro h2{font-size:37px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important}}[hidden]{display:none!important}

/* Rose-and-candle atmosphere */
.recipient{background:#341521;background-image:linear-gradient(90deg,#1d091466,#481c3070 48%,#1d091455),var(--rose-scene);background-size:cover;background-position:center;background-attachment:fixed;isolation:isolate}
.recipient.active{display:flex;flex-direction:column}.recipient:before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 48%,#3c112100 20%,#12091255 100%);z-index:-1}
.viewer-top{width:100%;max-width:1210px;padding:26px 30px;flex-shrink:0}.viewer-top .brand-name{letter-spacing:3px;text-shadow:0 2px 12px #15070f}.viewer-top button{backdrop-filter:blur(10px);background:#3b1c3680;border-color:#c19b8470}
.gift-intro{flex:1;min-height:calc(100svh - 85px);position:relative;z-index:1;padding-bottom:65px}.gift-intro-inner{background:linear-gradient(150deg,#461d3280,#32142345);padding:36px 35px 42px;border:1px solid #daa88945;border-radius:160px 160px 20px 20px;box-shadow:0 28px 75px #10040e55;backdrop-filter:blur(5px);max-width:490px}
.intro-kicker{letter-spacing:3px;color:#f4c09d}.gift-intro h2{font-size:46px;text-shadow:0 4px 20px #17041460}.gift-intro p{color:#f2d0c1}.gift-intro small{color:#deb7aa}.envelope{width:280px;height:177px;background:linear-gradient(125deg,#fff4df,#e7ccb0);box-shadow:0 16px 45px #17091370,0 0 50px #dc99571c;transform:rotate(-4deg);border:1px solid #e9c496}.seal{left:115px;top:66px;width:50px;height:50px;background:radial-gradient(circle at 32% 28%,#aa4056,#682237);border:2px solid #b55f65;color:#e7bc8f;box-shadow:0 4px 10px #38121c55;font-size:26px}.gift-intro .primary{background:linear-gradient(110deg,#f4dbc0,#e3b792);box-shadow:0 8px 26px #200a1550}
.slideshow{position:relative;z-index:1;width:100%;max-width:1190px;margin:auto;flex:1;min-height:calc(100svh - 95px);padding:24px 30px 35px}.slideshow.shown{display:flex;flex-direction:column;justify-content:center}.slide-frame{width:100%;min-height:570px;border-radius:14px;border:1px solid #dfb28a70;box-shadow:0 28px 80px #11051270,0 0 0 7px #ffd6b21a}.visual{min-height:570px}.slide-copy{background:radial-gradient(ellipse at 85% 10%,#edd3b340,transparent 55%),#fff5e7}.slide-copy:after{inset:18px;border-color:#c69f7660}.slide-copy h2{font-size:43px}.signature{font-size:21px}.visual img{object-position:50% 50%}.slide-frame.final-letter .visual img{object-position:8% center}.slide-frame.final-letter .slide-copy h2{font-size:47px}.slide-frame.final-letter .slide-copy:before{content:"♡";position:absolute;bottom:28px;left:50%;transform:translateX(-50%);color:#bf85804a;font-family:Georgia,serif;font-size:48px}.slide-copy .eyebrow{color:#a17649}.progress{gap:8px;margin-top:22px}.progress span{height:4px;background:#b9999570}.progress span.done{background:#f0c59c;box-shadow:0 0 10px #ebaa6250}.controls button{background:#3515278a;border-color:#dbac8c70;backdrop-filter:blur(8px)}.viewer-note{color:#e7bfae;text-shadow:0 1px 10px #200b11}
.petal-layer{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0}.petal{position:absolute;top:-50px;left:var(--x);width:var(--size);height:calc(var(--size)*1.35);border-radius:75% 12% 70% 20%;background:linear-gradient(135deg,#ce7386,#812a42 58%,#501429);box-shadow:inset 1px 1px 4px #e29aa430;opacity:0;animation:petal-fall var(--duration) linear var(--delay) infinite}.petal:nth-child(3n){filter:blur(1.3px);background:linear-gradient(135deg,#f0a4a8,#a04559 65%,#662339)}
@keyframes petal-fall{0%{transform:translate3d(0,-30px,0) rotate(0);opacity:0}8%{opacity:.6}85%{opacity:.45}100%{transform:translate3d(var(--drift),110svh,0) rotate(var(--turn));opacity:0}}
@keyframes reveal-letter{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.slide-copy.reveal{animation:reveal-letter .7s ease-out both}
.cover{background-image:linear-gradient(100deg,#4415275c,#5a253663),var(--rose-scene);background-size:cover;background-position:center}.cover .corner{display:none}.cover-caption{color:#f3ccb0;text-shadow:0 2px 7px #361326}.paper{background:linear-gradient(135deg,#fff8ea,#f8e5ce);border:1px solid #e9bc9266}
@media(min-width:1500px){.slideshow{max-width:1320px}.slide-frame,.visual{min-height:620px}}
@media(max-width:720px){.recipient{background-position:22% center;background-attachment:scroll}.viewer-top{padding:18px 20px}.viewer-top .brand-name{font-size:13px;letter-spacing:2px}.viewer-top button{padding:8px 12px}.gift-intro{padding:20px 20px 42px}.gift-intro-inner{padding:34px 22px;max-width:400px;border-radius:125px 125px 18px 18px}.gift-intro h2{font-size:39px}.envelope{width:250px;height:157px;margin:28px auto}.seal{left:101px;top:58px;width:46px;height:46px}.slideshow{padding:14px 17px 26px;min-height:calc(100svh - 80px)}.slide-frame{grid-template-columns:1fr;min-height:0;border-radius:10px;box-shadow:0 18px 45px #11051265,0 0 0 4px #ffd6b214}.visual{min-height:0;height:38svh;max-height:410px}.slide-copy{min-height:275px;padding:34px 28px 40px}.slide-copy h2,.slide-frame.final-letter .slide-copy h2{font-size:34px}.signature{font-size:18px}.slide-copy:after{inset:12px}.slide-message{font-size:15px;line-height:1.75}.slide-frame.final-letter .visual{height:30svh;max-height:310px}.slide-frame.final-letter .visual img{object-position:left 53%}.slide-frame.final-letter .slide-copy{padding-bottom:43px}.slide-frame.final-letter .slide-copy:before{font-size:29px;bottom:12px}.progress{margin-top:18px}.controls{gap:9px}.controls button{width:35px;height:35px}.controls button.replay{padding:0 11px}.petal:nth-child(n+9){display:none}}
@media(prefers-reduced-motion:reduce){.petal-layer{display:none}.slide-copy.reveal{animation:none}}


/* Online trial: permission state is confirmed by the API before the editor appears. */
.loading>header,.loading>.lead,.loading>.workspace,.loading>.footer{display:none}
#loading{padding:15vh 24px;text-align:center;line-height:1.8;font-family:Georgia,serif;color:var(--wine)}
#savedLinks{margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}
#savedLinks input{font:11px monospace}#savedLinks h3{font-family:Georgia,serif;color:var(--wine)}
[data-theme="sunset"] .recipient,[data-theme="sunset"] .cover{background-image:linear-gradient(140deg,#40233780,#d38c5660),var(--sunset-scene)}
[data-theme="cream"] .recipient,[data-theme="cream"] .cover{background-image:linear-gradient(120deg,#d9bc9770,#61453480),var(--cream-scene)}
[data-theme="cream"] .petal{opacity:.3}
button:disabled{opacity:.55;cursor:wait}#theme{margin-bottom:16px}
