:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}body{margin:0}#root{text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;min-height:100%}body{color:#493b27;background:#f8f1df;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.app{width:100%;min-height:100vh;overflow-x:hidden}.welcome-mode{background:radial-gradient(circle at 20% 20%,#ffd65c2e,#0000 30%),radial-gradient(circle at 80% 80%,#f2bc4124,#0000 30%),#f8f1df;place-items:center;min-height:100vh;padding:24px;display:grid}.bouquet-mode{background:radial-gradient(circle at 15% 20%,#ffd86329,#0000 28%),radial-gradient(circle at 85% 80%,#e7b4431f,#0000 30%),#f8f1df;min-height:100vh}.welcome{text-align:center;width:min(680px,100%);padding:48px 28px;position:relative}.welcome:before,.welcome:after{content:"";filter:blur(4px);z-index:0;background:#f5c54214;border-radius:50%;width:90px;height:90px;position:absolute}.welcome:before{top:5%;left:-5%}.welcome:after{bottom:0;right:-5%}.welcome>*{z-index:1;position:relative}.welcome-flower{margin-bottom:20px;font-size:clamp(3rem,8vw,5rem);animation:3s ease-in-out infinite welcomeFloat}.eyebrow{letter-spacing:.22em;text-transform:uppercase;color:#9b7c3c;margin-bottom:18px;font-size:.76rem}.welcome h1{color:#493b27;margin-bottom:22px;font-family:Georgia,Times New Roman,serif;font-size:clamp(2rem,5vw,4rem);line-height:1.08}.welcome-text{color:#756448;max-width:540px;margin:0 auto;font-size:clamp(1rem,2vw,1.15rem);line-height:1.8}.main-button{color:#fffdf5;cursor:pointer;background:#e8b93f;border:none;border-radius:999px;margin-top:32px;padding:15px 25px;font-size:.95rem;font-weight:700;transition:transform .25s,box-shadow .25s,background .25s;box-shadow:0 12px 30px #ac81242e,inset 0 1px #ffffff59}.main-button:hover{background:#dcae31;transform:translateY(-3px);box-shadow:0 16px 34px #ac812440,inset 0 1px #fff6}.main-button:active{transform:translateY(-1px)}.code-note{color:#a18c68;letter-spacing:.04em;justify-content:center;align-items:center;gap:9px;margin-top:30px;font-size:.78rem;display:flex}.code-note svg{width:19px;height:19px}.gift{grid-template-columns:minmax(0,1.08fr) minmax(350px,.92fr);align-items:center;gap:clamp(35px,6vw,90px);width:min(1400px,100%);min-height:100vh;margin:0 auto;padding:clamp(30px,5vw,70px);display:grid}.bouquet-side{flex-direction:column;justify-content:center;align-items:center;min-width:0;display:flex}.bouquet-heading{text-align:center;width:100%;margin-bottom:8px}.bouquet-heading span{letter-spacing:.2em;text-transform:uppercase;color:#a58a57;font-size:.72rem;display:inline-block}.bouquet-wrapper{justify-content:center;align-items:center;width:min(100%,700px);display:flex;position:relative}.bouquet-svg{z-index:2;width:min(100%,620px);height:auto;display:block;position:relative;overflow:visible}.polaroids{pointer-events:none;z-index:1;position:absolute;inset:0}.polaroid{opacity:0;background:#fffdf7;width:145px;padding:10px 10px 32px;animation:.8s cubic-bezier(.2,.8,.2,1) forwards polaroidAppear;position:absolute;box-shadow:0 10px 25px #46341929,0 2px 6px #46341914}.polaroid img{aspect-ratio:1;object-fit:cover;width:100%;display:block}.polaroid-1{--rotation:-8deg;transform:rotate(var(--rotation));animation-delay:4.8s;top:23%;left:9%}.polaroid-2{--rotation:7deg;transform:rotate(var(--rotation));animation-delay:5.05s;top:15%;right:8%}.polaroid-3{--rotation:-5deg;transform:rotate(var(--rotation));animation-delay:5.3s;bottom:8%;left:14%}.draw{fill:none;stroke-linecap:round;stroke-linejoin:round}.stem{stroke:#66824f;stroke-width:8px;stroke-dasharray:700;stroke-dashoffset:700px;animation:1.8s cubic-bezier(.4,0,.2,1) forwards drawStem}.stem:first-child{animation-delay:.15s}.stem:nth-child(2){animation-delay:.3s}.stem:nth-child(3){animation-delay:.42s}.stem:nth-child(4){animation-delay:.55s}.stem:nth-child(5){animation-delay:.68s}.stem:nth-child(6){animation-delay:.8s}.stem:nth-child(7){animation-delay:.92s}.stem:nth-child(8){animation-delay:1.04s}.branch{stroke:#75945b;stroke-width:5px;stroke-dasharray:500;stroke-dashoffset:500px;animation:1.1s forwards drawBranch}.branch:first-child{animation-delay:1.25s}.branch:nth-child(2){animation-delay:1.35s}.branch:nth-child(3){animation-delay:1.45s}.branch:nth-child(4){animation-delay:1.55s}.branch:nth-child(5){animation-delay:1.65s}.branch:nth-child(6){animation-delay:1.75s}.origin-dot{fill:#66824f;opacity:0;animation:.5s 50ms forwards originAppear}.leaf{opacity:0;transform-box:fill-box;transform-origin:50%;animation:leafAppear .8s cubic-bezier(.2, .8, .2, 1) var(--leaf-delay) forwards}.leaf>path:first-child{fill:#718e55}.leaf-vein{fill:none;stroke:#314f2573;stroke-width:2px;stroke-linecap:round}.leaf:nth-child(2n)>path:first-child{fill:#5f7f48}.bouquet-flower{opacity:0;animation:flowerFade .8s ease var(--flower-delay) forwards}.bouquet-flower .petals{transform-box:fill-box;transform-origin:50%;animation:flowerBloom .9s cubic-bezier(.2, .85, .2, 1) var(--flower-delay) both}.bouquet-flower .petals path{fill:#f4c83f;stroke:#dcae2d;stroke-width:1.4px}.bouquet-flower .petals path:nth-child(odd){fill:#f7cf4d}.flower-center-outer{fill:#b77a25;opacity:.95}.flower-center{fill:#8f5c1c}.flower-seeds circle{fill:#f0c64c}.small-flower{opacity:0;animation:flowerFade .7s ease var(--flower-delay) forwards}.small-flower .small-petals{transform-box:fill-box;transform-origin:50%;animation:flowerBloomSmall .75s cubic-bezier(.2, .85, .2, 1) var(--flower-delay) both}.small-petals ellipse{fill:#f3c743;stroke:#d9aa2e;stroke-width:1px}.small-center{fill:#9a651d}.filler-stem{stroke:#829c64;stroke-width:3px;stroke-dasharray:250;stroke-dashoffset:250px;animation:.8s 2.5s forwards drawBranch}.filler-dot{fill:#e8bb42;opacity:0;animation:.5s forwards fillerAppear}.filler-dot:first-of-type{animation-delay:3.05s}.filler-dot:nth-of-type(2){animation-delay:3.15s}.filler-dot:nth-of-type(3){animation-delay:3.25s}.filler-dot:nth-of-type(4){animation-delay:3.35s}.tie-area{opacity:0;animation:.8s 2.75s forwards ribbonAppear}.tie-band{fill:#e6b93f;stroke:#c89d2d;stroke-width:2px}.ribbon{fill:#f0c74a;stroke:#c99f30;stroke-width:2px}.ribbon-center{fill:#dba92f;stroke:#bd8c23;stroke-width:2px}.draw-ribbon{stroke-dasharray:250;stroke-dashoffset:250px;animation:.9s 2.95s forwards drawRibbon}.sparkle{fill:#e9bc43;opacity:0;animation:1.8s ease-in-out infinite sparkleAppear}.sparkle-1{animation-delay:4.2s}.sparkle-2{animation-delay:4.6s}.sparkle-3{animation-delay:4.9s}.sparkle-4{animation-delay:5.2s}.bouquet-caption{text-align:center;flex-direction:column;align-items:center;gap:5px;margin-top:-10px;display:flex}.bouquet-caption span:first-child{color:#aa9775;font-size:.72rem;font-style:italic}.bouquet-caption span:last-child{color:#806d4c;font-size:.78rem}.letter{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffcf1e6;border:1px solid #b5914938;border-radius:22px;flex-direction:column;justify-self:center;width:100%;max-width:570px;height:min(720px,85vh);padding:0;display:flex;position:relative;overflow:hidden;box-shadow:0 24px 70px #5a431b1a,0 4px 18px #5a431b0d}.letter:before{content:"";pointer-events:none;z-index:5;border:1px solid #be994d1f;border-radius:16px;position:absolute;inset:10px}.letter-top{text-align:center;border-bottom:1px solid #b5914926;flex-shrink:0;padding:22px 28px 18px}.letter-top span{letter-spacing:.18em;color:#a48a57;font-size:.68rem}.letter-content{text-align:center;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#b4914b4d transparent;flex:1;min-height:0;padding:38px 30px 38px clamp(28px,5vw,52px);overflow:hidden auto}.letter-content::-webkit-scrollbar{width:5px}.letter-content::-webkit-scrollbar-track{background:0 0}.letter-content::-webkit-scrollbar-thumb{background:#b4914b4d;border-radius:999px}.letter-content::-webkit-scrollbar-thumb:hover{background:#b4914b80}.letter-greeting{color:#594527;margin-bottom:28px;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.7rem,4vw,2.4rem)}.letter-content p:not(.letter-greeting):not(.letter-small){color:#675638;margin-bottom:22px;font-family:Georgia,Times New Roman,serif;font-size:clamp(1rem,2vw,1.12rem);line-height:1.8}.letter-divider{color:#d6a936;margin:28px 0;font-size:1rem}.letter-small{color:#9b8867;max-width:390px;margin:0 auto;font-size:.9rem;font-style:italic;line-height:1.7}.letter-bottom{z-index:6;background:#fffcf18c;border-top:1px solid #b591491f;flex-shrink:0;justify-content:space-between;align-items:flex-end;gap:20px;padding:22px 28px 28px;display:flex;position:relative}.signature{flex-direction:column;gap:4px;display:flex}.signature span{color:#9c8968;font-family:Georgia,Times New Roman,serif;font-size:.85rem}.signature strong{color:#594527;font-family:Georgia,Times New Roman,serif;font-size:1.25rem;font-weight:500}.music-button{color:#765d2f;cursor:pointer;background:#f9eecaa6;border:1px solid #ae883840;border-radius:999px;align-items:center;gap:7px;padding:10px 14px;font-size:.78rem;transition:background .2s,transform .2s;display:flex}.music-button:hover{background:#f7e29de6;transform:translateY(-2px)}.music-button span{font-size:1rem}@keyframes welcomeFloat{0%,to{transform:translateY(0)rotate(-2deg)}50%{transform:translateY(-8px)rotate(2deg)}}@keyframes originAppear{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes drawStem{0%{stroke-dashoffset:700px}to{stroke-dashoffset:0}}@keyframes drawBranch{0%{stroke-dashoffset:500px}to{stroke-dashoffset:0}}@keyframes leafAppear{0%{opacity:0}60%{opacity:1}to{opacity:1}}@keyframes flowerFade{0%{opacity:0}to{opacity:1}}@keyframes flowerBloom{0%{transform:scale(.05)}55%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes flowerBloomSmall{0%{transform:scale(.05)}55%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes fillerAppear{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes ribbonAppear{0%{opacity:0}to{opacity:1}}@keyframes drawRibbon{0%{stroke-dashoffset:250px}to{stroke-dashoffset:0}}@keyframes sparkleAppear{0%,to{opacity:.15;transform:scale(.75)}50%{opacity:.9;transform:scale(1)}}@keyframes polaroidAppear{0%{opacity:0;transform:translateY(15px) scale(.94) rotate(var(--rotation))}to{opacity:1;transform:translateY(0) scale(1) rotate(var(--rotation))}}@media (width<=1050px){.gift{grid-template-columns:minmax(0,1fr) minmax(320px,.85fr);gap:30px;padding:35px}.bouquet-svg{width:min(100%,530px)}.letter-content{padding:32px 28px}.polaroid{width:125px}.polaroid-1{left:6%}.polaroid-2{right:5%}.polaroid-3{left:10%}}@media (width<=820px){.gift{grid-template-columns:1fr;gap:25px;padding:34px 24px 50px}.bouquet-side{width:100%}.bouquet-svg{width:min(100%,570px)}.letter{max-width:650px}.polaroid{width:120px}.polaroid-1{left:4%}.polaroid-2{right:4%}.polaroid-3{left:9%}}@media (width<=600px){.welcome-mode{padding:18px}.welcome{padding:35px 12px}.welcome-flower{margin-bottom:15px}.eyebrow{letter-spacing:.16em;font-size:.65rem}.welcome h1{font-size:clamp(1.9rem,10vw,2.8rem)}.welcome-text{font-size:.96rem;line-height:1.7}.main-button{width:100%;max-width:320px}.code-note{font-size:.7rem}.gift{gap:8px;padding:25px 14px 40px}.bouquet-heading{margin-bottom:0}.bouquet-heading span{font-size:.62rem}.bouquet-wrapper{width:100%}.bouquet-svg{width:100%;max-width:500px}.polaroid{width:94px;padding:7px 7px 21px}.polaroid-1{top:25%;left:3%}.polaroid-2{top:17%;right:3%}.polaroid-3{bottom:8%;left:9%}.bouquet-caption{margin-top:-5px}.bouquet-caption span:first-child,.bouquet-caption span:last-child{font-size:.68rem}.letter{border-radius:18px;height:78vh}.letter-top{padding:18px 18px 15px}.letter-top span{letter-spacing:.13em;font-size:.58rem}.letter-content{-webkit-overflow-scrolling:touch;padding:30px 26px 30px 22px}.letter-greeting{margin-bottom:22px;font-size:1.9rem}.letter-content p:not(.letter-greeting):not(.letter-small){margin-bottom:20px;font-size:.98rem;line-height:1.75}.letter-divider{margin:22px 0}.letter-small{font-size:.82rem}.letter-bottom{flex-direction:column;align-items:stretch;padding:18px}.signature{text-align:center;align-items:center}.music-button{justify-content:center;width:100%}}@media (width<=380px){.gift{padding-left:10px;padding-right:10px}.welcome h1{font-size:1.8rem}.letter{height:76vh}.letter-content{padding-left:18px;padding-right:22px}.letter-content p:not(.letter-greeting):not(.letter-small){font-size:.92rem;line-height:1.7}.polaroid{width:78px;padding:5px 5px 17px}.polaroid-1{left:1%}.polaroid-2{right:1%}.polaroid-3{left:7%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
