*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:hidden}body{font-family:Lora,serif;line-height:1.6;overflow-x:hidden;min-height:100vh;min-height:100dvh}img{max-width:100%;height:auto;display:block}::selection{background:#d4526e40;color:inherit}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#0000001f;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#0003}.sky-background{position:fixed;inset:0;z-index:-2;overflow:hidden}.sky-layer{position:absolute;inset:0;will-change:opacity;transition:opacity .1s linear}.sky-gradient{z-index:0}.sky-image{z-index:1;background-size:cover;background-position:center;background-repeat:no-repeat}.floating-particles{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}.particle{position:absolute;bottom:-20px;border-radius:50%;animation:float-up linear infinite}@keyframes float-up{0%{transform:translateY(0) translate(0);opacity:0}10%{opacity:var(--particle-opacity, .15)}90%{opacity:var(--particle-opacity, .15)}to{transform:translateY(-110vh) translate(30px);opacity:0}}.timeline-line{display:none}@media(min-width:768px){.timeline-line{display:block;position:absolute;left:50%;top:0;bottom:0;width:1px;transform:translate(-50%);pointer-events:none;background:var(--line-color, currentColor);opacity:.06;mask-image:linear-gradient(to bottom,transparent 0%,black 8%,black 92%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0%,black 8%,black 92%,transparent 100%)}}.timeline-marker{display:flex;align-items:center;justify-content:center;gap:1rem;padding:1.5rem 2rem}.timeline-marker__bar{height:1px;flex:0 0 28px;background:currentColor;opacity:.15}.timeline-marker__label{font-family:Lora,serif;font-weight:400;letter-spacing:.15em;text-transform:uppercase;white-space:nowrap;text-shadow:0 1px 4px rgba(0,0,0,.06)}.timeline-marker--year{padding:2.5rem 2rem}.timeline-marker--year .timeline-marker__bar{flex:0 0 48px;opacity:.2}.timeline-marker--year .timeline-marker__label{font-size:clamp(.85rem,2vw,1rem);opacity:.5}.timeline-marker--month{padding:1rem 2rem}.timeline-marker--month .timeline-marker__bar{flex:0 0 20px;opacity:.1}.timeline-marker--month .timeline-marker__label{font-size:clamp(.7rem,1.5vw,.8rem);opacity:.35}@media(min-width:768px){.timeline-marker--year .timeline-marker__bar{flex:0 0 80px}.timeline-marker--month .timeline-marker__bar{flex:0 0 40px}}.hero{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem;position:relative}.hero-content{max-width:600px}.hero-title{font-family:Cormorant Garamond,serif;font-weight:300;font-style:italic;font-size:clamp(3rem,8vw,5.5rem);line-height:1.1;margin:0 0 1.2rem;letter-spacing:-.02em;text-shadow:0 1px 8px rgba(0,0,0,.08)}.hero-subtitle{font-family:Lora,serif;font-weight:400;font-style:italic;font-size:clamp(1rem,2.5vw,1.35rem);opacity:.7;margin:0;letter-spacing:.02em;text-shadow:0 1px 4px rgba(0,0,0,.06)}.scroll-indicator{position:absolute;bottom:3rem;display:flex;flex-direction:column;align-items:center;gap:.5rem;opacity:.5}.scroll-arrow{width:1.5px;height:40px;background:currentColor;opacity:.4;position:relative;animation:pulse-down 2s ease-in-out infinite}.scroll-arrow:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%) rotate(45deg);width:8px;height:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor}@keyframes pulse-down{0%,to{opacity:.2;transform:translateY(0)}50%{opacity:.6;transform:translateY(8px)}}.letter{min-height:65vh;min-height:65dvh;display:flex;align-items:center;justify-content:center;padding:4rem 2rem;position:relative}.letter-content{max-width:520px;text-align:center}.letter-text{font-family:Cormorant Garamond,serif;font-weight:400;font-style:italic;font-size:clamp(1.2rem,3vw,1.6rem);line-height:1.7;opacity:.85;margin:0;text-shadow:0 1px 8px rgba(0,0,0,.08)}@media(min-width:768px){.letter{padding:5rem 2rem}.letter-content{max-width:560px}}.memory-section{min-height:80vh;min-height:80dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1.5rem;position:relative}.timeline-dot{width:10px;height:10px;border-radius:50%;border:1.5px solid currentColor;background:transparent;opacity:.3;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin:1.2rem 0;order:1}.timeline-dot--special{opacity:.5;width:14px;height:14px}.timeline-heart{opacity:.65}.memory-image-side{max-width:400px;width:100%;order:0}.memory-image-wrapper{width:100%;border-radius:10px;overflow:hidden;box-shadow:0 4px 24px #0000001a,0 1px 4px #0000000a;transition:box-shadow .4s ease}.memory-image-wrapper:hover{box-shadow:0 8px 36px #00000024,0 2px 8px #0000000f}.memory-image{width:100%;height:auto;display:block;aspect-ratio:auto;transform:scale(1.05)}.memory-text-side{text-align:center;max-width:400px;order:2}.memory-date{font-family:Lora,serif;font-weight:400;font-size:clamp(.72rem,1.8vw,.85rem);letter-spacing:.12em;text-transform:uppercase;opacity:.45;margin:0 0 .8rem;text-shadow:0 1px 4px rgba(0,0,0,.06)}.memory-phrase{font-family:Cormorant Garamond,serif;font-weight:400;font-style:italic;font-size:clamp(1.1rem,3vw,1.45rem);margin:0;opacity:.8;line-height:1.5;text-shadow:0 1px 6px rgba(0,0,0,.08)}@media(min-width:768px){.memory-section{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:0 2rem;min-height:70vh;padding:3.5rem 2.5rem}.timeline-dot{grid-column:2;grid-row:1;margin:0;width:12px;height:12px}.timeline-dot--special{width:16px;height:16px}.memory-section--left .memory-image-side{grid-column:1;grid-row:1;order:0;justify-self:end}.memory-section--left .memory-text-side{grid-column:3;grid-row:1;order:0;justify-self:start;text-align:left}.memory-section--right .memory-image-side{grid-column:3;grid-row:1;order:0;justify-self:start}.memory-section--right .memory-text-side{grid-column:1;grid-row:1;order:0;justify-self:end;text-align:right}.memory-image-side{max-width:340px}.memory-text-side{max-width:300px}.memory-image-wrapper{border-radius:14px;box-shadow:0 8px 36px #0000001f,0 2px 8px #0000000a}.memory-phrase{font-size:clamp(1.15rem,2.2vw,1.5rem);line-height:1.55}.memory-date{margin-bottom:1rem}}@media(min-width:1100px){.memory-section{gap:0 2.5rem;padding:3.5rem 3rem}.memory-image-side{max-width:380px}.memory-text-side{max-width:340px}}@media(min-width:1400px){.memory-section{gap:0 3rem}.memory-image-side{max-width:420px}.memory-text-side{max-width:380px}}.closing{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 1.5rem;text-align:center;position:relative}.closing-content{display:flex;flex-direction:column;align-items:center;max-width:500px;width:100%}.closing-image-wrapper{width:100%;border-radius:16px;overflow:hidden;box-shadow:0 8px 40px #00000026,0 2px 8px #0000000f}.closing-image{width:100%;height:auto;display:block}.closing-text{margin-top:2.5rem}.closing-title{font-family:Cormorant Garamond,serif;font-weight:400;font-style:italic;font-size:clamp(2rem,5vw,3rem);margin:0 0 .8rem;line-height:1.2;text-shadow:0 2px 10px rgba(0,0,0,.12)}.closing-subtitle{font-family:Lora,serif;font-weight:400;font-style:italic;font-size:clamp(1rem,2.5vw,1.25rem);opacity:.75;margin:0}.closing-sign-off{font-family:Cormorant Garamond,serif;font-weight:300;font-style:italic;font-size:clamp(1.1rem,2.5vw,1.4rem);opacity:.5;margin-top:4rem;letter-spacing:.02em}.closing-name{font-family:Cormorant Garamond,serif;font-weight:400;font-style:italic;font-size:clamp(1rem,2.2vw,1.25rem);opacity:.4;margin-top:.8rem;letter-spacing:.03em}@media(min-width:768px){.closing-content{max-width:460px}.closing-image-wrapper{border-radius:20px}.closing{padding:5rem 2rem}}.audio-btn{position:fixed;bottom:1.5rem;right:1.5rem;z-index:100;width:44px;height:44px;border-radius:50%;border:1px solid;background:#ffffff1a;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:opacity .3s,transform .3s;opacity:.6}.audio-btn:hover{opacity:1;transform:scale(1.05)}.audio-btn.playing{opacity:.8;animation:pulse-glow 2s ease-in-out infinite}@keyframes pulse-glow{0%,to{box-shadow:0 0 #fff0}50%{box-shadow:0 0 12px 2px #ffffff26}}.main{position:relative;z-index:1}.timeline-wrapper{position:relative}
