*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scrollbar-gutter:stable}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none}img{max-width:100%;height:auto;display:block}.site-hidden{display:none}#lock-screen{position:fixed;inset:0;z-index:200;background:linear-gradient(145deg,#f5eeff,#fdf5ff 20%,#eef8f4 45%,#f8f0ff 70%,#f2faf7);display:flex;align-items:center;justify-content:center;transition:opacity .7s ease,transform .7s ease;overflow:hidden}#lock-screen:before{width:70vmax;height:70vmax;background:radial-gradient(circle,rgba(16,185,129,.18) 0,transparent 60%);top:-25%;right:-20%}#lock-screen:after,#lock-screen:before{content:"";position:absolute;border-radius:50%;pointer-events:none}#lock-screen:after{width:55vmax;height:55vmax;background:radial-gradient(circle,rgba(169,123,205,.28) 0,transparent 60%);bottom:-20%;left:-18%}#lock-screen.unlocking{opacity:0;transform:scale(1.04);pointer-events:none}.lock-inner{position:relative;width:100%;max-width:360px;padding:1.25rem}.lock-corner{position:absolute;pointer-events:none}.lock-lily-tl{top:-25px;left:-25px;width:190px;opacity:.32;transform:rotate(-12deg);animation:lock-float 6.5s ease-in-out infinite}.lock-bow-tr{top:24px;right:16px;width:140px;opacity:.38;animation:lock-float 5.2s ease-in-out 1.1s infinite}.lock-bow-bl{bottom:22px;left:14px;width:110px;opacity:.33;transform:scaleX(-1);animation:lock-float 7s ease-in-out .6s infinite}.lock-lily-br{bottom:-25px;right:-25px;width:165px;opacity:.3;transform:rotate(14deg) scaleX(-1);animation:lock-float 6s ease-in-out 2.2s infinite}.lock-card-bow-float{position:absolute;top:-52px;left:50%;transform:translateX(-50%);width:68px;opacity:.72;pointer-events:none;animation:lock-float 4s ease-in-out .3s infinite}@keyframes lock-float{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}.lock-lily-tl{animation:lock-float-tl 6.5s ease-in-out infinite}.lock-lily-br{animation:lock-float-br 6s ease-in-out 2.2s infinite}.lock-bow-bl{animation:lock-float-bl 7s ease-in-out .6s infinite}.lock-card-bow-float{animation:lock-float-bow 4s ease-in-out .3s infinite}@keyframes lock-float-tl{0%,to{transform:rotate(-12deg) translateY(0)}50%{transform:rotate(-12deg) translateY(-9px)}}@keyframes lock-float-br{0%,to{transform:rotate(14deg) scaleX(-1) translateY(0)}50%{transform:rotate(14deg) scaleX(-1) translateY(-9px)}}@keyframes lock-float-bl{0%,to{transform:scaleX(-1) translateY(0)}50%{transform:scaleX(-1) translateY(-9px)}}@keyframes lock-float-bow{0%,to{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-7px)}}.lock-card{position:relative;background:hsla(0,0%,100%,.78);backdrop-filter:blur(28px);-webkit-backdrop-filter:blur(28px);border-radius:28px;padding:2.2rem 1.6rem 1.8rem;text-align:center;box-shadow:0 12px 48px rgba(155,89,182,.13),0 2px 12px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.95)}.lock-card:before{content:"";position:absolute;inset:-1px;border-radius:29px;background:linear-gradient(135deg,rgba(169,123,205,.45),rgba(16,185,129,.2));z-index:-1}.lock-hint-top{font-family:Inter,sans-serif;font-size:.68rem;letter-spacing:.28em;text-transform:uppercase;color:rgba(16,185,129,.68);margin-bottom:.5rem}.lock-title{font-family:Dancing Script,cursive;font-size:2.4rem;color:#7b3fa0;margin-bottom:.4rem;line-height:1.2}.lock-hint{font-family:Cormorant Garamond,Georgia,serif;font-style:italic;font-size:.9rem;color:rgba(110,60,150,.55);margin-bottom:1.8rem}.pin-dots{display:flex;justify-content:center;gap:20px;margin-bottom:.8rem}.pin-dot{width:12px;height:12px;border-radius:50%;border:1.5px solid rgba(155,89,182,.28);background:transparent;transition:background .18s,border-color .18s,transform .12s,box-shadow .18s}.pin-dot.filled{background:linear-gradient(135deg,#a97bcd,#6ee7b7);border-color:transparent;transform:scale(1.2);box-shadow:0 0 10px rgba(110,231,183,.4)}.pin-dot.shake{animation:pin-shake .35s ease}@keyframes pin-shake{0%,to{transform:translateX(0)}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}.pin-error{font-family:Cormorant Garamond,Georgia,serif;font-style:italic;font-size:.9rem;color:rgba(155,89,182,.75);margin-bottom:.8rem;opacity:0;transition:opacity .25s;min-height:1.3rem}.pin-error.visible{opacity:1}.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.pin-key{font-family:Cormorant Garamond,Georgia,serif;font-size:1.55rem;color:rgba(80,40,110,.85);background:rgba(155,89,182,.07);border:1px solid rgba(155,89,182,.14);border-radius:16px;padding:1.05rem 0;cursor:pointer;transition:background .14s,transform .08s,border-color .14s;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.pin-key:hover{background:rgba(16,185,129,.12);border-color:rgba(16,185,129,.28)}.pin-key:active{transform:scale(.9);background:rgba(16,185,129,.22)}.pin-key-del{font-size:1.05rem;color:rgba(16,185,129,.7)}#veil{transition:opacity .8s ease}#veil.gone{opacity:0;pointer-events:none}.hero-bloom{position:absolute;border-radius:50%;filter:blur(70px);pointer-events:none;will-change:transform,opacity}.hero-bloom-l{width:50vw;height:50vw;max-width:420px;max-height:420px;background:radial-gradient(circle,rgba(155,89,182,.18),transparent 70%);top:15%;left:-12%;animation:bloom-pulse 6s ease-in-out infinite alternate}.hero-bloom-r{width:40vw;height:40vw;max-width:350px;max-height:350px;background:radial-gradient(circle,rgba(16,185,129,.15),transparent 70%);top:28%;right:-10%;animation:bloom-pulse 8s ease-in-out infinite alternate-reverse}@keyframes bloom-pulse{0%{transform:scale(1);opacity:.6}to{transform:scale(1.2);opacity:1}}#ds-pair{will-change:opacity,transform}.ds-avatar{position:relative;width:90px;height:90px;border-radius:50%;overflow:hidden;flex-shrink:0}@media (min-width:480px){.ds-avatar{width:115px;height:115px}}@media (min-width:768px){.ds-avatar{width:130px;height:130px}}.ds-photo{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center 15%;object-position:center 15%;border-radius:50%;display:block}.ds-avatar-d{box-shadow:0 0 0 2.5px rgba(155,89,182,.5),0 4px 20px rgba(155,89,182,.2)}.ds-avatar-s{box-shadow:0 0 0 2.5px rgba(16,185,129,.5),0 4px 20px rgba(16,185,129,.2)}.ds-deco{position:absolute;inset:-14px;width:calc(100% + 28px);height:calc(100% + 28px);animation:deco-spin 30s linear infinite reverse;pointer-events:none;will-change:transform}@keyframes deco-spin{to{transform:rotate(1turn)}}.ds-heart{width:32px;height:32px;flex-shrink:0;animation:heart-beat 2.5s ease-in-out infinite;will-change:transform}@media (min-width:480px){.ds-heart{width:40px;height:40px}}@media (min-width:768px){.ds-heart{width:48px;height:48px}}@keyframes heart-beat{0%,to{transform:scale(1)}25%{transform:scale(1.2)}50%{transform:scale(.95)}75%{transform:scale(1.12)}}.scroll-chevron{display:flex;align-items:center;justify-content:center;animation:chevron-bounce 1.6s ease-in-out infinite;opacity:.55}.scroll-chevron-2{animation-delay:.25s;opacity:.3}@keyframes chevron-bounce{0%,to{transform:translateY(0);opacity:.55}50%{transform:translateY(6px);opacity:.9}}.timeline-entry{display:grid;gap:1rem;align-items:start;opacity:0;transform:translateY(30px)}@media (max-width:767px){.timeline-entry{grid-template-columns:1fr}.entry-dot,.timeline-line{display:none!important}}@media (min-width:768px){.timeline-entry{grid-template-columns:1fr 2rem 1fr;gap:1.5rem 2.5rem;align-items:center}.timeline-entry.left .entry-photo{order:1}.timeline-entry.left .entry-dot{order:2}.timeline-entry.left .entry-text,.timeline-entry.right .entry-photo{order:3}.timeline-entry.right .entry-dot{order:2}.timeline-entry.right .entry-text{order:1;text-align:right}.timeline-entry.right .entry-location{justify-content:flex-end}}.entry-dot{display:flex;justify-content:center;align-items:flex-start;padding-top:6px}.entry-dot:before{content:"";width:10px;height:10px;border-radius:50%;background:#a97bcd;flex-shrink:0;box-shadow:0 0 0 4px #faf7f2,0 0 0 6px rgba(169,123,205,.35)}.entry-photo{line-height:0}.entry-photo img{width:100%;height:auto;display:block;border-radius:12px;box-shadow:0 6px 24px rgba(45,27,27,.12);cursor:zoom-in;will-change:transform;transition:transform .35s cubic-bezier(.25,.46,.45,.94),box-shadow .35s ease}@media (hover:hover){.entry-photo img:hover{transform:scale(1.015) translateY(-2px);box-shadow:0 14px 42px rgba(45,27,27,.18)}}.entry-text{padding:.4rem 0}.entry-date{letter-spacing:.2em;color:#a97bcd;margin-bottom:.35rem}.entry-date,.entry-location{font-family:Inter,sans-serif;font-size:.65rem;text-transform:uppercase}.entry-location{letter-spacing:.13em;color:#9e9e9e;margin-bottom:.65rem;display:flex;align-items:center;gap:.3rem}.entry-location svg{width:9px;height:9px;flex-shrink:0}.entry-caption{font-family:Cormorant Garamond,Georgia,serif;font-style:italic;font-size:1.05rem;line-height:1.7;color:#6b5c5c}.milestone-badge{display:inline-block;font-family:Inter,sans-serif;font-size:.58rem;letter-spacing:.18em;text-transform:uppercase;color:#8b53a8;background:#ebdef0;border-radius:100px;padding:.2rem .7rem;margin-bottom:.45rem}.timeline-entry.milestone .entry-photo img{border:2px solid rgba(169,123,205,.28);box-shadow:0 6px 28px rgba(169,123,205,.16)}#floating-portraits{position:fixed;bottom:18px;left:0;right:0;display:flex;justify-content:center;align-items:center;gap:10px;pointer-events:none;z-index:40;opacity:0}#fp-d,#fp-s{flex-shrink:0;position:relative;z-index:1}#fp-cake{left:50%;bottom:0;transform:translateX(-50%);font-size:2rem;line-height:1;opacity:0;z-index:2;filter:drop-shadow(0 2px 8px rgba(169,123,205,.4))}#fp-cake,#fp-connector{position:absolute;pointer-events:none}#fp-connector{left:0;top:0;width:100%;height:100%;overflow:visible}.fp-img{width:58px;height:58px;border-radius:50%;-o-object-fit:cover;object-fit:cover;-o-object-position:center 15%;object-position:center 15%;display:block}.fp-img-d{box-shadow:0 0 0 2px rgba(169,123,205,.6),0 3px 14px rgba(169,123,205,.25)}.fp-img-s{box-shadow:0 0 0 2px rgba(16,185,129,.6),0 3px 14px rgba(16,185,129,.25)}@media (min-width:480px){.fp-img{width:68px;height:68px}#floating-portraits{bottom:22px;gap:12px}}.q-btn{font-family:Cormorant Garamond,Georgia,serif;font-size:1.25rem;color:#2d1b1b;border:2px solid rgba(45,27,27,.18);border-radius:14px;padding:.9rem 2rem;background:transparent;cursor:pointer;width:100%;transition:border-color .2s,color .2s,background .2s,transform .12s;-webkit-tap-highlight-color:transparent;touch-action:manipulation}@media (min-width:480px){.q-btn{width:auto;padding:1rem 2.5rem}}@media (hover:hover){.q-btn:hover{border-color:#a97bcd;color:#a97bcd;background:rgba(169,123,205,.06);transform:translateY(-2px)}}.q-reveal-btn{display:inline-block;font-family:Cormorant Garamond,Georgia,serif;font-size:1.2rem;color:#faf7f2;background:#a97bcd;border:none;border-radius:14px;padding:.85rem 2.5rem;cursor:pointer;transition:background .2s,transform .15s,box-shadow .2s;-webkit-tap-highlight-color:transparent;touch-action:manipulation;letter-spacing:.03em}@media (hover:hover){.q-reveal-btn:hover{background:#9b59b6;transform:translateY(-2px);box-shadow:0 8px 22px rgba(169,123,205,.3)}}.q-continue-btn{display:flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;background:rgba(169,123,205,.12);border:2px solid rgba(169,123,205,.4);color:#a97bcd;cursor:pointer;margin:0 auto;animation:q-continue-pulse 2s ease-in-out infinite;transition:background .2s,transform .15s;-webkit-tap-highlight-color:transparent;touch-action:manipulation}@media (hover:hover){.q-continue-btn:hover{background:rgba(169,123,205,.22);transform:scale(1.08)}}@keyframes q-continue-pulse{0%,to{box-shadow:0 0 0 0 rgba(169,123,205,.4)}50%{box-shadow:0 0 0 10px rgba(169,123,205,0)}}.petal{position:absolute;border-radius:50% 0;opacity:0;animation:fall linear forwards;pointer-events:none;will-change:transform,opacity}@keyframes fall{0%{opacity:.6;transform:translateY(-20px) rotate(0deg)}to{opacity:0;transform:translateY(110vh) rotate(2turn)}}.confetti-piece{position:absolute;opacity:0;animation:confetti-fall linear forwards;will-change:transform,opacity}@keyframes confetti-fall{0%{opacity:1;transform:translateY(-20px) rotate(0deg) scaleX(1)}50%{transform:translateY(50vh) rotate(1turn) scaleX(-1)}to{opacity:0;transform:translateY(105vh) rotate(2turn) scaleX(1)}}#lightbox{position:fixed;inset:0;z-index:150;background:rgba(10,8,18,.96);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .28s ease;padding:1rem}#lightbox.open{opacity:1;pointer-events:all}#lightbox img{max-width:100%;max-height:90vh;border-radius:10px;-o-object-fit:contain;object-fit:contain;box-shadow:0 24px 70px rgba(0,0,0,.6)}#lightbox-close{position:absolute;top:1rem;right:1rem;width:2.75rem;height:2.75rem;background:hsla(0,0%,100%,.1);border:none;border-radius:50%;cursor:pointer;color:#faf7f2;font-size:1.3rem;display:flex;align-items:center;justify-content:center;transition:background .18s;-webkit-tap-highlight-color:transparent;touch-action:manipulation}#lightbox-close:hover{background:hsla(0,0%,100%,.2)}.lily-float{pointer-events:none;will-change:transform,opacity}.site-card{display:block;background:hsla(0,0%,100%,.72);border:1px solid #ebdef0;border-radius:16px;padding:1rem;text-decoration:none;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease,background .2s ease;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.site-card:hover{transform:translateY(-4px);box-shadow:0 10px 32px rgba(155,89,182,.15);border-color:#a97bcd;background:hsla(0,0%,100%,.9)}.site-card-icon{width:40px;height:40px;background:rgba(235,222,240,.5);border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:.65rem;flex-shrink:0}.site-card-name{font-family:Cormorant Garamond,Georgia,serif;font-size:.95rem;font-weight:500;color:#8b53a8;margin-bottom:.25rem;letter-spacing:.01em;word-break:break-all}.site-card-desc{font-family:Inter,sans-serif;font-size:.78rem;color:#6b5c5c;line-height:1.5}.vid-player{position:relative;width:100%;aspect-ratio:9/16;border-radius:24px;overflow:hidden;background:#08040f;box-shadow:0 40px 100px rgba(0,0,0,.7),0 0 0 1px rgba(155,89,182,.2),inset 0 0 60px rgba(155,89,182,.08);cursor:pointer}.vid-player video{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.vid-overlay{position:absolute;inset:0;background:rgba(8,5,18,.42);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:opacity .5s ease;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.vid-overlay.fading{opacity:0;pointer-events:none}.vid-play-btn{width:80px;height:80px;border-radius:50%;background:rgba(155,89,182,.85);border:2px solid rgba(235,222,240,.25);cursor:pointer;display:flex;align-items:center;justify-content:center;padding-left:5px;transition:transform .2s,background .2s,box-shadow .2s;box-shadow:0 10px 40px rgba(155,89,182,.5),0 0 0 8px rgba(155,89,182,.1)}.vid-play-btn:hover{transform:scale(1.08);background:#9b59b6;box-shadow:0 16px 50px rgba(155,89,182,.7),0 0 0 12px rgba(155,89,182,.12)}.vid-play-btn:active{transform:scale(.94)}.vid-player.vid-player-landscape{aspect-ratio:16/9}.vid-roll-section{position:relative}.vid-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:0 20px}@media (max-width:480px){.vid-grid{grid-template-columns:repeat(2,1fr);gap:8px;padding:0 12px}}.vid-reel{aspect-ratio:9/16;border-radius:14px;overflow:hidden;background:#0d0820;cursor:pointer;position:relative;box-shadow:0 8px 30px rgba(0,0,0,.55),0 0 0 1px rgba(155,89,182,.12);transition:transform .2s ease,box-shadow .2s ease}.vid-reel:hover{transform:translateY(-4px);box-shadow:0 16px 44px rgba(0,0,0,.65),0 0 0 1px rgba(155,89,182,.25)}.vid-reel-landscape{aspect-ratio:16/9;grid-column:span 2}.vid-reel video{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.vid-reel-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(6,3,15,.38);transition:opacity .3s ease;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.vid-reel-overlay.playing{opacity:0;pointer-events:none}.vid-reel-play{width:52px;height:52px;border-radius:50%;background:rgba(155,89,182,.8);border:1.5px solid rgba(235,222,240,.25);display:flex;align-items:center;justify-content:center;padding-left:4px;transition:transform .15s,background .15s;box-shadow:0 6px 24px rgba(155,89,182,.45)}.vid-reel:hover .vid-reel-play{transform:scale(1.1);background:#9b59b6}.vid-reel-play:active{transform:scale(.9)}.vid-reel-tag{position:absolute;bottom:10px;left:10px;font-family:Inter,sans-serif;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(215,189,226,.7);background:rgba(8,5,18,.55);padding:3px 7px;border-radius:20px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);pointer-events:none}@media (pointer:fine){::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:#faf7f2}::-webkit-scrollbar-thumb{background:#d7bde2;border-radius:100px}}::-moz-selection{background:#ebdef0;color:#2d1b1b}::selection{background:#ebdef0;color:#2d1b1b}.timeline-line{pointer-events:none;will-change:transform}@media (max-width:479px){section{padding-left:1.25rem!important;padding-right:1.25rem!important}.lock-card{padding:1.75rem 1.25rem}.lock-title{font-size:1.9rem}.pin-key{font-size:1.4rem;padding:.95rem 0}#hero-label{font-size:.6rem}.quote-card{padding:1.75rem 1.25rem!important}#changed h2,#gallery h2{font-size:2rem!important}#question-section h2{font-size:2.5rem!important}#always h2{font-size:2.25rem!important}#birthday .font-script,#birthday h2{font-size:2.5rem!important}}@media (prefers-reduced-motion:reduce){.ds-deco,.ds-heart,.hero-bloom-l,.hero-bloom-r,.lily-float,.scroll-chevron{animation:none!important}*{transition-duration:.01ms!important}}