/* Cosmedent — capa de movimiento premium.
   Todo cuelga de html.mo (lo pone motion.js). Sin JS, con "reducir movimiento" del sistema,
   o con el editor visual abierto, la página se ve completa y quieta. */
:root{
  --e-out:cubic-bezier(.16,1,.3,1);
  --e-io:cubic-bezier(.77,0,.18,1);
  --e-back:cubic-bezier(.34,1.56,.64,1);
  --e-soft:cubic-bezier(.22,.61,.36,1);
}

/* ---------- telón de entrada (CSS puro: funciona aunque falle el JS) ---------- */
body::after{content:"";position:fixed;inset:-2px 0 0;z-index:300;pointer-events:none;
  background:linear-gradient(var(--gold),var(--gold)) bottom/100% 2px no-repeat,url(media/logo.jpg) center/92px no-repeat,var(--onyx);
  background-blend-mode:normal,lighten,normal;
  animation:moCurtain 1.75s both}
@keyframes moCurtain{
  0%{translate:0 0;animation-timing-function:linear}
  46%{translate:0 0;animation-timing-function:cubic-bezier(.77,0,.18,1)}
  100%{translate:0 -101%}
}
/* telón de salida al cambiar de página */
.mo-exit{position:fixed;inset:0 0 -2px;z-index:300;pointer-events:none;visibility:hidden;translate:0 101%;
  background:linear-gradient(var(--gold),var(--gold)) top/100% 2px no-repeat,url(media/logo.jpg) center/92px no-repeat,var(--onyx);
  background-blend-mode:normal,lighten,normal}
.mo-leaving .mo-exit{visibility:visible;translate:0 0;transition:translate .9s var(--e-io)}

/* ---------- barra de progreso ---------- */
.mo-progress{display:none}
.mo .mo-progress{display:block;position:fixed;left:0;top:0;width:100%;height:2px;z-index:80;pointer-events:none;background:var(--gold-metal);transform-origin:0 50%;scale:0 1;box-shadow:0 0 14px rgba(243,223,166,.55)}

