/* Kalpavriksha Learning help chatbot – EPPH */
#kvb-root{--kv-p:#6f42b6;--kv-pd:#4d2788;--kv-deep:#35205b;--kv-y:#f4c84c;--kv-ys:#fff4c9;--kv-bg:#faf7ff;--kv-line:#e7ddf2;--kv-ink:#241242;--kv-g:#2fa85a;
 position:fixed;right:18px;bottom:18px;z-index:2147483000;font-family:"Poppins","Segoe UI",system-ui,-apple-system,Arial,sans-serif;color:var(--kv-ink)}
#kvb-root *{box-sizing:border-box}
.kvb-launch{width:84px;height:84px;border:0;border-radius:50%;padding:0;cursor:pointer;background:radial-gradient(circle at 35% 30%,#fff 0,var(--kv-ys) 55%,var(--kv-y) 100%);box-shadow:0 10px 28px rgba(53,32,91,.35);display:flex;align-items:center;justify-content:center;transition:transform .2s}
.kvb-launch:hover{transform:scale(1.07)}
.kvb-launch svg{width:78px;height:78px}
.kvb-greet{position:absolute;right:92px;bottom:40px;background:#fff;border:2px solid var(--kv-p);color:var(--kv-deep);font-weight:600;font-size:14px;padding:9px 14px;border-radius:16px 16px 4px 16px;white-space:nowrap;box-shadow:0 6px 18px rgba(53,32,91,.18);opacity:0;transform:translateY(8px) scale(.9);pointer-events:none;transition:all .35s}
.kvb-greet.show{opacity:1;transform:none;pointer-events:auto;cursor:pointer}
.kvb-greet b{color:var(--kv-p)}
.kvb-panel{position:absolute;right:0;bottom:96px;width:370px;max-width:calc(100vw - 24px);height:560px;max-height:calc(100vh - 120px);background:#fff;border-radius:22px;box-shadow:0 18px 50px rgba(53,32,91,.32);display:none;flex-direction:column;overflow:hidden;border:1px solid var(--kv-line)}
#kvb-root.open .kvb-panel{display:flex;animation:kvbIn .25s ease}
#kvb-root.open .kvb-greet{display:none}
@keyframes kvbIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.kvb-head{background:linear-gradient(135deg,var(--kv-p),var(--kv-deep));color:#fff;padding:10px 12px;display:flex;align-items:center;gap:10px}
.kvb-head .kvb-av{width:54px;height:54px;flex:0 0 54px;background:var(--kv-ys);border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--kv-y)}
.kvb-head .kvb-av svg{width:50px;height:50px}
.kvb-title{flex:1;line-height:1.2}
.kvb-title b{display:block;font-size:16px}
.kvb-title small{opacity:.85;font-size:12px}
.kvb-hbtn{background:rgba(255,255,255,.16);border:0;color:#fff;width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center}
.kvb-hbtn:hover{background:rgba(255,255,255,.3)}
.kvb-body{flex:1;overflow-y:auto;padding:14px;background:var(--kv-bg);display:flex;flex-direction:column;gap:10px}
.kvb-msg{max-width:86%;padding:10px 13px;border-radius:16px;font-size:14px;line-height:1.5;word-wrap:break-word}
.kvb-bot{background:#fff;border:1px solid var(--kv-line);border-bottom-left-radius:4px;align-self:flex-start}
.kvb-user{background:var(--kv-p);color:#fff;border-bottom-right-radius:4px;align-self:flex-end}
.kvb-bot a{color:var(--kv-p);font-weight:600}
.kvb-bot ol,.kvb-bot ul{margin:6px 0 4px 18px;padding:0}
.kvb-bot li{margin:2px 0}
.kvb-typing span{display:inline-block;width:7px;height:7px;margin:0 2px;background:var(--kv-p);border-radius:50%;animation:kvbDot 1s infinite}
.kvb-typing span:nth-child(2){animation-delay:.15s}.kvb-typing span:nth-child(3){animation-delay:.3s}
@keyframes kvbDot{0%,60%,100%{opacity:.25;transform:none}30%{opacity:1;transform:translateY(-4px)}}
.kvb-chips{display:flex;flex-wrap:wrap;gap:6px;padding:8px 12px;background:#fff;border-top:1px solid var(--kv-line)}
.kvb-chip{border:1.5px solid var(--kv-p);background:#fff;color:var(--kv-p);border-radius:999px;padding:5px 11px;font-size:12.5px;font-weight:600;cursor:pointer}
.kvb-chip:hover{background:var(--kv-p);color:#fff}
.kvb-form{display:flex;gap:6px;padding:10px 12px;background:#fff;border-top:1px solid var(--kv-line)}
.kvb-form input{flex:1;border:1.5px solid var(--kv-line);border-radius:999px;padding:10px 14px;font-size:14px;outline:0;min-width:0}
.kvb-form input:focus{border-color:var(--kv-p)}
.kvb-form button{border:0;border-radius:50%;width:42px;height:42px;flex:0 0 42px;cursor:pointer;font-size:17px}
.kvb-send{background:var(--kv-p);color:#fff}
.kvb-mic{background:var(--kv-ys);color:var(--kv-deep)}
.kvb-mic.on{background:#e8455a;color:#fff;animation:kvbPulse 1s infinite}
@keyframes kvbPulse{50%{box-shadow:0 0 0 6px rgba(232,69,90,.25)}}
/* worksheet chat choices */
.kvb-choice{max-width:94%}
.kvb-opts{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;max-height:230px;overflow-y:auto}
.kvb-opt{border:1.5px solid var(--kv-p);background:#fff;color:var(--kv-deep);border-radius:12px;padding:6px 10px;font:600 12.5px inherit;font-family:inherit;cursor:pointer;text-align:left}
.kvb-opt small{font-weight:400;color:#7a6c90}
.kvb-opt:hover{background:var(--kv-bg)}
.kvb-opt.on{background:var(--kv-p);color:#fff}.kvb-opt.on small{color:#eadcff}
.kvb-optbar{display:flex;gap:6px;margin-top:8px;justify-content:flex-end}
.kvb-go{background:var(--kv-y);border-color:var(--kv-y);color:var(--kv-deep)}
.kvb-done .kvb-opts,.kvb-done .kvb-optbar{opacity:.5;pointer-events:none}
/* ===== Kalpi mascot animation (pure CSS/SVG) ===== */
.kvb-launch,.kvb-av{position:relative}
.kvb-launch svg,.kvb-av svg{overflow:visible}
#kvb-root svg g{transform-box:view-box}
/* entrance pop */
.kvb-launch.kvm-enter{animation:kvmPop 1s cubic-bezier(.2,1.6,.4,1) both}
@keyframes kvmPop{0%{transform:scale(0) rotate(-25deg);opacity:0}55%{transform:scale(1.18) rotate(6deg);opacity:1}75%{transform:scale(.92) rotate(-3deg)}100%{transform:scale(1) rotate(0)}}
/* idle: breathing + leaf sway + blink */
.kvm-bob{transform-origin:50px 92px;animation:kvmBreath 3.2s ease-in-out infinite}
@keyframes kvmBreath{0%,100%{transform:translateY(0) scale(1,1)}50%{transform:translateY(-1.6px) scale(1.015,.985)}}
.kvm-leaves{transform-origin:50px 62px;animation:kvmSway 4s ease-in-out infinite}
@keyframes kvmSway{0%,100%{transform:rotate(-2.5deg)}50%{transform:rotate(2.5deg)}}
.kvm-lf1{transform-origin:36px 38px;animation:kvmLeaf 3s ease-in-out infinite}
.kvm-lf2{transform-origin:64px 38px;animation:kvmLeaf 3s ease-in-out -1.5s infinite}
.kvm-lf3{transform-origin:50px 26px;animation:kvmLeaf 3.6s ease-in-out -.8s infinite}
@keyframes kvmLeaf{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
.kvm-eyes{transition:transform .12s ease-out}
.kvm-eye{transform-origin:50px 42px;animation:kvmBlink 5s infinite}
.kvm-eye+.kvm-eye{animation-delay:.02s}
@keyframes kvmBlink{0%,93%,100%{transform:scaleY(1)}95.5%{transform:scaleY(.1)}}
.kvm-shadow{transform-origin:50px 95px;animation:kvmShadow 3.2s ease-in-out infinite}
@keyframes kvmShadow{50%{transform:scaleX(.92)}}
/* occasional wave & hop (JS adds class for ~1.3s) */
.kvm-arm{transform-origin:60px 74px}
.kvm-larm{transform-origin:40px 74px}
.kvm-wave .kvm-arm{animation:kvmWave 1.3s ease-in-out}
@keyframes kvmWave{0%,100%{transform:rotate(0)}15%,45%,75%{transform:rotate(-32deg)}30%,60%{transform:rotate(10deg)}}
.kvm-hop{transform-origin:50px 92px}
.kvm-hopnow .kvm-hop{animation:kvmHop .8s cubic-bezier(.3,.7,.4,1)}
@keyframes kvmHop{0%,100%{transform:translateY(0) scale(1)}15%{transform:translateY(0) scale(1.08,.9)}45%{transform:translateY(-12px) scale(.96,1.05)}75%{transform:translateY(0) scale(1.06,.94)}}
.kvm-hopnow .kvm-shadow,.kvm-jump .kvm-shadow{animation:kvmShadowHop .8s}
@keyframes kvmShadowHop{45%{transform:scaleX(.6);opacity:.07}}
/* happy jump + spin when chat opens / thanks */
.kvm-act{transform-origin:50px 55px}
.kvm-jump .kvm-hop{animation:kvmJump .9s cubic-bezier(.3,.7,.4,1)}
.kvm-jump .kvm-act{animation:kvmSpin .9s ease-in-out}
@keyframes kvmJump{0%,100%{transform:translateY(0)}12%{transform:translateY(2px) scale(1.06,.92)}50%{transform:translateY(-16px)}85%{transform:translateY(0) scale(1.05,.95)}}
@keyframes kvmSpin{0%,15%{transform:rotate(0)}70%,100%{transform:rotate(360deg)}}
.kvm-happy{display:none}
.kvm-jump .kvm-happy{display:inline}.kvm-jump .kvm-eyes{visibility:hidden}
.kvm-jump .kvm-arm,.kvm-jump .kvm-larm{animation:kvmArmsUp .9s ease-in-out}
@keyframes kvmArmsUp{30%,70%{transform:rotate(-25deg)}}
/* thinking: head tilt + thought dots */
.kvm-head{transform-origin:50px 64px}
.kvm-thought{opacity:0}
.kvm-mouth-think{display:none}
.kvm-thinking .kvm-head{animation:kvmTilt 1.6s ease-in-out infinite}
@keyframes kvmTilt{0%,100%{transform:rotate(-9deg)}50%{transform:rotate(-5deg) translateY(-.6px)}}
.kvm-thinking .kvm-mouth-smile{display:none}.kvm-thinking .kvm-mouth-think{display:inline}
.kvm-thinking .kvm-eyes{transform:translate(1.6px,-1.8px)!important}
.kvm-thinking .kvm-thought{opacity:1}
.kvm-thought circle{transform-box:fill-box;transform-origin:center;animation:kvmDots 1.1s ease-in-out infinite}
.kvm-thought circle:nth-child(2){animation-delay:.18s}.kvm-thought circle:nth-child(3){animation-delay:.36s}
@keyframes kvmDots{0%,100%{transform:scale(.5);opacity:.3}40%{transform:scale(1.1);opacity:1}}
.kvm-thinking .kvm-arm{animation:kvmChin 1.6s ease-in-out infinite}
@keyframes kvmChin{0%,100%{transform:rotate(-55deg)}50%{transform:rotate(-60deg)}}
/* talking: mouth + head bob + dancing leaves */
.kvm-mouth-talk{display:none}
.kvm-talking .kvm-mouth-smile{display:none}
.kvm-talking .kvm-mouth-talk{display:inline;transform-box:fill-box;transform-origin:center;animation:kvmTalk .2s infinite alternate}
@keyframes kvmTalk{from{transform:scale(1.1,.2)}to{transform:scale(1,1)}}
.kvm-talking .kvm-head{animation:kvmNod .5s ease-in-out infinite alternate}
@keyframes kvmNod{from{transform:rotate(-3deg) translateY(0)}to{transform:rotate(3deg) translateY(-1.2px)}}
.kvm-talking .kvm-leaves{animation:kvmSway .6s ease-in-out infinite}
.kvm-talking .kvm-lf{animation-duration:.45s}
.kvm-talking .kvm-larm{animation:kvmGesture .9s ease-in-out infinite alternate}
@keyframes kvmGesture{to{transform:rotate(14deg)}}
/* thanks burst */
.kvm-burst{position:absolute;left:50%;top:45%;width:0;height:0;pointer-events:none;z-index:3}
.kvm-burst i{position:absolute;left:-9px;top:-9px;font-style:normal;font-size:18px;line-height:18px;opacity:0;animation:kvmBurst 1.2s ease-out forwards}
@keyframes kvmBurst{0%{transform:translate(0,0) scale(.3);opacity:0}20%{opacity:1}70%{opacity:1}100%{transform:translate(var(--x),var(--y)) scale(1.15) rotate(20deg);opacity:0}}
.kvb-head{overflow:visible}
@media (max-width:480px){#kvb-root{right:12px;bottom:12px}
 .kvb-panel{position:fixed;right:8px;left:8px;bottom:104px;width:auto;max-width:none;height:auto;top:12px;max-height:none}
 .kvb-launch{width:72px;height:72px}.kvb-launch svg{width:66px;height:66px}
 .kvb-greet{right:80px;bottom:30px}}
@media (prefers-reduced-motion:reduce){#kvb-root *{animation:none!important;transition:none!important}.kvm-talking .kvm-mouth-talk{transform:scaleY(.6)}.kvm-burst{display:none}}
