.phyro-avatar{position:relative;display:inline-flex;flex:none;width:60px;height:60px;vertical-align:middle;filter:drop-shadow(0 4px 10px #ef8c3e26);transition:filter .2s,transform .2s}
.phyro-body{display:block;width:100%;height:100%;transform-origin:50% 76%;animation:phyro-breathe 5s ease-in-out infinite}
.phyro-avatar .phyro-art{display:block;width:100%;height:100%;object-fit:contain;user-select:none;filter:drop-shadow(0 0 4px #ffa33526)}
.phyro-sparks{position:absolute;inset:0;pointer-events:none}
.phyro-sparks i{position:absolute;width:4px;height:4px;background:#ffd18b;border-radius:50%;box-shadow:0 0 7px #ff9d42;left:12%;top:57%;opacity:0;animation:phyro-ember 3.4s ease-out infinite}
.phyro-sparks i:nth-child(2){left:82%;top:45%;width:3px;height:3px;animation-delay:1.1s}
.phyro-sparks i:nth-child(3){left:65%;top:12%;width:2px;height:2px;animation-delay:2.2s}
.phyro-avatar[data-state=thinking] .phyro-body{animation:phyro-think 1.2s ease-in-out infinite}
.phyro-avatar[data-state=thinking] .phyro-sparks i{animation-duration:1.4s}
.phyro-avatar[data-state=speaking] .phyro-body{animation:phyro-talk .85s ease-in-out infinite}
.phyro-avatar[data-state=speaking] .phyro-art{animation:phyro-answer 1s ease-in-out infinite}
.phyro-avatar[data-state=unavailable]{filter:saturate(.65)}
.phyro-avatar[data-state=unavailable] .phyro-body{animation:phyro-rest 3s ease-in-out infinite}
.phyro-hello .phyro-body{animation:phyro-wave .9s cubic-bezier(.2,.8,.2,1) both}
.cv-chat-head>.phyro-avatar,.chat-cab>.phyro-avatar{margin-right:5px;width:54px;height:54px}
.cv-chat-head>div,.chat-cab>div{min-width:0;flex:1}

/* A single mascot docks to the screen, separate from the page content. */
:is(.page-landing,.page-cv) :is(#chatAbrir,#cvChatOpen).phyro-dock{
 position:fixed;right:max(18px,env(safe-area-inset-right));bottom:calc(15px + env(safe-area-inset-bottom));z-index:70;
 display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;width:96px;min-width:0;height:114px;min-height:0;
 padding:0;border:0;border-radius:24px;background:none;color:var(--tinta);box-shadow:none;
 font:700 12px/1.3 Inter,ui-sans-serif,system-ui,sans-serif;cursor:pointer;overflow:visible;
 transition:transform .22s cubic-bezier(.2,.8,.2,1),opacity .2s;isolation:isolate;
 -webkit-tap-highlight-color:transparent;
}
:is(#chatAbrir,#cvChatOpen).phyro-dock[hidden]{display:none!important}
:is(#chatAbrir,#cvChatOpen).phyro-dock .phyro-avatar{width:88px;height:88px;margin:0;filter:drop-shadow(0 6px 12px #0005)}
.phyro-dock .phyro-avatar[data-state=idle] .phyro-body{animation:phyro-dock-idle 7s ease-in-out infinite}
.phyro-dock-glow{position:absolute;inset:20px 4px 13px;z-index:-1;border-radius:50%;background:radial-gradient(ellipse,#ffaf422f,transparent 70%);animation:phyro-halo 4s ease-in-out infinite;pointer-events:none}
.phyro-dock-label{display:flex;align-items:center;gap:6px;padding:6px 10px;margin-top:-4px;border:1px solid var(--sup-borde);border-radius:100px;background:var(--vidrio-solido);color:var(--tinta);box-shadow:0 5px 16px #0002;font-size:11px;line-height:1}
.phyro-dock-label i{width:5px;height:5px;border-radius:50%;background:#ffc152;box-shadow:0 0 6px #ffc15255}
.phyro-dock-hint{position:absolute;right:calc(100% + 4px);bottom:38px;white-space:nowrap;padding:9px 13px;border-radius:14px 14px 2px 14px;background:var(--vidrio-solido);border:1px solid var(--sup-borde);font-size:12px;box-shadow:0 8px 24px #0002;opacity:0;transform:translateX(6px);pointer-events:none;transition:opacity .2s,transform .2s}
:is(.page-landing,.page-cv) :is(#chatAbrir,#cvChatOpen).phyro-dock:focus-visible{outline:2px solid var(--acento-texto);outline-offset:5px}
:is(.page-landing,.page-cv) :is(#chatAbrir,#cvChatOpen).phyro-dock:active{transform:scale(.93)}
.phyro-dock[data-interaction=wave] .phyro-avatar[data-state=idle] .phyro-body{animation:phyro-wave .9s ease-in-out infinite}
@media(hover:hover){
 :is(.page-landing,.page-cv) :is(#chatAbrir,#cvChatOpen).phyro-dock:hover{transform:translateY(-3px);box-shadow:none}
 .phyro-dock:hover .phyro-dock-hint,.phyro-dock:focus-visible .phyro-dock-hint{opacity:1;transform:none}
}
.phyro-about{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:24px 60px;align-items:center;padding:74px 0 10px}
.phyro-stage{position:relative;grid-column:2;grid-row:1;display:flex;flex-direction:column;align-items:center;justify-content:center;justify-self:center;gap:12px;width:min(100%,300px);height:260px;border:0;background:none;color:var(--tinta-2);cursor:pointer;-webkit-tap-highlight-color:transparent;isolation:isolate}
.phyro-stage::before{content:"";position:absolute;inset:18px 22px 45px;z-index:-1;border-radius:50%;background:radial-gradient(ellipse,#ffaf421f,transparent 70%);animation:phyro-halo 5s ease-in-out infinite}
.phyro-stage::after{content:"";position:absolute;left:28%;right:28%;bottom:44px;height:14px;background:#ed903522;border-radius:50%;filter:blur(8px);animation:phyro-shadow 5s ease-in-out infinite}
.phyro-stage .phyro-avatar{width:210px;height:210px;filter:drop-shadow(0 12px 24px #ed903530)}
.phyro-stage .phyro-body{animation:phyro-float 5s ease-in-out infinite}
.phyro-stage-caption{font-size:12px;line-height:1.3;letter-spacing:.02em}
.phyro-stage:focus-visible{outline:2px solid var(--acento-texto);outline-offset:4px;border-radius:28px}
.phyro-stage[data-interaction=wave] .phyro-body{animation:phyro-wave .9s ease-in-out infinite}
.phyro-stage[data-interaction=bounce] .phyro-body{animation:phyro-hop .9s cubic-bezier(.2,.8,.2,1) both}
.phyro-stage[data-interaction=bounce] .phyro-sparks i{animation:phyro-burst .8s ease-out both;width:6px;height:6px}
.phyro-stage[data-interaction=bounce] .phyro-sparks i:nth-child(2){animation-delay:.1s}
.phyro-about-details{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.page-cv .phyro-stage{grid-column:1;grid-row:auto;height:240px}
.phyro-about-intro h2{font-size:clamp(32px,4.3vw,53px);line-height:1.1;letter-spacing:-.055em;margin:18px 0 20px;font-weight:750}
.phyro-about-intro h2 .grad{background:none;-webkit-text-fill-color:var(--acento-texto);color:var(--acento-texto)}
.phyro-about-intro p{max-width:49ch;font-size:16px;line-height:1.7;color:var(--tinta-2);margin:0 0 25px}
.phyro-about-details{margin:0;border-top:1px solid var(--linea)}
.phyro-about-details>div{padding:22px 0;border-bottom:1px solid var(--linea)}
.phyro-about-details dt{font-size:14px;line-height:1.4;font-weight:750;margin-bottom:8px}
.phyro-about-details dd{margin:0;color:var(--tinta-2);font-size:13px;line-height:1.65;max-width:46ch}
:is(.page-landing,.page-cv) .phyro-about-open{display:inline-flex;align-items:center;gap:15px;min-height:44px;border-bottom:1px solid var(--acento-texto);border-radius:0;padding:0 0 5px;color:var(--acento-texto);font:750 14px/1.4 Inter,ui-sans-serif,system-ui,sans-serif;transition:gap .2s,color .2s;text-decoration:none}
:is(.page-landing,.page-cv) .phyro-about-open:hover{gap:22px;text-decoration:none;color:var(--tinta)}
.page-cv .phyro-about{grid-template-columns:1fr;gap:26px;padding:0}
.page-cv .phyro-about-intro h2{font-size:clamp(31px,4vw,46px)}
.page-cv .phyro-about-details dd{max-width:64ch}
.page-landing .chat-panel,.page-cv .cv-chat-panel{transform-origin:bottom right;animation:phyro-chat-enter .25s cubic-bezier(.2,.8,.2,1) both}
[data-phyro-paused] .phyro-avatar *,[data-phyro-paused] .phyro-dock-glow{animation-play-state:paused!important}
@media(max-width:680px){
 :is(.page-landing,.page-cv) :is(#chatAbrir,#cvChatOpen).phyro-dock{width:78px;height:96px;right:max(12px,env(safe-area-inset-right));bottom:calc(12px + env(safe-area-inset-bottom))}
 :is(#chatAbrir,#cvChatOpen).phyro-dock .phyro-avatar{width:74px;height:74px}
 .phyro-dock-label{font-size:10px;padding:5px 9px}.phyro-dock-hint{display:none}
 .phyro-about{grid-template-columns:1fr;gap:22px;padding-top:65px}.phyro-about-intro h2{font-size:36px}.phyro-about-intro p{font-size:15px}
 .phyro-about-details>div{padding:18px 0}
 .phyro-stage{grid-column:1;grid-row:1;width:230px;height:222px}.phyro-stage .phyro-avatar{width:180px;height:180px}
 .phyro-about-intro{grid-row:2}.phyro-about-details{grid-template-columns:1fr;gap:0}
}
@keyframes phyro-float{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-12px) rotate(3deg)}}
@keyframes phyro-shadow{50%{transform:scale(.75);opacity:.5}}
@keyframes phyro-hop{0%,100%{transform:translateY(0) scale(1)}16%{transform:scale(1.1,.88)}42%{transform:translateY(-26px) rotate(-8deg) scale(.96,1.06)}65%{transform:translateY(-14px) rotate(7deg)}82%{transform:scale(1.06,.94)}}
@keyframes phyro-burst{0%{opacity:0;transform:translateY(0) scale(.5)}25%{opacity:1}100%{opacity:0;transform:translateY(-64px) rotate(45deg) scale(.2)}}
@media(prefers-reduced-motion:reduce){.phyro-stage::before,.phyro-stage::after{animation:none!important}}
@keyframes phyro-breathe{50%{transform:translateY(-3px) rotate(2deg)}}
@keyframes phyro-dock-idle{0%,100%{transform:translateY(0) rotate(-2deg)}35%{transform:translateY(-5px) rotate(2deg)}68%{transform:translateY(-1px) rotate(-2deg)}77%{transform:translateY(-7px) rotate(4deg)}85%{transform:translateY(0) scale(1.02,.97)}91%{transform:translateY(-2px) rotate(-1deg)}}
@keyframes phyro-wave{0%,100%{transform:translateY(0) rotate(0)}25%{transform:translateY(-6px) rotate(-9deg)}55%{transform:translateY(-6px) rotate(8deg)}80%{transform:translateY(-2px) rotate(-4deg)}}
@keyframes phyro-think{0%,100%{transform:rotate(-5deg) translateY(1px)}50%{transform:rotate(5deg) translateY(-5px)}}
@keyframes phyro-talk{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-3px) scale(1.025)}}
@keyframes phyro-rest{50%{transform:translateY(2px) rotate(-3deg)}}
@keyframes phyro-ember{0%{opacity:0;transform:translate(0,8px) scale(.5)}20%{opacity:.65}80%{opacity:.35}100%{opacity:0;transform:translate(7px,-22px) scale(.1)}}
@keyframes phyro-halo{50%{opacity:.65;transform:scale(1.12)}}
@keyframes phyro-answer{50%{filter:brightness(1.1) drop-shadow(0 0 8px #ffab4150)}}
@keyframes phyro-chat-enter{from{opacity:0;scale:.96;translate:0 12px}to{opacity:1;scale:1;translate:0 0}}
@media(prefers-reduced-motion:reduce){.phyro-avatar,.phyro-avatar *,.phyro-dock,.phyro-dock *,.phyro-about *,.chat-panel,.cv-chat-panel{animation:none!important;transition:none!important}}
