:root{
  --bg1:#fff7fb; --bg2:#f4fff4;
  --accent:#e78ab5; --accent-2:#b56aa0;
  --ring: rgba(231,138,181,0.35);
  --glass: rgba(255,255,255,.62);
  --glass2: rgba(255,255,255,.42);
  --shadow: rgba(0,0,0,.10);
}
*{box-sizing:border-box} html,body{margin:0;padding:0}
body{
  font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  line-height:1.6;color:#31313a;overflow-x:hidden;
  background:
    radial-gradient(1200px 600px at 0% 0%, var(--bg2), transparent 55%),
    radial-gradient(900px 500px at 100% 20%, rgba(231,138,181,.18), transparent 55%),
    linear-gradient(180deg, var(--bg1), var(--bg2));
  text-rendering:optimizeLegibility;
}
.entry-curtain{
  position:fixed; inset:0; z-index:50; display:grid; place-items:center;
  background:
    radial-gradient(1200px 600px at 30% 30%, rgba(231,138,181,.20), transparent 60%),
    radial-gradient(900px 500px at 80% 20%, rgba(122,164,122,.16), transparent 60%),
    linear-gradient(180deg, rgba(255,247,251,.98), rgba(244,255,244,.98));
  opacity:1; transition: opacity .7s ease, visibility .7s ease;
}
.entry-curtain.hide{opacity:0; visibility:hidden}
.entry-glow{position:absolute; inset:-30%; background: radial-gradient(600px 320px at 40% 35%, rgba(255,255,255,.65), transparent 55%);
  transform: rotate(-10deg); opacity:.6; animation: entryGlow 2.6s ease-in-out infinite;}
@keyframes entryGlow{0%,100%{opacity:.35}50%{opacity:.75}}
.entry-badge{position:relative;border-radius:22px;padding:1.2rem 1.4rem;text-align:center;overflow:hidden;
  transform: translateY(10px) scale(.98);animation: badgeIn 700ms cubic-bezier(.2,.8,.2,1) forwards;}
