body{margin:0;background:#FFFFFF}
a{color:#111111}a:hover{color:#2F6BFF}
.kf *{box-sizing:border-box}
.kf .mono{font-family:'Geist Mono',ui-monospace,monospace;letter-spacing:.02em}
.kf .wrap{max-width:1240px;margin:0 auto;padding:0 40px}
/* rays: draw-in spark */
.kf .ray{stroke-dasharray:1;stroke-dashoffset:0}
.kf .spark .ray{animation:kf-ray 2.4s ease-out infinite}
.kf .spark .ray.r2{animation-delay:.08s}.kf .spark .ray.r3{animation-delay:.16s}
@keyframes kf-ray{0%,30%{stroke-dashoffset:1}55%{stroke-dashoffset:0}85%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
.kf .spark .cur{transform-box:fill-box;transform-origin:0 0;animation:kf-click 2.4s ease-in-out infinite}
@keyframes kf-click{0%,20%{transform:translate(26px,26px) scale(1)}28%{transform:translate(26px,26px) scale(.86)}36%,100%{transform:translate(26px,26px) scale(1)}}
/* logo hover: rays pop */
.kf .logo .ray{transition:stroke-width .2s}
.kf .logo:hover .ray{animation:kf-ray .7s ease-out}
.kf .logo:hover .word{animation:kf-jelly .6s}
/* nav links: tilt + tricolor underline */
.kf .nl{position:relative;color:#3A3A3A;text-decoration:none;font-size:15px;font-weight:500;padding:12px 2px;display:inline-block;transition:transform .2s}
.kf .nl::after{content:"";position:absolute;left:0;right:0;bottom:6px;height:3px;border-radius:3px;background:linear-gradient(90deg,#FF3D9A 0 33%,#FFC21A 33% 66%,#2F6BFF 66%);transform:scaleX(0);transform-origin:left;transition:transform .25s}
.kf .nl:hover{transform:rotate(-4deg);color:#111111}
.kf .nl:hover::after{transform:scaleX(1)}
/* buttons: swap text + wiggle */
.kf .btn{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 26px;border-radius:999px;font-weight:600;font-size:16px;text-decoration:none;overflow:hidden;transition:transform .2s;border:0;cursor:pointer;font-family:inherit}
.kf .btn .t1,.kf .btn .t2{display:flex;align-items:center;gap:10px;transition:transform .3s cubic-bezier(.5,1.8,.5,1),opacity .2s}
.kf .btn .t2{position:absolute;inset:0;justify-content:center;transform:translateY(110%);opacity:0}
.kf .btn:hover{transform:rotate(-2deg) scale(1.05)}
.kf .btn:hover .t1{transform:translateY(-110%);opacity:0}
.kf .btn:hover .t2{transform:translateY(0);opacity:1}
/* jelly words */
.kf .jelly{display:inline-block;cursor:default}
.kf .jelly:hover{animation:kf-jelly .7s}
@keyframes kf-jelly{0%{transform:scale(1,1)}30%{transform:scale(1.25,.75)}40%{transform:scale(.75,1.25)}55%{transform:scale(1.15,.85)}70%{transform:scale(.95,1.05)}100%{transform:scale(1,1)}}
.kf .party{display:inline-flex}
.kf .party span{display:inline-block;transition:transform .25s cubic-bezier(.5,2,.5,1),color .2s}
.kf .party:hover span:nth-child(3n+1){color:#FF3D9A;transform:translateY(-14px) rotate(-10deg)}
.kf .party:hover span:nth-child(3n+2){color:#FFC21A;transform:translateY(8px) rotate(8deg)}
.kf .party:hover span:nth-child(3n){color:#2F6BFF;transform:translateY(-6px) rotate(-4deg)}
/* cards */
.kf .card{position:relative;transition:transform .35s cubic-bezier(.3,1.4,.5,1)}
.kf .card:hover{transform:translateY(-8px) rotate(-1deg)}
.kf .card .shot{transition:transform .5s ease}
.kf .card:hover .shot{transform:scale(1.04) rotate(.8deg)}
.kf .card .sticker{position:absolute;top:-14px;right:-10px;padding:8px 14px;border-radius:999px;background:#FFC21A;color:#111111;font-weight:700;font-size:13px;transform:scale(0) rotate(-30deg);transition:transform .35s cubic-bezier(.4,2,.5,1);z-index:2}
.kf .card:hover .sticker{transform:scale(1) rotate(8deg)}
/* services: icon hops */
.kf .svc{transition:transform .3s cubic-bezier(.4,1.6,.5,1),background .2s}
.kf .svc:hover{transform:translateY(-6px);background:#FFFFFF;box-shadow:0 20px 40px rgba(17,17,17,.08)}
.kf .svc .ico{transition:transform .5s cubic-bezier(.4,2,.5,1)}
.kf .svc:hover .ico{transform:rotate(-12deg) scale(1.15) translateY(-4px)}
.kf .svc:nth-child(2n):hover .ico{transform:rotate(12deg) scale(1.15) translateY(-4px)}
/* steps: number flips */
.kf .step .num{display:inline-block;transition:transform .6s cubic-bezier(.4,1.6,.5,1)}
.kf .step:hover .num{transform:rotateY(360deg) scale(1.15)}
.kf .step{transition:background .2s}
.kf .step:hover{background:#FFFFFF}
/* packs: burst in corner */
.kf .pack{position:relative;transition:transform .3s cubic-bezier(.4,1.6,.5,1)}
.kf .pack:hover{transform:rotate(1.5deg) translateY(-6px)}
.kf .pack .burst{position:absolute;top:-22px;left:-22px;transform:scale(0) rotate(-45deg);transition:transform .35s cubic-bezier(.4,2,.5,1)}
.kf .pack:hover .burst{transform:scale(1) rotate(0)}
/* marquee */
.kf .marquee{display:flex;width:max-content;animation:kf-marq 30s linear infinite}
.kf .band:hover .marquee{animation-duration:6s}
@keyframes kf-marq{to{transform:translateX(-50%)}}
/* floating confetti bits in hero */
.kf .bob{animation:kf-bob 5s ease-in-out infinite}
.kf .bob.b2{animation-delay:-1.6s}.kf .bob.b3{animation-delay:-3.2s}
@keyframes kf-bob{0%,100%{translate:0 0;rotate:0deg}50%{translate:0 -16px;rotate:25deg}}
/* dodge button */
.kf .dodge{transition:transform .25s cubic-bezier(.4,1.8,.5,1)}
/* headline: every word its own joke */
.kf .fx{display:inline-block;position:relative;cursor:default}
.kf .fx-glitch:hover{animation:kf-glitch .45s steps(2) infinite}
@keyframes kf-glitch{0%{transform:translate(0,0);text-shadow:-4px 0 #FF3D9A,4px 0 #2F6BFF}25%{transform:translate(-3px,2px) skewX(-6deg);text-shadow:4px 0 #FF3D9A,-4px 0 #FFC21A}50%{transform:translate(3px,-2px);text-shadow:-2px 2px #2F6BFF,2px -2px #FF3D9A}75%{transform:translate(-2px,0) skewX(4deg);text-shadow:3px 0 #FFC21A,-3px 0 #2F6BFF}100%{transform:translate(0,0);text-shadow:none}}
.kf .fx-spin{transition:transform .7s cubic-bezier(.4,1.8,.5,1),color .2s}
.kf .fx-spin:hover{transform:rotate(360deg) scale(1.35);color:#FFC21A}
.kf .fx-hang{transform-origin:10% 12%}
.kf .fx-hang::before{content:"";position:absolute;left:7%;top:8%;width:12px;height:12px;border-radius:50%;background:#FFC21A;box-shadow:0 0 0 3px #111111;transform:scale(0);transition:transform .2s cubic-bezier(.4,2,.5,1)}
.kf .fx-hang:hover::before{transform:scale(1)}
.kf .fx-hang:hover{animation:kf-swing 1.4s ease-out}
@keyframes kf-swing{0%{transform:rotate(0)}15%{transform:rotate(16deg)}35%{transform:rotate(-9deg)}55%{transform:rotate(6deg)}75%{transform:rotate(-3deg)}100%{transform:rotate(0)}}
.kf .fx-wink{transition:transform .3s cubic-bezier(.4,2,.5,1),color .2s}
.kf .fx-wink:hover{transform:rotate(-12deg) translateY(-10px) skewX(-10deg);color:#FF3D9A}
.kf .fx-stretch{transform-origin:left center;transition:transform .45s cubic-bezier(.4,1.8,.5,1),color .2s}
.kf .fx-stretch:hover{transform:scaleX(1.3) scaleY(.85);color:#2F6BFF}
/* magic tip chip */
.kf .magic svg .tw{animation:kf-twinkle 1.6s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.kf .magic svg .tw.t2{animation-delay:.5s}.kf .magic svg .tw.t3{animation-delay:1s}
@keyframes kf-twinkle{0%,100%{transform:scale(.3);opacity:.3}50%{transform:scale(1.15);opacity:1}}
.kf .magic:hover .wand{animation:kf-wave .6s ease-in-out}
@keyframes kf-wave{0%,100%{transform:rotate(0)}30%{transform:rotate(-25deg)}65%{transform:rotate(15deg)}}
.kf .magic .wand{transform-box:fill-box;transform-origin:10% 90%}
/* faq */
.kf .faq{border-bottom:2px solid #111111}
.kf .faq summary{list-style:none;cursor:pointer}
.kf .faq summary::-webkit-details-marker{display:none}
.kf .faq .plus{transition:transform .35s cubic-bezier(.4,1.8,.5,1)}
.kf .faq summary:hover .plus{transform:rotate(90deg) scale(1.1)}
.kf .faq[open] .plus{transform:rotate(45deg)}
.kf .faq[open] summary:hover .plus{transform:rotate(135deg) scale(1.1)}
.kf .faq summary:hover span:first-child{transform:translateX(6px)}
.kf .faq summary span:first-child{transition:transform .25s}
.kf .faq[open] p{animation:kf-faq .35s ease-out}
@keyframes kf-faq{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media (max-width:900px){.kf .faqgrid{grid-template-columns:minmax(0,1fr) !important;gap:30px !important}.kf .faq p{padding-right:4px !important}}
/* spoiler */
.kf .spoiler summary{list-style:none;cursor:pointer;display:inline-flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:32px}
.kf .spoiler summary::-webkit-details-marker{display:none}
.kf .spoiler .sp-hint{padding:4px 10px;border-radius:999px;background:#F4F4F2;color:#111111;transition:transform .25s cubic-bezier(.4,2,.5,1),background .2s}
.kf .spoiler summary:hover .sp-hint{transform:rotate(-3deg) scale(1.06);background:#FFC21A}
.kf .spoiler[open] .sp-hint{background:#111111;color:#FFFFFF}
.kf .spoiler[open] ol{animation:kf-faq .35s ease-out}
/* contact form */
.kf .field{display:flex;flex-direction:column;gap:8px}
.kf .field label{font-size:14px;font-weight:600}
.kf .field input,.kf .field textarea{font:inherit;font-size:16px;color:#111111;background:#F4F4F2;border:2px solid transparent;border-radius:14px;padding:14px 16px;min-height:52px;outline:none;transition:border-color .2s,background .2s,transform .2s;resize:vertical}
.kf .field input::placeholder,.kf .field textarea::placeholder{color:#8A8A8A}
.kf .field input:hover,.kf .field textarea:hover{background:#EDEDEA}
.kf .field input:focus,.kf .field textarea:focus{border-color:#2F6BFF;background:#FFFFFF;transform:translateY(-2px)}
.kf .field:nth-child(3n) input:focus,.kf .field:nth-child(3n) textarea:focus{border-color:#FF3D9A}
.kf .cok{animation:kf-pop2 .5s cubic-bezier(.4,1.8,.5,1)}
@keyframes kf-pop2{from{transform:scale(.8) rotate(-2deg);opacity:0}to{transform:none;opacity:1}}
@media (max-width:900px){.kf .cform{grid-template-columns:minmax(0,1fr) !important}}
/* secret code card */
.kf .scard-wrap{position:fixed;inset:0;z-index:9500;background:rgba(17,17,17,.55);display:flex;align-items:center;justify-content:center;padding:16px;animation:kf-faq .3s ease-out}
.kf .scard{max-width:520px;width:100%;background:#111111;color:#FFFFFF;border-radius:32px;padding:40px;display:flex;flex-direction:column;gap:18px;box-shadow:0 40px 80px rgba(0,0,0,.4);animation:kf-pop2 .5s cubic-bezier(.4,1.8,.5,1)}
.kf .scode{font-size:40px;font-weight:500;letter-spacing:.12em;text-align:center;padding:18px;border-radius:18px;border:3px dashed #FFC21A;background:linear-gradient(90deg,#FF3D9A,#FFC21A,#2F6BFF);-webkit-background-clip:text;background-clip:text;color:transparent}
[hidden]{display:none !important}
/* secrets */
.kf .wine{background:none;border:0;padding:0;font:inherit;color:inherit;text-decoration:underline dotted #C9C9C4;text-underline-offset:3px}
.kf .wine:hover{color:#7B2D8E}
.kf .gold .gdot{background:radial-gradient(circle at 35% 30%,#FFF3B0 0 18%,#FFC21A 45%,#D99A00 100%) !important;animation:kf-bob 5s ease-in-out -1.6s infinite;transition:transform .25s cubic-bezier(.4,2,.5,1)}
.kf .gold .gdot::after{content:"";position:absolute;top:-6px;right:-6px;width:8px;height:8px;background:#FFE58A;clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);animation:kf-twinkle 1.6s ease-in-out infinite}
.kf .gold:hover .gdot{animation-play-state:paused;transform:scale(1.35)}
.kf .gold:active .gdot{transform:scale(.9)}
.kf .bubble{animation:kf-pop .35s cubic-bezier(.4,2,.5,1)}
.kf .bubble::after{content:"";position:absolute;left:50%;bottom:-8px;width:16px;height:16px;background:#111111;transform:translateX(-50%) rotate(45deg);border-radius:3px}
@keyframes kf-pop{from{transform:translateX(-50%) scale(.4);opacity:0}to{transform:translateX(-50%) scale(1);opacity:1}}
.kf .toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);max-width:calc(100% - 32px);padding:16px 24px;border-radius:18px;background:#111111;color:#FFFFFF;font-weight:600;font-size:16px;z-index:9000;box-shadow:0 20px 40px rgba(0,0,0,.25);animation:kf-toast .4s cubic-bezier(.4,1.8,.5,1);text-align:center}
@keyframes kf-toast{from{transform:translate(-50%,40px);opacity:0}to{transform:translate(-50%,0);opacity:1}}
.kf .tracker{position:fixed;left:20px;bottom:24px;padding:10px 14px;border-radius:999px;background:#FFFFFF;border:2px solid #111111;font-size:13px;z-index:8999}
/* party mode */
.kf.party-on{animation:kf-disco 1.6s steps(1) infinite}
@keyframes kf-disco{0%{background:#FFFFFF}25%{background:#FFF0F7}50%{background:#FFF8DE}75%{background:#EEF3FF}}
.kf.party-on h1,.kf.party-on h2{animation:kf-dance .5s ease-in-out infinite alternate}
@keyframes kf-dance{from{transform:rotate(-1.5deg) translateY(0)}to{transform:rotate(1.5deg) translateY(-6px)}}
.kf.party-on .marquee{animation-duration:4s}
.kf.party-on .card{animation:kf-dance .6s ease-in-out infinite alternate}
@media (prefers-reduced-motion:reduce){.kf.party-on,.kf.party-on h1,.kf.party-on h2,.kf.party-on .card{animation:none}}
/* confetti pieces */
.kf .piece{position:absolute;pointer-events:none;transition:transform 1.05s cubic-bezier(.15,.75,.35,1),opacity 1.15s ease-in}
.kf .work{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:28px}
.kf .s7{grid-column:span 7}.kf .s5{grid-column:span 5}.kf .s4{grid-column:span 4}
.kf .g4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.kf .g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.kf .hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:40px;align-items:center}
@media (max-width:900px){
.kf .wrap{padding:0 20px}
.kf .hero,.kf .work,.kf .g4,.kf .g3{grid-template-columns:minmax(0,1fr)}
.kf .s7,.kf .s5,.kf .s4{grid-column:span 1}
.kf .hidesm{display:none}
}
@media (prefers-reduced-motion:reduce){
.kf .spark .ray,.kf .spark .cur,.kf .marquee,.kf .bob{animation:none}
.kf .piece{transition:none}
}