:root{--wedding-ivory:#fcfaf8;--wedding-blush:#f2e3e3;--wedding-sage:#a8b5a1;--wedding-gold:#d4af37;--wedding-text:#4a4a4a;--wedding-light:#f9f6f0;--shadow-soft:0 10px 40px -10px #0000000d;--font-kr:"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Noto Sans KR", system-ui, sans-serif;font-family:Lato, var(--font-kr);color:var(--wedding-text);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f2eb}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;min-height:100vh;color:var(--wedding-text);-webkit-tap-highlight-color:transparent;background:#f5f2eb;margin:0;overflow-x:hidden}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}::selection{background:var(--wedding-blush);color:var(--wedding-text)}.bg-canvas{z-index:0;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.app-shell{z-index:10;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fcfaf8f2;flex-direction:column;align-items:center;width:100%;max-width:480px;min-height:100vh;margin:0 auto;display:flex;position:relative;overflow:hidden;box-shadow:0 25px 50px -12px #00000040}.fade-up{opacity:0;transition:opacity 1s ease-out,transform 1s ease-out;transform:translateY(30px)}.fade-up.visible{opacity:1;transform:translateY(0)}.hero-section{text-align:center;flex-direction:column;justify-content:center;align-items:center;width:100%;min-height:100vh;padding:5rem 1.5rem 4rem;display:flex;position:relative}.hero-copy{margin-bottom:2rem}.eyebrow{color:var(--wedding-sage);letter-spacing:.2em;text-transform:uppercase;margin:0 0 1rem;font-size:.75rem;font-weight:700}h1,h2,h3,.thanks-title{font-family:Cormorant Garamond,serif}h1{color:#1f2937;margin:0;font-size:clamp(3rem,12vw,3.75rem);font-weight:400;line-height:1.05}h1 span{display:block}.ampersand{color:var(--wedding-gold);margin:.5rem 0;font-size:1.5rem;font-style:italic}.date-label{color:#6b7280;letter-spacing:.2em;text-transform:uppercase;margin:1.5rem 0 0;font-size:.875rem}.plant-wrap{flex-direction:column;justify-content:flex-end;align-items:center;width:100%;max-width:300px;height:350px;margin-top:1rem;display:flex;position:relative}.instruction-text{color:var(--wedding-gold);letter-spacing:.18em;text-align:center;text-transform:uppercase;white-space:nowrap;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffb3;border:1px solid #d4af3759;border-radius:999px;align-items:center;gap:.5rem;margin:0;padding:.5rem 1rem;font-size:.75rem;font-weight:700;transition:opacity .5s;animation:2s infinite pulseText;display:inline-flex;position:absolute;top:0;left:50%;transform:translate(-50%);box-shadow:0 4px 18px -8px #d4af3759}.instruction-text .tap-icon{flex-shrink:0}.instruction-text.hidden{opacity:0;pointer-events:none}.plant-svg{cursor:pointer;filter:drop-shadow(0 1px 1px #0000000d);-webkit-tap-highlight-color:transparent;width:100%;height:100%;transition:transform .2s;overflow:visible}.plant-svg:focus{outline:none}.plant-svg:focus-visible{outline:2px solid var(--wedding-gold);outline-offset:6px;border-radius:24px}.plant-svg.bump{transform:scale(1.02)}.plant-part{opacity:0;transition:all 1.2s cubic-bezier(.4,0,.2,1)}.plant-svg.stage-0 #soil{opacity:1;transform:scale(1)}.tap-hint{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s,visibility 0s linear .35s}.plant-svg.stage-0 .tap-hint{opacity:1;visibility:visible;transition:opacity .35s,visibility linear}.tap-ring{transform-origin:100px 225px;transform-box:view-box;opacity:0;animation:none}.plant-svg.stage-0 .tap-ring{animation:2.4s cubic-bezier(.2,.7,.3,1) infinite tapPulse}.plant-svg.stage-0 .tap-ring-delay{animation-delay:1.2s}.stage-1 #seed,.stage-1 #soil{opacity:1;transform:scale(1)}.stage-2 #seed{opacity:0}.stage-2 #soil,.stage-2 #sprout{opacity:1}.stage-2 #sprout{stroke-dashoffset:0}.stage-3 #soil,.stage-3 #stem{opacity:1}.stage-3 #sprout{opacity:0}.stage-3 #stem{stroke-dashoffset:0}.stage-4 #soil,.stage-4 #stem,.stage-5 #soil,.stage-5 #stem,.stage-5 #leaf-l1,.stage-5 #leaf-r1,.stage-6 #soil,.stage-6 #stem,.stage-6 #leaf-l1,.stage-6 #leaf-r1,.stage-6 #leaf-l2,.stage-6 #leaf-r2,.stage-7 #soil,.stage-7 #stem,.stage-7 #leaf-l1,.stage-7 #leaf-r1,.stage-7 #leaf-l2,.stage-7 #leaf-r2,.stage-8 #soil,.stage-8 #stem,.stage-8 #leaf-l1,.stage-8 #leaf-r1,.stage-8 #leaf-l2,.stage-8 #leaf-r2{opacity:1;stroke-dashoffset:0;transform:scale(1)}.stage-4 #leaf-l1,.stage-4 #leaf-r1,.stage-5 #leaf-l2,.stage-5 #leaf-r2,.stage-6 #bud{opacity:1;transform:scale(1)rotate(0)}.stage-7 #bud{opacity:0}.stage-7 #flower-center{opacity:1;transition-delay:.2s;transform:scale(1)}.stage-7 .petal,.stage-8 #flower-center,.stage-8 .petal{opacity:1;transform:scale(1)}.stage-7 #petal-1{transition-delay:.3s}.stage-7 #petal-2{transition-delay:.4s}.stage-7 #petal-3{transition-delay:.5s}.stage-7 #petal-4{transition-delay:.6s}.stage-7 #petal-5{transition-delay:.7s}.stage-8 .petal{animation:4s ease-in-out infinite alternate gentleFlutter}.stage-8 #petal-2{animation-delay:.5s}.stage-8 #petal-3{animation-delay:1s}.stage-8 #petal-4{animation-delay:1.5s}.stage-8 #petal-5{animation-delay:2s}#sprout,#stem{stroke-dasharray:150;stroke-dashoffset:150px;transition:stroke-dashoffset 1.5s ease-out,opacity .5s}#leaf-l1,#leaf-l2{transform-origin:100px;transform:scale(0)rotate(20deg)}#leaf-r1,#leaf-r2{transform-origin:100px;transform:scale(0)rotate(-20deg)}#bud,#flower-center,.petal{transform-origin:100px 80px;transform:scale(0)}.progress-dots{gap:.375rem;margin-top:1.5rem;display:flex}.progress-dots span{background:#e5e7eb;border-radius:999px;width:.375rem;height:.375rem;transition:background-color .3s,opacity .3s}.progress-dots span.active{background:var(--wedding-gold);opacity:1}.scroll-cue{opacity:.5;animation:1s infinite bounce;position:absolute;bottom:2.5rem;left:50%;transform:translate(-50%)}.section{width:100%}.padded{text-align:center;padding:4rem 1.5rem}.invitation-card{box-shadow:var(--shadow-soft);background:#fff;border:1px solid #f2e3e34d;border-radius:1.5rem;padding:2.5rem;position:relative}.card-pin{background:var(--wedding-ivory);border:1px solid #f2e3e34d;border-radius:999px;justify-content:center;align-items:center;width:2rem;height:2rem;display:flex;position:absolute;top:-1rem;left:50%;transform:translate(-50%)}.card-pin div{background:#a8b5a133;border-radius:999px;width:1rem;height:1rem}.invitation-card h2{color:#1f2937;margin:0 0 1.5rem;font-size:1.5rem;font-style:italic;font-weight:400}.invitation-text{color:#4b5563;font-size:.875rem;font-weight:300;line-height:2}.invitation-text p{margin:0}.gold-line{background:#d4af374d;width:2.5rem;height:1px;margin:1.5rem auto}.korean-copy{font-family:var(--font-kr);color:#4b5563;letter-spacing:-.01em;word-break:keep-all;padding-top:1.25rem;font-size:.95rem;font-weight:400;line-height:1.95}.details-section{padding:3rem 1.5rem}.details-section h2,.section-heading h2{color:#1f2937;text-align:center;margin:0;font-size:1.875rem;font-weight:400}.details-section h2{margin-bottom:2.5rem}.detail-list{gap:1.5rem;display:grid}.detail-card{background:var(--wedding-light);border-radius:1rem;align-items:flex-start;gap:1rem;padding:1.5rem;display:flex}.detail-icon{width:3rem;height:3rem;color:var(--wedding-sage);background:#fff;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:flex;box-shadow:0 1px 2px #0000000d}.detail-card h3{color:#1f2937;margin:0 0 .25rem;font-size:1.125rem;font-weight:500}.detail-card p{color:#4b5563;margin:0;font-size:.875rem}.detail-card .muted{color:#6b7280}.detail-card .venue{font-weight:700}.detail-card .note{color:#9ca3af;margin-top:.5rem;font-size:.75rem}.actions-section{gap:1rem;width:100%;padding:1rem 1.5rem 4rem;display:flex}.outline-button,.gold-button{letter-spacing:.025em;cursor:pointer;border-radius:.75rem;flex:1;justify-content:center;align-items:center;gap:.5rem;min-height:3.25rem;font-size:.875rem;font-weight:700;text-decoration:none;transition:background-color .2s,transform .2s;display:inline-flex}.outline-button{color:var(--wedding-gold);background:#fff;border:1px solid #d4af3766;box-shadow:0 1px 2px #0000000d}.gold-button{background:var(--wedding-gold);color:#fff;border:0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.outline-button:hover{background:#d4af370d}.gold-button:hover{background:#d4af37e6}.outline-button:active,.gold-button:active{transform:scale(.98)}.memories-section{background:#fff;width:100%;padding:3rem 0}.section-heading{text-align:center;margin-bottom:2rem;padding:0 1.5rem}.section-heading div{background:#a8b5a166;width:3rem;height:1px;margin:1rem auto 0}.memory-strip{scroll-snap-type:x mandatory;scrollbar-width:none;gap:1rem;padding:0 1.5rem 2rem;display:flex;overflow-x:auto}.memory-strip::-webkit-scrollbar{display:none}.memory-card{scroll-snap-align:center;border-radius:1rem;flex-shrink:0;justify-content:center;align-items:center;width:16rem;height:20rem;display:flex;position:relative;overflow:hidden;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.memory-card:after{content:"";opacity:0;background:#0000000d;transition:opacity .2s;position:absolute;inset:0}.memory-card:hover:after{opacity:1}.memory-one{background:linear-gradient(135deg,#f2e3e366,#a8b5a133)}.memory-two{background:linear-gradient(135deg, var(--wedding-ivory), #d4af371a)}.memory-three{background:linear-gradient(135deg,#a8b5a133,#f2e3e34d)}.memory-spacer{flex-shrink:0;width:.5rem;height:20rem}.photo-icon{color:#a8b5a180;width:2rem;height:2rem}.photo-icon.gold{color:#d4af374d}.thank-you-section{text-align:center;flex-direction:column;align-items:center;width:100%;padding:3rem 1.5rem 6rem;display:flex}.final-flower-wrap{width:6rem;height:6rem;margin-bottom:1.5rem;position:relative}.final-flower{filter:drop-shadow(0 1px 1px #0000000d);width:100%;height:100%}.thanks-title{color:#1f2937;margin:0 0 1rem;font-size:1.5rem;font-style:italic}.thanks-copy{color:#6b7280;max-width:250px;margin:0;font-size:.875rem;font-weight:300;line-height:1.625}.bottom-gradient{background:linear-gradient(90deg,#a8b5a14d,#f2e3e366,#d4af374d);width:100%;height:.5rem}@keyframes gentleFlutter{0%{filter:brightness();transform:scale(1)rotate(0)}50%{filter:brightness(1.1);transform:scale(1.05)rotate(2deg)}to{filter:brightness();transform:scale(1)rotate(-1deg)}}@keyframes pulseText{0%,to{opacity:.65}50%{opacity:1}}@keyframes tapPulse{0%{opacity:.85;transform:scale(.35)}70%{opacity:.15}to{opacity:0;transform:scale(1.7)}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translate(-50%,-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:translate(-50%)}}@media (width<=420px){.actions-section{flex-direction:column}}
