/* Halo · mascota (ver halo.js). Esquina fija, dos lados, sin perseguir el puntero. */
#halo{position:fixed;z-index:46;bottom:88px;left:calc(100% - 92px);width:70px;height:70px;transition:left .9s cubic-bezier(.2,.7,.2,1);font-family:inherit}
#halo[data-side="l"]{left:22px}
.h-mascot{position:relative;width:70px;height:70px;padding:0;border:0;background:none;cursor:pointer;border-radius:50%;display:block}
.h-mascot svg{width:100%;height:100%;overflow:visible;display:block}
.h-mascot:focus-visible{outline:2px solid #1E3A6E;outline-offset:4px}
.h-bob{animation:hbob 4.2s ease-in-out infinite;transform-origin:40px 40px}
@keyframes hbob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
.h-sombra{fill:#0D1626;opacity:.1;animation:hsom 4.2s ease-in-out infinite;transform-origin:40px 73px}
@keyframes hsom{0%,100%{transform:scaleX(1)}50%{transform:scaleX(.82);opacity:.06}}
.h-orb{animation:horb 9s linear infinite;transform-origin:40px 38px}
@keyframes horb{to{transform:rotate(360deg)}}
.h-oj{animation:hpar 5.2s infinite;transform-box:fill-box;transform-origin:center}
@keyframes hpar{0%,94%,100%{transform:scaleY(1)}96.5%{transform:scaleY(.1)}}
.h-pup{transition:transform .12s linear}
.h-mascot:hover .h-bob{animation-duration:1.8s}
.h-mascot.habla .h-sat{animation:hpulso 1.3s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes hpulso{50%{transform:scale(1.45)}}
.h-bub{position:absolute;bottom:80px;right:0;width:min(290px,calc(100vw - 44px));background:#fff;border:1px solid var(--line,#E1E5EE);border-radius:18px 18px 4px 18px;padding:14px 15px 10px;box-shadow:0 18px 40px -22px rgba(13,22,38,.35);opacity:0;transform:translateY(8px) scale(.97);transform-origin:bottom right;transition:opacity .25s,transform .3s cubic-bezier(.2,.7,.2,1)}
#halo[data-side="l"] .h-bub{right:auto;left:0;border-radius:18px 18px 18px 4px;transform-origin:bottom left}
.h-bub.on{opacity:1;transform:none}
.h-bub p{font-size:14.5px;line-height:1.45;color:var(--ink,#0D1626)}
.h-bub-a{display:flex;justify-content:space-between;align-items:center;margin-top:8px}
.h-callar{font-size:12px;color:var(--mut,#66728A);background:none;border:0;cursor:pointer;padding:6px 0;text-decoration:underline;text-underline-offset:3px;font-family:inherit}
.h-x{width:32px;height:32px;border:0;background:none;font-size:20px;color:var(--mut,#66728A);cursor:pointer;border-radius:50%;font-family:inherit}
.h-x:hover,.h-callar:hover{color:var(--ink,#0D1626)}
.h-panel{position:absolute;bottom:80px;right:0;width:min(380px,calc(100vw - 28px));height:min(520px,calc(100vh - 190px));display:flex;flex-direction:column;background:#fff;border:1px solid var(--line,#E1E5EE);border-radius:22px;overflow:hidden;box-shadow:0 30px 70px -28px rgba(13,22,38,.4)}
.h-panel[hidden]{display:none}
#halo[data-side="l"] .h-panel{right:auto;left:0}
.h-panel .h-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line,#E1E5EE);background:var(--bg,#F6F7FA)}
.h-panel .h-head b{display:block;font-size:17px;letter-spacing:-.02em}.h-panel .h-head span{font-size:12.5px;color:var(--mut,#66728A)}
.h-cerrar{width:36px;height:36px;border:0;background:none;font-size:22px;cursor:pointer;color:var(--mut,#66728A);border-radius:50%;font-family:inherit}
.h-msgs{flex:1;overflow:auto;padding:14px 14px 6px;display:flex;flex-direction:column;gap:9px;overscroll-behavior:contain}
.h-m{max-width:88%;font-size:14.5px;line-height:1.45;padding:10px 13px;border-radius:16px;white-space:pre-wrap;word-break:break-word}
.h-m.h{align-self:flex-start;background:var(--bg,#F6F7FA);color:var(--ink,#0D1626);border-bottom-left-radius:5px}
.h-m.u{align-self:flex-end;background:#1E3A6E;color:#fff;border-bottom-right-radius:5px}
.h-m.pens{color:var(--mut,#66728A);animation:hpe 1.2s ease-in-out infinite}@keyframes hpe{50%{opacity:.45}}
.h-link{display:inline-block;margin-top:6px;font-weight:560;color:#1E3A6E;text-underline-offset:3px}
.h-sug{display:flex;flex-wrap:wrap;gap:7px;padding:4px 14px 10px}.h-sug[hidden]{display:none}
.h-sug button{font:inherit;font-size:13px;padding:8px 12px;border-radius:999px;border:1px solid var(--line,#E1E5EE);background:#fff;cursor:pointer;color:var(--ink2,#38455F)}
.h-sug button:hover{background:var(--bg,#F6F7FA)}
.h-panel form{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--line,#E1E5EE);align-items:center}
.h-panel input{flex:1;min-width:0;height:44px;border:1px solid var(--line,#E1E5EE);border-radius:999px;padding:0 16px;font:inherit;font-size:16px;color:var(--ink,#0D1626);outline:0;background:#fff}
.h-panel input:focus{border-color:#1E3A6E}
.h-panel form button{width:44px;height:44px;border-radius:50%;border:0;background:var(--ink,#0D1626);color:#fff;cursor:pointer;display:grid;place-items:center;flex:none}
.h-panel form.esp button{opacity:.5}
.h-panel form .h-mic{background:#fff;color:var(--ink,#0D1626);border:1px solid var(--line,#E1E5EE)}
.h-panel form .h-mic:hover{background:var(--bg,#F6F7FA)}
.h-panel form .h-mic[hidden]{display:none}
.h-panel form .h-mic.rec{background:#A4574B;border-color:#A4574B;color:#fff;animation:hrec 1.1s ease-in-out infinite}
@keyframes hrec{50%{opacity:.6}}
.h-m.voz::before{content:'Nota de voz · ';opacity:.7;font-size:12px}
.h-m.aviso{color:var(--mut,#66728A);font-size:13.5px}
.h-oir{margin-top:8px;min-height:36px;padding:6px 14px;border:1px solid var(--line,#E1E5EE);border-radius:999px;background:#fff;color:#1E3A6E;font:560 12.5px system-ui,sans-serif;cursor:pointer}
.h-oir:hover{background:var(--bg,#F6F7FA)}.h-oir.on{background:#1E3A6E;color:#fff;border-color:#1E3A6E}.h-oir:disabled{opacity:.6;cursor:default}
.h-panel form svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:700px){
  #halo{width:58px;height:58px;bottom:92px;left:calc(100% - 72px)}
  #halo[data-side="l"]{left:14px}
  .h-mascot{width:58px;height:58px}
  #halo.abierto{left:calc(100% - 72px)}
  .h-panel{position:fixed;left:12px;right:12px;bottom:84px;width:auto;height:min(70vh,560px)}
  #halo[data-side="l"] .h-panel{left:12px}
}
@media(prefers-reduced-motion:reduce){#halo{transition:none}.h-bob,.h-sombra,.h-orb,.h-oj,.h-mascot.habla .h-sat,.h-m.pens,.h-panel form .h-mic.rec{animation:none}.h-bub{transition:none}}

/* móvil: el aviso no tapa las fotos; globo chico y breve */
@media(max-width:560px){.h-bub{width:min(236px,calc(100vw - 120px));padding:10px 12px 6px;bottom:74px}.h-bub p{font-size:13px;line-height:1.38}.h-bub-a{margin-top:4px}}
