/* ============================================================
   MOTOR DE PERFILES TAPPIX · estilos compartidos
   Lo usan todos los negocios (tappix.com.mx/<negocio>).
   Los colores y letras de cada negocio vienen de su index.html.
   ============================================================ */

:root{
  --c:#A50034; --c2:#C3094A; --c3:#6E0024;       /* color principal, claro, oscuro */
  --fondo:#F6F2EE; --tinta:#26211F; --gris:#7a716b;
  --suave:#FBE9EF; --oro:#F5B81C;
  --f-texto:'Manrope',system-ui,sans-serif;
  --f-titulo:'Fraunces',Georgia,serif;
  --f-mano:'Caveat',cursive;
  --ancho:460px;
  --sombra:0 8px 20px rgba(40,0,15,.22);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{min-height:100vh;background:#1b1718;font-family:var(--f-texto);color:var(--tinta);
  -webkit-tap-highlight-color:transparent;overflow-x:hidden}
img,svg{display:block}
a{color:inherit;text-decoration:none}
b{font-weight:800}

/* tarjeta centrada (en celular ocupa toda la pantalla) */
.app{position:relative;max-width:var(--ancho);min-height:100vh;margin:0 auto;background-color:var(--fondo);
  background-repeat:repeat;background-size:360px;overflow:hidden}
@media (min-width:520px){
  body{padding:28px 0;background:radial-gradient(circle at 50% 0,#3a2a2e,#141112 70%)}
  .app{min-height:calc(100vh - 56px);border-radius:34px;box-shadow:0 30px 80px rgba(0,0,0,.5)}
}

.vista{display:none;min-height:100vh}
.vista.activa{display:block}
#v-inicio.activa{display:flex;flex-direction:column}
#v-inicio .panel{flex:1}
.vista.entra{animation:entra .45s cubic-bezier(.2,.8,.2,1) both}
.vista.regresa{animation:regresa .45s cubic-bezier(.2,.8,.2,1) both}
@keyframes entra{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:none}}
@keyframes regresa{from{opacity:0;transform:translateX(-40px)}to{opacity:1;transform:none}}

/* aparición escalonada */
.sube{opacity:0;transform:translateY(18px);animation:sube .6s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:var(--d,0s)}
@keyframes sube{to{opacity:1;transform:none}}

.mano{font-family:var(--f-mano);font-weight:700}
.letra{font-family:var(--f-titulo);font-style:italic;font-weight:700}

/* ---------------- INICIO: encabezado ---------------- */
.cabeza{position:relative;z-index:2;text-align:center;padding:26px 20px 0}
.cabeza .logo{height:46px;width:auto;margin:0 auto}
.cabeza h1{font-size:clamp(24px,7.6vw,31px);font-weight:800;letter-spacing:.07em;line-height:1;margin-top:8px}
.cabeza .sub{font-size:10px;font-weight:700;letter-spacing:.42em;color:var(--c);margin-top:8px;text-transform:uppercase}
.cabeza .desc{font-size:14px;line-height:1.45;color:var(--gris);max-width:330px;margin:12px auto 0}

/* ---------------- INICIO: portada ---------------- */
.portada{position:relative;z-index:3;height:236px;margin:16px 0 -96px}
.marco{position:absolute;left:50%;top:6px;width:218px;height:218px;margin-left:-109px;border-radius:50%;overflow:visible;
  animation:aparece .9s cubic-bezier(.2,.9,.25,1.2) .15s both}
@keyframes aparece{from{opacity:0;transform:scale(.6) rotate(-25deg)}to{opacity:1;transform:none}}
.marco .foto{position:absolute;inset:0;border-radius:50%;overflow:hidden;border:6px solid #fff;box-shadow:var(--sombra);background:#ddd}
.marco .foto img{width:100%;height:100%;object-fit:cover}

/* estilo "lavadora": aro metálico, empaque y vidrio con agua */
.marco.lavadora{background:conic-gradient(from 210deg,#fdfdfd,#a9adb4,#eceef0,#8c9097,#f7f7f7,#b5b8be,#fdfdfd);
  box-shadow:0 14px 30px rgba(60,0,20,.35),inset 0 0 0 2px rgba(255,255,255,.8)}
.marco.lavadora .aro{position:absolute;inset:0;border-radius:50%;
  background:conic-gradient(from 0deg,transparent 0 20%,rgba(255,255,255,.7) 25%,transparent 32% 70%,rgba(255,255,255,.5) 75%,transparent 80%);
  animation:gira 7s linear infinite;mix-blend-mode:overlay}
.marco.lavadora .empaque{position:absolute;inset:12px;border-radius:50%;background:radial-gradient(circle,#3a3a3c 60%,#151516 100%)}
.marco.lavadora .foto{inset:22px;border:0;box-shadow:inset 0 0 20px rgba(0,0,0,.5)}
.marco.lavadora .foto img{object-position:50% 35%;animation:tambor 9s ease-in-out infinite}
.marco.lavadora .foto::after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;
  background:linear-gradient(135deg,rgba(255,255,255,.45) 0%,rgba(255,255,255,.06) 30%,transparent 45%,rgba(0,0,0,.2) 100%),
             radial-gradient(circle at 50% 50%,transparent 64%,rgba(0,0,0,.45) 100%)}
.marco.lavadora .agua{position:absolute;left:-30%;right:-30%;bottom:-62%;height:100%;border-radius:42%;
  background:rgba(170,215,255,.28);animation:gira 6s linear infinite}
.marco.lavadora .agua.b{bottom:-66%;background:rgba(255,255,255,.18);animation-duration:9s;animation-direction:reverse}
.marco.lavadora .manija{position:absolute;right:-10px;top:84px;width:20px;height:46px;border-radius:8px;
  background:linear-gradient(90deg,#8f939a,#f5f5f5 45%,#a3a7ad);box-shadow:0 3px 6px rgba(0,0,0,.25)}
@keyframes gira{to{transform:rotate(360deg)}}
@keyframes tambor{0%,100%{transform:scale(1.08) rotate(-3deg)}50%{transform:scale(1.12) rotate(3deg)}}

/* burbujas con foto y burbujas de jabón */
.burbuja{position:absolute;border-radius:50%;overflow:hidden;border:4px solid #fff;box-shadow:0 8px 18px rgba(60,0,20,.3);
  animation:aparece .8s cubic-bezier(.2,.9,.25,1.2) both, flota 5s ease-in-out infinite;animation-delay:var(--d),var(--d)}
.burbuja img{width:100%;height:100%;object-fit:cover}
.burbuja::after{content:"";position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.7) 0 8%,transparent 22%),
             linear-gradient(200deg,rgba(255,170,220,.25),transparent 40%,rgba(130,200,255,.25))}
.jabon{position:absolute;border-radius:50%;border:2px solid color-mix(in srgb,var(--c) 35%,transparent);pointer-events:none;
  background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.95) 0 10%,rgba(255,255,255,.15) 30%,rgba(255,200,230,.15) 70%);
  animation:flota 6s ease-in-out infinite;animation-delay:var(--d)}
.jabon.blanca{border-color:rgba(255,255,255,.6)}
@keyframes flota{0%,100%{translate:0 0}50%{translate:0 -10px}}

/* ---------------- INICIO: panel de color ---------------- */
.panel{position:relative;z-index:1;padding:112px 18px 26px;border-radius:34px 34px 0 0;color:#fff;
  background:linear-gradient(175deg,var(--c2) 0%,var(--c) 35%,var(--c3) 100%);overflow:hidden}
.panel::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(circle at 15% 70%,rgba(255,255,255,.07) 0 70px,transparent 71px),
             radial-gradient(circle at 95% 40%,rgba(255,255,255,.06) 0 46px,transparent 47px)}
.panel .perillas{position:absolute;left:24px;top:14px;display:flex;gap:5px}
.panel .perillas i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.35)}
.panel .perillas i:first-child{background:#fff}
.panel>*{position:relative}
.nota{display:block;font-size:19px;color:#fff;transform:rotate(-6deg);margin:0 0 4px 8px;width:max-content}

/* botones principales */
.botones{display:flex;flex-direction:column;gap:10px}
.btn{display:flex;align-items:center;gap:12px;min-height:56px;padding:6px 16px 6px 7px;border-radius:40px;background:#fff;color:var(--tinta);
  box-shadow:var(--sombra);transition:transform .15s ease,box-shadow .15s ease}
.btn:active,.tile:active,.pill:active,.chico:active,.inicio-logo:active{transform:scale(.96)}
@media (hover:hover){.btn:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(40,0,15,.3)}}
.btn .ic{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--c)}
.btn .ic svg{width:24px;height:24px}
.btn .txt{flex:1;min-width:0}
.btn .txt b{display:block;font-size:18px;letter-spacing:.02em;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.btn .txt span{display:block;font-size:8.5px;font-weight:800;letter-spacing:.2em;color:var(--c);margin-top:3px;text-transform:uppercase}
.btn .ir{flex:none;width:16px;height:16px;color:var(--c)}

.btn.google{min-height:62px;padding-right:16px;gap:10px}
.btn.google .ic{background:#fff;box-shadow:0 0 0 2px #eee}
.btn.google .ic svg{width:28px;height:28px}
/* las estrellas crecen hasta llenar el hueco entre el logo y "Califícanos" (sin espacio muerto) */
.btn.google .estrellas{flex:1;min-width:0;display:flex;justify-content:space-evenly;align-items:center;gap:2px}
.btn.google .estrellas svg{flex:0 1 32px;min-width:0;width:32px;height:auto;aspect-ratio:1/1;animation:estrella .5s cubic-bezier(.3,1.6,.5,1) backwards,brilla 3.2s ease-in-out 1.8s infinite}
.btn.google .estrellas svg:nth-child(1){animation-delay:.7s,1.8s}
.btn.google .estrellas svg:nth-child(2){animation-delay:.8s,1.95s}
.btn.google .estrellas svg:nth-child(3){animation-delay:.9s,2.1s}
.btn.google .estrellas svg:nth-child(4){animation-delay:1s,2.25s}
.btn.google .estrellas svg:nth-child(5){animation-delay:1.1s,2.4s}
@keyframes estrella{from{transform:scale(0) rotate(-90deg);opacity:0}}
@keyframes brilla{0%,70%,100%{transform:none;filter:none}80%{transform:scale(1.3) rotate(10deg);filter:drop-shadow(0 0 4px rgba(245,184,28,.9))}}
.btn.google .califica{flex:none;font-size:11px;font-weight:800;letter-spacing:.1em;color:var(--c);text-transform:uppercase;
  text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1.5px}

/* llamar + WhatsApp en un solo botón */
.btn.dual{padding:6px 7px}
.btn.dual .txt{text-align:center}
.btn.dual .txt b{font-size:21px;letter-spacing:.05em}
.btn.dual .txt span{letter-spacing:.18em}
.btn .ic.wa{background:#25D366;position:relative}
.btn .ic.wa::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid #25D366;animation:pulso 2.2s ease-out infinite}
@keyframes pulso{from{transform:scale(1);opacity:.9}to{transform:scale(1.3);opacity:0}}

/* botones con número (llamar / WhatsApp): número centrado y grande, sin hueco a la derecha */
.btn.llamar .txt,.btn.whatsapp .txt{text-align:center}
.btn.llamar .txt b,.btn.whatsapp .txt b{font-size:21px;letter-spacing:.05em}
.btn.llamar .txt span,.btn.whatsapp .txt span{letter-spacing:.16em}
.btn.whatsapp .ic{background:#25D366}.btn.whatsapp .txt span,.btn.whatsapp .ir{color:#1a9e4b}
.btn.instagram .ic{background:radial-gradient(circle at 30% 107%,#fdf497 0,#fd5949 45%,#d6249f 60%,#285AEB 90%)}
.btn.instagram .txt span,.btn.instagram .ir{color:#c13584}
.btn.facebook .ic{background:#1877F2}.btn.facebook .txt span,.btn.facebook .ir{color:#1877F2}
.btn.tiktok .ic{background:#111}.btn.tiktok .txt span,.btn.tiktok .ir{color:#111}
.btn.beneficios{background:linear-gradient(120deg,#fff 0%,#fff 60%,#fff6dc 100%)}
.btn.beneficios .ic{background:var(--oro)}
.btn.beneficios .txt span{color:#a87800}
.btn.beneficios::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.8) 45%,transparent 60%);background-size:250% 100%;animation:barrido 3.5s ease-in-out infinite}
.btn.beneficios{position:relative;overflow:hidden}
@keyframes barrido{0%,40%{background-position:120% 0}100%{background-position:-120% 0}}

/* mosaico (¿cómo funciona?) */
.seccion-t{text-align:center;font-size:9.5px;font-weight:800;letter-spacing:.34em;opacity:.9;margin:24px 0 12px;text-transform:uppercase}
.seccion-t+.mano{position:absolute;right:16px;margin-top:-36px;font-size:16px;transform:rotate(-8deg)}
.mosaico{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
/* el ícono va en el flujo (no encimado): en celulares chicos nunca tapa el título */
.tile{position:relative;min-height:112px;background:#fff;border-radius:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:12px 4px 11px;box-shadow:var(--sombra);overflow:hidden;color:var(--c);transition:transform .15s ease;text-align:center}
.tile .icono{width:clamp(46px,14vw,56px);height:clamp(46px,14vw,56px);margin-bottom:7px;border-radius:50%;background:var(--suave);display:grid;place-items:center;flex:none}
.tile .icono svg{width:75%;height:75%}
.tile b{font-size:13px;letter-spacing:.06em;text-transform:uppercase}
.tile span{font-size:7.5px;font-weight:700;letter-spacing:.14em;color:var(--gris);text-transform:uppercase;margin-top:2px}
.tile .ir{position:absolute;right:8px;top:8px;width:18px;height:18px;border-radius:50%;background:var(--c);display:grid;place-items:center}
.tile .ir svg{width:10px;height:10px}
.tile:hover .icono svg{animation:salta .5s ease}
@keyframes salta{50%{transform:translateY(-4px) rotate(-6deg)}}

/* horario y cómo llegar */
.horario{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:18px;padding:12px 16px;border-radius:16px;
  border:1.5px solid rgba(255,255,255,.45);background:rgba(255,255,255,.1);font-size:13px;line-height:1.45}
.horario svg{width:24px;height:24px;flex:none}
.horario b{font-weight:800}
.abierto{display:inline-block;font-size:9px;font-weight:800;letter-spacing:.14em;padding:3px 8px;border-radius:10px;margin-bottom:4px;background:#fff;color:var(--c)}
.abierto.cerrado{background:rgba(0,0,0,.25);color:#fff}
.abierto i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#22c55e;margin-right:5px;vertical-align:1px;animation:late 1.6s ease-in-out infinite}
.abierto.cerrado i{background:#fca5a5;animation:none}
@keyframes late{50%{opacity:.3}}
.llegar{display:flex;align-items:center;justify-content:center;gap:8px;width:72%;margin:14px auto 0;height:46px;border-radius:30px;background:#fff;
  color:var(--c);font-size:12px;font-weight:800;letter-spacing:.14em;box-shadow:var(--sombra);text-transform:uppercase}
.llegar svg{width:18px;height:18px}

.chicos{display:flex;justify-content:center;gap:10px;margin-top:14px}
.chico{display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:20px;font-size:11px;font-weight:700;letter-spacing:.06em;
  background:rgba(255,255,255,.14);color:#fff;border:0;font-family:inherit;cursor:pointer;transition:transform .15s}
.chico svg{width:15px;height:15px}

.pie{text-align:center;font-size:8.5px;font-weight:700;letter-spacing:.3em;color:rgba(255,255,255,.7);margin-top:22px;text-transform:uppercase}
.tappix{display:block;text-align:center;font-size:10px;letter-spacing:.08em;color:rgba(255,255,255,.55);margin-top:14px}
.tappix b{color:rgba(255,255,255,.85)}

/* ---------------- SUBPÁGINAS ---------------- */
.encabezado{position:relative;min-height:128px;padding:24px 110px 26px 24px;color:#fff;border-radius:0 0 30px 30px;overflow:hidden;
  background:linear-gradient(160deg,var(--c2) 0%,var(--c) 45%,var(--c3) 100%)}
.encabezado::after{content:"";position:absolute;right:-52px;top:-60px;width:194px;height:194px;border-radius:50%;border:17px solid rgba(255,255,255,.07)}
.encabezado .kicker{font-size:9px;font-weight:700;letter-spacing:.32em;opacity:.8;text-transform:uppercase}
.encabezado h2{font-size:27px;font-weight:800;line-height:1.02;margin-top:8px}
.encabezado h2 .letra{display:block;font-size:33px}
.inicio-logo{position:absolute;right:20px;top:20px;z-index:2;display:flex;flex-direction:column;align-items:center;gap:5px;transition:transform .15s}
.inicio-logo .disco{width:58px;height:58px;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:0 4px 12px rgba(0,0,0,.25),0 0 0 4px rgba(255,255,255,.18)}
.inicio-logo img{width:44px}
.inicio-logo span{font-size:8.5px;font-weight:800;letter-spacing:.25em;color:#fff}
.cuerpo{padding:16px 18px 24px;display:flex;flex-direction:column;gap:14px}

/* pasos en lista */
.pasos{display:flex;flex-direction:column;gap:8px}
.paso{display:flex;align-items:center;gap:12px;background:#fff;border-radius:16px;padding:6px 14px 6px 6px;box-shadow:0 5px 14px rgba(80,20,30,.1)}
.paso img{width:64px;height:64px;object-fit:cover;object-position:50% 0;border-radius:12px;flex:none}
.paso .n{font-size:30px;font-weight:800;color:var(--c);line-height:1;width:40px;flex:none;letter-spacing:-.04em}
.paso p{font-size:13.5px;line-height:1.3;font-weight:500}
.paso p b{color:var(--c)}
.paso small{display:block;font-size:10.5px;color:var(--gris);font-weight:600;margin-top:2px}
/* pasos en cuadrícula */
.pasos.cuadricula{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.pasos.cuadricula .paso{flex-direction:column;align-items:stretch;padding:0;gap:0;overflow:hidden;position:relative}
.pasos.cuadricula .paso img{width:100%;height:auto;aspect-ratio:4/3;object-fit:contain;object-position:50% 100%;border-radius:0;background:rgb(179,12,66)}
.pasos.cuadricula .paso .n{position:absolute;left:8px;top:calc(50% - 38px);width:34px;height:34px;border-radius:50%;background:var(--c);color:#fff;
  font-size:17px;display:grid;place-items:center;border:3px solid #fff;letter-spacing:0}
.pasos.cuadricula .paso p{padding:12px 10px 12px;font-size:12px}

/* aviso importante */
.aviso{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:16px;background:var(--oro);color:var(--tinta);box-shadow:0 5px 14px rgba(120,80,0,.22)}
.aviso svg{width:36px;height:36px;flex:none;animation:tiembla 4s ease-in-out infinite}
@keyframes tiembla{0%,88%,100%{transform:none}91%{transform:rotate(-10deg)}94%{transform:rotate(10deg)}97%{transform:rotate(-5deg)}}
.aviso h5{font-size:9px;font-weight:800;letter-spacing:.3em;margin-bottom:3px}
.aviso p{font-size:13px;line-height:1.35;font-weight:600}

/* consejos */
.consejos{position:relative;border-radius:18px;padding:18px;background:var(--tinta);color:#fff;overflow:hidden}
.consejos::after{content:"";position:absolute;right:-36px;top:-36px;width:120px;height:120px;border-radius:50%;border:14px solid rgba(255,255,255,.05)}
.consejos h4{font-size:9px;font-weight:800;letter-spacing:.32em;color:#ff8fb3}
.consejos h3{font-family:var(--f-titulo);font-style:italic;font-weight:700;font-size:23px;margin:2px 0 12px}
.consejos ul{list-style:none;display:grid;grid-template-columns:1fr;gap:9px;align-content:start}
.consejos .dos{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.consejos .ancho{margin-top:10px}
.consejos li{position:relative;padding-left:24px;font-size:11.5px;line-height:1.35;color:rgba(255,255,255,.92)}
.consejos li i{position:absolute;left:0;top:0;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-weight:800;font-size:10px}
.consejos li i.no{background:var(--c2)}
.consejos li i.si{background:#fff;color:var(--c)}
.consejos li b{color:#ff8fb3}

/* precios */
.caja{position:relative;background:#fff;border-radius:18px;padding:16px 18px;box-shadow:0 5px 14px rgba(80,20,30,.1)}
.caja .t{display:flex;align-items:center;gap:8px;font-size:9.5px;font-weight:800;letter-spacing:.26em;color:var(--c);text-transform:uppercase;margin-bottom:6px}
.caja .t::after{content:"";flex:1;height:1.5px;background:currentColor;opacity:.18}
.caja.destacada{background:linear-gradient(150deg,var(--c2),var(--c) 50%,var(--c3));color:#fff}
.caja.destacada .t{color:#fff}
.caja .etiqueta{position:absolute;right:14px;top:-11px;background:var(--oro);color:var(--tinta);font-size:9px;font-weight:800;letter-spacing:.1em;
  padding:5px 10px;border-radius:12px;transform:rotate(3deg);box-shadow:0 4px 8px rgba(0,0,0,.2);text-transform:uppercase}
.caja .intro{font-size:11.5px;line-height:1.45;opacity:.9;margin:4px 0 4px}
.caja .cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.caja h6{font-size:13.5px;font-weight:800;margin-top:4px}
.fila{display:flex;align-items:baseline;font-size:13px;font-weight:600;padding:4px 0}
.fila .puntos{flex:1;border-bottom:1.5px dotted rgba(38,33,31,.22);margin:0 6px;transform:translateY(-3px);min-width:10px}
.caja.destacada .fila .puntos{border-color:rgba(255,255,255,.35)}
.fila .p{font-weight:800;font-size:14.5px}
.fila small{margin-left:4px}
.fila small,.caja .mini{font-size:10px;color:var(--gris);font-weight:600}
.caja.destacada .mini{color:rgba(255,255,255,.75)}
.tabla{display:grid;align-items:center;row-gap:5px;margin-top:6px}
.tabla .h{font-size:8px;font-weight:800;letter-spacing:.1em;color:var(--gris);text-align:center;text-transform:uppercase}
.tabla .k{font-size:12.5px;font-weight:800;line-height:1.2}
.tabla .v{font-size:13.5px;font-weight:800;text-align:center;background:var(--suave);color:var(--c);border-radius:9px;padding:5px 0;margin:0 3px}
.nota-final{text-align:center;font-size:9px;font-weight:700;letter-spacing:.2em;color:var(--gris);text-transform:uppercase}
.texto{font-size:14px;line-height:1.55;background:#fff;border-radius:18px;padding:16px 18px;box-shadow:0 5px 14px rgba(80,20,30,.1)}
.fotos{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.fotos figure{margin:0;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 5px 14px rgba(80,20,30,.1)}
.fotos img{display:block;width:100%;aspect-ratio:1;object-fit:cover}
.fotos figcaption{padding:8px 11px 9px;font-size:12.5px;font-weight:600}

/* navegación de abajo */
.nav{display:flex;gap:10px;padding:4px 18px 30px}
.pill{flex:1;height:48px;border-radius:30px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:11.5px;font-weight:800;
  letter-spacing:.1em;text-transform:uppercase;transition:transform .15s}
.pill svg{width:17px;height:17px}
.pill.solido{background:var(--c);color:#fff;box-shadow:0 6px 14px color-mix(in srgb,var(--c) 40%,transparent)}
.pill.linea{background:#fff;color:var(--c);border:2px solid var(--c)}
.pill.whatsapp{background:#25D366;color:#fff;box-shadow:0 6px 14px rgba(37,211,102,.35)}

/* aviso flotante (p. ej. "contacto guardado") */
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,40px);opacity:0;background:var(--tinta);color:#fff;font-size:13px;font-weight:600;
  padding:10px 18px;border-radius:20px;transition:.3s;z-index:50;pointer-events:none}
.toast.ver{transform:translate(-50%,0);opacity:1}

/* ---------------- EFECTOS PREMIUM ---------------- */
/* burbujas que suben por el panel */
.panel>.espuma{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.espuma i{position:absolute;bottom:-30px;border-radius:50%;border:1.5px solid rgba(255,255,255,.55);
  background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.9) 0 12%,rgba(255,255,255,.1) 35%,rgba(255,190,225,.12) 70%);
  animation:burbujea var(--dur) linear infinite;animation-delay:var(--d)}
@keyframes burbujea{0%{transform:translate(0,0);opacity:0}10%{opacity:.9}50%{transform:translate(var(--x),-55vh)}
  90%{opacity:.7}100%{transform:translate(0,-110vh) scale(1.2);opacity:0}}
/* centrifugado de la puerta */
.marco.lavadora{cursor:pointer}
.marco.lavadora.centrifuga .foto img{animation:giro 1.4s cubic-bezier(.45,0,.2,1)}
.marco.lavadora.centrifuga{animation:vibra .12s linear 8}
@keyframes giro{from{transform:scale(1.1) rotate(0)}to{transform:scale(1.1) rotate(720deg)}}
@keyframes vibra{0%,100%{translate:0 0}25%{translate:-1.5px 1px}75%{translate:1.5px -1px}}
.chispa{position:absolute;left:50%;top:115px;margin:-8px;border-radius:50%;z-index:5;pointer-events:none;
  border:1.5px solid rgba(255,255,255,.9);background:radial-gradient(circle at 32% 28%,#fff 0 12%,rgba(255,255,255,.2) 35%,rgba(255,180,220,.25) 75%);
  box-shadow:0 0 0 1px color-mix(in srgb,var(--c) 30%,transparent);
  animation:chispa 1.3s cubic-bezier(.1,.7,.3,1) var(--d) both}
@keyframes chispa{from{transform:translate(0,0) scale(.2);opacity:1}80%{opacity:.9}to{transform:translate(var(--tx),var(--ty)) scale(1);opacity:0}}
/* onda al tocar */
.btn,.tile,.pill,.llegar{position:relative;overflow:hidden}
.onda{position:absolute;border-radius:50%;background:color-mix(in srgb,var(--c) 22%,transparent);transform:scale(0);animation:onda .6s ease-out forwards;pointer-events:none}
.pill.solido .onda,.pill.whatsapp .onda{background:rgba(255,255,255,.35)}
@keyframes onda{to{transform:scale(1);opacity:0}}
/* íconos del mosaico con vida */
.tile .ola{transform-box:view-box;transform-origin:32px 38px;animation:ola 2.6s ease-in-out infinite}
@keyframes ola{0%,100%{transform:rotate(-14deg)}50%{transform:rotate(14deg)}}
.tile .calor{animation:calor 2s ease-in-out infinite}
@keyframes calor{0%{transform:translateY(3px);opacity:.3}50%{opacity:1}100%{transform:translateY(-3px);opacity:.3}}
.tile .etiq{transform-origin:72% 28%;animation:columpio 3s ease-in-out infinite}
@keyframes columpio{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}
/* subpáginas: cada bloque aparece al llegar a él */
.sube.espera{animation-play-state:paused}
.sube.espera.visto{animation-play-state:running}

/* ---------------- PLAN BÁSICO (diseño de Canva como imagen) ---------------- */
.app.basico{min-height:0}
.lienzo{position:relative}
.lienzo>img{width:100%;height:auto;animation:sube .6s ease forwards;opacity:0}
.zona{position:absolute;border-radius:14px}
.zona:active{background:rgba(255,255,255,.28);box-shadow:0 0 0 3px rgba(255,255,255,.5)}
.ver-zonas .zona{outline:2px dashed #ff0;background:rgba(255,255,0,.2)}

/* sin animaciones (plan sin extras, o ?quieto para enseñarlo) */
.quieto *,.quieto *::before,.quieto *::after{animation:none!important;transition:none!important}
.quieto .sube{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition:none!important}
  .sube{opacity:1;transform:none}
}
