*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--ink:#1e1414;--warm:#f7f0e8;--paper:#fdf9f4;--blush:#e8c4b8;--rose:#c4715a;--rose-light:#dda090;--sage:#8faa8b;--sage-light:#bfd1bc;--dusty:#b8a8c8;--gold:#c4a35a;--muted:#8a7070}html{scroll-behavior:smooth}body{background:linear-gradient(160deg, #f9ede6 0%, var(--paper) 60%) no-repeat;background-color:var(--paper);color:var(--ink);font-family:DM Sans,sans-serif;position:relative;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:999;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");position:fixed;inset:0}.hero{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:60px 24px;display:flex;position:relative;overflow:hidden}.hero-bg-circle{pointer-events:none;border-radius:50%;position:absolute}.hero-bg-circle:first-child{background:radial-gradient(circle,#c4715a14 0%,#0000 70%);width:500px;height:500px;top:-100px;right:-100px}.hero-bg-circle:nth-child(2){background:radial-gradient(circle,#8faa8b1a 0%,#0000 70%);width:360px;height:360px;bottom:-60px;left:-60px}.floating-sunflower{opacity:.12;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:clamp(24px,4vw,36px);animation:14s ease-in-out infinite alternate floatAround;position:absolute}.floating-sunflower:first-child{animation-duration:13s;animation-delay:0s;top:12%;left:8%}.floating-sunflower:nth-child(2){animation-duration:15s;animation-delay:-3s;top:22%;right:10%}.floating-sunflower:nth-child(3){animation-duration:18s;animation-delay:-5s;bottom:25%;left:12%}.floating-sunflower:nth-child(4){animation-duration:11s;animation-delay:-2s;bottom:18%;right:6%}.floating-sunflower:nth-child(5){animation-duration:16s;animation-delay:-7s;top:48%;left:5%}.floating-sunflower:nth-child(6){animation-duration:21s;animation-delay:-1s;top:58%;right:18%}@keyframes floatAround{0%{transform:translateY(0)rotate(0)scale(.9)}50%{transform:translateY(-24px)rotate(180deg)scale(1.05)}to{transform:translateY(8px)rotate(360deg)scale(.9)}}.hero-eyebrow{letter-spacing:.35em;text-transform:uppercase;color:var(--rose);opacity:0;margin-bottom:28px;font-family:DM Sans,sans-serif;font-size:11px;font-weight:300;animation:1s .2s forwards riseIn}.hero-title{color:var(--ink);opacity:0;margin-bottom:10px;font-family:Playfair Display,serif;font-size:clamp(52px,10vw,96px);font-weight:400;line-height:1;animation:1s .5s forwards riseIn}.hero-title em{color:var(--rose);font-style:italic}.hero-subtitle{color:var(--muted);opacity:0;margin-top:14px;margin-bottom:48px;font-family:DM Serif Display,serif;font-size:clamp(16px,2.5vw,22px);font-style:italic;animation:1s .8s forwards riseIn}.hero-date-pill{border:1px solid var(--blush);color:var(--muted);letter-spacing:.05em;opacity:0;background:#fff;border-radius:100px;align-items:center;gap:8px;margin-bottom:60px;padding:8px 20px;font-size:13px;transition:transform .3s cubic-bezier(.175,.885,.32,1.275),box-shadow .3s;animation:1s 1s forwards riseIn;display:inline-flex;box-shadow:0 2px 16px #c4715a14}.hero-date-pill:hover{transform:scale(1.05)translateY(-2px);box-shadow:0 6px 24px #c4715a26}.hero-date-pill span{color:var(--rose);font-weight:500}.scroll-cue{opacity:0;flex-direction:column;align-items:center;gap:6px;animation:1s 1.4s forwards riseIn;display:flex;position:absolute;bottom:36px;left:50%;transform:translate(-50%)}.scroll-cue-line{background:linear-gradient(to bottom, var(--rose-light), transparent);width:1px;height:48px;position:relative;overflow:hidden}.scroll-cue-line:after{content:"";background:linear-gradient(to bottom, transparent, var(--rose), transparent);width:100%;height:100%;animation:2.2s cubic-bezier(.76,0,.24,1) infinite cueLineDown;position:absolute;top:0;left:0}@keyframes cueLineDown{0%{transform:translateY(-100%)}to{transform:translateY(100%)}}.scroll-cue-text{letter-spacing:.25em;text-transform:uppercase;color:var(--muted);font-size:9px}@keyframes riseIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.timeline-section{max-width:960px;margin:0 auto;padding:80px 24px 40px;position:relative}.year-marker{text-align:center;z-index:2;opacity:0;margin:60px 0 20px;transition:opacity .8s cubic-bezier(.175,.885,.32,1.275),transform .8s cubic-bezier(.175,.885,.32,1.275);position:relative;transform:scale(.85)}.year-marker.visible{opacity:1;transform:scale(1)}.year-marker-inner{letter-spacing:.2em;color:var(--rose);background:var(--paper);border:1px solid var(--blush);border-radius:100px;padding:6px 20px;font-family:Playfair Display,serif;font-size:13px;font-weight:700;display:inline-block}.spine{background:linear-gradient(to bottom, transparent, var(--blush) 5%, var(--blush) 95%, transparent);width:1px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.entry{opacity:0;grid-template-columns:1fr 48px 1fr;align-items:start;margin-bottom:48px;display:grid;position:relative}.entry.left{transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transform:translate(-30px,15px)}.entry.right{transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transform:translate(30px,15px)}.entry.left.visible,.entry.right.visible{opacity:1;transform:translate(0,0)}.entry-node{background:var(--rose-light);width:12px;height:12px;box-shadow:0 0 0 3px var(--blush);z-index:2;border:2px solid #fff;border-radius:50%;margin:20px auto 0;transition:transform .4s cubic-bezier(.175,.885,.32,1.275),box-shadow .4s,background-color .3s;position:relative}.entry-node:before{content:"";background:var(--rose-light);opacity:0;z-index:-1;border-radius:50%;transition:transform .4s,opacity .4s;position:absolute;inset:-6px;transform:scale(.8)}.entry:hover .entry-node{background:var(--rose);transform:scale(1.4);box-shadow:0 0 0 4px #fff,0 0 12px #c4715a66}.entry:hover .entry-node:before{opacity:.2;animation:1.8s infinite pulseRipple;transform:scale(1.6)}@keyframes pulseRipple{0%{opacity:.3;transform:scale(1)}to{opacity:0;transform:scale(2.4)}}.card{background:#fff;border:1px solid #e8c4b84d;border-radius:16px;transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s cubic-bezier(.16,1,.3,1);overflow:hidden;box-shadow:0 2px 20px #1e14140f}.card:hover{transform:translateY(-5px);box-shadow:0 12px 36px #c4715a29}.photo-wrap{aspect-ratio:4/3;background:linear-gradient(135deg,#f4e4da,#e8d8ee);width:100%;position:relative;overflow:hidden}.photo-wrap img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .5s,transform .8s cubic-bezier(.16,1,.3,1);display:block;position:absolute;inset:0}.photo-wrap.loaded img{opacity:1}.card:hover .photo-wrap img{transform:scale(1.06)}.photo-wrap .ph{flex-direction:column;justify-content:center;align-items:center;gap:8px;transition:opacity .3s;display:flex;position:absolute;inset:0}.photo-wrap.loaded .ph{opacity:0;pointer-events:none}.ph-icon{background:#ffffff80;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;display:flex}.ph-label{letter-spacing:.12em;color:var(--muted);font-size:11px}.photo-wrap.band-rose{background:linear-gradient(135deg,#f7e4de,#eddde8)}.photo-wrap.band-sage{background:linear-gradient(135deg,#deeede,#d4e8da)}.photo-wrap.band-dusty{background:linear-gradient(135deg,#e4daf0,#d8e4f0)}.photo-wrap.band-gold{background:linear-gradient(135deg,#f5ecda,#edddd4)}.card-body{padding:16px 18px 18px}.card-date{letter-spacing:.22em;text-transform:uppercase;color:var(--rose);margin-bottom:5px;font-size:10px;font-weight:500}.card-title{color:var(--ink);margin-bottom:6px;font-family:Playfair Display,serif;font-size:18px;font-weight:400;line-height:1.25}.card-note{color:var(--muted);font-family:DM Serif Display,serif;font-size:13.5px;font-style:italic;line-height:1.6}.card-tag{letter-spacing:.1em;text-transform:uppercase;color:var(--sage-light);background:#8faa8b1f;border-radius:100px;margin-top:10px;padding:3px 10px;font-size:10px;font-weight:500;transition:transform .25s cubic-bezier(.175,.885,.32,1.275),background-color .25s;display:inline-block}.card-tag:hover{transform:scale(1.08)translateY(-1px)}.card-tag.rose{color:var(--rose-light);background:#c4715a1a}.card-tag.dusty{color:var(--dusty);background:#b8a8c826}.card-tag.gold{color:var(--gold);background:#c4a35a1f}.entry.left .spacer{grid-column:3}.entry.right .spacer{grid-column:1}.spacer{min-height:1px}.finale{text-align:center;opacity:0;padding:80px 24px 120px;transition:opacity 1s cubic-bezier(.16,1,.3,1),transform 1s cubic-bezier(.16,1,.3,1);transform:translateY(30px)}.finale.visible{opacity:1;transform:translateY(0)}.finale-ornament{margin-bottom:24px;font-size:32px;animation:3s ease-in-out infinite breathe;display:block}@keyframes breathe{0%,to{transform:scale(1)rotate(0)}50%{transform:scale(1.15)rotate(15deg)}}.finale h2{color:var(--ink);margin-bottom:20px;font-family:Playfair Display,serif;font-size:clamp(28px,5vw,52px);font-weight:400;line-height:1.15}.finale h2 em{color:var(--rose);font-style:italic}.finale p{color:var(--muted);max-width:480px;margin:0 auto;font-family:DM Serif Display,serif;font-size:17px;font-style:italic;line-height:1.75}.finale-line{background:var(--blush);width:60px;height:1px;margin:28px auto}.finale-sig{color:var(--rose);font-family:Playfair Display,serif;font-size:22px;font-style:italic}@media (width<=620px){.spine{left:20px}.entry{grid-template-rows:auto;grid-template-columns:40px 1fr}.entry.left .card,.entry.right .card{grid-area:1/2}.entry.left .entry-node,.entry.right .entry-node{grid-area:1/1}.entry.left .spacer,.entry.right .spacer{display:none}}.falling-container{pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.card,.year-marker,.hero-title,.hero-subtitle,.hero-eyebrow,.hero-date-pill,.scroll-cue,.finale h2,.finale p,.finale-line,.finale-sig,.finale-ornament,.entry{z-index:4;position:relative}.entry-node{z-index:5;position:relative}.spine{z-index:3}.falling-particle{pointer-events:none;-webkit-user-select:none;user-select:none;will-change:transform, top;position:absolute}@keyframes fall{0%{top:var(--start-top)}to{top:calc(var(--start-top) + 100vh)}}@keyframes sway{0%{transform:translate(-30px)rotate(0)}to{transform:translate(30px)rotate(360deg)}}