/* ---------- cabecera ---------- */
.mo .site-head{transition:translate 1.1s var(--e-out)}
.mo .site-head.mo-hide{translate:0 calc(-100% - 24px)}
.mo .nav{animation:moDrop 1.6s var(--e-out) .95s backwards;transition:background-color .9s var(--e-soft),box-shadow .9s var(--e-soft),padding .9s var(--e-out)}
.mo .site-head.mo-scrolled .nav{background-color:rgba(10,9,8,.9);box-shadow:inset 0 0 0 1px rgba(201,163,90,.3),0 26px 50px -22px #000;padding-top:5px;padding-bottom:5px}
.mo .brand img{animation:moSpinIn 1.8s var(--e-out) 1.15s backwards}
.mo .brand span{animation:moFadeRight 1.3s var(--e-out) 1.35s backwards}
.mo .nav-links li{animation:moFadeDown 1.2s var(--e-out) backwards;animation-delay:calc(1.35s + var(--n,0) * .1s)}
.mo .nav > .btn{animation:moPillIn 1.4s var(--e-io) 1.8s backwards,moMetal 9s ease-in-out 3.2s infinite alternate}
.mo .menu-btn{background-size:220% 100%;animation:moSpinIn 1.5s var(--e-out) 1.2s backwards,moMetal 9s ease-in-out 3s infinite alternate}
.mo .menu-btn svg{animation:moSpinIn .7s var(--e-out)}
.mo .nav-links a{position:relative}
.mo .nav-links a::after{content:"";position:absolute;left:14px;right:14px;bottom:6px;height:1px;background:var(--gold);scale:0 1;transform-origin:100% 50%;transition:scale .7s var(--e-out)}
.mo .nav-links a:hover::after,.mo .nav-links a[aria-current="page"]::after{scale:1 1;transform-origin:0 50%}
@media (max-width:1040px){
  .mo .nav-links.open{animation:moMenu .9s var(--e-out) both}
  .mo .nav-links.open li{animation-delay:calc(.15s + var(--n,0) * .08s)}
  .mo .nav-links a::after{left:16px;right:auto;width:40px;bottom:8px}
}

/* ---------- motor de aparición ---------- */
/* solo: un bloque que aparece entero */
.mo .rv.mo-solo{opacity:0;translate:0 46px;filter:blur(8px);
  transition:opacity 1.3s var(--e-out) var(--mo-b,0s),translate 1.6s var(--e-out) var(--mo-b,0s),filter 1.3s var(--e-out) var(--mo-b,0s)}
.mo .rv.mo-solo.in{opacity:1;translate:none;filter:none}
/* tarjeta: sube y crece, luego su contenido entra uno por uno */
.mo .rv.mo-card{opacity:0;translate:0 84px;scale:.93;
  transition:opacity 1.4s var(--e-out) var(--mo-b,0s),translate 1.8s var(--e-out) var(--mo-b,0s),scale 1.8s var(--e-out) var(--mo-b,0s),transform .7s var(--e-out),box-shadow .7s var(--e-soft)}
.mo .rv.mo-card.in{opacity:1;translate:none;scale:none}
/* piezas internas, una por una */
.mo .mo-sub{--sd:calc(var(--mo-b,0s) + var(--mo-i,0) * .13s);opacity:0;translate:0 28px;filter:blur(6px);
  transition:opacity 1.2s var(--e-out) var(--sd),translate 1.5s var(--e-out) var(--sd),filter 1.2s var(--e-out) var(--sd),transform .7s var(--e-out),box-shadow .6s var(--e-soft),background-color .5s,color .5s}
.mo .mo-card .mo-sub{--sd:calc(var(--mo-b,0s) + .4s + var(--mo-i,0) * .11s)}
.mo .in .mo-sub{opacity:1;translate:none;filter:none}

/* títulos palabra por palabra */
.mo .mo-split.mo-sub{opacity:1;translate:none;filter:none}
.mo .mo-w{display:inline-block;clip-path:inset(-.3em -.25em -.14em -.2em)}
.mo .mo-wi{display:inline-block;--wd:calc(var(--sd,var(--mo-b,0s)) + var(--w,0) * .07s);translate:0 120%;rotate:7deg;transform-origin:0 100%;
  transition:translate 1.6s var(--e-out) var(--wd),rotate 1.6s var(--e-out) var(--wd)}
.mo .in .mo-wi{translate:none;rotate:none}
.mo .dark .mo-split em,.mo .dark2 .mo-split em,.mo .cta-card .mo-split em{animation:moShine 6.5s ease-in-out infinite;animation-delay:calc(var(--wd,0s) + 1.6s)}

/* eyebrow: la línea se dibuja y las letras se recogen */
.mo .rv .eyebrow::before,.mo .rv .eyebrow::after{scale:0 1;transform-origin:100% 50%;transition:scale 1.5s var(--e-io) calc(var(--sd,var(--mo-b,0s)) + .15s)}
.mo .rv .eyebrow::after{transform-origin:0 50%}
.mo .in .eyebrow::before,.mo .in .eyebrow::after{scale:1 1}
.mo .eyebrow.mo-sub{letter-spacing:.4em;transition:opacity 1.2s var(--e-out) var(--sd),translate 1.5s var(--e-out) var(--sd),filter 1.2s var(--e-out) var(--sd),letter-spacing 2s var(--e-out) var(--sd)}
.mo .in .eyebrow.mo-sub{letter-spacing:.28em}

/* líneas que se dibujan */
.mo .rv .hero-proof{position:relative;border-top-color:transparent}
.mo .rv .hero-proof::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:linear-gradient(90deg,var(--gold),rgba(201,163,90,.12));scale:0 1;transform-origin:0 50%;transition:scale 2.2s var(--e-io) calc(var(--mo-b,0s) + .7s)}
.mo .in .hero-proof::before{scale:1 1}
.mo .rv .pillar{position:relative;border-top-color:transparent}
.mo .rv .pillar::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:linear-gradient(90deg,var(--gold-deep),var(--line-l));scale:0 1;transform-origin:0 50%;transition:scale 1.8s var(--e-io) var(--sd,0s)}
.mo .in .pillar::before{scale:1 1}

