:root{
  --turquesa:#19c3c0; --rosa:#ff5fa2; --amarillo:#ffc93c; --lila:#7b5cff; --coral:#ff8a5b;
  --tinta:#2b2350; --suave:#6b6488; --crema:#fffaf3; --blanco:#fff; --borde:#efe6f7;
  --sombra:0 14px 40px rgba(43,35,80,.12); --radio:24px;
  --tit:"Baloo 2",system-ui,sans-serif; --txt:"Nunito",system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:90px;-webkit-text-size-adjust:100%}
body{background:var(--crema);color:var(--tinta);font-family:var(--txt);font-size:17px;line-height:1.55;overflow-x:hidden}
img{display:block;max-width:100%}
button,input,textarea{font:inherit;color:inherit}
a{color:inherit}
.wrap{max-width:1180px;margin:0 auto;padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}
.estrecho{max-width:820px}
.centro{text-align:center}
.mini{font-size:14px;color:var(--suave)}
[hidden]{display:none!important}

.aviso-demo{background:var(--tinta);color:#fff;font-size:13px;text-align:center;padding:7px 14px}
.aviso-demo a{color:var(--amarillo);font-weight:800;margin-left:6px}

/* ---------- Cabecera ---------- */
.cabecera{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:20px;padding:10px max(18px,env(safe-area-inset-right)) 10px max(18px,env(safe-area-inset-left));background:rgba(255,250,243,.88);backdrop-filter:blur(12px);transition:box-shadow .3s}
.cabecera.sombra{box-shadow:0 6px 24px rgba(43,35,80,.1)}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;font-family:var(--tit);font-weight:800;font-size:25px;line-height:1}
.logo img{width:46px;height:46px;animation:balanceo 4s ease-in-out infinite}
.logo b{color:var(--rosa)}
.menu{display:flex;gap:4px;margin-left:auto}
.menu a{text-decoration:none;font-weight:700;padding:8px 12px;border-radius:99px;transition:background .2s,color .2s}
.menu a:hover{background:#fff;color:var(--rosa)}
.acciones{display:flex;align-items:center;gap:10px}
.carrito-btn{position:relative;width:48px;height:48px;border-radius:50%;border:0;background:var(--tinta);cursor:pointer;display:grid;place-items:center;transition:transform .2s}
.carrito-btn:hover{transform:scale(1.07) rotate(-6deg)}
.carrito-btn svg{width:24px;height:24px;fill:#fff}
.contador{position:absolute;top:-4px;right:-4px;min-width:22px;height:22px;border-radius:99px;background:var(--rosa);color:#fff;font-size:12px;font-weight:800;display:grid;place-items:center;padding:0 5px;border:2px solid var(--crema)}
.contador.bote{animation:bote .6s cubic-bezier(.3,1.8,.5,1)}
.hamburguesa{display:none;width:44px;height:44px;border:0;background:#fff;border-radius:14px;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.hamburguesa span{width:20px;height:2.5px;background:var(--tinta);border-radius:3px}

/* ---------- Botones ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 24px;border-radius:99px;border:0;background:linear-gradient(135deg,var(--rosa),var(--coral));color:#fff;font-family:var(--tit);font-weight:800;font-size:18px;text-decoration:none;cursor:pointer;box-shadow:0 8px 20px rgba(255,95,162,.35);transition:transform .2s,box-shadow .2s,filter .2s}
.btn:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(255,95,162,.45)}
.btn:active{transform:translateY(0) scale(.97)}
.btn:disabled{filter:grayscale(1);opacity:.5;cursor:not-allowed;transform:none}
.btn-grande{padding:16px 30px;font-size:20px}
.btn-mini{padding:10px 18px;font-size:16px}
.btn-borde{background:#fff;color:var(--tinta);box-shadow:inset 0 0 0 2.5px var(--tinta)}
.btn-borde:hover{box-shadow:inset 0 0 0 2.5px var(--rosa);color:var(--rosa)}
.btn.hecho{background:linear-gradient(135deg,#2bc48a,var(--turquesa));box-shadow:0 8px 20px rgba(25,195,192,.4)}
.ancho{width:100%}
:focus-visible{outline:3px dashed var(--lila);outline-offset:3px}

/* ---------- Portada ---------- */
.portada{position:relative;overflow:hidden;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:30px;padding:60px max(18px,env(safe-area-inset-right)) 120px max(18px,env(safe-area-inset-left));max-width:1280px;margin:0 auto;min-height:calc(100svh - 110px)}
.portada::before{content:"";position:absolute;inset:-20% -30% auto auto;width:70%;aspect-ratio:1;background:radial-gradient(circle,rgba(25,195,192,.22),transparent 65%);z-index:-1}
.portada::after{content:"";position:absolute;inset:auto auto -10% -20%;width:60%;aspect-ratio:1;background:radial-gradient(circle,rgba(255,95,162,.18),transparent 65%);z-index:-1}
.etiqueta{display:inline-block;background:#fff;padding:8px 16px;border-radius:99px;font-weight:800;font-size:15px;box-shadow:var(--sombra);animation:entra .8s ease both}
h1{font-family:var(--tit);font-weight:800;font-size:clamp(44px,6.4vw,82px);line-height:.98;margin:18px 0 18px;letter-spacing:-.01em;text-wrap:balance;animation:entra .8s ease .1s both}
.arcoiris{background:linear-gradient(90deg,var(--rosa),var(--amarillo),var(--turquesa),var(--lila),var(--rosa));background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:arco 6s linear infinite}
.lead{font-size:20px;color:var(--suave);max-width:560px;animation:entra .8s ease .2s both}
.botones{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px;animation:entra .8s ease .3s both}
.botones.centro{justify-content:center}
.sellos{list-style:none;display:flex;flex-wrap:wrap;gap:12px;margin-top:30px;animation:entra .8s ease .4s both}
.sellos li{background:#fff;border-radius:18px;padding:10px 16px;box-shadow:var(--sombra);font-size:15px}
.sellos b{font-family:var(--tit);font-size:22px;color:var(--rosa);margin-right:4px}
.portada-img{position:relative;display:grid;place-items:center}
.portada-img::before{content:"";position:absolute;width:82%;aspect-ratio:1;border-radius:50%;background:conic-gradient(from 0deg,var(--amarillo),var(--rosa),var(--lila),var(--turquesa),var(--amarillo));filter:blur(2px);opacity:.25;animation:girar 18s linear infinite}
.mascota{position:relative;width:min(100%,560px);height:auto;filter:drop-shadow(0 30px 40px rgba(43,35,80,.25));animation:flotar 5s ease-in-out infinite}
.ola{position:absolute;left:0;bottom:-1px;width:100%;height:80px;fill:#fff}
.globos{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:-1}
.globos i{position:absolute;bottom:-140px;left:var(--x);width:56px;height:70px;border-radius:50% 50% 48% 52%/55% 55% 45% 45%;background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.7),transparent 30%),var(--c);opacity:.85;animation:subir var(--d) linear var(--r,0s) infinite;z-index:-1}
.globos i::after{content:"";position:absolute;left:50%;top:100%;width:1.5px;height:70px;background:rgba(43,35,80,.25)}

/* ---------- Secciones ---------- */
.seccion{padding:90px 0;position:relative}
.fondo-suave{background:#fff}
.carrusel-sec{background:#fff;padding-top:40px}
.pre{font-weight:800;color:var(--turquesa);letter-spacing:.14em;text-transform:uppercase;font-size:14px;margin-bottom:8px}
h2{font-family:var(--tit);font-weight:800;font-size:clamp(34px,4.6vw,56px);line-height:1.05;text-wrap:balance;margin-bottom:12px}
.subrayado{background:linear-gradient(transparent 62%,rgba(255,201,60,.6) 62%);padding:0 4px}
.sub{color:var(--suave);font-size:18px;margin-bottom:34px}
h3{font-family:var(--tit);font-weight:800;font-size:22px;line-height:1.15}
.r{opacity:0;transform:translateY(30px) scale(.98);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.8,.2,1)}
.r.v{opacity:1;transform:none}

/* ---------- Carrusel ---------- */
.carrusel{position:relative;max-width:1180px;margin:30px auto 0;aspect-ratio:16/8;border-radius:32px;overflow:hidden;box-shadow:var(--sombra);background:var(--tinta)}
.slide{position:absolute;inset:0;opacity:0;transition:opacity 1s ease}
.slide.on{opacity:1}
.slide img{width:100%;height:100%;object-fit:cover;transform:scale(1.08);transition:transform 6s ease}
.slide.on img{transform:scale(1)}
.slide figcaption{position:absolute;left:24px;bottom:56px;max-width:min(520px,80%);background:rgba(255,255,255,.92);backdrop-filter:blur(6px);border-radius:20px;padding:14px 20px;transform:translateY(20px);opacity:0;transition:all .7s ease .4s}
.slide.on figcaption{transform:none;opacity:1}
.slide figcaption b{display:block;font-family:var(--tit);font-size:24px;line-height:1.1}
.slide figcaption span{color:var(--suave);font-size:16px}
.flecha{position:absolute;top:50%;transform:translateY(-50%);width:50px;height:50px;border-radius:50%;border:0;background:rgba(255,255,255,.9);font-size:30px;line-height:1;cursor:pointer;box-shadow:var(--sombra);transition:transform .2s}
.flecha:hover{transform:translateY(-50%) scale(1.1)}
.flecha.izq{left:16px}.flecha.der{right:16px}
.puntos{position:absolute;left:0;right:0;bottom:18px;display:flex;justify-content:center;gap:8px}
.puntos button{width:10px;height:10px;border-radius:99px;border:0;background:rgba(255,255,255,.6);cursor:pointer;transition:width .3s,background .3s}
.puntos button.on{width:30px;background:#fff}
.zonas{display:grid;grid-template-columns:repeat(8,1fr);gap:12px;margin-top:30px}
.zona{background:var(--crema);border-radius:20px;padding:16px 8px;text-align:center;font-weight:800;font-size:14px;transition:transform .3s}
.zona span{display:block;font-size:34px;margin-bottom:4px;transition:transform .3s}
.zona:hover span{transform:scale(1.25) rotate(-8deg)}

/* ---------- Packs ---------- */
.packs{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;align-items:stretch}
.pack{position:relative;background:var(--crema);border-radius:30px;padding:30px 26px;border:3px solid transparent;display:flex;flex-direction:column;transition:transform .3s,border-color .3s,box-shadow .3s}
.pack:hover{transform:translateY(-8px);border-color:var(--c);box-shadow:var(--sombra)}
.pack.top{background:linear-gradient(170deg,#fff0f7,#fff);border-color:var(--c);box-shadow:var(--sombra)}
.cinta{position:absolute;top:-14px;left:50%;transform:translateX(-50%);background:var(--c);color:#fff;font-weight:800;font-size:13px;padding:6px 14px;border-radius:99px;white-space:nowrap}
.pack-ico{width:70px;height:70px;border-radius:22px;background:var(--c);display:grid;place-items:center;font-size:38px;margin-bottom:14px;animation:balanceo 3.5s ease-in-out infinite}
.pack h3{font-size:28px}
.precio{margin:6px 0 16px;color:var(--suave)}
.precio b{font-family:var(--tit);font-size:44px;color:var(--c);line-height:1}
.pack ul{list-style:none;display:grid;gap:8px;margin-bottom:24px;flex:1}
.pack li{padding-left:28px;position:relative}
.pack li::before{content:"✓";position:absolute;left:0;top:1px;width:20px;height:20px;border-radius:50%;background:var(--c);color:#fff;font-size:12px;font-weight:800;display:grid;place-items:center}

/* ---------- Reserva ---------- */
.pasos-nav{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0 24px}
.pasos-nav span{padding:9px 18px;border-radius:99px;background:#fff;font-weight:800;color:var(--suave);font-size:15px;box-shadow:0 2px 8px rgba(43,35,80,.06)}
.pasos-nav span.activo{background:var(--tinta);color:#fff}
.pasos-nav span.hecho{background:var(--turquesa);color:#fff}
.reserva{background:#fff;border-radius:32px;box-shadow:var(--sombra);padding:30px}
.paso{display:none;animation:entra .5s ease}
.paso.activo{display:block}
.paso h3{margin-bottom:12px}
.paso-acc{display:flex;justify-content:flex-end;gap:12px;margin-top:26px;flex-wrap:wrap}
.cal-wrap{display:grid;grid-template-columns:1.3fr 1fr;gap:30px}
.cal-cab{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.cal-cab b{font-family:var(--tit);font-size:24px;text-transform:capitalize}
.cal-cab button{width:40px;height:40px;border-radius:50%;border:0;background:var(--crema);font-size:22px;cursor:pointer}
.cal-cab button:disabled{opacity:.3;cursor:default}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.dsem{text-align:center;font-weight:800;font-size:13px;color:var(--suave);padding:4px 0}
.dia{aspect-ratio:1;border-radius:14px;border:0;font-weight:800;cursor:pointer;background:#e7faf9;color:#0d7d7b;transition:transform .15s,background .2s}
.dia:hover:not(:disabled){transform:scale(1.08)}
.dia.pocas{background:#fff3d6;color:#a06b00}
.dia.lleno{background:#ffe3ec;color:#c9839c;text-decoration:line-through;cursor:not-allowed}
.dia.pasado{background:transparent;color:#cfc8de;cursor:default}
.dia.sel{background:var(--tinta)!important;color:#fff!important;transform:scale(1.08)}
.franjas{display:grid;gap:10px;margin:14px 0}
.franja{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-radius:16px;border:2.5px solid var(--borde);background:#fff;font-weight:800;cursor:pointer;transition:border-color .2s,transform .15s}
.franja small{font-weight:700;font-size:13px;color:#0d9c99}
.franja.pocas small{color:#c78600}
.franja.lleno{opacity:.45;cursor:not-allowed}.franja.lleno small{color:#c9839c}
.franja:hover:not(:disabled){border-color:var(--turquesa)}
.franja.sel{border-color:var(--rosa);background:#fff0f7;transform:scale(1.02)}
.leyenda{list-style:none;display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--suave)}
.leyenda i{display:inline-block;width:12px;height:12px;border-radius:4px;margin-right:5px;vertical-align:-1px}
.l-libre{background:#bdf0ee}.l-pocas{background:#ffe2a3}.l-lleno{background:#ffc4d6}
.campos2{display:grid;grid-template-columns:1.2fr 1fr;gap:30px;margin-bottom:24px}
.opciones-pack{display:grid;gap:10px}
.op{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px 18px;border-radius:18px;border:2.5px solid var(--borde);cursor:pointer;font-weight:800;transition:all .2s}
.op input{position:absolute;opacity:0;pointer-events:none}
.op b{color:var(--c)}
.op.sel{border-color:var(--c);background:color-mix(in srgb,var(--c) 10%,#fff)}
.cont{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px dashed var(--borde);font-weight:800}
.cont small{color:var(--suave);font-weight:600}
.num{display:flex;align-items:center;gap:10px}
.num button{width:38px;height:38px;border-radius:50%;border:0;background:var(--crema);font-size:20px;font-weight:800;cursor:pointer;transition:background .2s,transform .1s}
.num button:hover{background:var(--amarillo)}
.num button:active{transform:scale(.9)}
.num output{min-width:30px;text-align:center;font-family:var(--tit);font-size:22px;font-weight:800}
.num.peq button{width:30px;height:30px;font-size:16px}
.num.peq output{font-size:18px;min-width:24px}
.check{display:flex;align-items:center;gap:10px;margin-top:14px;font-weight:700;cursor:pointer}
.check input{width:20px;height:20px;accent-color:var(--rosa)}
.tematicas{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.tema{position:relative;border-radius:20px;overflow:hidden;cursor:pointer;border:3px solid transparent;transition:transform .2s,border-color .2s}
.tema input{position:absolute;opacity:0}
.tema img{width:100%;aspect-ratio:3/4;object-fit:cover}
.tema span{position:absolute;left:0;right:0;bottom:0;padding:24px 8px 8px;background:linear-gradient(transparent,rgba(43,35,80,.85));color:#fff;font-weight:800;text-align:center;font-size:15px}
.tema:hover{transform:translateY(-4px)}
.tema.sel{border-color:var(--rosa);transform:translateY(-4px)}
.tema.sel::after{content:"✓";position:absolute;top:8px;right:8px;width:28px;height:28px;border-radius:50%;background:var(--rosa);color:#fff;font-weight:800;display:grid;place-items:center}
.campos3{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.campos3 label,.modal label{display:grid;gap:6px;font-weight:800;font-size:14px}
.campos3 .ancho{grid-column:1/-1}
input:not([type=radio]):not([type=checkbox]),textarea{width:100%;padding:13px 16px;border-radius:14px;border:2.5px solid var(--borde);background:var(--crema);font-size:17px;font-weight:600;outline:none;transition:border-color .2s}
input:focus,textarea:focus{border-color:var(--turquesa)}
input.error{border-color:#ff4d6d;animation:temblor .4s}
.resumen-reserva{margin-top:24px;padding:20px 24px;border-radius:22px;background:var(--crema)}
.resumen-reserva ul{list-style:none;display:grid;gap:4px;margin:8px 0}
.total-res{font-size:20px}.total-res b{font-family:var(--tit);font-size:28px;color:var(--rosa)}

/* ---------- Tarjetas (menús, animación, extras) ---------- */
.pestanas{display:inline-flex;background:var(--crema);border-radius:99px;padding:6px;margin:10px 0 28px;gap:4px;flex-wrap:wrap}
.pestanas button{border:0;background:transparent;padding:10px 20px;border-radius:99px;font-weight:800;cursor:pointer}
.pestanas button.on{background:var(--tinta);color:#fff}
.tarjetas{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.tarjetas.animacion{grid-template-columns:repeat(5,1fr)}
.tarjeta{background:#fff;border-radius:26px;overflow:hidden;box-shadow:var(--sombra);display:flex;flex-direction:column;transition:transform .3s}
.fondo-suave .tarjeta{background:var(--crema);box-shadow:none}
.tarjeta:hover{transform:translateY(-6px) rotate(-.4deg)}
.t-img{aspect-ratio:4/3;overflow:hidden;background:linear-gradient(135deg,#fff0f7,#e7faf9);display:grid;place-items:center}
.animacion .t-img{aspect-ratio:1;background:linear-gradient(160deg,#fff7e0,#ffe3ef)}
.t-img img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.animacion .t-img img{object-fit:contain;padding:8px}
.tarjeta:hover .t-img img{transform:scale(1.07)}
.t-emoji{font-size:64px;animation:balanceo 3s ease-in-out infinite}
.t-cuerpo{padding:18px 18px 20px;display:flex;flex-direction:column;gap:6px;flex:1}
.t-cuerpo p{color:var(--suave);font-size:15px;flex:1}
.t-pie{display:flex;justify-content:space-between;align-items:center;margin:8px 0 6px;gap:8px}
.t-precio{font-family:var(--tit);font-weight:800;font-size:24px;color:var(--rosa)}
.t-precio small{font-size:14px;color:var(--suave);font-family:var(--txt)}
.anadir{padding:11px 16px;font-size:17px}
.extras{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.extras .tarjeta .t-img{aspect-ratio:16/10}

/* ---------- Opiniones / FAQ / visita ---------- */
.opiniones{background:linear-gradient(135deg,var(--lila),var(--rosa));color:#fff}
.opiniones .pre{color:var(--amarillo)}
.opiniones .subrayado{background:linear-gradient(transparent 62%,rgba(255,201,60,.5) 62%)}
.opis{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:30px;text-align:left}
.opi{background:rgba(255,255,255,.14);backdrop-filter:blur(6px);border-radius:24px;padding:22px;border:1px solid rgba(255,255,255,.25)}
.estrellas{color:var(--amarillo);letter-spacing:2px;font-size:18px}
.opi p{margin:8px 0 12px}
.opi cite{font-style:normal;font-weight:800}
.estrellas .apagada{color:rgba(255,255,255,.3)}
.res-top{display:grid;grid-template-columns:320px 1fr;gap:24px;margin-top:30px}
.res-nota{background:#fff;color:var(--tinta);border-radius:28px;padding:26px;text-align:center;box-shadow:0 20px 40px rgba(43,35,80,.2)}
.res-nota>b{font-family:var(--tit);font-size:72px;line-height:1;color:var(--rosa)}
.estrellas.grande{font-size:28px;color:var(--amarillo)}
.res-nota p{color:var(--suave);font-weight:700;margin-bottom:14px}
.barras{display:grid;gap:6px}
.barra{display:grid;grid-template-columns:30px 1fr 40px;gap:8px;align-items:center;font-size:13px;font-weight:800}
.barra i{height:10px;border-radius:99px;background:var(--borde);overflow:hidden}
.barra em{display:block;height:100%;background:linear-gradient(90deg,var(--amarillo),var(--coral));border-radius:99px}
.barra small{color:var(--suave);text-align:right}
.res-destacadas{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.res-destacadas .opi p{font-size:19px;font-weight:700}
.res-filtros{display:flex;flex-wrap:wrap;gap:8px;margin:34px 0 18px;align-items:center}
.res-filtros button,.res-filtros select{border:0;border-radius:99px;padding:9px 16px;font-weight:800;cursor:pointer;background:rgba(255,255,255,.18);color:#fff}
.res-filtros button.on{background:#fff;color:var(--tinta)}
.res-filtros select{margin-left:auto;background:#fff;color:var(--tinta)}
.res-lista{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.res{background:#fff;color:var(--tinta);border-radius:22px;padding:18px 20px;display:flex;flex-direction:column;gap:10px}
.res header{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center}
.res header small{display:block;color:var(--suave);font-size:13px}
.res .estrellas{color:var(--amarillo);font-size:15px;letter-spacing:1px}
.res .estrellas .apagada{color:var(--borde)}
.avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:800}
.res>p{flex:1}
.respuesta{background:var(--crema);border-left:4px solid var(--turquesa);border-radius:12px;padding:10px 14px;font-size:14px}
.respuesta b{color:var(--turquesa);font-size:13px}
.nueva{align-self:flex-start;background:var(--amarillo);color:var(--tinta);border-radius:99px;padding:3px 10px;font-size:12px;font-weight:800}
.util{border:0;background:var(--crema);border-radius:99px;padding:6px 12px;font-weight:800;font-size:13px;cursor:pointer}
.util.on{background:#e7faf9;color:#0d7d7b}
.centrado{display:flex;margin:22px auto 0;background:transparent;color:#fff;box-shadow:inset 0 0 0 2.5px #fff}
.res-form{background:#fff;color:var(--tinta);border-radius:28px;padding:26px;margin-top:40px;display:grid;gap:14px;max-width:760px;margin-left:auto;margin-right:auto}
.res-form label{display:grid;gap:6px;font-weight:800;font-size:14px}
.estrellas-input{display:flex;gap:4px}
.estrellas-input button{border:0;background:none;font-size:38px;line-height:1;color:var(--borde);cursor:pointer;transition:transform .15s,color .15s}
.estrellas-input button.on{color:var(--amarillo)}
.estrellas-input button:hover{transform:scale(1.2) rotate(-8deg)}
.res-form .btn{justify-self:start}
.faq{display:grid;gap:12px;margin-top:20px}
.faq details{background:#fff;border-radius:20px;padding:18px 22px;box-shadow:0 4px 14px rgba(43,35,80,.06)}
.faq summary{font-weight:800;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:12px}
.faq summary::after{content:"+";font-family:var(--tit);font-size:26px;line-height:.9;color:var(--rosa);transition:transform .3s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{color:var(--suave);margin-top:10px}
.visita-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}
.horario{width:100%;border-collapse:collapse;margin:14px 0 18px}
.horario td{padding:10px 0;border-bottom:1px dashed var(--borde);font-weight:700}
.horario td:last-child{text-align:right;color:var(--rosa)}
.visita .mini{margin-top:6px}
.mapa svg{width:100%;height:auto;border-radius:24px;box-shadow:var(--sombra)}
.pie{background:var(--tinta);color:#d9d3ef;padding:50px 0 calc(40px + env(safe-area-inset-bottom))}
.pie-grid{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:30px;align-items:center;font-size:15px}
.pie img{margin-bottom:8px}
.pie b{color:#fff}

/* ---------- Carrito ---------- */
.velo{position:fixed;inset:0;background:rgba(43,35,80,.45);z-index:60;animation:aparece .3s}
.carrito{position:fixed;top:0;right:0;bottom:0;width:min(440px,100%);background:#fff;z-index:61;display:flex;flex-direction:column;transform:translateX(105%);transition:transform .4s cubic-bezier(.2,.8,.2,1);box-shadow:-20px 0 50px rgba(43,35,80,.2)}
.carrito.abierto{transform:none}
.car-cab{display:flex;justify-content:space-between;align-items:center;padding:22px 22px 14px;border-bottom:1px solid var(--borde)}
.cerrar{width:40px;height:40px;border-radius:50%;border:0;background:var(--crema);cursor:pointer;font-size:16px}
.car-items{flex:1;overflow:auto;padding:12px 22px}
.vacio{text-align:center;padding:60px 0;color:var(--suave)}
.vacio div{font-size:60px;animation:balanceo 3s ease-in-out infinite}
.vacio p{margin:10px 0 18px;font-weight:700}
.item{display:grid;grid-template-columns:auto 1fr auto;gap:12px;padding:14px 0;border-bottom:1px dashed var(--borde);animation:entra .35s ease}
.i-ico{width:42px;height:42px;border-radius:14px;background:var(--crema);display:grid;place-items:center;font-size:22px}
.i-txt small{display:block;color:var(--suave);font-size:13px;line-height:1.35;margin:2px 0 6px}
.i-der{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.quitar{border:0;background:none;cursor:pointer;font-size:16px;opacity:.6}
.quitar:hover{opacity:1}
.car-pie{padding:18px 22px calc(22px + env(safe-area-inset-bottom));border-top:1px solid var(--borde);background:var(--crema)}
.car-pie .check{margin-top:8px;font-size:15px}
.fila{display:flex;justify-content:space-between;margin-bottom:4px}
.fila.total{margin:14px 0;font-size:19px}
.fila.total b{font-family:var(--tit);font-size:26px;color:var(--rosa)}
.volador{position:fixed;z-index:80;border-radius:16px;object-fit:cover;pointer-events:none;transition:transform .75s cubic-bezier(.5,-.3,.7,1),opacity .75s;font-size:60px;display:grid;place-items:center}

/* ---------- Modales de pago ---------- */
.modal{position:fixed;inset:0;z-index:70;display:grid;place-items:center;padding:16px;background:rgba(43,35,80,.55);opacity:0;transition:opacity .25s}
.modal.on{opacity:1}
.modal-caja{position:relative;width:min(480px,100%);max-height:calc(100svh - 32px);overflow:auto;background:#fff;border-radius:28px;padding:28px;transform:translateY(20px) scale(.97);transition:transform .3s}
.modal.on .modal-caja{transform:none}
.modal-caja>.cerrar{position:absolute;top:16px;right:16px}
.modal h3 small{font-family:var(--txt);font-size:14px;color:var(--suave);font-weight:700}
.importe{margin:6px 0 16px;color:var(--suave)}
.importe b{font-family:var(--tit);font-size:26px;color:var(--tinta)}
.metodos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:18px}
.metodos button{padding:12px 6px;border-radius:16px;border:2.5px solid var(--borde);background:#fff;font-weight:800;cursor:pointer;transition:all .2s}
.metodos button.on{border-color:var(--tinta);background:var(--crema)}
.pp{font-family:Arial,sans-serif;font-weight:800;font-style:italic;color:#003087}
.pp b{color:#009cde}
.bz{font-family:Arial,sans-serif;font-weight:800;color:#05c3dd;letter-spacing:-.5px}
.metodo{display:grid;gap:12px}
.demo-nota{background:#fff8e1;border-radius:14px;padding:10px 14px;font-size:14px;color:#8a6200}
.tarjeta-vis{position:relative;aspect-ratio:1.6;border-radius:20px;padding:22px;color:#fff;background:linear-gradient(135deg,var(--lila),var(--rosa) 60%,var(--coral));display:grid;grid-template-rows:1fr auto auto;font-family:"Courier New",monospace;box-shadow:0 14px 30px rgba(123,92,255,.35);max-width:340px;width:100%;justify-self:center}
.tarjeta-vis .chip{width:44px;height:32px;border-radius:7px;background:linear-gradient(135deg,#ffe08a,#d9a400)}
#tvNum{font-size:clamp(14px,4.6vw,20px);letter-spacing:1px;font-weight:700;white-space:nowrap}
#tvNom,#tvCad{font-size:13px;letter-spacing:1px}
#tvCad{position:absolute;right:22px;bottom:22px}
.dos{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.btn-paypal{border:0;border-radius:99px;padding:15px;background:#ffc439;font-size:20px;font-weight:800;cursor:pointer;transition:filter .2s}
.btn-paypal:hover,.btn-bizum:hover{filter:brightness(.95)}
.btn-bizum{border:0;border-radius:99px;padding:15px;background:#05c3dd;color:#fff;font-size:20px;font-weight:800;cursor:pointer;font-family:Arial,sans-serif}
.procesando{text-align:center;padding:30px 0}
.spinner{width:60px;height:60px;margin:0 auto 18px;border-radius:50%;border:6px solid var(--borde);border-top-color:var(--rosa);border-right-color:var(--turquesa);animation:girar .9s linear infinite}
.procesando p{font-weight:800}
.ok-icono{font-size:70px;animation:bote 1s cubic-bezier(.3,1.8,.5,1)}
.ok-resumen{text-align:left;background:var(--crema);border-radius:18px;padding:14px 18px;margin:14px 0 18px;font-size:15px}
.ok-resumen ul{list-style:none;display:grid;gap:4px;margin-bottom:8px}
.ok-resumen li{display:flex;justify-content:space-between;gap:10px}
#modalOk .botones{margin:10px 0 14px}

.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translate(-50%,120px);background:var(--tinta);color:#fff;padding:13px 22px;border-radius:99px;font-weight:800;z-index:90;transition:transform .4s cubic-bezier(.3,1.5,.5,1);max-width:calc(100% - 32px);text-align:center;box-shadow:0 12px 30px rgba(43,35,80,.3)}
.toast.on{transform:translate(-50%,0)}
#confeti{position:fixed;inset:0;pointer-events:none;z-index:95}

/* ---------- Animaciones ---------- */
@keyframes flotar{50%{transform:translateY(-18px) rotate(1deg)}}
@keyframes balanceo{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}
@keyframes subir{0%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-60vh) rotate(6deg)}100%{transform:translateY(-125vh) rotate(-6deg)}}
@keyframes arco{to{background-position:-300% 0}}
@keyframes entra{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes girar{to{transform:rotate(360deg)}}
@keyframes bote{0%{transform:scale(.3)}60%{transform:scale(1.25)}100%{transform:scale(1)}}
@keyframes temblor{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
@keyframes aparece{from{opacity:0}}

/* ---------- Responsive ---------- */
@media (max-width:1100px){.tarjetas.animacion{grid-template-columns:repeat(4,1fr)}.zonas{grid-template-columns:repeat(4,1fr)}.extras{grid-template-columns:repeat(3,1fr)}.opis{grid-template-columns:repeat(2,1fr)}}
@media (max-width:900px){
  .cabecera{backdrop-filter:none;background:var(--crema)}
  .menu{position:fixed;top:0;right:0;bottom:0;width:min(300px,85%);flex-direction:column;background:#fff;padding:90px 24px 24px;box-shadow:-20px 0 50px rgba(43,35,80,.2);transform:translateX(105%);transition:transform .35s;z-index:-1}
  .menu.abierto{transform:none}
  .menu a{font-size:20px;padding:12px 16px}
  .hamburguesa{display:flex}
  .portada{grid-template-columns:1fr;text-align:center;padding-top:30px;min-height:auto}
  .portada-txt{order:2}.portada-img{order:1}
  .lead{margin:0 auto}.botones,.sellos{justify-content:center}
  .mascota{width:min(80%,380px)}
  .cal-wrap,.campos2,.visita-grid{grid-template-columns:1fr}
  .packs{grid-template-columns:1fr;max-width:480px;margin:0 auto}
  .tarjetas{grid-template-columns:repeat(2,1fr)}
  .tarjetas.animacion,.extras{grid-template-columns:repeat(2,1fr)}
  .tematicas{grid-template-columns:repeat(3,1fr)}
  .pie-grid{grid-template-columns:1fr;text-align:center}.pie img{margin:0 auto 8px}
  .res-top{grid-template-columns:1fr}.res-lista{grid-template-columns:1fr 1fr}
  .carrusel{aspect-ratio:4/3.4;border-radius:0}
}
@media (max-width:560px){
  body{font-size:16px}
  .cabecera .btn-mini{display:none}
  .logo{font-size:21px}.logo img{width:40px;height:40px}
  .seccion{padding:64px 0}
  .reserva{padding:18px;border-radius:24px}
  .tarjetas,.opis{grid-template-columns:1fr}
  .tarjetas.animacion,.extras{grid-template-columns:repeat(2,1fr);gap:12px}
  .tarjetas.animacion .t-cuerpo p,.extras .t-cuerpo p{display:none}
  .tarjetas.animacion .t-pie,.extras .t-pie{flex-direction:column;align-items:flex-start}
  .tematicas{grid-template-columns:repeat(2,1fr)}
  .campos3{grid-template-columns:1fr}
  .res-lista,.res-destacadas{grid-template-columns:1fr}
  .res-filtros select{margin-left:0}
  .res-form .dos{grid-template-columns:1fr}
  .zonas{grid-template-columns:repeat(2,1fr)}
  .slide figcaption{left:12px;right:12px;bottom:46px;max-width:none}
  .slide figcaption b{font-size:19px}.slide figcaption span{font-size:14px}
  .flecha{width:40px;height:40px;font-size:24px}
  .paso-acc .btn{flex:1}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.r{opacity:1;transform:none}}
/* banda invitación de ejemplo */
.invi-banda{background:linear-gradient(135deg,#fff3d6,#ffe1ee)}
.invi-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:center}
.invi-movil{justify-self:center;width:min(280px,70vw);aspect-ratio:9/18.5;border-radius:38px;border:10px solid var(--tinta);overflow:hidden;box-shadow:0 30px 60px rgba(43,35,80,.25);transform:rotate(4deg);transition:transform .4s;background:#f6b73c}
.invi-movil:hover{transform:rotate(0) scale(1.03)}
.invi-movil img{width:100%;height:100%;object-fit:cover}
@media (max-width:900px){.invi-grid{grid-template-columns:1fr;text-align:center}}
