.asoc-tickle-layer{position:fixed;inset:0;z-index:200000;pointer-events:none;display:grid;place-items:center;overflow:hidden;isolation:isolate;color:#fff}
.asoc-tickle-layer.is-observer{place-items:start center;padding-top:12vh}
.asoc-tickle-stage{position:relative;display:grid;justify-items:center;gap:12px;min-width:min(390px,85vw);max-width:90vw;isolation:isolate;animation:tickle-appear .32s ease-out both}
.asoc-tickle-layer.is-observer .asoc-tickle-stage{min-width:0;transform-origin:top center}
.asoc-tickle-caption{display:grid;gap:6px;text-align:center;background:rgba(15,10,29,.94);border:1px solid #a787d4;box-shadow:0 12px 40px #000a,0 0 28px #7b36a633;border-radius:16px;padding:16px 25px;max-width:90vw}
.asoc-tickle-caption strong{font-size:clamp(16px,2vw,25px);letter-spacing:.08em}
.asoc-tickle-caption span{font-size:clamp(12px,1.5vw,17px);overflow-wrap:anywhere}
.asoc-tickle-intro{font-weight:800;letter-spacing:.25em;font-size:clamp(11px,1.2vw,14px);color:#e6ccff;text-shadow:0 0 14px #a05aff;animation:tickle-intro .5s ease-out both}
.asoc-tickle-face{display:grid;justify-items:center;gap:4px}
.asoc-tickle-face-icon{font-size:clamp(65px,10vw,112px);filter:drop-shadow(0 0 24px #bc76dfaa);animation:tickle-wobble .17s ease-in-out 4 alternate .47s}
.asoc-tickle-face-name{max-width:80vw;overflow-wrap:anywhere;font-size:19px;font-weight:800;text-shadow:0 2px 6px #000}
.asoc-tickle-feather{position:absolute;z-index:-1;top:32%;font-size:clamp(52px,9vw,112px);filter:drop-shadow(0 0 10px #efddff);animation:tickle-feather-left 1.65s ease-out .2s both}
.asoc-tickle-feather.feather-left{left:-26%}
.asoc-tickle-feather.feather-right{right:-26%;animation-name:tickle-feather-right}
.asoc-tickle-particles{position:absolute;inset:-50% -45%;overflow:visible;z-index:-1}
.asoc-tickle-particle{position:absolute;left:calc(4% + var(--i)*7%);top:70%;font-size:clamp(18px,3vw,38px);opacity:0;animation:tickle-particle 1.6s ease-out calc(.7s + var(--i)*58ms) both}
.asoc-tickle-sound{pointer-events:auto;border:1px solid #aaa5;border-radius:30px;background:#1d1530dd;color:#e7def4;padding:5px 12px;font-size:12px;cursor:pointer}
.asoc-tickle-layer.is-attacker .asoc-tickle-caption{border-color:#8dcda2}
.asoc-tickle-layer.is-observer .asoc-tickle-caption{padding:10px 18px;box-shadow:0 4px 20px #0008}
.asoc-tickle-layer.is-observer .asoc-tickle-caption strong{font-size:14px}
.asoc-tickle-layer.is-observer .asoc-tickle-caption span{font-size:12px}
.asoc-tickle-layer.is-angry .asoc-tickle-caption{border-color:#e05056;box-shadow:0 12px 40px #000a,0 0 40px #e0273b55}
.asoc-tickle-layer.is-broker .asoc-tickle-caption,.asoc-tickle-layer.is-cursed .asoc-tickle-caption{border-color:#9c4fea;box-shadow:0 12px 40px #000a,0 0 36px #832ad077}
.asoc-tickle-layer.is-cursed .asoc-tickle-feather{filter:drop-shadow(0 0 18px #9f36eb) hue-rotate(55deg)}
.asoc-tickle-layer.is-revenge .asoc-tickle-feather{animation-duration:1.05s}
.asoc-tickle-layer.is-victim:not(.is-reduced){background:radial-gradient(ellipse,#6e20811a,transparent 60%)}
@keyframes tickle-appear{from{opacity:0;scale:.84}to{opacity:1;scale:1}}
@keyframes tickle-intro{from{opacity:0;translate:0 -22px}to{opacity:1;translate:0 0}}
@keyframes tickle-wobble{from{transform:rotate(-12deg) scale(.94)}to{transform:rotate(12deg) scale(1.1)}}
@keyframes tickle-feather-left{0%{opacity:0;transform:translate(-45vw,-28vh) rotate(-45deg)}40%{opacity:1}75%{opacity:1;transform:translate(90px,-10px) rotate(25deg)}100%{opacity:0;transform:translate(60px,20px) rotate(-20deg)}}
@keyframes tickle-feather-right{0%{opacity:0;transform:translate(45vw,-28vh) rotate(45deg)}40%{opacity:1}75%{opacity:1;transform:translate(-90px,-10px) rotate(-25deg)}100%{opacity:0;transform:translate(-60px,20px) rotate(20deg)}}
@keyframes tickle-particle{0%{opacity:0;transform:translateY(35px) scale(.6)}25%{opacity:1}100%{opacity:0;transform:translateY(-210px) rotate(55deg) scale(1.2)}}
@media(prefers-reduced-motion:reduce){.asoc-tickle-layer *{animation:none!important;transition:none!important}.asoc-tickle-stage{scale:1}.asoc-tickle-face-icon{filter:none}}