/* ---------- monedas (iconos dorados) ---------- */
.mo .rv .coin{--cd:calc(var(--sd,var(--mo-b,0s)) + .22s);opacity:0;scale:.3;rotate:-140deg;
  transition:opacity .9s var(--e-out) var(--cd),scale 1.3s var(--e-back) var(--cd),rotate 1.6s var(--e-out) var(--cd),transform 1.2s var(--e-out) 0s}
.mo .in .coin{opacity:1;scale:none;rotate:none}
.mo :is(.pillar,.value,.case,.tx,.info-row,.cred,.step,.proof,.stamp,.cap):hover .coin{transform:rotateY(360deg)}

/* trazo de los iconos */
.mo .rv .mo-draw :is(path,circle,rect,line,polyline,polygon,ellipse){stroke-dasharray:1 1.2;stroke-dashoffset:1.05;
  transition:stroke-dashoffset 1.9s var(--e-io) calc(var(--sd,var(--mo-b,0s)) + var(--mo-p,0) * .09s + .5s)}
.mo .in .mo-draw :is(path,circle,rect,line,polyline,polygon,ellipse){stroke-dashoffset:0}
.mo .mo-draw-now :is(path,circle,rect,line,polyline,polygon,ellipse){stroke-dasharray:1 1.2;animation:moDraw 1.9s var(--e-io) 1.5s backwards}
.mo :is(.btn,.tx,.pillar,.value,.case,.info-row,.cred,.step,.proof,.wa-float,.role,.stamp,.mapcard,.ticks li):hover :is(.mo-draw,.mo-draw-now) :is(path,circle,rect,line,polyline,polygon,ellipse){animation:moRedraw 1.3s var(--e-io)}

/* iconos dentro de botones: siguen al cursor y se mueven al pasar */
.mo .btn .ico{translate:calc(var(--mx,0) * 1px) calc(var(--my,0) * 1px);transition:translate .6s var(--e-out),scale .6s var(--e-back)}
.mo .btn:hover .ico{scale:1.1}
.mo .btn:hover .ico svg{animation:moNudge 1s var(--e-out)}

/* brillo metálico vivo */
.mo :is(.btn-gold,.btn-silver){animation:moMetal 9s ease-in-out infinite alternate}
.mo :is(.role.gold,.role.silver){background-size:220% 100%;animation:moMetal 7s ease-in-out infinite alternate}
.mo .step .n,.mo .goldtext{background-size:220% 100%;animation:moShine 7s ease-in-out infinite}

/* ---------- píldoras: se abren desde el centro, una por una ---------- */
.mo .rv :is(.role,.chips span,.filters button,.subnav a,.gbadge){--pd:calc(var(--sd,var(--mo-b,0s)) + var(--mo-p,0) * .09s + .08s);
  clip-path:inset(-18px 50% -18px 50% round 999px);
  transition:clip-path 1.5s var(--e-io) var(--pd),opacity 1.1s var(--e-out) var(--pd),translate 1.4s var(--e-out) var(--pd),filter 1.1s var(--e-out) var(--pd),color .5s,box-shadow .6s,background-color .5s,transform .6s var(--e-out)}