@keyframes badgeIn{to{transform:translateY(0) scale(1)}}
.entry-line{font-family:Marcellus,Georgia,serif;font-size:2rem;color:#2a2a2a}
.entry-sub{font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#666;margin-top:.2rem;font-size:.9rem}

h1,h2,h3{font-family:Marcellus,Georgia,serif;margin:0 0 .6rem;color:#2a2a2a}
h2{font-size:clamp(1.6rem,1.2rem + 1.5vw,2.2rem)} h1{font-size:clamp(2.2rem,1.6rem + 3.2vw,3.6rem)}
p{margin:.3rem 0 1rem}
.container{max-width:1100px;margin:0 auto;padding:0 1.2rem} .container.narrow{max-width:820px}

.glass{position:relative;background: linear-gradient(180deg, var(--glass), var(--glass2));
  border: 1px solid rgba(255,255,255,.65);
  box-shadow: 0 18px 45px var(--shadow), inset 0 1px 0 rgba(255,255,255,.7), inset 0 -1px 0 rgba(0,0,0,.03);
  backdrop-filter: blur(14px) saturate(1.2); -webkit-backdrop-filter: blur(14px) saturate(1.2);}
.glass::after{content:"";position:absolute;inset:0;border-radius:inherit;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.15'/%3E%3C/svg%3E");
  mix-blend-mode:soft-light;opacity:.22;pointer-events:none;}
.glass-shine{position:absolute;inset:-30% -30%;background: radial-gradient(600px 320px at 20% 20%, rgba(255,255,255,.55), transparent 55%);
  transform: rotate(-8deg);opacity:.55;pointer-events:none;}

.btn{display:inline-block;padding:.9rem 1.2rem;border-radius:.9rem;background:linear-gradient(180deg,var(--accent),var(--accent-2));
  color:#fff;text-decoration:none;font-weight:600;border:0;cursor:pointer;transition:transform .08s ease, box-shadow .2s ease, filter .2s ease;
  box-shadow:0 10px 22px rgba(0,0,0,.14);}
.btn:hover{transform:translateY(-1px);filter:saturate(1.05)} .btn:active{transform:translateY(0);box-shadow:0 6px 14px rgba(0,0,0,.18)}
.btn-ghost{background:rgba(255,255,255,.55); color:#333; border:1px solid rgba(0,0,0,.08); box-shadow:0 10px 22px rgba(0,0,0,.08)}

.hero{min-height:100svh;display:grid;place-items:center;padding:4rem 1rem 2rem;position:relative;text-align:center}
.hero-inner{max-width:960px;margin:0 auto}
#softStars{position:fixed;inset:0;z-index:-2} #petals{position:fixed;inset:0;z-index:-1;pointer-events:none}

.invite-card{width:min(94vw,780px);height:420px;margin:0 auto 1rem;perspective:1000px;cursor:pointer}
@media (max-width:520px){.invite-card{height:380px}}
.invite-card-inner{width:100%;height:100%;border-radius:22px;display:grid;place-items:center;transform-style:preserve-3d;transition:transform .15s ease;
  overflow:hidden;color:#1a1a1a;padding:1.2rem 1rem;}
.entry-pop{animation:heroPop 900ms cubic-bezier(.2,.8,.2,1) 650ms both}
@keyframes heroPop{from{transform:translateY(14px) scale(.985);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
.invite-card-inner::before{content:"";position:absolute;inset:-40%;
  background: radial-gradient(600px 340px at var(--mx,50%) var(--my,50%), rgba(231,138,181,.22), transparent 55%);pointer-events:none;}
.sparkle-text{display:inline-block;font-size:clamp(1rem,.6rem + 1.2vw,1.2rem);letter-spacing:.12em;text-transform:uppercase;color:#666}
.amp{color:var(--accent);margin:0 .25rem}
.date{color:#555} .cta{font-size:.95rem;color:#777}
.hero-title{line-height:1.15;margin:0;position:relative}
.name-animate .ch{display:inline-block;opacity:0;transform:translateY(10px) scale(.98);filter:blur(6px);animation:letterIn 700ms cubic-bezier(.2,.8,.2,1) forwards}
@keyframes letterIn{to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}
.hero-title::after{content:"";position:absolute;left:50%;top:18%;width:220px;height:220px;transform:translateX(-50%);
  background: radial-gradient(circle, rgba(231,138,181,.18), transparent 60%);opacity:.65;animation:glowPulse 4.2s ease-in-out infinite;pointer-events:none;}
@keyframes glowPulse{0%,100%{opacity:.45}50%{opacity:.85}}

.reveal-card{margin:1rem auto 0;width:min(92vw,860px);border-radius:20px;padding:1.2rem 1.2rem 1.4rem;animation:sheetIn .5s ease both;overflow:hidden}
.reveal-card[hidden]{display:none}
.reveal-close{position:absolute;top:8px;right:10px;border:0;background:transparent;font-size:1.6rem;line-height:1;cursor:pointer;color:#666}
@keyframes sheetIn{from{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}
.keylist{list-style:none;padding:0;margin:.6rem auto 1rem;display:grid;gap:.6rem 1.2rem;grid-template-columns:260px 1fr;max-width:520px;}
.keylist .k{font-weight:700;color:#333;text-align:right;} .keylist .v{color:#444}
@media (max-width:640px){.keylist{grid-template-columns:1fr; text-align:center;}.keylist .k{text-align:center;color:#666}}

.countdown{margin-top:1.2rem;display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap}
.cd-item{min-width:92px;padding:.8rem .9rem;border-radius:14px;display:flex;flex-direction:column;align-items:center;overflow:hidden}
.cd-item span{font-weight:700;font-size:1.6rem;color:#2a2a2a}
.cd-item small{color:#6b6b7a;font-weight:600;letter-spacing:.06em;text-transform:uppercase}

.scroll-indicator{position:absolute;bottom:1rem;left:50%;transform:translateX(-50%);animation:float 1.8s ease-in-out infinite;color:#666}
@keyframes float{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,-6px)}}

.section{padding:5rem 0}
.section.alt{background:rgba(255,255,255,.20);border-top:1px solid rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.03);backdrop-filter:blur(2px)}
.section.tight-next{padding-bottom:1.2rem}
.compact-top{padding-top:1.2rem}
.super-compact{margin-top:-.6rem}
.panel{border-radius:20px;padding:1.4rem 1.2rem;overflow:hidden}

.fade{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .7s ease}
.fade.inview{opacity:1;transform:translateY(0)}
.slide{opacity:0}
.slide.inview{animation:slideIn .7s ease forwards}
.slide[data-slide="left"]{transform:translateX(-24px)}
.slide[data-slide="right"]{transform:translateX(24px)}
@keyframes slideIn{from{opacity:0;transform:translateX(var(--fromX,0)) scale(.98)}to{opacity:1;transform:translateX(0) scale(1)}}
.zoom{opacity:0;transform:scale(.98)}
.zoom.inview{animation:zoomIn .6s ease forwards}
@keyframes zoomIn{from{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}

.grid.two{display:grid;gap:1rem;grid-template-columns:repeat(2,1fr)}
@media (max-width:720px){.grid.two{grid-template-columns:1fr}}
.field{margin-bottom:1rem}
.field label{display:block;font-weight:600;margin-bottom:.3rem;color:#222}
.field input,.field select,.field textarea{width:100%;padding:.8rem .9rem;border-radius:.75rem;border:1px solid rgba(0,0,0,.10);
  background:rgba(255,255,255,.78);outline:none;box-shadow:0 0 0 0 var(--ring);transition:box-shadow .2s ease,border-color .2s ease,background .2s ease;color:#1a1a1a}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 6px var(--ring);background:rgba(255,255,255,.92)}
.choices{display:flex;gap:1rem;flex-wrap:wrap}
.choice{display:flex;align-items:center;gap:.4rem}
.with-icon{display:flex;align-items:center;gap:.5rem}
.with-icon .icon{width:26px;height:26px;display:inline-grid;place-items:center}
.actions{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.4rem}
@media (max-width:520px){.actions{flex-direction:column}.actions .btn{width:100%}}
.form-status{min-height:1.2rem;color:#444;margin-top:.5rem}
#plusOne{position:fixed;left:50%;top:20%;transform:translate(-50%,-50%) scale(.8);font-weight:800;font-size:2.2rem;color:#e06cae;background:rgba(255,255,255,.9);
  border-radius:999px;padding:.2rem .9rem;box-shadow:0 12px 30px rgba(0,0,0,.12);opacity:0;pointer-events:none}
.plusOne-pop{animation:popout 900ms cubic-bezier(.2,.8,.2,1)}
@keyframes popout{0%{opacity:0;transform:translate(-50%,-30%) scale(.6)}40%{opacity:1;transform:translate(-50%,-50%) scale(1.06)}100%{opacity:0;transform:translate(-50%,-70%) scale(.8)}}

.responsive-iframe{position:relative;width:100%;padding-top:56.25%;border-radius:.85rem;overflow:hidden;box-shadow:0 10px 24px rgba(0,0,0,.08);background:#fff}
.responsive-iframe iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}
.route-buttons{margin-top:.8rem;display:flex;gap:.6rem;flex-wrap:wrap}
@media (max-width:520px){.route-buttons .btn{width:100%}}
.hint{color:#444;font-size:.95rem}
.timeline{list-style:none;padding:0;margin:1rem 0}
.timeline li{display:grid;grid-template-columns:100px 1fr;gap:1rem;padding:.8rem .2rem;align-items:baseline;border-bottom:1px dashed rgba(0,0,0,.18)}
@media (max-width:520px){.timeline li{grid-template-columns:1fr;gap:.2rem}}
.timeline time{font-weight:600;color:var(--accent)}
.infos{margin:0;padding-left:1.2rem}
.infos li{margin:.4rem 0}
.footer{padding:2rem 0;text-align:center;color:#444;background:linear-gradient(180deg, rgba(122,164,122,.10), transparent)}
.footer-nav{display:flex;gap:1rem;justify-content:center;margin-top:.3rem;flex-wrap:wrap}
.footer-nav a{color:inherit;text-decoration:none}
.footer-nav a:hover{text-decoration:underline}
@media (prefers-reduced-motion: reduce){*{animation:none !important;transition:none !important}.entry-curtain{display:none !important}}


.plusOne-block{margin-top:1rem;border-radius:18px;padding:1rem 1rem;overflow:hidden}
.plusOne-block h3{margin:0 0 .8rem}
.plusOne-block hr{border:0;border-top:1px solid rgba(0,0,0,.08);margin:1rem 0}


.btn.disabled{opacity:.55;pointer-events:none;filter:saturate(.7)}


.hero-message{margin:.2rem 0 1.1rem;color:#666;font-size:1.02rem;max-width:52ch;margin-left:auto;margin-right:auto}