yeti-companion{position:relative;display:block;width:100%;color:var(--color-ink,#35273e);font-family:var(--font-body,system-ui)}
yeti-companion .snow-stage{position:relative;height:350px;overflow:hidden;isolation:isolate;background:linear-gradient(#fff 40%,#f0f6fa 100%)}
yeti-companion .snow-heading{position:absolute;inset:18px 18px auto;display:flex;align-items:center;justify-content:space-between;z-index:4;font-size:13px}
yeti-companion .snow-ground{position:absolute;left:-20%;right:-20%;height:170px;bottom:-20px;background:radial-gradient(ellipse at 50% 100%,#dceaf4,transparent 72%);border-top:1px solid #dce8ef;border-radius:50% 50% 0 0}
yeti-companion .snow-yeti{position:absolute;width:180px;height:180px;left:50%;top:80px;transform:translateX(-50%);pointer-events:none}
yeti-companion .snow-yeti svg{display:block;width:100%;height:100%}
yeti-companion .toon-body,yeti-companion .toon-eyes{transform:none;animation:none;transition:none}
yeti-companion .snow-launcher,yeti-companion .snow-projectile{position:absolute;left:0;top:0;width:72px;height:72px;padding:0;border-radius:48% 52% 49% 51%;border:1px solid #bfd2df;background:radial-gradient(circle at 30% 24%,white 25%,#f1f8fc 55%,#c3d9e7);box-shadow:inset -5px -7px 9px #b5cedb55,2px 7px 14px #35273e20}
yeti-companion .snow-launcher:active{cursor:grabbing}
yeti-companion .snow-launcher span{color:#a3bbce;font:30px Georgia;display:block}
yeti-companion .snow-launcher:disabled{cursor:default}
yeti-companion .snow-launcher.is-spent{visibility:hidden;pointer-events:none}
yeti-companion .snow-projectile{z-index:6;pointer-events:none;will-change:transform}
yeti-companion .snow-aim{position:absolute;width:24px;height:24px;border:1px solid #8ea9bc;border-radius:50%;transform:translate(-50%,-50%);opacity:0;z-index:4;pointer-events:none}
yeti-companion .snow-aim:after{content:"";position:absolute;inset:9px;background:#8ea9bc;border-radius:50%}
yeti-companion .is-aiming .snow-aim{opacity:.75}
yeti-companion .snow-impact{position:absolute;pointer-events:none;z-index:7}
yeti-companion .snow-impact i{position:absolute;width:6px;height:6px;border:1px solid #d7e4ee;background:white;border-radius:50%;animation:snow-depth-impact .6s ease-out forwards}
@keyframes snow-depth-impact{from{transform:translate(-3px,-3px);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(.3);opacity:0}}
yeti-companion .snow-toolbar{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-top:1px solid #dce8ef;background:#fff;font:11px var(--font-utility,monospace)}
yeti-companion .snow-reload{padding:8px 12px;border:1px solid var(--color-ink,#35273e);background:#fff;box-shadow:2px 2px 0 var(--color-ink,#35273e);font:inherit}
yeti-companion .snow-reload:disabled{opacity:.35;cursor:default}
yeti-companion .snow-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(prefers-reduced-motion:reduce){yeti-companion .snow-impact i{animation:none;opacity:0}}

yeti-companion .snow-rack{display:flex;gap:10px;align-items:center}
yeti-companion .snow-slot{display:block;width:44px;height:44px;border-radius:50%;background:#f4f8fb;box-shadow:inset 0 1px 3px #b9ced644}
yeti-companion .snow-launcher{position:relative;left:auto;top:auto;width:44px;height:44px;transform:none;cursor:grab;touch-action:none;z-index:5}
yeti-companion .snow-launcher span{font-size:20px}
yeti-companion .snow-toolbar{gap:12px;min-height:76px}
yeti-companion .snow-reload{white-space:nowrap}
@media(max-width:420px){yeti-companion .snow-toolbar{padding:12px 10px;gap:8px}yeti-companion .snow-rack{gap:5px}yeti-companion .snow-reload{padding:8px;font-size:10px}}

/* A hit leaves a brief powder mark and a single blink over the idle breathing. */
yeti-companion .snow-impact i{width:var(--size,6px);height:var(--size,6px)}
yeti-companion .snow-impact.on-yeti i{box-shadow:0 1px 3px #9eb8ca66;animation-duration:.8s}
yeti-companion .snow-hit-mark{position:absolute;left:-15px;top:-11px;width:30px;height:22px;border-radius:43% 57% 48% 52%;background:radial-gradient(ellipse at 40% 35%,white 40%,#e0edf6 100%);box-shadow:0 1px 4px #a2bbcf77;animation:yeti-snow-mark 1.2s ease-out forwards}
@keyframes yeti-snow-mark{0%{opacity:0;transform:scale(.6)}15%,45%{opacity:.95;transform:scale(1)}100%{opacity:0;transform:translateY(5px) scale(.85)}}
yeti-companion .snow-yeti.is-hit .toon-eyes{transform-box:fill-box;transform-origin:center;animation:yeti-hit-blink .38s ease-in-out 1}
@keyframes yeti-hit-blink{0%,100%{transform:scaleY(1)}40%,60%{transform:scaleY(.12)}}
@media(prefers-reduced-motion:reduce){yeti-companion .snow-yeti.is-hit .toon-eyes{animation:none}yeti-companion .snow-hit-mark{animation:yeti-hit-fade .8s linear forwards}}
@keyframes yeti-hit-fade{from{opacity:.9}to{opacity:0}}

/* Anchor the breath at the feet so the head rises without floating off the snow. */
yeti-companion .toon-body{transform-box:fill-box;transform-origin:50% 100%;animation:yeti-breathe 3.6s ease-in-out infinite}
@keyframes yeti-breathe{0%,100%{transform:scale(1.003,.997)}50%{transform:scale(.997,1.008)}}
@media(prefers-reduced-motion:reduce){yeti-companion .toon-body{animation:none;transform:none}}
