/* Animación opcional, sin impedir la lectura ni depender de JavaScript. */
/* Ouverture immédiate en deux panneaux, sans écran d’attente. */
.page-opening{display:none;position:fixed;inset:0;z-index:70;pointer-events:none;overflow:hidden}.page-opening.is-opening{display:flex}.page-opening>span{width:50%;height:100%;background:#2e6085;animation:open-left .6s cubic-bezier(.65,0,.2,1) both;transform-origin:left center}.page-opening>span+span{background:#9062a4;animation-name:open-right;transform-origin:right center}@keyframes open-left{from{transform:translateX(0)}to{transform:translateX(-101%)}}@keyframes open-right{from{transform:translateX(0)}to{transform:translateX(101%)}}
.reveal{transition:opacity .65s,transform .65s}.reveal.pending{opacity:0;transform:translateY(22px)}.breath-orb{animation:breathe 7s ease-in-out infinite}.floating-note{animation:float 7s ease-in-out infinite}.hero-ring{animation:ring 12s ease-in-out infinite}.hero-copy{animation:enter .55s .03s both}.hero-visual{animation:enter .65s .06s both}@keyframes breathe{50%{transform:scale(1.13);box-shadow:0 0 0 23px #e9eee3,0 0 0 43px #eff2e9}}@keyframes float{50%{transform:translateY(-9px) rotate(-2deg)}}@keyframes ring{50%{transform:rotate(1deg)}}@keyframes enter{from{opacity:0;transform:translateY(17px)}to{opacity:1;transform:none}}.motion-paused *,.motion-paused *::before,.motion-paused *::after{animation:none!important;transition:none!important}.motion-paused .reveal{opacity:1!important;transform:none!important}.motion-paused .page-opening{display:none!important}.motion-paused{scroll-behavior:auto}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.page-opening{display:none!important}.reveal.pending{opacity:1;transform:none}}
/* Le titre se compose lettre par lettre, sans répétition ni décalage de mise en page. */
.title-letter{display:inline-block;animation:assemble-letter .6s cubic-bezier(.2,.75,.25,1) both;animation-delay:calc(var(--letter-index) * 35ms + var(--title-delay,100ms));transform-origin:50% 90%}@keyframes assemble-letter{from{opacity:0;transform:translateY(32px) rotate(8deg) scale(.9);filter:blur(5px)}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes breathe{50%{transform:scale(1.1);box-shadow:0 0 0 15px #dce7ef,0 0 0 28px #ecf0f4}}.person[open] .profile-bio{animation:profile-in .28s ease-out}@keyframes profile-in{from{opacity:0;transform:translateY(-7px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.title-letter{opacity:1;transform:none;filter:none}}

/* Brillo de los botones de contacto: destello periódico y halo suave. */
.button,.whatsapp-float{position:relative;isolation:isolate;overflow:hidden}
.whatsapp-float{position:fixed}
.button::after,.whatsapp-float::after{content:"";position:absolute;pointer-events:none;inset:-55% auto -55% -90%;width:45%;background:linear-gradient(105deg,transparent 5%,rgba(255,255,255,.12) 25%,rgba(255,255,255,.62) 50%,rgba(255,255,255,.12) 75%,transparent 95%);transform:skewX(-20deg);animation:contact-shine 4.8s ease-in-out infinite;z-index:1}
.button,.whatsapp-float{animation:contact-glow 4.8s ease-in-out infinite}
.header .button::after,.header .button{animation-delay:.5s}
.contact-panel .button::after,.contact-panel .button{animation-delay:1s}
.whatsapp-float::after,.whatsapp-float{animation-delay:1.6s}
.button:hover::after,.whatsapp-float:hover::after{animation-duration:1.6s;animation-delay:0s}
@keyframes contact-shine{0%,55%{left:-90%;opacity:0}60%{opacity:1}82%{left:145%;opacity:1}83%,100%{left:145%;opacity:0}}
@keyframes contact-glow{0%,55%,100%{box-shadow:0 3px 12px rgba(0,127,104,.12)}70%{box-shadow:0 0 20px rgba(0,170,139,.38),0 0 5px rgba(255,255,255,.18)}}
@media(prefers-reduced-motion:reduce){.button,.whatsapp-float,.button::after,.whatsapp-float::after{animation:none!important}.button::after,.whatsapp-float::after{display:none}}
.motion-paused .button::after,.motion-paused .whatsapp-float::after{display:none}

/* Destello completo y flecha que invita a desplegar cada perfil. */
.person{position:relative;isolation:isolate;overflow:hidden;animation:profile-halo 5.5s ease-in-out infinite;--profile-delay:0s;animation-delay:var(--profile-delay)}
.person:nth-child(2){--profile-delay:.5s}.person:nth-child(3){--profile-delay:1s}.person:nth-child(4){--profile-delay:1.5s}.person:nth-child(5){--profile-delay:2s}
.person::after{content:"";position:absolute;z-index:3;pointer-events:none;top:-25%;bottom:-25%;left:-85%;width:48%;background:linear-gradient(105deg,transparent 0%,rgba(208,175,231,.1) 24%,rgba(255,255,255,.72) 50%,rgba(208,175,231,.16) 76%,transparent 100%);transform:skewX(-18deg);animation:profile-shimmer 5.5s ease-in-out infinite;animation-delay:var(--profile-delay)}
.person summary .profile-plus{transform:none;display:grid;place-items:center}.person summary .profile-plus svg{width:19px;height:19px;animation:profile-arrow 1.8s ease-in-out infinite}
.person[open] summary .profile-plus{transform:rotate(180deg)}.person[open] summary .profile-plus svg{animation:none}
.person>summary{cursor:pointer;transition:background .2s}.person>summary:hover{background:#faf5fd}.person>summary:active{background:#eee0f6}.person:focus-within{border-color:#865499;box-shadow:0 0 0 3px #86549925}
@keyframes profile-arrow{0%,100%{transform:translateY(-2px)}50%{transform:translateY(3px)}}
@keyframes profile-shimmer{0%,48%{left:-85%;opacity:0}52%{opacity:1}78%{left:145%;opacity:1}79%,100%{left:145%;opacity:0}}
@keyframes profile-halo{0%,48%,100%{box-shadow:0 4px 14px #86549910}64%{box-shadow:0 0 19px #a373bc35,inset 0 0 0 1px #bc92d144}}
@media(prefers-reduced-motion:reduce){.person,.person::after,.person summary .profile-plus svg{animation:none!important}.person::after{display:none}}
.motion-paused .person::after{display:none}
