:root{--red:#d0102a;--deep:#7d0a1a;--rose:#ff5a76;--blush:#ffe3e8;--cream:#fff8f6;--ink:#2a0d12;--muted:#7a5a60;--ease:cubic-bezier(.16,1,.3,1);--serif:"Playfair Display",Georgia,serif;--sans:"Manrope",system-ui,sans-serif;--script:"Dancing Script",cursive}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--sans);color:var(--ink);background:var(--cream);line-height:1.65;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit}
.wrap{width:min(1160px,100% - 2rem);margin-inline:auto}
h1,h2,h3{font-family:var(--serif);line-height:1.05;letter-spacing:-.02em}
.script{font-family:var(--script);color:var(--red);font-size:clamp(1.6rem,3vw,2.2rem);font-weight:700}
.eyebrow{font-size:.78rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--red)}
section{position:relative;padding:clamp(4rem,9vw,7rem) 0}
h2{font-size:clamp(2rem,4.6vw,3.4rem);margin:.4rem 0 1rem}
.lead{font-size:1.12rem;color:var(--muted);max-width:60ch}

/* header */
.top{position:fixed;inset:0 0 auto;z-index:50;padding:.7rem 0;backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);background:rgba(255,248,246,.72);border-bottom:1px solid rgba(208,16,42,.1)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.brand{font-family:var(--serif);font-weight:800;text-decoration:none;font-size:1.15rem}
.brand b{color:var(--red)}
.top nav{display:flex;gap:1.3rem;align-items:center;font-size:.9rem;font-weight:600}
.top nav a{text-decoration:none;padding:.4rem 0}
.top nav a:hover{color:var(--red)}
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.9rem 1.6rem;border-radius:999px;background:linear-gradient(135deg,#ee2a46,var(--red) 55%,var(--deep));color:#fff!important;font-weight:800;text-decoration:none;box-shadow:0 10px 28px -8px rgba(208,16,42,.65);transition:transform .35s var(--ease),box-shadow .35s;position:relative;overflow:hidden}
.btn:hover{transform:translateY(-3px) scale(1.03);box-shadow:0 16px 34px -8px rgba(208,16,42,.8)}
.btn:after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.55) 50%,transparent 65%);translate:-120% 0;animation:shine 3.6s ease-in-out infinite}
.btn.ghost{background:#fff;color:var(--red)!important;box-shadow:0 0 0 2px var(--red) inset}
.btn.ghost:after{display:none}
.top .btn{padding:.55rem 1.1rem;font-size:.85rem}
@keyframes shine{0%,60%{translate:-120% 0}100%{translate:120% 0}}

/* BLOOM */
.bloom{position:absolute;width:var(--size,min(92vw,760px));aspect-ratio:1;left:var(--bx,50%);top:var(--by,50%);translate:-50% -50%;pointer-events:none}
.halo{position:absolute;inset:-12%;border-radius:50%;background:radial-gradient(circle,rgba(255,90,118,.38),rgba(255,90,118,.12) 45%,transparent 68%);animation:breathe 5s ease-in-out infinite}
.stage{position:absolute;inset:0;animation:open 2.6s var(--ease) both;filter:drop-shadow(0 20px 40px rgba(125,10,26,.28))}
.layer{position:absolute;inset:0;animation:spin var(--t) linear infinite;animation-direction:var(--d)}
.petal{position:absolute;left:50%;top:50%;width:var(--w);height:var(--h);margin-left:calc(var(--w)/-2);margin-top:calc(var(--h)*-1);transform-origin:50% 100%;rotate:calc(var(--i)*360deg/var(--n));border-radius:50% 50% 50% 50%/86% 86% 14% 14%;background:radial-gradient(ellipse at 50% 92%,rgba(255,255,255,.35),transparent 42%),linear-gradient(to top,var(--c2),var(--c1));opacity:var(--op);animation:sway 4.8s ease-in-out infinite;animation-delay:calc(var(--i)*-.45s);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.petal:after{content:"";position:absolute;left:50%;top:14%;bottom:8%;width:2px;margin-left:-1px;background:linear-gradient(rgba(255,255,255,.55),transparent);border-radius:2px}
.core{position:absolute;left:50%;top:50%;width:15%;aspect-ratio:1;translate:-50% -50%;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff7d6,#ffc94d 45%,#e08a00 100%);box-shadow:0 0 0 6px rgba(255,255,255,.35),0 0 40px 10px rgba(255,201,77,.65);animation:beat 2.4s ease-in-out infinite}
.core:before{content:"";position:absolute;inset:14%;border-radius:50%;background:radial-gradient(circle,#b86500 0 1.5px,transparent 2px) 0 0/9px 9px;opacity:.55}
@keyframes open{from{scale:.05;rotate:-160deg;opacity:0}60%{opacity:1}to{scale:1;rotate:0deg;opacity:1}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes sway{50%{transform:scale(1.07,1.13)}}
@keyframes beat{0%,100%{scale:1}20%{scale:1.14}40%{scale:1}55%{scale:1.08}}
@keyframes breathe{50%{scale:1.1;opacity:.75}}
.b-hero{--bx:72%;--by:46%;--size:min(120vw,860px);z-index:0}
.b-foot{--bx:50%;--by:50%;--size:min(130vw,1000px);z-index:0;opacity:.55}
.b-small{--size:120px;position:relative;left:auto;top:auto;translate:none;margin:0 auto 1rem;display:block}
.b-small .stage{animation:open 1.8s var(--ease) both}

/* falling petals + sparkles */
.fx{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}
.fall{position:absolute;top:-8%;left:var(--x);width:var(--s);height:calc(var(--s)*1.3);border-radius:50% 50% 50% 50%/86% 86% 14% 14%;background:linear-gradient(to top,#ff5a76,#ffc2cd);opacity:.8;animation:fall var(--du) linear infinite;animation-delay:var(--dl)}
@keyframes fall{0%{transform:translate(0,0) rotate(0)}50%{transform:translate(var(--sw),55vh) rotate(calc(var(--r)/2))}100%{transform:translate(calc(var(--sw)*-.6),115vh) rotate(var(--r));opacity:0}}
.sp{position:absolute;left:var(--x);top:var(--y);width:var(--s);aspect-ratio:1;background:#fff;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);animation:tw 3s ease-in-out infinite;animation-delay:var(--dl);filter:drop-shadow(0 0 6px #ff8fa3)}
@keyframes tw{0%,100%{scale:0;rotate:0}50%{scale:1;rotate:90deg}}

/* hero */
.hero{min-height:100svh;display:flex;align-items:center;padding:7rem 0 4rem;background:radial-gradient(90% 70% at 85% 30%,#ffd4dc,transparent 60%),linear-gradient(180deg,#fff8f6,#ffeef1);overflow:hidden}
.hero .wrap{position:relative;z-index:2;display:grid;grid-template-columns:1.05fr .95fr;gap:2rem;align-items:center}
.hero h1{font-size:clamp(3rem,8vw,6.4rem);margin:.3rem 0 .6rem}
.hero h1 span{display:block;color:var(--red);font-style:italic}
.tag{display:inline-flex;gap:.6rem;flex-wrap:wrap;margin:1rem 0 1.6rem}
.tag b{padding:.4rem .9rem;border-radius:999px;background:#fff;border:1px solid rgba(208,16,42,.2);font-size:.82rem;font-weight:700;box-shadow:0 4px 14px -6px rgba(208,16,42,.4)}
.tag b:first-child{background:var(--red);color:#fff;border-color:var(--red)}
.cta{display:flex;gap:.8rem;flex-wrap:wrap}
.count{display:flex;gap:.7rem;margin-top:2rem}
.count div{min-width:72px;text-align:center;padding:.7rem .6rem;border-radius:18px;background:rgba(255,255,255,.75);backdrop-filter:blur(8px);box-shadow:0 10px 24px -12px rgba(208,16,42,.5);border:1px solid rgba(255,255,255,.9)}
.count b{display:block;font-family:var(--serif);font-size:2rem;line-height:1;color:var(--red);font-variant-numeric:tabular-nums}
.count small{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:700}
.count-note{margin-top:.6rem;font-size:.85rem;color:var(--muted)}
.portrait{position:relative;justify-self:center;width:min(100%,400px)}
.arch{position:relative;border-radius:999px 999px 36px 36px;overflow:hidden;border:7px solid #fff;box-shadow:0 40px 80px -30px rgba(125,10,26,.6);aspect-ratio:410/640;animation:float 7s ease-in-out infinite;background:var(--red)}
.arch img{width:100%;height:100%;object-fit:cover;object-position:50% 8%}
@keyframes float{50%{translate:0 -14px}}
.ring{position:absolute;right:-8%;bottom:6%;width:132px;aspect-ratio:1;z-index:3;display:grid;place-items:center}
.ring svg{position:absolute;inset:0;animation:spin 22s linear infinite;overflow:visible}
.ring text{font:800 10.5px var(--sans);letter-spacing:2.2px;fill:var(--deep)}
.ring i{width:56%;aspect-ratio:1;border-radius:50%;background:var(--red);display:grid;place-items:center;color:#fff;font:700 .78rem/1.1 var(--serif);text-align:center;font-style:normal;box-shadow:0 10px 24px -6px rgba(208,16,42,.8)}
.ring:before{content:"";position:absolute;inset:0;border-radius:50%;background:#fff;box-shadow:0 10px 30px -10px rgba(0,0,0,.35)}
.ring svg,.ring i{z-index:1}
.chip{position:absolute;left:-10%;top:14%;z-index:3;padding:.6rem 1rem;border-radius:16px;background:#fff;box-shadow:0 14px 30px -12px rgba(125,10,26,.5);font-weight:800;font-size:.85rem;animation:float 6s ease-in-out -2s infinite}
.chip small{display:block;color:var(--red);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase}

/* marquee */
.marq{background:var(--red);color:#fff;overflow:hidden;padding:.9rem 0;white-space:nowrap;font-family:var(--serif);font-size:1.4rem;font-style:italic}
.marq div{display:inline-block;animation:marq 26s linear infinite}
.marq span{margin:0 1.6rem}
@keyframes marq{to{transform:translateX(-50%)}}

/* about */
.about .wrap{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(2rem,6vw,5rem);align-items:center}
.about p+p{margin-top:1rem}
.frame{position:relative}
.frame img{border-radius:28px;box-shadow:0 30px 60px -26px rgba(125,10,26,.55);width:100%}
.frame:before{content:"";position:absolute;inset:-14px 14px 14px -14px;border-radius:32px;border:2px solid var(--rose);z-index:-1}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:2rem}
.stats div{padding:1.1rem;border-radius:22px;background:#fff;box-shadow:0 14px 34px -20px rgba(125,10,26,.6);text-align:center;transition:transform .4s var(--ease)}
.stats div:hover{transform:translateY(-6px) rotate(-1deg)}
.stats b{display:block;font-family:var(--serif);font-size:2.6rem;color:var(--red);line-height:1}
.stats span{font-size:.82rem;color:var(--muted);font-weight:600}

/* priorities */
.prio{background:linear-gradient(180deg,var(--cream),#ffeef1);overflow:hidden}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.2rem;margin-top:2.4rem;position:relative;z-index:2}
.card{position:relative;padding:1.8rem;border-radius:26px;background:#fff;box-shadow:0 20px 44px -26px rgba(125,10,26,.6);overflow:hidden;transition:transform .5s var(--ease)}
.card:hover{transform:translateY(-8px)}
.card:before{content:"";position:absolute;right:-40px;top:-40px;width:120px;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#ffc2cd,transparent 70%);transition:scale .6s var(--ease)}
.card:hover:before{scale:2.4}
.card .n{font-family:var(--serif);font-size:3rem;color:var(--red);opacity:.9;line-height:1;font-style:italic}
.card h3{font-size:1.35rem;margin:.6rem 0 .5rem}
.card p{color:var(--muted);font-size:.96rem;position:relative}
.note{margin-top:1.6rem;font-size:.82rem;color:var(--muted)}

/* quote */
.quote{background:linear-gradient(135deg,var(--deep),var(--red) 60%,#ff3d5c);color:#fff;text-align:center;overflow:hidden}
.quote blockquote{position:relative;z-index:2;font-family:var(--serif);font-size:clamp(1.7rem,4.4vw,3.2rem);line-height:1.2;max-width:22ch;margin:0 auto;font-style:italic}
.quote cite{display:block;margin-top:1.4rem;position:relative;z-index:2;font-style:normal;font-weight:700;letter-spacing:.1em;text-transform:uppercase;font-size:.8rem;opacity:.85}
.quote .eyebrow{color:#ffd0d8;position:relative;z-index:2}

/* timeline */
.tl{position:relative;margin-top:2.6rem;padding-left:2rem;border-left:3px solid transparent;border-image:linear-gradient(var(--red),var(--rose),transparent) 1}
.tl li{list-style:none;position:relative;padding:0 0 2rem 1rem}
.tl li:before{content:"";position:absolute;left:-2.75rem;top:.3rem;width:1.1rem;aspect-ratio:1;border-radius:50% 0 50% 50%;rotate:45deg;background:var(--red);box-shadow:0 0 0 5px var(--blush)}
.tl b{font-family:var(--serif);font-size:1.25rem}
.tl p{color:var(--muted)}

/* press */
.press{background:#fff}
.plist{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.1rem;margin-top:2.2rem}
.plist a{display:block;padding:1.4rem;border-radius:22px;background:var(--cream);text-decoration:none;border:1px solid rgba(208,16,42,.12);transition:transform .4s var(--ease),background .3s,box-shadow .4s}
.plist a:hover{transform:translateY(-6px);background:#fff;box-shadow:0 20px 40px -22px rgba(125,10,26,.6)}
.plist small{color:var(--red);font-weight:800;letter-spacing:.12em;text-transform:uppercase;font-size:.7rem}
.plist strong{display:block;font-family:var(--serif);font-size:1.15rem;margin:.4rem 0}
.plist span{color:var(--muted);font-size:.92rem}

/* team */
.team{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.6rem}
.team b{padding:.6rem 1.1rem;border-radius:999px;background:#fff;border:1px solid rgba(208,16,42,.2);font-weight:700;font-size:.92rem}
.team b.hl{background:var(--red);color:#fff}

/* poster */
.posterS .wrap{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem);align-items:center}
.poster{width:min(100%,420px);justify-self:center;border-radius:24px;overflow:hidden;box-shadow:0 40px 80px -30px rgba(125,10,26,.7);rotate:-3deg;transition:rotate .6s var(--ease),scale .6s var(--ease)}
.poster:hover{rotate:0deg;scale:1.04}
.steps{counter-reset:s;margin-top:1.4rem;display:grid;gap:.9rem;padding:0}
.steps li{list-style:none;counter-increment:s;display:flex;gap:1rem;align-items:flex-start;padding:1rem 1.2rem;border-radius:18px;background:#fff;box-shadow:0 10px 26px -18px rgba(125,10,26,.6)}
.steps li:before{content:counter(s);flex:none;width:2.2rem;aspect-ratio:1;border-radius:50%;background:var(--red);color:#fff;display:grid;place-items:center;font-family:var(--serif);font-weight:800}

/* gallery */
.gal{background:#fff}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;margin-top:2rem}
.grid figure{border-radius:24px;overflow:hidden;box-shadow:0 20px 40px -24px rgba(125,10,26,.6);aspect-ratio:4/5;background:var(--blush)}
.grid img{width:100%;height:100%;object-fit:cover;transition:scale .8s var(--ease)}
.grid figure:hover img{scale:1.07}

/* final */
.final{background:linear-gradient(135deg,#7d0a1a,#d0102a 65%,#ff3d5c);color:#fff;text-align:center;overflow:hidden;padding:clamp(6rem,14vw,10rem) 0}
.final .wrap{position:relative;z-index:2}
.final h2{font-size:clamp(2.6rem,8vw,6rem)}
.final .script{color:#ffd0d8}
.final .btn{background:#fff;color:var(--red)!important;box-shadow:0 14px 36px -10px rgba(0,0,0,.5)}
.final .btn.ghost{background:transparent;color:#fff!important;box-shadow:0 0 0 2px #fff inset}
.final .cta{justify-content:center;margin-top:2rem}
footer{background:#2a0d12;color:#e7c9cf;padding:2rem 0;font-size:.85rem;text-align:center}
footer a{color:#fff}

/* scroll reveal (no JS) */
@supports (animation-timeline:view()){
.rv{animation:rise linear both;animation-timeline:view();animation-range:entry 0% entry 45%}
.b-foot .stage{animation:open linear both;animation-timeline:view();animation-range:entry 0% contain 50%}
}
@keyframes rise{from{opacity:0;translate:0 50px;filter:blur(6px)}to{opacity:1;translate:0;filter:none}}

@media(max-width:860px){
.top nav a:not(.btn){display:none}
.hero .wrap,.about .wrap,.posterS .wrap{grid-template-columns:1fr}
.hero{padding-top:6rem}
.portrait{margin-top:1rem;width:min(78%,340px)}
.b-hero{--bx:50%;--by:62%;--size:150vw;opacity:.75}
.chip{left:-6%}.ring{right:-4%;width:108px}
.stats b{font-size:2rem}
.count div{min-width:62px}
}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.stage{opacity:1;scale:1}.rv{opacity:1;translate:none;filter:none}}
