:root{
  --orchid:#a8579e;
  --orchid-d:#8a3d86;
  --plum:#40153e;
  --mauve:#b290b2;
  --lilac:#e6deeb;
  --lilac-l:#f4eef7;
  --cream:#fbf8fc;
  --champ:#c9a66b;
  --ink:#3a2a3a;
  --r:22px;
  --shadow:0 18px 50px -20px rgba(64,21,62,.35);
  --ease:cubic-bezier(.2,.7,.2,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:76px}
body{font-family:'Jost',system-ui,sans-serif;color:var(--ink);background:var(--cream);line-height:1.6;font-size:17px;overflow-x:hidden;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3{font-family:'Cormorant Garamond',Georgia,serif;font-weight:600;line-height:1.1;color:var(--plum)}
.script{font-family:'Great Vibes',cursive;color:var(--orchid);font-size:2rem;line-height:1}
.wrap{width:min(1120px,100% - 40px);margin-inline:auto}
.wrap.narrow{width:min(640px,100% - 40px)}
.section{padding:clamp(64px,9vw,112px) 0;position:relative}

/* ---------- botones ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;padding:.95rem 1.7rem;border-radius:999px;background:linear-gradient(135deg,var(--orchid),var(--orchid-d));color:#fff;text-decoration:none;font-weight:500;letter-spacing:.02em;border:0;cursor:pointer;font:inherit;font-weight:500;box-shadow:0 10px 26px -10px rgba(138,61,134,.7);transition:transform .3s var(--ease),box-shadow .3s var(--ease),filter .3s;position:relative;overflow:hidden}
.btn::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.45) 50%,transparent 70%);transform:translateX(-120%);transition:transform .8s var(--ease)}
.btn:hover{transform:translateY(-3px);box-shadow:0 16px 30px -12px rgba(138,61,134,.8)}
.btn:hover::after{transform:translateX(120%)}
.btn-sm{padding:.6rem 1.2rem;font-size:.95rem}
.btn-ghost{background:transparent;color:var(--orchid-d);box-shadow:inset 0 0 0 1.5px var(--orchid)}
.btn-ghost:hover{background:var(--orchid);color:#fff}
.btn-light{background:#fff;color:var(--orchid-d);box-shadow:0 10px 24px -12px rgba(0,0,0,.5)}
.btn-wa{width:100%;background:linear-gradient(135deg,#2bbf6a,#1e9c53);box-shadow:0 10px 26px -10px rgba(30,156,83,.7)}
.btn-wa svg{width:22px;height:22px;fill:#fff}

/* ---------- navegación ---------- */
.nav{position:fixed;inset:0 0 auto 0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:.7rem clamp(16px,4vw,40px);transition:background .35s,box-shadow .35s,padding .35s}
.nav.scrolled{background:rgba(251,248,252,.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 6px 24px -14px rgba(64,21,62,.4)}
.brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;font-family:'Great Vibes',cursive;font-size:1.55rem;color:var(--orchid);line-height:1}
.brand img{border-radius:50%;box-shadow:0 4px 14px -4px rgba(64,21,62,.5)}
.brand b{font-weight:400}
.menu{display:flex;align-items:center;gap:1.7rem}
.menu a:not(.btn){text-decoration:none;font-weight:500;font-size:.98rem;color:var(--plum);position:relative}
.menu a:not(.btn)::after{content:"";position:absolute;left:0;bottom:-4px;height:2px;width:100%;background:var(--orchid);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease)}
.menu a:not(.btn):hover::after{transform:scaleX(1)}
.burger{display:none;background:none;border:0;width:44px;height:44px;cursor:pointer;position:relative}
.burger i{position:absolute;left:10px;right:10px;height:2px;background:var(--plum);border-radius:2px;transition:.3s var(--ease)}
.burger i:nth-child(1){top:15px}.burger i:nth-child(2){top:21px}.burger i:nth-child(3){top:27px}
.burger[aria-expanded="true"] i:nth-child(1){top:21px;transform:rotate(45deg)}
.burger[aria-expanded="true"] i:nth-child(2){opacity:0}
.burger[aria-expanded="true"] i:nth-child(3){top:21px;transform:rotate(-45deg)}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;padding:110px 0 70px;overflow:hidden;background:
  radial-gradient(1200px 600px at 85% 20%,#efe0f3 0,transparent 60%),
  radial-gradient(900px 500px at 0% 100%,#f3e6f5 0,transparent 55%),
  linear-gradient(180deg,#fbf8fc,#f1e8f5)}
.orb{position:absolute;border-radius:50%;filter:blur(60px);opacity:.55;animation:drift 14s ease-in-out infinite alternate}
.orb1{width:380px;height:380px;background:#d9b3df;top:-80px;right:-60px}
.orb2{width:300px;height:300px;background:#c9a66b33;bottom:-60px;left:8%;animation-delay:-6s}
@keyframes drift{to{transform:translate(-40px,50px) scale(1.15)}}
.hero-grid{position:relative;z-index:2;width:min(1120px,100% - 40px);margin-inline:auto;display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(24px,5vw,70px);align-items:center}
.eyebrow{text-transform:uppercase;letter-spacing:.22em;font-size:.78rem;font-weight:500;color:var(--orchid-d);margin-bottom:1.1rem}
.hero h1{font-size:clamp(2.6rem,6vw,4.6rem);letter-spacing:-.01em}
.hero h1 em{font-style:italic;color:var(--orchid);background:linear-gradient(100deg,var(--orchid),#d28bc8,var(--orchid-d));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;background-size:200% 100%;animation:shine 6s linear infinite}
@keyframes shine{to{background-position:200% 0}}
.lead{margin:1.4rem 0 2rem;font-size:1.15rem;max-width:34ch;color:#5a465a}
.cta{display:flex;flex-wrap:wrap;gap:.9rem}
.hero-facts{list-style:none;display:flex;flex-wrap:wrap;gap:1.4rem 2.2rem;margin-top:2.6rem;padding-top:1.6rem;border-top:1px solid rgba(168,87,158,.25)}
.hero-facts li{display:flex;flex-direction:column;font-size:.92rem;color:#6a566a}
.hero-facts b{font-family:'Cormorant Garamond',serif;font-size:1.3rem;color:var(--plum);font-weight:600}
.hero-logo{position:relative;display:grid;place-items:center}
.hero-logo img{width:min(440px,78vw);height:auto;border-radius:50%;position:relative;z-index:2;box-shadow:0 40px 70px -28px rgba(64,21,62,.55),0 0 0 10px rgba(255,255,255,.55);animation:bob 7s ease-in-out infinite;transition:transform .2s ease-out}
@keyframes bob{50%{translate:0 -14px}}
.halo{position:absolute;width:112%;aspect-ratio:1;border-radius:50%;background:conic-gradient(from 0deg,#e6c9ea,#fff,#c9a66b55,#e6c9ea);filter:blur(34px);opacity:.75;animation:spin 18s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.sparkle{position:absolute;z-index:3;width:14px;height:14px;background:radial-gradient(circle,#fff 0,#fff0 70%);border-radius:50%;box-shadow:0 0 14px 4px rgba(255,255,255,.9);animation:twinkle 3s ease-in-out infinite}
.sparkle.s1{top:8%;left:10%}.sparkle.s2{top:20%;right:4%;animation-delay:-1s}.sparkle.s3{bottom:12%;left:20%;animation-delay:-2s}
@keyframes twinkle{0%,100%{opacity:.2;transform:scale(.6)}50%{opacity:1;transform:scale(1.3)}}
.scroll-cue{position:absolute;bottom:22px;left:50%;translate:-50% 0;width:26px;height:42px;border:1.5px solid var(--orchid);border-radius:20px;z-index:3;opacity:.7}
.scroll-cue i{position:absolute;top:8px;left:50%;width:4px;height:8px;margin-left:-2px;background:var(--orchid);border-radius:4px;animation:cue 1.8s infinite}
@keyframes cue{0%{opacity:0;transform:translateY(0)}30%{opacity:1}100%{opacity:0;transform:translateY(14px)}}

/* mariposas */
.flutter{position:absolute;inset:0;z-index:1;pointer-events:none}
.bf{position:absolute;width:64px;height:54px;opacity:.9;filter:drop-shadow(0 6px 8px rgba(64,21,62,.25))}
.bf .wing{transform-box:fill-box;animation:flap .5s ease-in-out infinite alternate}
.bf .wing-l{transform-origin:100% 50%}
.bf .wing-r{transform-origin:0% 50%;animation-name:flap-r}
@keyframes flap{to{transform:scaleX(.35)}}
@keyframes flap-r{to{transform:scaleX(.35)}}
.bf1{left:-80px;top:62%;animation:fly1 22s linear infinite}
.bf2{left:-80px;top:22%;width:44px;height:38px;animation:fly2 28s linear infinite;animation-delay:-9s}
.bf3{left:-80px;top:80%;width:36px;height:30px;animation:fly1 34s linear infinite;animation-delay:-20s;opacity:.7}
.bf4{left:-80px;top:40%;width:52px;height:44px;animation:fly2 26s linear infinite;animation-delay:-3s}
@keyframes fly1{0%{transform:translate(0,0) rotate(8deg)}25%{transform:translate(28vw,-60px) rotate(-6deg)}50%{transform:translate(56vw,30px) rotate(10deg)}75%{transform:translate(84vw,-50px) rotate(-8deg)}100%{transform:translate(112vw,10px) rotate(6deg)}}
@keyframes fly2{0%{transform:translate(0,0) rotate(-6deg)}30%{transform:translate(34vw,50px) rotate(8deg)}60%{transform:translate(70vw,-40px) rotate(-10deg)}100%{transform:translate(112vw,40px) rotate(6deg)}}

/* ---------- marquee ---------- */
.marquee{background:linear-gradient(90deg,var(--orchid-d),var(--orchid),var(--orchid-d));color:#fff;overflow:hidden;padding:.9rem 0;border-block:1px solid rgba(255,255,255,.25)}
.track{display:flex;width:max-content;animation:marq 30s linear infinite}
.track span{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.35rem;padding:0 1.6rem;white-space:nowrap;display:flex;align-items:center;gap:3.2rem}
.track span::after{content:"✦";font-style:normal;font-size:.8rem;color:#f1d9a8}
@keyframes marq{to{transform:translateX(-50%)}}

/* ---------- encabezados de sección ---------- */
.sec-head{text-align:center;margin-bottom:clamp(36px,5vw,56px)}
.sec-head h2{font-size:clamp(2.2rem,4.6vw,3.4rem)}
.sec-head p:not(.script){margin:.9rem auto 0;max-width:46ch;color:#6a566a}
.note{text-align:center;margin-top:2rem;font-size:.82rem;color:#9a869a;font-style:italic}

/* ---------- tarjetas ---------- */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.card{background:#fff;border-radius:var(--r);padding:2rem 1.8rem;box-shadow:var(--shadow);position:relative;overflow:hidden;transition:transform .45s var(--ease),box-shadow .45s var(--ease);border:1px solid rgba(168,87,158,.12)}
.card::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,var(--orchid),#e6a8de,var(--champ));transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.card:hover{transform:translateY(-8px);box-shadow:0 30px 60px -24px rgba(64,21,62,.5)}
.card:hover::before{transform:scaleX(1)}
.ico{width:62px;height:62px;border-radius:18px;background:linear-gradient(145deg,var(--lilac),#fff);display:grid;place-items:center;margin-bottom:1.2rem;box-shadow:inset 0 0 0 1px rgba(168,87,158,.18);transition:transform .5s var(--ease)}
.card:hover .ico{transform:rotate(-8deg) scale(1.08)}
.ico svg{width:32px;height:32px;fill:none;stroke:var(--orchid-d);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.card h3{font-size:1.6rem;margin-bottom:.5rem}
.card p{color:#6a566a;font-size:.98rem;margin-bottom:1.2rem}
.card a{font-weight:500;color:var(--orchid-d);text-decoration:none}
.card a:hover{text-decoration:underline}

/* ---------- promos ---------- */
.promos{background:linear-gradient(160deg,var(--plum),#5c2459 55%,#7a3374);color:#fff;overflow:hidden}
.promos::before{content:"";position:absolute;inset:0;background:radial-gradient(600px 300px at 90% 0,rgba(201,166,107,.28),transparent 70%),radial-gradient(500px 300px at 0 100%,rgba(230,201,234,.2),transparent 70%)}
.promos .wrap{position:relative}
.promos h2,.promos h3{color:#fff}
.promos .script{color:#f1d9a8}
.promos .sec-head p:not(.script){color:#e6d3ea}
.promos .note{color:#cdb4d3}
.promo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.promo{border-radius:var(--r);padding:2.1rem 1.8rem;background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.05));border:1px solid rgba(255,255,255,.25);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);position:relative;overflow:hidden;transition:transform .45s var(--ease)}
.promo::after{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:linear-gradient(120deg,transparent 30%,#f1d9a8,transparent 70%);background-size:250% 100%;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:edge 5s linear infinite;pointer-events:none}
@keyframes edge{to{background-position:-250% 0}}
.promo:hover{transform:translateY(-8px)}
.tag{display:inline-block;font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;background:#f1d9a8;color:var(--plum);padding:.35rem .8rem;border-radius:999px;font-weight:600;margin-bottom:1.1rem}
.promo h3{font-size:1.7rem;margin-bottom:.4rem}
.promo .big{font-family:'Great Vibes',cursive;font-size:2.4rem;color:#f1d9a8;line-height:1.1;margin-bottom:.6rem}
.promo p:not(.big){color:#ecdcef;font-size:.97rem;margin-bottom:1.4rem}

/* ---------- pasos ---------- */
.steps{background:var(--lilac-l)}
.steps-grid{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:28px;position:relative}
.steps-grid::before{content:"";position:absolute;top:34px;left:16%;right:16%;border-top:2px dashed rgba(168,87,158,.4)}
.steps-grid li{text-align:center;position:relative}
.num{display:grid;place-items:center;width:68px;height:68px;margin:0 auto 1.2rem;border-radius:50%;background:linear-gradient(135deg,var(--orchid),var(--orchid-d));color:#fff;font-family:'Cormorant Garamond',serif;font-size:2rem;font-weight:600;box-shadow:0 10px 24px -8px rgba(138,61,134,.7),0 0 0 8px var(--lilac-l)}
.steps-grid h3{font-size:1.5rem;margin-bottom:.4rem}
.steps-grid p{color:#6a566a;max-width:30ch;margin-inline:auto;font-size:.98rem}

/* ---------- galería ---------- */
.gallery{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:210px;gap:16px}
.tile{border-radius:var(--r);position:relative;overflow:hidden;display:grid;place-items:center;transition:transform .5s var(--ease)}
.tile::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,var(--c1),var(--c2));transition:transform .8s var(--ease)}
.tile:hover::before{transform:scale(1.12)}
.tile span{position:relative;z-index:1;font-family:'Great Vibes',cursive;font-size:1.9rem;color:#fff;text-shadow:0 2px 12px rgba(64,21,62,.4)}
.t1{--c1:#c88fc0;--c2:#8a3d86;grid-row:span 2}
.t2{--c1:#e6c9ea;--c2:#b290b2}
.t3{--c1:#d9a6d2;--c2:#a8579e}
.t4{--c1:#b290b2;--c2:#6e2a6c}
.t5{--c1:#f1e1f3;--c2:#c9a66b}
.ig-link{display:flex;align-items:center;justify-content:center;gap:.7rem;margin-top:2rem;text-decoration:none;color:var(--plum);font-weight:500}
.ig-link svg{width:26px;height:26px;fill:none;stroke:var(--orchid-d);stroke-width:1.8}
.ig-link b{color:var(--orchid-d)}
.ig-link:hover b{text-decoration:underline}

/* ---------- reserva ---------- */
.reserva{background:radial-gradient(700px 400px at 100% 0,#f1d9f5,transparent 60%),linear-gradient(180deg,var(--cream),var(--lilac-l))}
.reserva-box{background:#fff;border-radius:28px;padding:clamp(1.6rem,4vw,2.6rem);box-shadow:var(--shadow);border:1px solid rgba(168,87,158,.15)}
.reserva-box .sec-head{margin-bottom:1.6rem}
form{display:grid;gap:1.1rem}
label{display:grid;gap:.4rem;font-weight:500;font-size:.92rem;color:var(--plum)}
input,select{font:inherit;padding:.9rem 1rem;border-radius:14px;border:1.5px solid var(--lilac);background:var(--cream);color:var(--ink);transition:border-color .25s,box-shadow .25s}
input:focus,select:focus{outline:0;border-color:var(--orchid);box-shadow:0 0 0 4px rgba(168,87,158,.15)}
input.err{border-color:#d4547a}

/* ---------- ubicación ---------- */
.loc{display:grid;grid-template-columns:.9fr 1.1fr;gap:28px;align-items:stretch}
.loc-info{background:#fff;border-radius:var(--r);padding:2rem;box-shadow:var(--shadow);border:1px solid rgba(168,87,158,.12)}
.loc-info h3{font-size:1.8rem;margin-bottom:1rem}
.loc-info ul{list-style:none;display:grid;gap:1rem;margin-bottom:1.6rem}
.loc-info li{display:grid;gap:.1rem}
.loc-info b{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--orchid-d)}
.loc-info a:not(.btn){color:var(--orchid-d)}
.loc-map{border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow);min-height:340px;border:1px solid rgba(168,87,158,.15)}
.loc-map iframe{width:100%;height:100%;min-height:340px;border:0;filter:saturate(.85) hue-rotate(-10deg)}

/* ---------- footer ---------- */
.foot{background:var(--plum);color:#e6d3ea;text-align:center;padding:48px 20px 90px}
.foot img{margin:0 auto 10px;border-radius:50%;box-shadow:0 0 0 4px rgba(255,255,255,.12)}
.foot .script{color:#f1d9a8;font-size:2.2rem;margin-bottom:.3rem}
.foot .tiny{margin-top:1.2rem;font-size:.78rem;opacity:.6}

/* whatsapp flotante */
.wa-float{position:fixed;right:18px;bottom:18px;z-index:60;width:58px;height:58px;border-radius:50%;background:linear-gradient(135deg,#2bbf6a,#1e9c53);display:grid;place-items:center;box-shadow:0 12px 28px -8px rgba(30,156,83,.8);transition:transform .3s var(--ease)}
.wa-float:hover{transform:scale(1.1)}
.wa-float svg{width:30px;height:30px;fill:#fff}
.wa-float::before{content:"";position:absolute;inset:0;border-radius:50%;background:#2bbf6a;animation:pulse 2.4s ease-out infinite;z-index:-1}
@keyframes pulse{0%{transform:scale(1);opacity:.6}100%{transform:scale(1.8);opacity:0}}

/* ---------- animaciones de entrada ---------- */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal.in{opacity:1;transform:none}
.d1{transition-delay:.12s}.d2{transition-delay:.24s}.d3{transition-delay:.36s}.d4{transition-delay:.48s}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .hero-grid{grid-template-columns:1fr;text-align:center}
  .hero-copy{order:2}.hero-logo{order:1}
  .lead{margin-inline:auto}
  .cta,.hero-facts{justify-content:center}
  .hero{padding-top:96px}
  .hero-logo img{width:min(300px,68vw)}
  .cards,.promo-grid{grid-template-columns:1fr 1fr}
  .steps-grid{grid-template-columns:1fr;gap:34px}
  .steps-grid::before{display:none}
  .loc{grid-template-columns:1fr}
  .gallery{grid-template-columns:1fr 1fr;grid-auto-rows:170px}
  .burger{display:block}
  .menu{position:fixed;inset:64px 16px auto 16px;flex-direction:column;align-items:stretch;gap:0;background:rgba(251,248,252,.97);backdrop-filter:blur(14px);border-radius:20px;padding:.6rem;box-shadow:0 24px 50px -20px rgba(64,21,62,.5);opacity:0;pointer-events:none;transform:translateY(-10px);transition:.3s var(--ease)}
  .menu.open{opacity:1;pointer-events:auto;transform:none}
  .menu a:not(.btn){padding:.9rem 1rem;border-radius:12px}
  .menu a:not(.btn)::after{display:none}
  .menu .btn{margin:.4rem}
  .scroll-cue{display:none}
}
@media (max-width:600px){
  body{font-size:16px}
  .cards,.promo-grid{grid-template-columns:1fr}
  .brand{font-size:1.3rem}
  .brand img{width:38px;height:38px}
  .hero-facts{gap:1rem 1.6rem}
  .gallery{grid-auto-rows:150px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .reveal{opacity:1;transform:none}
  html{scroll-behavior:auto}
}
