:root{
    --pink:#ff7eb6;
    --pink-soft:#ffd6e8;
    --pink-light:#fff1f8;
    --hot-pink:#ff4fa3;
    --rose:#e83f8f;
    --purple:#9b5de5;
    --cream:#fffaf2;
    --white:#ffffff;
    --dark:#3a1830;
    --muted:#7b5c72;
    --gold:#ffd166;
    --shadow:0 22px 60px rgba(232,63,143,.22);
    --glass:rgba(255,255,255,.68);
    --glass-strong:rgba(255,255,255,.86);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
    margin:0;
    font-family:"Poppins","Segoe UI",Arial,sans-serif;
    color:var(--dark);
    min-height:100vh;
    background:
        radial-gradient(circle at top left, rgba(255,126,182,.35), transparent 30%),
        radial-gradient(circle at top right, rgba(155,93,229,.22), transparent 28%),
        linear-gradient(135deg,#fff5fb,#ffe3f0 42%,#fff9ef);
    overflow-x:hidden;
}

body.login-body{overflow:hidden}
body::selection{background:var(--pink);color:white}

a{color:inherit;text-decoration:none}
button,input{font-family:inherit}
img{max-width:100%;display:block}

/* =========================
   Shared backgrounds
========================= */
.sparkle-bg::before,
.sparkle-bg::after{
    content:"";
    position:fixed;
    inset:0;
    pointer-events:none;
    background-image:
        radial-gradient(circle,rgba(255,255,255,.95) 0 1.2px,transparent 1.4px),
        radial-gradient(circle,rgba(255,126,182,.8) 0 1px,transparent 1.2px),
        radial-gradient(circle,rgba(255,209,102,.95) 0 1.1px,transparent 1.3px);
    background-size:82px 82px,116px 116px,150px 150px;
    animation:sparkleMove 18s linear infinite;
    opacity:.55;
    z-index:-1;
}
.sparkle-bg::after{animation-duration:28s;filter:blur(.2px);opacity:.35}
@keyframes sparkleMove{from{transform:translateY(0)}to{transform:translateY(-180px)}}

.blob{
    position:fixed;
    border-radius:999px;
    filter:blur(18px);
    opacity:.55;
    pointer-events:none;
    z-index:-1;
    animation:floatBlob 10s ease-in-out infinite alternate;
}
.blob.one{width:280px;height:280px;background:#ff9acb;left:-80px;top:90px}
.blob.two{width:240px;height:240px;background:#cdb4ff;right:-60px;bottom:130px;animation-delay:1s}
.blob.three{width:180px;height:180px;background:#ffe08a;left:52%;top:68%;animation-delay:2s}
@keyframes floatBlob{to{transform:translate3d(30px,-38px,0) scale(1.08)}}

/* =========================
   Login
========================= */
.login-wrap{
    min-height:100vh;
    display:grid;
    place-items:center;
    padding:26px;
    position:relative;
}
.wish-cloud{
    position:absolute;
    inset:0;
    pointer-events:none;
    overflow:hidden;
}
.wish{
    position:absolute;
    padding:10px 15px;
    background:rgba(255,255,255,.68);
    border:1px solid rgba(255,255,255,.9);
    border-radius:999px;
    box-shadow:0 14px 30px rgba(255,79,163,.16);
    color:#be2a78;
    font-size:14px;
    font-weight:700;
    animation:floatWish linear infinite;
    white-space:nowrap;
    backdrop-filter:blur(10px);
}
@keyframes floatWish{
    from{transform:translateY(105vh) rotate(-2deg);opacity:0}
    10%,88%{opacity:1}
    to{transform:translateY(-20vh) rotate(3deg);opacity:0}
}
.login-card{
    width:min(1040px,100%);
    min-height:620px;
    display:grid;
    grid-template-columns:1.1fr .9fr;
    background:rgba(255,255,255,.72);
    border:1px solid rgba(255,255,255,.85);
    border-radius:36px;
    box-shadow:var(--shadow);
    overflow:hidden;
    backdrop-filter:blur(18px);
    position:relative;
    z-index:2;
}
.login-art{
    position:relative;
    padding:42px;
    background:
        linear-gradient(145deg,rgba(255,126,182,.82),rgba(255,214,232,.78)),
        radial-gradient(circle at 20% 20%,rgba(255,255,255,.7),transparent 28%);
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    color:white;
    overflow:hidden;
}
.login-art::before{
    content:"🎂 💐 🎁 💖 ✨ 🎀";
    position:absolute;
    left:20px;
    right:20px;
    bottom:35px;
    font-size:52px;
    letter-spacing:16px;
    opacity:.34;
    filter:blur(.2px);
    animation:emojiDrift 8s ease-in-out infinite alternate;
}
@keyframes emojiDrift{to{transform:translateY(-20px) translateX(12px)}}
.login-art h1{font-size:clamp(40px,6vw,76px);line-height:.95;margin:0;text-shadow:0 12px 35px rgba(98,20,70,.23)}
.login-art p{font-size:18px;line-height:1.7;max-width:480px;margin:0;position:relative;z-index:1}
.special-badge{width:max-content;background:rgba(255,255,255,.28);border:1px solid rgba(255,255,255,.55);padding:10px 16px;border-radius:999px;font-weight:800;backdrop-filter:blur(10px)}
.login-form-area{padding:44px;display:flex;align-items:center;justify-content:center}
.login-panel{width:100%;max-width:370px}
.kicker{color:var(--rose);font-weight:900;text-transform:uppercase;letter-spacing:.14em;font-size:12px;margin:0 0 10px}
.login-panel h2{font-size:34px;margin:0 0 12px}
.login-panel .subtitle{color:var(--muted);line-height:1.7;margin:0 0 26px}
.input-group{margin-bottom:15px}
.input-group label{display:block;font-weight:800;margin-bottom:8px;color:#6c2651}
.input-wrap{position:relative}
.input-wrap span{position:absolute;left:15px;top:50%;transform:translateY(-50%);font-size:18px}
.input-wrap input{
    width:100%;
    border:1px solid rgba(232,63,143,.22);
    background:rgba(255,255,255,.82);
    padding:15px 16px 15px 47px;
    border-radius:18px;
    outline:none;
    color:var(--dark);
    font-size:15px;
    transition:.25s ease;
}
.input-wrap input:focus{border-color:var(--hot-pink);box-shadow:0 0 0 5px rgba(255,79,163,.12)}
.primary-btn{
    width:100%;
    border:none;
    border-radius:18px;
    padding:15px 18px;
    background:linear-gradient(135deg,var(--hot-pink),#ff8cc6);
    color:white;
    font-weight:900;
    font-size:16px;
    cursor:pointer;
    box-shadow:0 16px 32px rgba(255,79,163,.28);
    transition:.25s ease;
}
.primary-btn:hover{transform:translateY(-3px);box-shadow:0 22px 40px rgba(255,79,163,.35)}
.login-error{min-height:26px;color:#d21d65;font-weight:800;margin-top:14px}
.hint{margin-top:18px;background:#fff3fb;border:1px dashed #ff9acb;color:#8a3c68;padding:13px 15px;border-radius:18px;line-height:1.55;font-size:13px}

/* =========================
   Layout / navigation
========================= */
.site-shell{min-height:100vh;position:relative;padding-bottom:50px}
.top-nav{
    width:min(1180px,calc(100% - 36px));
    margin:18px auto 0;
    position:sticky;
    top:14px;
    z-index:20;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    padding:12px 15px;
    border-radius:999px;
    background:rgba(255,255,255,.66);
    border:1px solid rgba(255,255,255,.92);
    box-shadow:0 18px 42px rgba(99,36,76,.12);
    backdrop-filter:blur(18px);
}
.brand{display:flex;align-items:center;gap:10px;font-weight:1000;color:#b22a72}
.brand-icon{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#ff7eb6,#ffd166);color:white;box-shadow:0 10px 25px rgba(255,126,182,.32)}
.nav-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.pill-link,.logout-btn{
    border:none;
    background:rgba(255,255,255,.74);
    border:1px solid rgba(255,126,182,.26);
    color:#8d2c62;
    padding:10px 14px;
    border-radius:999px;
    font-weight:900;
    cursor:pointer;
    transition:.22s ease;
}
.pill-link:hover,.logout-btn:hover{transform:translateY(-2px);background:#fff;color:#c41876;box-shadow:0 10px 22px rgba(255,126,182,.18)}
.logout-btn{background:#ffeaf4}
.container{width:min(1180px,calc(100% - 36px));margin:0 auto}
.section{padding:70px 0}
.section-title{text-align:center;margin-bottom:34px}
.section-title .kicker{margin-bottom:8px}
.section-title h2{font-size:clamp(32px,4vw,54px);margin:0;line-height:1.05;color:#4f173c}
.section-title p{color:var(--muted);line-height:1.75;max-width:730px;margin:16px auto 0}

/* =========================
   Home
========================= */
.hero{
    width:min(1180px,calc(100% - 36px));
    min-height:calc(100vh - 128px);
    margin:28px auto 0;
    border-radius:42px;
    padding:54px;
    display:grid;
    grid-template-columns:1.05fr .95fr;
    align-items:center;
    gap:32px;
    background:
        linear-gradient(90deg,rgba(70,14,52,.62),rgba(255,126,182,.18)),
        url('../assets/images/home-wallpaper.svg') center/cover no-repeat;
    box-shadow:0 30px 80px rgba(83,25,65,.22);
    overflow:hidden;
    position:relative;
    color:white;
}
.hero::after{
    content:"";
    position:absolute;inset:0;
    background:radial-gradient(circle at 80% 20%,rgba(255,255,255,.42),transparent 22%);
    pointer-events:none;
}
.hero-content{position:relative;z-index:1;max-width:640px}
.hero-content h1{font-size:clamp(42px,7vw,86px);line-height:.95;margin:0 0 20px;text-shadow:0 20px 55px rgba(0,0,0,.22)}
.hero-content p{font-size:18px;line-height:1.8;margin:0 0 25px;color:rgba(255,255,255,.92)}
.glass-quote{
    background:rgba(255,255,255,.18);
    border:1px solid rgba(255,255,255,.36);
    border-radius:26px;
    padding:22px;
    backdrop-filter:blur(16px);
    box-shadow:0 20px 50px rgba(0,0,0,.1);
}
.glass-quote strong{display:block;font-size:22px;margin-bottom:6px}
.hero-polaroids{position:relative;z-index:1;min-height:520px}
.polaroid{
    position:absolute;
    width:260px;
    background:white;
    padding:13px 13px 45px;
    border-radius:12px;
    box-shadow:0 24px 60px rgba(60,15,45,.25);
    transform:rotate(var(--rot));
    animation:photoFloat 5s ease-in-out infinite alternate;
}
.polaroid:nth-child(1){--rot:-8deg;left:10px;top:40px}
.polaroid:nth-child(2){--rot:9deg;right:20px;top:120px;animation-delay:.7s}
.polaroid:nth-child(3){--rot:-2deg;left:90px;bottom:30px;animation-delay:1.2s}
.polaroid img{height:210px;width:100%;object-fit:cover;border-radius:8px;background:#ffd9ea}
.polaroid span{position:absolute;left:20px;bottom:16px;color:#a33370;font-weight:900}
@keyframes photoFloat{to{transform:translateY(-18px) rotate(var(--rot))}}
.present-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:20px}
.present-card{
    position:relative;
    min-height:330px;
    padding:28px;
    border-radius:32px;
    overflow:hidden;
    background:rgba(255,255,255,.72);
    border:1px solid rgba(255,255,255,.88);
    box-shadow:var(--shadow);
    backdrop-filter:blur(16px);
    transition:.25s ease;
}
.present-card:hover{transform:translateY(-9px);box-shadow:0 30px 70px rgba(232,63,143,.26)}
.present-card::before{
    content:"";position:absolute;inset:auto -30px -60px auto;width:180px;height:180px;border-radius:50%;background:rgba(255,126,182,.22)
}
.present-card .gift-icon{font-size:58px;margin-bottom:18px;display:inline-block;animation:bounceGift 2s ease-in-out infinite}
.present-card h3{font-size:27px;margin:0 0 12px;color:#4f173c}
.present-card p{color:var(--muted);line-height:1.75;margin:0 0 24px}
.open-gift{display:inline-flex;align-items:center;gap:10px;padding:12px 16px;border-radius:999px;background:#ff4fa3;color:white;font-weight:1000;box-shadow:0 12px 24px rgba(255,79,163,.25)}
@keyframes bounceGift{50%{transform:translateY(-8px) rotate(3deg)}}
.love-note{
    margin-top:34px;
    padding:30px;
    border-radius:32px;
    background:linear-gradient(135deg,rgba(255,255,255,.75),rgba(255,222,236,.8));
    border:1px solid rgba(255,255,255,.9);
    box-shadow:var(--shadow);
    text-align:center;
}
.love-note h2{margin:0 0 12px;font-size:32px;color:#b82172}
.love-note p{max-width:860px;margin:0 auto;line-height:1.8;color:#70455f}

.confetti-canvas,.firework-canvas{position:fixed;inset:0;pointer-events:none;z-index:50}
.firework-canvas{z-index:49}

/* =========================
   Journey
========================= */
.video-hero{
    min-height:78vh;
    display:grid;
    place-items:center;
    position:relative;
    overflow:hidden;
    margin-top:-74px;
    padding-top:120px;
    color:white;
}
.video-hero video,.video-hero .fallback-video{
    position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;
}
.video-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(57,9,42,.48),rgba(255,126,182,.24),rgba(255,245,251,.98));z-index:-1}
.video-hero-content{text-align:center;width:min(900px,calc(100% - 36px));padding:70px 22px 36px}
.video-hero-content h1{font-size:clamp(42px,7vw,86px);line-height:1;margin:0 0 18px;text-shadow:0 20px 60px rgba(0,0,0,.25)}
.video-hero-content p{font-size:18px;line-height:1.8;margin:0 auto 26px;max-width:760px}
.video-control{border:none;border-radius:999px;padding:13px 18px;background:rgba(255,255,255,.86);color:#b82172;font-weight:1000;cursor:pointer;box-shadow:0 18px 35px rgba(0,0,0,.14)}
.timeline{position:relative;margin:30px auto 0;width:min(1040px,100%)}
.timeline::before{content:"";position:absolute;top:0;bottom:0;left:50%;width:4px;transform:translateX(-50%);background:linear-gradient(var(--pink),var(--gold),var(--purple));border-radius:99px;opacity:.55}
.timeline-item{display:grid;grid-template-columns:1fr 1fr;gap:38px;align-items:center;margin:0 0 54px;position:relative}
.timeline-item::before{content:attr(data-year);position:absolute;left:50%;top:26px;transform:translateX(-50%);background:white;border:5px solid #ff9acb;border-radius:999px;padding:10px 14px;font-weight:1000;color:#b82172;box-shadow:0 14px 30px rgba(232,63,143,.18);z-index:2}
.timeline-item:nth-child(even) .memory-card{grid-column:2}
.timeline-item:nth-child(even) .memory-text{grid-column:1;grid-row:1;text-align:right}
.memory-card{background:white;padding:14px;border-radius:28px;box-shadow:var(--shadow);transform:rotate(-1.4deg);transition:.25s ease}
.timeline-item:nth-child(even) .memory-card{transform:rotate(1.4deg)}
.memory-card:hover{transform:rotate(0) translateY(-7px)}
.memory-card img{width:100%;height:340px;object-fit:cover;border-radius:22px;background:#ffe3f0}
.memory-text{background:rgba(255,255,255,.76);border:1px solid rgba(255,255,255,.9);border-radius:30px;padding:26px;box-shadow:0 18px 50px rgba(232,63,143,.13);backdrop-filter:blur(14px)}
.memory-text h3{margin:0 0 10px;font-size:28px;color:#4f173c}
.memory-text p{margin:0;color:#70455f;line-height:1.8}
.memory-tag{display:inline-block;margin-bottom:10px;background:#ffe9f4;color:#be2a78;border-radius:999px;padding:7px 12px;font-weight:1000;font-size:12px}

/* =========================
   Flowers and gifts
========================= */
.petals-layer{position:fixed;inset:0;pointer-events:none;z-index:40;overflow:hidden}
.petal{position:absolute;top:-60px;width:22px;height:30px;background:radial-gradient(circle at 35% 30%,#fff,#ff8bbb 62%,#ff4fa3);border-radius:70% 30% 70% 30%;opacity:.88;animation:fallPetal linear forwards;filter:drop-shadow(0 8px 10px rgba(232,63,143,.12))}
@keyframes fallPetal{to{transform:translate3d(var(--x),110vh,0) rotate(520deg);opacity:.15}}
.love-petal-message{position:fixed;left:50%;top:38%;transform:translate(-50%,-50%);display:flex;gap:10px;z-index:42;pointer-events:none;animation:messageFall 4.8s ease-in forwards;text-shadow:0 12px 30px rgba(232,63,143,.28)}
.love-petal-message span{font-size:clamp(28px,5vw,62px);font-weight:1000;color:#ff4fa3;background:linear-gradient(135deg,#ff4fa3,#ffc1dc);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 6px 0 rgba(255,255,255,.9))}
@keyframes messageFall{0%{opacity:0;transform:translate(-50%,-140%)}22%,62%{opacity:1;transform:translate(-50%,-50%)}100%{opacity:0;transform:translate(-50%,115vh) rotate(6deg)}}
.peony-hero{padding:64px 0 34px}
.peony-card{
    display:grid;
    grid-template-columns:1fr 360px 1fr;
    gap:28px;
    align-items:center;
    border-radius:42px;
    padding:34px;
    background:rgba(255,255,255,.74);
    border:1px solid rgba(255,255,255,.9);
    box-shadow:var(--shadow);
    backdrop-filter:blur(18px);
    overflow:hidden;
}
.float-note{padding:24px;border-radius:28px;background:#fff7fb;border:1px solid #ffd2e6;box-shadow:0 14px 34px rgba(232,63,143,.10);animation:softFloat 4s ease-in-out infinite alternate}
.float-note.right{animation-delay:.8s}
.float-note h3{margin:0 0 10px;color:#b82172;font-size:24px}
.float-note p{margin:0;line-height:1.8;color:#70455f}
.peony-center{text-align:center;position:relative}
.peony-center img{width:100%;max-height:380px;object-fit:contain;filter:drop-shadow(0 26px 45px rgba(232,63,143,.24));animation:softFloat 5s ease-in-out infinite alternate}
.peony-center .caption{margin-top:14px;font-weight:1000;color:#b82172}
@keyframes softFloat{to{transform:translateY(-13px)}}
.gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.gallery-item{position:relative;border-radius:28px;overflow:hidden;min-height:280px;background:white;box-shadow:0 20px 45px rgba(232,63,143,.16);transition:.25s ease}
.gallery-item:hover{transform:translateY(-8px)}
.gallery-item img{width:100%;height:100%;object-fit:cover;min-height:280px}
.gallery-caption{position:absolute;left:12px;right:12px;bottom:12px;background:rgba(255,255,255,.82);border-radius:20px;padding:14px;backdrop-filter:blur(10px)}
.gallery-caption h4{margin:0 0 5px;color:#4f173c}.gallery-caption p{margin:0;color:#70455f;font-size:13px;line-height:1.45}

/* =========================
   Places
========================= */
.places-hero{padding:70px 0 20px;text-align:center}
.places-hero h1{font-size:clamp(42px,7vw,78px);line-height:1;margin:0;color:#4f173c}.places-hero p{max-width:770px;margin:18px auto;color:#70455f;line-height:1.8}
.place-list{display:flex;flex-direction:column;gap:30px;margin-top:30px}
.place-card{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:center;background:rgba(255,255,255,.76);border:1px solid rgba(255,255,255,.9);border-radius:34px;padding:18px;box-shadow:var(--shadow);overflow:hidden}
.place-card:nth-child(even) .place-image{grid-column:2}.place-card:nth-child(even) .place-info{grid-column:1;grid-row:1;text-align:right}
.place-image{border-radius:26px;overflow:hidden;position:relative}.place-image img{width:100%;height:360px;object-fit:cover;transition:transform .6s ease}.place-card:hover .place-image img{transform:scale(1.06)}
.place-image::after{content:"📍";position:absolute;right:17px;top:17px;background:rgba(255,255,255,.86);width:48px;height:48px;border-radius:50%;display:grid;place-items:center;font-size:24px;box-shadow:0 12px 26px rgba(0,0,0,.12)}
.place-info{padding:22px}.place-info .place-date{display:inline-block;background:#fff0f7;color:#be2a78;border-radius:999px;padding:8px 13px;font-weight:1000;font-size:13px;margin-bottom:13px}.place-info h2{font-size:34px;margin:0 0 12px;color:#4f173c}.place-info p{margin:0;color:#70455f;line-height:1.85}.place-memory{margin-top:16px;padding:15px 16px;border-radius:20px;background:#fff8fc;color:#8a3c68;font-weight:800;border:1px dashed #ffb7d9}

/* =========================
   Reveal animations
========================= */
.reveal{opacity:0;transform:translateY(26px);transition:.7s ease}.reveal.show{opacity:1;transform:none}

/* =========================
   Responsive
========================= */
@media(max-width:900px){
    .login-card,.hero,.peony-card,.place-card{grid-template-columns:1fr}
    .login-art{min-height:340px}.hero{padding:34px;min-height:auto}.hero-polaroids{min-height:650px}.present-grid,.gallery-grid{grid-template-columns:1fr 1fr}.timeline::before{left:20px}.timeline-item,.timeline-item:nth-child(even){grid-template-columns:1fr;padding-left:52px}.timeline-item::before{left:20px;transform:translateX(-50%);top:4px}.timeline-item:nth-child(even) .memory-card,.timeline-item:nth-child(even) .memory-text{grid-column:auto;grid-row:auto;text-align:left}.peony-card{gap:18px}.peony-center{order:-1}.place-card:nth-child(even) .place-image,.place-card:nth-child(even) .place-info{grid-column:auto;grid-row:auto;text-align:left}.top-nav{border-radius:28px;align-items:flex-start}.nav-actions{gap:6px}.pill-link,.logout-btn{font-size:13px;padding:9px 10px}
}
@media(max-width:620px){
    .login-wrap{padding:14px}.login-card{border-radius:28px}.login-art,.login-form-area{padding:28px}.login-art h1{font-size:44px}.hero{border-radius:30px}.hero-polaroids{min-height:590px}.polaroid{width:220px}.polaroid:nth-child(2){right:0}.polaroid:nth-child(3){left:30px}.present-grid,.gallery-grid{grid-template-columns:1fr}.section{padding:46px 0}.gallery-item{min-height:260px}.top-nav{position:relative;top:auto}.brand span:last-child{display:none}.video-hero{margin-top:0;padding-top:30px}.memory-card img,.place-image img{height:270px}.peony-card{padding:18px}.love-petal-message{gap:5px}
}

/* =========================
   Improvements v2 - requested update
========================= */

/* Login floating wishes now pass in front of the card, while the credential panel stays readable */
.wish-cloud{z-index:4;}
.wish{z-index:4;box-shadow:0 18px 38px rgba(255,79,163,.24);}
.login-card{z-index:3;}
.login-art{z-index:3;}
.login-form-area{position:relative;z-index:7;}
.login-form-area::before{
    content:"";
    position:absolute;
    inset:22px;
    border-radius:30px;
    background:rgba(255,255,255,.58);
    border:1px solid rgba(255,255,255,.72);
    backdrop-filter:blur(14px);
    box-shadow:0 14px 42px rgba(255,79,163,.10);
    z-index:-1;
}
.login-panel{position:relative;z-index:8;}
.input-wrap,.input-wrap input,.primary-btn{position:relative;z-index:9;}

/* More cinematic falling rose petals */
.petals-layer{z-index:48;}
.petal,
.message-petal{
    position:absolute;
    top:-70px;
    width:22px;
    height:34px;
    border-radius:72% 28% 70% 30% / 68% 34% 66% 32%;
    background:
        radial-gradient(circle at 35% 24%,rgba(255,255,255,.95) 0 11%,rgba(255,220,236,.86) 12% 23%,transparent 24%),
        linear-gradient(145deg,#ffb3d2 0%,#ff6dad 48%,#d92376 100%);
    box-shadow:inset -4px -6px 9px rgba(156,20,82,.18), inset 4px 4px 10px rgba(255,255,255,.34), 0 10px 22px rgba(232,63,143,.18);
    opacity:.92;
    transform:scale(var(--scale,1));
    filter:drop-shadow(0 9px 12px rgba(232,63,143,.14));
}
.petal::after,
.message-petal::after{
    content:"";
    position:absolute;
    left:43%;
    top:10%;
    width:1px;
    height:76%;
    background:linear-gradient(rgba(255,255,255,.76),rgba(190,42,120,.15));
    transform:rotate(13deg);
    opacity:.76;
}
.petal:nth-child(3n),
.message-petal:nth-child(3n){
    border-radius:36% 64% 42% 58% / 52% 40% 60% 48%;
    background:linear-gradient(145deg,#ffd1e4,#ff8bbb 52%,#e83f8f);
}
.petal:nth-child(4n),
.message-petal:nth-child(4n){
    background:linear-gradient(145deg,#fff0f7,#ff9acb 58%,#ff4fa3);
}
.petal{animation:fallPetalV2 linear forwards;}
@keyframes fallPetalV2{
    0%{transform:translate3d(0,-8vh,0) rotate(0deg) scale(var(--scale,1));opacity:0;}
    10%{opacity:.95;}
    42%{transform:translate3d(calc(var(--x) * .35),42vh,0) rotate(180deg) scale(var(--scale,1));}
    72%{transform:translate3d(calc(var(--x) * -.15),76vh,0) rotate(360deg) scale(var(--scale,1));}
    100%{transform:translate3d(var(--x),112vh,0) rotate(var(--spin,560deg)) scale(var(--scale,1));opacity:.18;}
}
.message-petal{
    position:fixed;
    z-index:52;
    top:40%;
    left:50%;
    opacity:0;
    animation:messagePetalForm 7.5s cubic-bezier(.2,.78,.2,1) forwards;
}
@keyframes messagePetalForm{
    0%{opacity:0;transform:translate3d(var(--start-x),var(--start-y),0) rotate(-240deg) scale(.72);}
    20%{opacity:1;}
    40%,67%{opacity:1;transform:translate3d(var(--target-x),var(--target-y),0) rotate(8deg) scale(var(--scale,1));}
    76%{opacity:.96;transform:translate3d(calc(var(--target-x) + 12px),calc(var(--target-y) + 12px),0) rotate(20deg) scale(var(--scale,1));}
    100%{opacity:0;transform:translate3d(var(--end-x),var(--end-y),0) rotate(620deg) scale(.86);}
}
.love-petal-message{display:none;}

/* Peony hero uses a real external flower photo with local SVG fallback */
.peony-card{
    grid-template-columns:minmax(230px,1fr) minmax(280px,430px) minmax(230px,1fr);
    position:relative;
}
.peony-card::before{
    content:"";
    position:absolute;
    inset:-120px auto auto 50%;
    width:420px;
    height:420px;
    transform:translateX(-50%);
    border-radius:50%;
    background:radial-gradient(circle,rgba(255,126,182,.20),transparent 66%);
    pointer-events:none;
}
.peony-center{
    padding:14px;
    border-radius:38px;
    background:linear-gradient(145deg,rgba(255,255,255,.65),rgba(255,235,246,.8));
    border:1px solid rgba(255,255,255,.86);
    box-shadow:0 24px 55px rgba(232,63,143,.18);
}
.peony-center img.peony-real-photo{
    width:100%;
    aspect-ratio:1/1;
    max-height:none;
    object-fit:cover;
    border-radius:32px;
    border:8px solid rgba(255,255,255,.82);
    filter:drop-shadow(0 26px 45px rgba(232,63,143,.22));
}

/* Larger flowers and presents story sections */
.memory-gift-wall{
    display:flex;
    flex-direction:column;
    gap:34px;
}
.gift-story-card{
    display:grid;
    grid-template-columns:minmax(300px,.88fr) minmax(0,1.12fr);
    gap:28px;
    align-items:stretch;
    min-height:430px;
    padding:20px;
    border-radius:38px;
    background:rgba(255,255,255,.78);
    border:1px solid rgba(255,255,255,.92);
    box-shadow:0 24px 62px rgba(232,63,143,.16);
    backdrop-filter:blur(18px);
    overflow:hidden;
    position:relative;
}
.gift-story-card::before{
    content:"";
    position:absolute;
    width:260px;
    height:260px;
    right:-80px;
    top:-100px;
    border-radius:50%;
    background:radial-gradient(circle,rgba(255,126,182,.25),transparent 67%);
    pointer-events:none;
}
.gift-story-card.reverse-card{grid-template-columns:minmax(0,1.12fr) minmax(300px,.88fr);}
.gift-story-card.reverse-card .gift-story-photo{grid-column:2;}
.gift-story-card.reverse-card .gift-story-content{grid-column:1;grid-row:1;}
.gift-story-photo{
    position:relative;
    border-radius:30px;
    overflow:hidden;
    min-height:390px;
    background:#ffe7f2;
    box-shadow:0 20px 42px rgba(232,63,143,.15);
}
.gift-story-photo img{width:100%;height:100%;object-fit:cover;transition:transform .7s ease;}
.gift-story-card:hover .gift-story-photo img{transform:scale(1.065) rotate(.5deg);}
.story-badge{
    position:absolute;
    left:18px;
    top:18px;
    padding:9px 14px;
    border-radius:999px;
    background:rgba(255,255,255,.84);
    color:#be2a78;
    font-weight:1000;
    box-shadow:0 12px 25px rgba(0,0,0,.10);
    backdrop-filter:blur(10px);
}
.gift-story-content{
    padding:24px 16px;
    display:flex;
    flex-direction:column;
    justify-content:center;
    position:relative;
    z-index:1;
}
.story-date{margin:0 0 8px;color:#be2a78;font-weight:1000;text-transform:uppercase;letter-spacing:.12em;font-size:12px;}
.gift-story-content h3{margin:0 0 14px;font-size:clamp(28px,3.2vw,46px);line-height:1.05;color:#4f173c;}
.story-main{margin:0 0 18px;color:#70455f;line-height:1.85;font-size:16px;}
.meaning-box,
.memory-box{
    padding:16px 18px;
    border-radius:22px;
    margin-top:12px;
    background:#fff7fb;
    border:1px solid #ffd2e6;
    color:#70455f;
    line-height:1.65;
}
.meaning-box strong,
.memory-box strong{display:block;color:#b82172;margin-bottom:5px;}
.flower-card .story-badge{background:#fff2f8;}
.present-card-big .story-badge{background:#fff8e7;color:#a86800;}
.present-card-big::before{background:radial-gradient(circle,rgba(255,209,102,.26),transparent 67%);}

/* Places page firework and extra motion */
.place-firework-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:45;}
.place-card{position:relative;transition:transform .28s ease, box-shadow .28s ease;}
.place-card::before{
    content:"";
    position:absolute;
    inset:0;
    border-radius:34px;
    background:linear-gradient(120deg,transparent,rgba(255,255,255,.42),transparent);
    transform:translateX(-120%);
    transition:transform .75s ease;
    pointer-events:none;
}
.place-card:hover{transform:translateY(-8px);box-shadow:0 32px 76px rgba(232,63,143,.24);}
.place-card:hover::before{transform:translateX(120%);}
.place-memory{position:relative;overflow:hidden;}
.place-memory::after{
    content:"✨";
    position:absolute;
    right:14px;
    bottom:8px;
    opacity:.45;
    animation:twinklePlace 1.8s ease-in-out infinite alternate;
}
@keyframes twinklePlace{to{transform:scale(1.25) rotate(12deg);opacity:.95;}}

/* Stronger phone responsiveness for every page */
@media(max-width:1024px){
    .container,.hero,.top-nav{width:min(100% - 28px,1180px);}
    .hero{grid-template-columns:1fr;padding:42px;}
    .peony-card{grid-template-columns:1fr;}
    .gift-story-card,
    .gift-story-card.reverse-card{grid-template-columns:1fr;min-height:auto;}
    .gift-story-card.reverse-card .gift-story-photo,
    .gift-story-card.reverse-card .gift-story-content{grid-column:auto;grid-row:auto;}
    .gift-story-photo{min-height:340px;}
}
@media(max-width:760px){
    body{font-size:15px;}
    .top-nav{gap:10px;padding:11px;border-radius:24px;align-items:center;}
    .nav-actions{width:100%;justify-content:center;}
    .pill-link,.logout-btn{padding:9px 10px;font-size:12px;}
    .login-card{min-height:auto;grid-template-columns:1fr;}
    .login-art{min-height:280px;}
    .login-form-area::before{inset:12px;border-radius:24px;}
    .wish{font-size:12px;padding:8px 12px;}
    .hero{padding:30px 20px;margin-top:18px;border-radius:28px;}
    .hero-content p{font-size:15px;}
    .present-card{padding:24px;}
    .timeline-item{gap:20px;margin-bottom:42px;}
    .memory-text{padding:20px;}
    .peony-hero{padding-top:38px;}
    .peony-card{padding:18px;border-radius:30px;}
    .float-note{padding:18px;border-radius:22px;}
    .peony-center img.peony-real-photo{border-width:5px;border-radius:24px;}
    .gift-story-card{padding:14px;border-radius:28px;gap:18px;}
    .gift-story-photo{min-height:285px;border-radius:22px;}
    .gift-story-content{padding:16px 8px;}
    .meaning-box,.memory-box{padding:14px;border-radius:18px;}
    .places-hero{padding-top:42px;}
    .place-card{padding:12px;border-radius:28px;gap:12px;}
    .place-info{padding:16px 8px;}
    .place-info h2{font-size:28px;}
    .place-image{border-radius:22px;}
    .place-image img{height:280px;}
    .message-petal{animation-duration:7.2s;}
}
@media(max-width:430px){
    .container,.hero,.top-nav{width:calc(100% - 20px);}
    .login-wrap{padding:10px;}
    .login-art,.login-form-area{padding:22px 18px;}
    .login-panel h2{font-size:28px;}
    .input-wrap input{padding:13px 12px 13px 44px;}
    .primary-btn{padding:13px 14px;}
    .hero-content h1,.video-hero-content h1,.places-hero h1{font-size:38px;}
    .section-title h2{font-size:31px;}
    .hero-polaroids{min-height:520px;}
    .polaroid{width:200px;}
    .present-grid{gap:16px;}
    .top-nav{position:relative;top:auto;margin-top:10px;}
    .brand-icon{width:36px;height:36px;}
    .timeline-item,.timeline-item:nth-child(even){padding-left:42px;}
    .timeline::before,.timeline-item::before{left:15px;}
    .timeline-item::before{font-size:12px;padding:8px 10px;}
    .memory-card img,.place-image img{height:240px;}
    .gift-story-photo{min-height:250px;}
    .story-badge{left:12px;top:12px;font-size:12px;padding:7px 10px;}
    .petal{width:16px!important;height:25px!important;}
    .message-petal{filter:drop-shadow(0 5px 8px rgba(232,63,143,.13));}
}


/* =========================
   Improvements v3 - performance, mobile menu, login side wishes
========================= */

/* Cleaner login floating words: in front of background/card area, but only left and right side */
.wish-cloud{z-index:6;}
.wish{
    z-index:6;
    max-width:min(210px,28vw);
    overflow:hidden;
    text-overflow:ellipsis;
    transform:translateZ(0);
}
.wish-left{text-align:left;}
.wish-right{text-align:right;}
.login-card{z-index:5;}
.login-form-area{z-index:8;}
.login-panel{z-index:9;}

/* Hamburger menu: desktop remains the same, phone becomes clean dropdown */
.mobile-menu-btn{
    display:none;
    width:44px;
    height:44px;
    border:none;
    border-radius:16px;
    background:linear-gradient(135deg,#ff7eb6,#ffd1e4);
    box-shadow:0 14px 26px rgba(255,79,163,.22);
    cursor:pointer;
    align-items:center;
    justify-content:center;
    flex-direction:column;
    gap:5px;
    padding:0;
    flex:0 0 auto;
}
.mobile-menu-btn span{
    width:20px;
    height:2.5px;
    border-radius:99px;
    background:white;
    transition:transform .25s ease, opacity .2s ease;
}
.top-nav.menu-open .mobile-menu-btn span:nth-child(1){transform:translateY(7.5px) rotate(45deg);}
.top-nav.menu-open .mobile-menu-btn span:nth-child(2){opacity:0;}
.top-nav.menu-open .mobile-menu-btn span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg);}

/* Petal performance fix: keep the nice shape but remove heavy rendering and endless animation */
.petals-layer{
    contain:layout paint size;
    z-index:38;
}
.petal,
.message-petal{
    box-shadow:none!important;
    filter:none!important;
    will-change:transform, opacity;
    backface-visibility:hidden;
    transform:translateZ(0);
    background:
        radial-gradient(circle at 34% 24%,rgba(255,255,255,.82) 0 10%,transparent 11%),
        linear-gradient(145deg,#ffc0da 0%,#ff73ae 52%,#df2c7f 100%)!important;
}
.petal::after,
.message-petal::after{opacity:.42;}
.message-petal{animation-duration:6.6s;}
@media(prefers-reduced-motion: reduce){
    .petal,.message-petal{animation-duration:1.2s!important;}
}

@media(max-width:760px){
    .top-nav{
        position:sticky!important;
        top:10px!important;
        width:calc(100% - 20px)!important;
        margin:10px auto 0!important;
        border-radius:24px!important;
        padding:10px!important;
        flex-wrap:wrap;
        align-items:center!important;
        overflow:visible;
    }
    .brand{flex:1 1 auto;min-width:0;}
    .brand span:last-child{
        display:inline!important;
        max-width:calc(100vw - 150px);
        white-space:nowrap;
        overflow:hidden;
        text-overflow:ellipsis;
        font-size:14px;
    }
    .mobile-menu-btn{display:flex;}
    .nav-actions{
        width:100%!important;
        max-height:0;
        overflow:hidden;
        opacity:0;
        padding:0;
        margin:0;
        display:flex;
        flex-direction:column;
        gap:8px!important;
        transition:max-height .28s ease, opacity .2s ease, padding .2s ease, margin .2s ease;
    }
    .top-nav.menu-open .nav-actions{
        max-height:320px;
        opacity:1;
        padding-top:10px;
        margin-top:8px;
        border-top:1px solid rgba(255,126,182,.22);
    }
    .nav-actions .pill-link,
    .nav-actions .logout-btn{
        width:100%;
        justify-content:center;
        text-align:center;
        padding:12px 14px!important;
        font-size:14px!important;
        border-radius:16px!important;
        background:rgba(255,255,255,.88);
    }
    .nav-actions .logout-btn{background:#ffe5f1;}

    /* Login page: keep floating words at edges only, never over the login input area */
    .wish{max-width:34vw;font-size:11px;padding:7px 10px;opacity:.72!important;}
    .wish:nth-child(n+9){display:none;}
    .wish-left{left:2vw!important;}
    .wish-right{right:2vw!important;}
    .login-card{z-index:7;}
    .login-form-area{z-index:10;}
}

@media(max-width:480px){
    .wish{display:none;}
    .login-card{width:100%;}
    .login-wrap{min-height:100dvh;}
    .message-petal{animation-duration:5.8s;}
}


/* V3 fine tuning: keep login wishes outside the credential/card center area */
body.login-body .wish{
    max-width:130px;
    font-size:12px;
    padding:8px 10px;
}
@media(max-width:1180px){
    body.login-body .wish{display:none;}
}
@media(min-width:1500px){
    body.login-body .wish{max-width:180px;font-size:13px;}
}