.mo .in :is(.role,.chips span,.filters button,.subnav a,.gbadge){clip-path:inset(-18px -18px -18px -18px round 999px)}
.mo .rv .role i{rotate:-180deg;scale:.3;transition:rotate 1.4s var(--e-out) calc(var(--pd,0s) + .45s),scale 1.1s var(--e-back) calc(var(--pd,0s) + .45s)}
.mo .in .role i{rotate:none;scale:none}
/* selección de chips y filtros: el dorado se funde y la píldora rebota */
.mo :is(.chips span,.filters button){position:relative;isolation:isolate;overflow:hidden}
.mo .chips input:checked + span{background:var(--porcelain);animation:moPop .8s var(--e-back)}
.mo .filters button[aria-pressed="true"]{background:#FBF9F5;animation:moPop .8s var(--e-back)}
.mo :is(.chips span,.filters button)::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:var(--gold-metal);background-size:220% 100%;opacity:0;scale:.4 .6;transition:opacity .7s var(--e-out),scale .9s var(--e-out)}
.mo :is(.chips input:checked + span,.filters button[aria-pressed="true"])::before{opacity:1;scale:none;animation:moMetal 6s ease-in-out infinite alternate}
.mo :is(.chips span,.filters button):hover{transform:translateY(-2px)}
/* subnav: relleno dorado al pasar */
.mo .subnav a{position:relative;isolation:isolate;overflow:hidden}
.mo .subnav a::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--gold-metal);scale:0 1;transform-origin:100% 50%;transition:scale .8s var(--e-out)}
.mo .subnav a:hover{color:#2A1E08}
.mo .subnav a:hover::before{scale:1 1;transform-origin:0 50%}

/* estrellas una por una */
.mo .mo-star{display:inline-block}
.mo .rv .mo-star{--std:calc(var(--sd,var(--mo-b,0s)) + .35s + var(--s,0) * .1s);opacity:0;scale:0;rotate:-90deg;
  transition:opacity .7s var(--e-out) var(--std),scale 1s var(--e-back) var(--std),rotate 1.2s var(--e-out) var(--std)}
.mo .in .mo-star{opacity:1;scale:none;rotate:none}

/* ---------- imágenes: cortina + zoom lento + parallax ---------- */
.mo .mo-img{scale:1.12}
.mo .rv .mo-img{--id:calc(var(--mo-b,0s) + .12s);clip-path:inset(100% 0 0 0);scale:1.42;
  transition:clip-path 1.8s var(--e-io) var(--id),scale 2.8s var(--e-out) var(--id),transform 1.2s var(--e-out)}
.mo .rv .mo-img[data-mo-dir="l"]{clip-path:inset(0 100% 0 0)}
.mo .rv .mo-img[data-mo-dir="r"]{clip-path:inset(0 0 0 100%)}
.mo .rv.in .mo-img,.mo .rv.in .mo-img[data-mo-dir]{clip-path:inset(0 0 0 0);scale:1.12}
.mo .doc:hover .ph img{transform:scale(1.05)}
.mo .portrait:hover img,.mo .media:hover img,.mo .visit-photo:hover > img,.mo .cta-card:hover .ph img,.mo .collage:hover img,.mo .gal figure:hover img{transform:scale(1.05)}

/* la moneda de cada tarjeta queda por encima de la foto animada */
.tx .body{position:relative;z-index:1}

/* ---------- hero ---------- */
.mo .hero-mono{animation:moMonoIn 2.8s var(--e-out) .9s backwards}
.mo .hero-art.rv::before{opacity:0;scale:.4;transition:opacity 2.4s var(--e-out) var(--mo-b,0s),scale 2.8s var(--e-out) var(--mo-b,0s)}
.mo .hero-art.in::before{opacity:1;scale:none;animation:moBreathe 8s ease-in-out infinite;animation-delay:calc(var(--mo-b,0s) + 2.8s)}
.mo .hero-art.rv .cut{opacity:0;filter:blur(18px);transition:opacity 1.8s var(--e-out) calc(var(--mo-b,0s) + .15s),filter 2s var(--e-out) calc(var(--mo-b,0s) + .15s)}
.mo .hero-art.in .cut{opacity:1;filter:none}
.mo .hero-art.rv .cut img{translate:0 120px;transition:translate 2.6s var(--e-out) calc(var(--mo-b,0s) + .15s)}
.mo .hero-art.in .cut img{translate:none}
.mo .hero-art.rv .float{clip-path:inset(100% 0 0 0 round 22px);rotate:-12deg;scale:.72;
  transition:clip-path 1.8s var(--e-io) calc(var(--mo-b,0s) + .8s),rotate 2.2s var(--e-out) calc(var(--mo-b,0s) + .8s),scale 2.2s var(--e-out) calc(var(--mo-b,0s) + .8s)}
.mo .hero-art.in .float{clip-path:inset(-90px -90px -90px -90px round 22px);rotate:none;scale:none}
.mo .hero-art.rv .float img{scale:1.35;transition:scale 2.8s var(--e-out) calc(var(--mo-b,0s) + .8s)}
.mo .hero-art.in .float img{scale:1}
.mo .hero-art.rv .seal{opacity:0;scale:0;rotate:-200deg;
  transition:opacity .9s var(--e-out) calc(var(--mo-b,0s) + 1.25s),scale 1.5s var(--e-back) calc(var(--mo-b,0s) + 1.25s),rotate 2s var(--e-out) calc(var(--mo-b,0s) + 1.25s)}
.mo .hero-art.in .seal{opacity:1;scale:none;rotate:none}

/* ---------- formas decorativas que respiran ---------- */
.mo-shapes,.mo-sec-line{display:none}
.mo .mo-shapes{display:block;position:absolute;inset:0;pointer-events:none;z-index:0;opacity:var(--p,1)}
.mo .band > .wrap{z-index:1}
.mo .mo-shapes > i{position:absolute;display:block;scale:calc(.55 + .45 * var(--p,1))}
.mo .mo-orb{width:min(560px,78vw);aspect-ratio:1;background:radial-gradient(circle at 38% 36%,rgba(229,199,132,.24),rgba(201,163,90,.07) 52%,transparent 70%);filter:blur(4px);animation:moBlob 17s ease-in-out infinite alternate,moDrift 23s ease-in-out infinite alternate}
.mo .mo-ring{width:min(560px,82vw);aspect-ratio:1;border-radius:50%;border:1px solid rgba(201,163,90,.22);animation:moSpin 70s linear infinite}
.mo .mo-ring::after{content:"";position:absolute;left:50%;top:-4px;width:7px;height:7px;margin-left:-3.5px;border-radius:50%;background:var(--gold-hi);box-shadow:0 0 16px 3px rgba(243,223,166,.65)}
.mo .mo-ring2{width:min(780px,110vw);aspect-ratio:1.6;border-radius:50%;border:1px dashed rgba(201,163,90,.16);animation:moSpin 120s linear infinite reverse}
.mo .mo-diam{width:16px;height:16px;border:1px solid rgba(229,199,132,.7);rotate:45deg;animation:moFloat 9s ease-in-out infinite}
.mo .mo-dots{width:230px;height:170px;background:radial-gradient(rgba(201,163,90,.42) 1.2px,transparent 1.7px) 0 0/18px 18px;-webkit-mask:radial-gradient(closest-side,#000,transparent);mask:radial-gradient(closest-side,#000,transparent);animation:moFloat 15s ease-in-out infinite reverse}
:is(.light,.light2) .mo-orb{background:radial-gradient(circle at 38% 36%,rgba(201,163,90,.2),rgba(201,163,90,.06) 52%,transparent 70%)!important}
:is(.light,.light2) .mo-ring{border-color:rgba(122,90,36,.2)!important}
:is(.light,.light2) .mo-ring2{border-color:rgba(122,90,36,.14)!important}
:is(.light,.light2) .mo-diam{border-color:rgba(122,90,36,.45)!important}
:is(.light,.light2) .mo-dots{background-image:radial-gradient(rgba(122,90,36,.32) 1.2px,transparent 1.7px)!important}
.mo-shapes[data-v="a"] .mo-orb{right:-8%;top:-14%}
.mo-shapes[data-v="a"] .mo-ring{left:-16%;bottom:-26%}
.mo-shapes[data-v="a"] .mo-ring2{right:-26%;top:30%}
.mo-shapes[data-v="a"] .mo-diam{left:6%;top:14%}
.mo-shapes[data-v="a"] .mo-dots{right:4%;bottom:6%}
.mo-shapes[data-v="b"] .mo-orb{left:-10%;bottom:-16%}
.mo-shapes[data-v="b"] .mo-ring{right:-14%;top:-22%}
.mo-shapes[data-v="b"] .mo-ring2{left:-28%;top:16%}
.mo-shapes[data-v="b"] .mo-diam{right:8%;bottom:18%}
.mo-shapes[data-v="b"] .mo-dots{left:3%;top:8%}
.mo-shapes[data-v="h"] .mo-orb{right:4%;top:2%}
.mo-shapes[data-v="h"] .mo-ring{right:-6%;top:6%;width:min(640px,90vw)}
.mo-shapes[data-v="h"] .mo-ring2{left:-24%;bottom:-30%}
.mo-shapes[data-v="h"] .mo-diam{left:46%;top:16%}
.mo-shapes[data-v="h"] .mo-dots{left:2%;bottom:14%}
.mo .mo-shapes[data-v="h"]{animation:moFade 3s var(--e-out) 1.1s backwards}

/* hilo dorado que separa las secciones */
.mo .mo-sec-line{display:block;position:absolute;top:0;left:50%;z-index:2;width:min(1240px,92%);height:1px;translate:-50% 0;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--gold) 30%,var(--gold-hi) 50%,var(--gold) 70%,transparent);opacity:.7;scale:var(--p,1) 1}
.mo :is(.light,.light2) > .mo-sec-line{background:linear-gradient(90deg,transparent,var(--gold-deep) 30%,var(--gold) 50%,var(--gold-deep) 70%,transparent);opacity:.45}

/* ---------- secciones como láminas que suben ---------- */
.mo main > .band.mo-sheet{transform-origin:50% 0;scale:calc(.93 + .07 * var(--p,1));
  border-top-left-radius:calc(72px * (1 - var(--p,1)));border-top-right-radius:calc(72px * (1 - var(--p,1)));will-change:scale}
@media (max-width:720px){
  .mo main > .band.mo-sheet{scale:calc(.96 + .04 * var(--p,1));border-top-left-radius:calc(36px * (1 - var(--p,1)));border-top-right-radius:calc(36px * (1 - var(--p,1)))}
}

/* ---------- tarjetas: inclinación 3D y reflejo ---------- */
.mo-glare{display:none}
.mo .mo-tilt{position:relative}
.mo .mo-glare{display:block;position:absolute;inset:0;z-index:3;border-radius:inherit;pointer-events:none;opacity:0;
  background:radial-gradient(circle at var(--gx,50%) var(--gy,50%),rgba(243,223,166,.24),transparent 50%);transition:opacity .7s var(--e-soft)}
.mo .mo-tilt:hover .mo-glare{opacity:1}
.mo :is(.tst,.value,.case):hover{box-shadow:inset 0 0 0 1px rgba(201,163,90,.6),0 34px 60px -30px #000}
.mo .cred:hover{box-shadow:0 0 0 1px rgba(201,163,90,.6),0 20px 40px -24px rgba(60,40,10,.4)}
.mo .info-row:hover{transform:translateX(6px)}
.mo .cta-card::before{background-size:300% 100%;animation:moMetal 6s ease-in-out infinite alternate}

/* ---------- proceso ---------- */
.mo .steps::before{scale:0 1;transform-origin:0 50%;transition:scale 3s var(--e-io) .25s}
.mo .steps:has(.step.in)::before{scale:1 1}
.mo .step.rv .dot{scale:0;transition:scale 1.1s var(--e-back) calc(var(--mo-b,0s) + .25s)}
.mo .step.rv.in .dot{scale:none}
.mo .step .dot::after{content:"";position:absolute;inset:-7px;border-radius:50%;border:1px solid var(--gold);opacity:0;animation:moPing 3.6s var(--e-out) infinite;animation-delay:var(--pk,0s)}
.step:nth-child(2) .dot{--pk:.9s}.step:nth-child(3) .dot{--pk:1.8s}.step:nth-child(4) .dot{--pk:2.7s}

/* ---------- preguntas ---------- */
.mo .faq details[open] > p{animation:moFadeUp 1.1s var(--e-out) .15s backwards}
.mo .faq details.mo-closing summary .coin{transform:none}
.mo .faq summary{transition:color .4s}
.mo .faq summary:hover{color:var(--gold-deep)}

/* ---------- mapa ---------- */
.mo .rv .mapcard svg.grid path{stroke-dasharray:1 1.2;stroke-dashoffset:1.05;transition:stroke-dashoffset 2.8s var(--e-io) calc(var(--sd,var(--mo-b,0s)) + .2s)}
.mo .in .mapcard svg.grid path{stroke-dashoffset:0}
.mo .rv .mapcard svg.grid text{opacity:0;transition:opacity 1.6s var(--e-out) calc(var(--sd,var(--mo-b,0s)) + 1.6s)}
.mo .in .mapcard svg.grid text{opacity:1}
.mo .rv .mapcard .pin{opacity:0;translate:0 -80px;transition:opacity .9s var(--e-out) calc(var(--sd,var(--mo-b,0s)) + 1.1s),translate 1.4s var(--e-back) calc(var(--sd,var(--mo-b,0s)) + 1.1s)}
.mo .in .mapcard .pin{opacity:1;translate:none}
.mo .mapcard .pin .coin{position:relative}
.mo .mapcard .pin .coin::before{content:"";position:absolute;inset:0;border-radius:50%;border:1.5px solid var(--gold);opacity:0;animation:moPing 2.8s var(--e-out) 3s infinite}

/* ---------- horario y formulario ---------- */
.mo .hours div.today{background:linear-gradient(90deg,rgba(201,163,90,.16),rgba(201,163,90,.04),rgba(201,163,90,.16));background-size:220% 100%;animation:moMetal 5s ease-in-out infinite alternate}
.mo .field input,.mo .field select,.mo .field textarea{transition:box-shadow .6s var(--e-soft),background-color .6s}
.mo .field input:focus,.mo .field select:focus,.mo .field textarea:focus{background-color:#fff;box-shadow:inset 0 0 0 1.5px var(--gold),0 10px 30px -18px rgba(122,90,36,.6)}
.mo .field > label,.mo .field > legend{transition:color .5s,letter-spacing .8s var(--e-out)}
.mo .field:focus-within > label{color:var(--gold);letter-spacing:.26em}
.mo .preview.mo-flash{animation:moFlash 1s var(--e-out)}

/* ---------- galería: filtrado suave ---------- */
.mo .gal figure figcaption{transition:translate .8s var(--e-out),opacity .8s}

/* ---------- WhatsApp flotante ---------- */
.mo .wa-float{background-size:220% 100%;animation:moWaIn 1.7s var(--e-back) 2s backwards,moMetal 9s ease-in-out 3.7s infinite alternate;transition:transform .5s var(--e-out),translate .6s var(--e-out)}
.mo .wa-float::before,.mo .wa-float::after{content:"";position:absolute;inset:0;border-radius:50%;border:1.5px solid rgba(229,199,132,.75);opacity:0;pointer-events:none;animation:moRing 4s var(--e-out) 3.2s infinite}
.mo .wa-float::after{animation-delay:5.2s}
.mo .wa-float svg{animation:moWiggle 7s ease-in-out 4s infinite}

/* ---------- pie ---------- */
.mo .wordmark.mo-letters{background:none;white-space:nowrap;clip-path:inset(-.4em -1em 0 -1em)}
.mo .mo-l{display:inline-block;background:linear-gradient(180deg,rgba(201,163,90,.42),rgba(201,163,90,0));-webkit-background-clip:text;background-clip:text;color:transparent}
.mo .rv .mo-l{opacity:0;translate:0 105%;transition:translate 1.8s var(--e-out) calc(var(--mo-b,0s) + var(--l,0) * .085s),opacity 1.4s var(--e-out) calc(var(--mo-b,0s) + var(--l,0) * .085s)}
.mo .in .mo-l{opacity:1;translate:none}

/* ---------- keyframes ---------- */
@keyframes moDrop{from{opacity:0;translate:0 -40px;scale:.94}}
@keyframes moSpinIn{from{opacity:0;rotate:-180deg;scale:.4}}
@keyframes moFadeRight{from{opacity:0;translate:-16px 0;filter:blur(6px)}}
@keyframes moFadeDown{from{opacity:0;translate:0 -16px;filter:blur(5px)}}
@keyframes moFadeUp{from{opacity:0;translate:0 16px;filter:blur(5px)}}
@keyframes moFade{from{opacity:0}}
@keyframes moPillIn{from{opacity:0;clip-path:inset(-40px 50% -40px 50% round 999px)}to{opacity:1;clip-path:inset(-40px -40px -40px -40px round 999px)}}
@keyframes moMenu{from{opacity:0;clip-path:inset(0 0 100% 0 round 24px)}to{opacity:1;clip-path:inset(0 0 0 0 round 24px)}}
@keyframes moMetal{from{background-position:0% 50%}to{background-position:100% 50%}}
@keyframes moShine{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@keyframes moDraw{from{stroke-dashoffset:1.05}to{stroke-dashoffset:0}}
@keyframes moRedraw{from{stroke-dashoffset:1.05}to{stroke-dashoffset:0}}
@keyframes moNudge{0%{rotate:0deg;scale:1}30%{rotate:-14deg;scale:1.18}60%{rotate:8deg;scale:1.05}100%{rotate:0deg;scale:1}}
@keyframes moPop{0%{scale:1}35%{scale:1.09}65%{scale:.97}100%{scale:1}}
@keyframes moMonoIn{from{opacity:0;scale:1.25;filter:sepia(.4) blur(12px)}}
@keyframes moBreathe{50%{scale:1.08;opacity:.7}}
@keyframes moBlob{
  0%{border-radius:42% 58% 63% 37%/41% 44% 56% 59%}
  33%{border-radius:63% 37% 38% 62%/58% 63% 37% 42%}
  66%{border-radius:38% 62% 47% 53%/36% 55% 45% 64%}
  100%{border-radius:55% 45% 33% 67%/62% 38% 62% 38%}}
@keyframes moDrift{from{transform:translate3d(0,0,0) rotate(0deg)}to{transform:translate3d(46px,-34px,0) rotate(48deg)}}
@keyframes moSpin{to{transform:rotate(360deg)}}
@keyframes moFloat{50%{transform:translateY(-20px) rotate(45deg)}}
@keyframes moPing{0%{opacity:.8;scale:.6}100%{opacity:0;scale:2.3}}
@keyframes moRing{0%{opacity:0;scale:1}12%{opacity:.85}100%{opacity:0;scale:1.95}}
@keyframes moWaIn{from{opacity:0;scale:0;rotate:-140deg}}
@keyframes moWiggle{0%,85%,100%{rotate:0deg}88%{rotate:-14deg}91%{rotate:11deg}94%{rotate:-6deg}97%{rotate:3deg}}
@keyframes moFlash{from{box-shadow:0 0 0 0 rgba(201,163,90,.55)}to{box-shadow:0 0 0 16px rgba(201,163,90,0)}}

@media (prefers-reduced-motion:reduce){
  body::after{content:none;animation:none}
}
