: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)}}#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}body{margin:0}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%}.timeline-container{max-width:800px;margin:50px auto;position:relative}.timeline-container:after{content:"";z-index:1;background-color:#ff1493;width:4px;margin-left:-2px;position:absolute;top:0;bottom:0;left:50%;box-shadow:0 0 10px #ff1493,0 0 20px #ff1493}.timeline-item{background-color:inherit;box-sizing:border-box;width:50%;padding:10px 40px;position:relative}.timeline-item:after{content:"";z-index:2;background-color:#050505;border:4px solid #ff1493;border-radius:50%;width:20px;height:20px;position:absolute;top:25px;right:-12px;box-shadow:0 0 20px #ff1493}.timeline-item:nth-child(odd){text-align:right;padding-right:70px;left:0}.timeline-item:nth-child(2n){text-align:left;padding-left:70px;left:50%}.timeline-item:nth-child(2n):after{left:-12px}.timeline-content{padding:20px 30px;position:relative}.timeline-date{color:#ff69b4;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;font-size:.9rem;font-weight:700;display:block}.timeline-content h3{color:#fff;text-shadow:0 0 8px #ff149399;margin:0 0 10px}.timeline-content p{color:#ccc;margin:0;font-size:1rem;line-height:1.5}.timeline-image{object-fit:cover;border:2px solid #ff149380;border-radius:6px;width:100%;max-height:180px;margin-top:15px}@media screen and (width<=768px){.timeline-container:after{left:31px}.timeline-item{width:100%}.timeline-item:nth-child(odd),.timeline-item:nth-child(2n){text-align:left;padding-left:70px;padding-right:25px;left:0}.timeline-item:nth-child(odd):after,.timeline-item:nth-child(2n):after{left:19px;right:auto}}:root{font-family:system-ui,-apple-system,sans-serif}body,html{color:#eee;background:#050505 radial-gradient(circle at 50% 0,#2a081a 0%,#050505 60%);min-height:100vh;margin:0;padding:0}.app-container{text-align:center;max-width:900px;margin:0 auto;padding:1rem 1.5rem 3rem}.heart-section{cursor:grab;z-index:10;width:100%;height:350px;margin-bottom:0;position:relative}.header.banner{background:#14141499;border-bottom:2px solid #ff1493;border-radius:0 0 20px 20px;margin-bottom:3rem;padding:2rem;box-shadow:0 10px 30px #ff149326}.header h1{color:#fff;text-shadow:0 0 15px #ff1493cc,0 0 30px #ff149366;text-transform:uppercase;letter-spacing:2px;margin-bottom:1rem;font-size:2.8rem}.header p{color:#ddd;font-size:1.15rem;font-weight:300;line-height:1.6}.header p strong{color:#ff1493;text-shadow:0 0 8px #ff149380}.glass-card{color:#fff;background:#141414cc;border-radius:16px;padding:1.5rem;position:relative;overflow:hidden;box-shadow:0 0 20px #ff14931a}.glass-card>*{z-index:1;position:relative}.glass-card:before{content:"";z-index:-2;background:conic-gradient(#0000 70%,#ff1493,#ffb6c1);width:800px;height:800px;animation:4s linear infinite spinGlow;position:absolute;top:50%;left:50%}.glass-card:after{content:"";z-index:-1;background:#111;border-radius:14px;position:absolute;inset:2px}@keyframes spinGlow{0%{transform:translate(-50%,-50%)rotate(0)}to{transform:translate(-50%,-50%)rotate(360deg)}}.counter-wrapper{margin-bottom:4rem}.section-subtitle{color:#fff;text-shadow:0 0 10px #ff149399;margin-bottom:1.5rem;font-size:2rem;font-style:italic;font-weight:300}.section-footer{color:#ddd;margin-top:1.5rem;font-size:1.2rem;font-style:italic}.counter-grid{flex-wrap:wrap;justify-content:center;gap:1.5rem;margin-bottom:0;display:flex}.counter-grid .glass-card{flex-direction:column;justify-content:center;align-items:center;min-width:100px;padding:2rem 1.5rem;display:flex}.counter-grid h2{color:#ff1493;text-shadow:0 0 10px #ff149399;margin:0 0 .5rem;font-size:2.8rem}.counter-grid span{color:#aaa;text-transform:uppercase;letter-spacing:1px;font-size:.9rem;font-weight:700}.hover-3d{transition:transform .4s cubic-bezier(.175,.885,.32,1.275),box-shadow .4s}.hover-3d:hover{transform:translateY(-10px)scale(1.05);box-shadow:0 15px 40px #ff149366}.milestones-grid{justify-content:center;gap:2rem;margin-bottom:5rem;display:flex}.milestones-grid .glass-card{background:0 0;min-width:180px;padding:2rem 1rem}.milestones-grid .glass-card:after{background:linear-gradient(135deg,#ff1493,#e83e8c,#d63384)!important}.milestones-grid .glass-card:before{background:conic-gradient(#0000 70%,#fff,#ffb6c1)}.milestones-grid h3{color:#fff;text-shadow:0 2px 5px #0000004d;margin:0 0 .5rem;font-size:2.2rem}.milestones-grid span{color:#fff;text-shadow:0 1px 3px #0003;text-transform:uppercase;font-size:1rem;font-weight:700}.photo-gallery{width:100%;margin:4rem 0 6rem}.gallery-container{perspective:1200px;justify-content:center;align-items:center;min-height:400px;display:flex;position:relative}.polaroid{cursor:pointer;background:#fff;border-radius:4px;width:220px;padding:12px 12px 25px;transition:transform .5s cubic-bezier(.2,.8,.2,1),box-shadow .5s;position:absolute;box-shadow:0 10px 25px #00000080,0 0 15px #ff14934d}.polaroid img{object-fit:cover;width:100%;height:220px}.polaroid-caption{text-align:center;margin-top:10px;font-size:1.5rem}.polaroid-1{z-index:1;transform:translate(-160px)translateY(-30px)translateZ(-100px)rotateY(15deg)rotate(-8deg)}.polaroid-2{z-index:2;transform:translate(0)translateY(10px)translateZ(0)rotateY(0)rotate(4deg)}.polaroid-3{z-index:1;transform:translate(160px)translateY(-40px)translateZ(-50px)rotateY(-15deg)rotate(-6deg)}.polaroid:hover{z-index:10;transform:translate(0)translateY(-20px)translateZ(150px)rotateY(0)rotate(0)scale(1.1);box-shadow:0 25px 50px #000000b3,0 0 40px #ff1493cc}.flip-container{perspective:1000px;width:100%;max-width:500px;height:220px;margin:0 auto}.flipper{transform-style:preserve-3d;width:100%;height:100%;transition:transform .8s;position:relative}.flipper.flipped{transform:rotateY(180deg)}.front,.back{backface-visibility:hidden;box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.front{z-index:2;transform:rotateY(0)}.back{cursor:pointer;transform:rotateY(180deg)}.back.glass-card:after{background:#d63384 radial-gradient(circle,#e83e8c,#910b38)}.reason-text{color:#fff;text-shadow:1px 1px 4px #00000080;margin-bottom:1rem;padding:0 1rem;font-size:1.5rem;font-style:italic}.tap-hint{opacity:.8;font-size:.9rem}.magic-button{color:#fff;cursor:pointer;background:#ff1493;border:none;border-radius:50px;margin-top:1rem;padding:1rem 2rem;font-size:1.1rem;font-weight:700;transition:transform .2s,background .2s,box-shadow .2s;box-shadow:0 0 15px #ff149399}.magic-button:hover{background:#ff69b4;transform:scale(1.05);box-shadow:0 0 25px #ff69b4cc}.letter-section{width:100%;margin:6rem 0 2rem}.envelope-wrapper{perspective:1000px;cursor:pointer;flex-direction:column;align-items:center;width:320px;margin:3rem auto;display:flex}.envelope{background:#d63384;border-radius:8px;width:100%;height:220px;position:relative;box-shadow:0 15px 30px #0006,0 0 20px #ff14934d}.left-flap,.right-flap,.bottom-flap,.top-flap{width:100%;height:100%;position:absolute;top:0;left:0}.left-flap{clip-path:polygon(0 0,50% 50%,0 100%);z-index:3;background:#e83e8c;border-radius:8px 0 0 8px}.right-flap{clip-path:polygon(100% 0,50% 50%,100% 100%);z-index:3;background:#e83e8c;border-radius:0 8px 8px 0}.bottom-flap{clip-path:polygon(0 100%,50% 50%,100% 100%);z-index:4;background:#ff1493;border-radius:0 0 8px 8px}.top-flap{clip-path:polygon(0 0,50% 50%,100% 0);z-index:5;transform-origin:top;background:#ff69b4;border-radius:8px 8px 0 0;transition:transform .5s .4s}.envelope-wrapper.open .top-flap{transition:transform .5s;transform:rotateX(180deg)}.letter{box-sizing:border-box;z-index:2;background:#fff;border-radius:8px 8px 0 0;flex-direction:column;justify-content:center;width:90%;height:95%;padding:1.5rem;transition:transform .5s,z-index 0s .5s;display:flex;position:absolute;bottom:0;left:5%;box-shadow:0 -2px 10px #0000001a}.envelope-wrapper.open .letter{z-index:6;transition:transform .5s .5s,z-index 0s .5s;transform:translateY(-160px)}.letter p{color:#333;text-shadow:none;margin:0 0 .8rem;font-size:.65rem;line-height:1.4}.envelope-wrapper:hover:not(.open){transition:transform .3s;transform:translateY(-5px)}.tap-to-open{color:#ffb6c1;margin-top:2rem;font-size:1rem;font-style:italic;font-weight:700}.modal-overlay{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:9999;perspective:1200px;touch-action:none;background:#000000d9;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:fixed;top:0;left:0}.modal-close{color:#fff;cursor:pointer;z-index:10000;background:#ff1493cc;border-radius:20px;padding:8px 16px;font-size:1rem;font-weight:700;position:absolute;top:20px;right:25px;box-shadow:0 0 15px #ff149399}.modal-polaroid{cursor:grab;-webkit-user-select:none;user-select:none;will-change:transform;transform-style:preserve-3d;background:#fff;border-radius:8px;padding:15px 15px 30px;transition:transform .4s cubic-bezier(.175,.885,.32,1.275);box-shadow:0 25px 50px #00000080,0 0 40px #ff149366}.modal-polaroid.dragging{cursor:grabbing;transition:none}.modal-polaroid img{object-fit:cover;pointer-events:none;border-radius:4px;width:85vw;max-width:450px;max-height:60vh}.modal-polaroid .polaroid-caption{text-align:center;margin-top:15px;font-size:2rem}.spotify-section{width:100%;max-width:400px;margin:6rem auto 4rem}.spotify-container{background:#14141499;border:1px solid #ff14934d;border-radius:16px;padding:1rem;box-shadow:0 10px 30px #ff149326}.timeline-section{width:100%;margin:6rem 0}.particles-container{pointer-events:none;z-index:0;width:100%;height:100%;position:fixed;top:0;left:0;overflow:hidden}.particle{background:#ffb6c1;border-radius:50%;animation:linear infinite floatUp;position:absolute;bottom:-20px;box-shadow:0 0 8px #ffb6c1,0 0 15px #ff1493}@keyframes floatUp{0%{opacity:0;transform:translateY(0)translate(0)}10%{opacity:.8}50%{transform:translateY(-50vh)translate(20px)}90%{opacity:.8}to{opacity:0;transform:translateY(-120vh)translate(-20px)}}.reveal{opacity:0;transition:opacity 1s ease-out,transform 1s cubic-bezier(.175,.885,.32,1.275);transform:translateY(60px)scale(.95)}.reveal.visible{opacity:1;transform:translateY(0)scale(1)}@media (width<=768px){.heart-section{height:250px}.header.banner{border-radius:16px;margin-bottom:2rem;padding:1.5rem 1rem}.header h1{font-size:2rem;line-height:1.4}.header p{font-size:1rem}.counter-grid{gap:.8rem}.counter-grid .glass-card{min-width:85px;padding:1.5rem .8rem}.counter-grid h2{font-size:2rem}.counter-grid span{font-size:.8rem}.milestones-grid{flex-direction:column;align-items:center;gap:1.5rem}.milestones-grid .glass-card{width:100%;max-width:280px}.milestones-grid h3{font-size:1.8rem}.gallery-container{min-height:600px}.polaroid-1{transform:translateY(-160px)translateZ(-50px)rotate(-5deg)}.polaroid-2{transform:translateY(0)translateZ(0)rotate(4deg)}.polaroid-3{transform:translateY(160px)translateZ(-50px)rotate(-6deg)}.polaroid:hover{transform:translateY(0)translateZ(100px)scale(1.15)}.envelope-wrapper{margin:1rem auto;transform:scale(.85)}}.secret-gift-locked{text-align:center;border:1px solid #ff14934d;max-width:400px;margin:4rem auto}.secret-gift-locked h3{color:#ff1493;margin-bottom:.5rem}.secret-gift-locked p{color:#ccc;font-style:italic}.secret-gift-container{flex-direction:column;align-items:center;width:100%;max-width:500px;margin:4rem auto;display:flex;position:relative}.secret-canvas-container{z-index:10;width:100%;height:300px;position:relative}.secret-ui-container{z-index:20;width:100%;margin-top:-2.5rem}.secret-form{background:#0c050fd9;border:1px solid #ff149366;flex-direction:column;align-items:center;gap:1.2rem;display:flex}.secret-hint{color:#ffb6c1;text-align:center;margin-bottom:.5rem;font-style:italic}.secret-input{color:#fff;text-align:center;background:#ffffff1a;border:1px solid #ff69b4;border-radius:25px;outline:none;width:85%;padding:.8rem 1rem;font-size:1rem;transition:all .3s}.secret-input:focus{background:#fff3;box-shadow:0 0 15px #ff69b499}.secret-input::placeholder{color:#fff6}.secret-error{color:#ff4b4b;text-shadow:0 0 5px #ff4b4b80;margin:0;font-size:.85rem}.secret-success{text-align:center;background:#0c050fd9;border:1px solid gold;padding:3rem 2rem;box-shadow:0 0 30px #ffd70026}.secret-success h3{color:gold;text-shadow:0 0 15px #ffd70080;margin-bottom:1.5rem;font-size:1.8rem}.gold-button{text-transform:uppercase;color:#111;background:linear-gradient(45deg,gold,#ffb6c1,gold) 0 0/200%;border-radius:50px;padding:1rem 2rem;font-size:1.1rem;font-weight:700;text-decoration:none;transition:all .3s;animation:3s linear infinite goldShine;display:inline-block;box-shadow:0 0 15px #ffd70099}.gold-button:hover{transform:scale(1.05);box-shadow:0 0 25px #ffd700cc}@keyframes goldShine{0%{background-position:0%}to{background-position:200%}}.shake{animation:.5s cubic-bezier(.36,.07,.19,.97) both shake}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-4px)}40%,60%{transform:translate(4px)}}.fade-in{animation:1.2s ease-in fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}
