/* Clippys mycket tveksamma felsökning */
.ktff-clippy{bottom:145px;transition:opacity .35s,transform .35s}.ktff-clippy.is-away,.ktff-clippy.is-paused{opacity:0;transform:translateY(38px);pointer-events:none}.ktff-clippy.is-glitch{z-index:12500;opacity:1;transform:none;pointer-events:auto;filter:hue-rotate(75deg) saturate(1.8);animation:ktff-clippy-glitch .22s steps(2,end) infinite}.ktff-clippy.is-glitch .ktff-clippy-bubble{background:#b9ff9a;box-shadow:4px 4px 0 #003800}@keyframes ktff-clippy-glitch{50%{transform:translate(3px,-2px) skew(-2deg)}}@media(max-width:600px){.ktff-clippy{bottom:115px}}
@media(prefers-reduced-motion:reduce){.ktff-clippy-attack.is-armed .ktff-clippy-threat{transform:translateX(-50%) scale(1);opacity:1}.ktff-clippy-attack.is-armed .ktff-clippy-rifle{transform:translateX(0) rotate(-5deg) scale(1);opacity:1}}

/* Clippy-bilden används både i tipsrutan och i attacksekvensen. */
.ktff-clippy{right:24px}.ktff-clippy-character{width:104px;height:94px;overflow:visible;filter:none}.ktff-clippy-image{display:block;width:104px;height:94px;object-fit:contain;filter:drop-shadow(3px 4px 0 #000)}.ktff-clippy-big{left:-3px;top:38px;width:154px;height:140px;font-size:0;filter:none}.ktff-clippy-big img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(5px 6px 0 #000)}@media(max-width:600px){.ktff-clippy{right:14px}.ktff-clippy-character{width:82px;height:75px}.ktff-clippy-image{width:82px;height:75px}.ktff-clippy-big{width:138px;height:126px}}

.ktff-clippy-attacker{position:absolute;z-index:5;left:50%;top:50%;width:270px;height:235px;transform:translate(58vw,55vh) scale(.25) rotate(-18deg);opacity:0;pointer-events:none}.ktff-clippy-attack.is-centering .ktff-clippy-attacker{animation:ktff-clippy-arrive .68s cubic-bezier(.2,.9,.25,1.18) forwards}.ktff-clippy-threat{position:absolute;left:50%;top:-44px;width:max-content;max-width:min(86vw,430px);transform:translateX(-50%) scale(.7);padding:10px 16px;background:#fffbd5;color:#111;border:3px solid #111;border-radius:14px;box-shadow:4px 5px 0 #000;font:bold clamp(.9rem,2.2vw,1.35rem) Tahoma,Verdana,sans-serif;opacity:0}.ktff-clippy-threat:after{content:'';position:absolute;left:46%;bottom:-18px;border:9px solid transparent;border-top-color:#111}.ktff-clippy-attack.is-armed .ktff-clippy-threat{animation:ktff-clippy-say .3s ease-out forwards}.ktff-clippy-big{position:absolute;left:13px;top:44px;width:120px;height:145px;font-size:7.8rem;line-height:1;transform:rotate(-12deg);filter:drop-shadow(5px 6px 0 #000)}.ktff-clippy-big-eyes{position:absolute;z-index:2;top:31px;left:38px;display:flex;gap:7px}.ktff-clippy-big-eyes i{display:block;width:14px;height:18px;background:#fff;border:3px solid #111;border-radius:50%;box-shadow:inset 3px -4px 0 #3991ed}.ktff-clippy-rifle{position:absolute;z-index:7;left:91px;top:117px;width:166px;height:30px;background:#353b3e;border:4px solid #090909;box-shadow:inset 0 5px #737b7f,4px 5px 0 rgba(0,0,0,.7);transform:translateX(-35px) rotate(-5deg) scale(.2);transform-origin:left center;opacity:0}.ktff-clippy-rifle:before{content:'';position:absolute;right:-58px;top:6px;width:58px;height:11px;background:#222;border:4px solid #090909;border-left:0}.ktff-clippy-rifle:after{content:'';position:absolute;left:55px;top:25px;width:22px;height:51px;background:#2b2f31;border:4px solid #090909;transform:skew(-10deg)}.ktff-clippy-rifle i{position:absolute;left:12px;top:-17px;width:61px;height:18px;background:#555d61;border:4px solid #090909}.ktff-clippy-rifle b{position:absolute;right:-92px;top:-22px;width:34px;height:58px;clip-path:polygon(0 39%,65% 39%,100% 0,88% 43%,100% 100%,63% 57%,0 57%);background:#fff45c;opacity:0;filter:drop-shadow(0 0 12px #ff8a00)}.ktff-clippy-rifle span{position:absolute;left:-36px;top:0;width:39px;height:28px;background:#6f431e;border:4px solid #090909}.ktff-clippy-attack.is-armed .ktff-clippy-rifle{animation:ktff-clippy-arm .32s .08s cubic-bezier(.15,.9,.25,1.35) forwards}.ktff-clippy-attack.is-firing .ktff-clippy-rifle{opacity:1;transform:translateX(0) rotate(-5deg) scale(1);animation:ktff-clippy-recoil .13s steps(2,end) infinite}.ktff-clippy-attack.is-firing .ktff-clippy-rifle b{animation:ktff-clippy-muzzle .13s steps(2,end) infinite}.ktff-clippy-attack.is-firing .ktff-clippy-big{animation:ktff-clippy-rattle .13s steps(2,end) infinite}.ktff-clippy-attack.is-black .ktff-clippy-attacker,.ktff-clippy-attack.is-booting .ktff-clippy-attacker{display:none}@keyframes ktff-clippy-arrive{0%{transform:translate(58vw,55vh) scale(.25) rotate(-18deg);opacity:0}100%{transform:translate(-50%,-50%) scale(1) rotate(0);opacity:1}}@keyframes ktff-clippy-say{to{transform:translateX(-50%) scale(1);opacity:1}}@keyframes ktff-clippy-arm{to{transform:translateX(0) rotate(-5deg) scale(1);opacity:1}}@keyframes ktff-clippy-recoil{50%{transform:translateX(-10px) rotate(-7deg) scale(1)}}@keyframes ktff-clippy-muzzle{50%{opacity:1}}@keyframes ktff-clippy-rattle{50%{transform:translate(-3px,2px) rotate(-15deg)}}@media(max-width:540px){.ktff-clippy-attacker{width:230px;transform:translate(58vw,55vh) scale(.2) rotate(-18deg)}.ktff-clippy-big{left:0}.ktff-clippy-rifle{left:72px;transform-origin:left center}.ktff-clippy-threat{top:-38px}}@media(prefers-reduced-motion:reduce){.ktff-clippy-attack.is-centering .ktff-clippy-attacker{animation:none;transform:translate(-50%,-50%);opacity:1}.ktff-clippy-attack.is-armed .ktff-clippy-threat,.ktff-clippy-attack.is-armed .ktff-clippy-rifle{animation:none;opacity:1}.ktff-clippy-attack.is-firing .ktff-clippy-rifle,.ktff-clippy-attack.is-firing .ktff-clippy-big{animation:none}}

/* Clippy blir träffad av sin egen felsökning och lämnar scenen utan omstart. */
.ktff-clippy-attack.is-hit{background:rgba(48,0,0,.8)}.ktff-clippy-attack.is-hit>p{background:#760000}.ktff-clippy-attack.is-hit .ktff-clippy-attacker{opacity:1;animation:ktff-clippy-hit .85s steps(4,end) forwards}.ktff-clippy-attack.is-hit .ktff-clippy-threat{opacity:1;transform:translateX(-50%) scale(1);background:#fff3b0}.ktff-clippy-attack.is-hit .ktff-clippy-rifle{opacity:1;animation:ktff-clippy-drop-rifle 1s ease-in forwards}.ktff-clippy-attack.is-falling .ktff-clippy-attacker{animation:ktff-clippy-fall 1.85s cubic-bezier(.45,0,1,.55) forwards}.ktff-clippy-attack.is-clearing{background:rgba(0,0,0,0)}.ktff-clippy-attack.is-clearing>[data-clippy-holes]{opacity:.25;transition:opacity 1.6s}.ktff-clippy-attack.is-clearing>p{opacity:.75;transition:opacity 1.2s}@keyframes ktff-clippy-hit{0%{transform:translate(-50%,-50%) rotate(0) scale(1)}25%{transform:translate(-59%,-48%) rotate(-15deg) scale(.96)}50%{transform:translate(-43%,-54%) rotate(12deg) scale(.93)}75%{transform:translate(-54%,-47%) rotate(-8deg) scale(.95)}100%{transform:translate(-50%,-50%) rotate(9deg) scale(.94)}}@keyframes ktff-clippy-drop-rifle{0%{transform:translateX(0) rotate(-5deg) scale(1)}100%{transform:translate(120px,230px) rotate(115deg) scale(.75);opacity:0}}@keyframes ktff-clippy-fall{0%{transform:translate(-50%,-50%) rotate(9deg) scale(.94);opacity:1}24%{transform:translate(-63%,-43%) rotate(-20deg) scale(.91);opacity:1}100%{transform:translate(-18%,115vh) rotate(330deg) scale(.72);opacity:.15}}@media(prefers-reduced-motion:reduce){.ktff-clippy-attack.is-hit .ktff-clippy-attacker,.ktff-clippy-attack.is-hit .ktff-clippy-rifle,.ktff-clippy-attack.is-falling .ktff-clippy-attacker{animation-duration:.25s}}
