/* =====================================================================
   Polish pass: motion, new sections, richer chat, animated admin
   (loaded after styles.css)
   ===================================================================== */
.btn{position:relative;overflow:hidden}
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.45);transform:scale(0);animation:rip .6s ease-out forwards;pointer-events:none}
.btn.ghost .ripple{background:rgba(77,138,150,.22)}
@keyframes rip{to{transform:scale(1);opacity:0}}

/* scroll progress + back to top */
.progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:80;pointer-events:none}
.progress i{display:block;height:100%;background:linear-gradient(90deg,var(--teal),var(--violet));transform-origin:left;transform:scaleX(0)}
body.view-admin .progress{display:none}
.totop{position:fixed;left:18px;bottom:18px;z-index:45;width:46px;height:46px;border-radius:50%;border:0;background:#222;color:#fff;font-size:20px;cursor:pointer;box-shadow:var(--shadow);animation:pop .25s}
.totop:hover{background:var(--teal-d)}

/* reveal (uses `translate` so it never fights tilt transforms) */
.rv{opacity:0;transform:none;translate:0 24px;transition:opacity .7s ease,translate .7s cubic-bezier(.2,.8,.2,1)}
.rv.in{opacity:1;translate:0 0}
.card.rv,.doc.rv{transition:opacity .7s ease,translate .7s cubic-bezier(.2,.8,.2,1),transform .25s ease-out,box-shadow .25s,border-color .25s}

/* hero */
.hero{position:relative}
.hero-l,.hero-r{position:relative;z-index:1}
.hero-bg{position:absolute;inset:-20px -48px 0;overflow:hidden;pointer-events:none;z-index:0}
.blob{position:absolute;border-radius:50%;filter:blur(50px);opacity:.55}
.b1{width:340px;height:340px;left:-80px;top:40px;background:#cfe6ea;animation:drift 14s ease-in-out infinite alternate}
.b2{width:300px;height:300px;right:5%;top:-60px;background:#d9d9fb;animation:drift 17s ease-in-out infinite alternate-reverse}
.b3{width:260px;height:260px;right:30%;bottom:-40px;background:#ffe3d3;animation:drift 19s ease-in-out infinite alternate}
@keyframes drift{to{transform:translate(60px,40px) scale(1.15)}}
.hero h1 .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em}
.hero h1 .w>span{display:inline-block;transform:translateY(115%);animation:wup .8s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:calc(var(--i) * 90ms + 150ms)}
@keyframes wup{to{transform:none}}
.ask{margin-top:14px;font-weight:600;color:var(--teal-d);min-height:1.6em}
.typed{color:var(--violet)}
.caret{display:inline-block;width:2px;height:1.1em;background:var(--violet);margin-left:2px;vertical-align:text-bottom;animation:blinkc 1s steps(1) infinite}
@keyframes blinkc{50%{opacity:0}}
.
.float{translate:calc(var(--mx,0) * 18px) calc(var(--my,0) * 18px);transition:translate .25s ease-out}
.mascot{animation:floaty 5s ease-in-out infinite}
@keyframes floaty{50%{transform:translateY(-10px)}}
.eye{transform-box:fill-box;transform-origin:center;animation:blink 5s infinite}
@keyframes blink{0%,93%,100%{transform:scaleY(1)}96%{transform:scaleY(.1)}}
.ring{transform-box:fill-box;transform-origin:center;animation:breathe 6s ease-in-out infinite}
@keyframes breathe{50%{transform:scale(1.05)}}
.orb{animation:floaty 7s ease-in-out infinite}.orb.o2{animation-duration:9s;animation-direction:reverse}
.twinkle{transform-box:fill-box;transform-origin:center;animation:twinkle 3s ease-in-out infinite}.twinkle.t2{animation-delay:1.2s}
@keyframes twinkle{50%{transform:scale(1.35) rotate(18deg);opacity:.7}}

/* insurance marquee */
.marquee{display:flex;align-items:center;gap:28px;padding:20px 0;border-block:1px solid var(--line)}
.marquee p{font-size:13px;color:var(--mut);white-space:nowrap;font-weight:600}
.mq-clip{flex:1;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.mq-track{display:flex;width:max-content;animation:mq 32s linear infinite}
.mq-clip:hover .mq-track{animation-play-state:paused}
.mq-track span{margin-right:56px;font-weight:700;color:#9ab4ba;font-size:18px;letter-spacing:-.01em;white-space:nowrap}
@keyframes mq{to{transform:translateX(-50%)}}

/* stats */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;padding:48px 0 8px}
.stats div{text-align:center}
.stats b{display:block;font-size:clamp(32px,4.4vw,52px);line-height:1.1;color:var(--teal);font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stats span{color:var(--mut);font-size:14px}

/* service cards: tilt + glow */
.card{transform:perspective(800px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .25s ease-out,box-shadow .25s;will-change:transform}
.card:hover{transform:perspective(800px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));translate:0 -6px}
.card::before{content:"";position:absolute;inset:0;background:radial-gradient(260px circle at var(--gx,50%) var(--gy,0%),rgba(255,255,255,.3),transparent 60%);opacity:0;transition:opacity .3s;pointer-events:none}
.card:hover::before{opacity:1}
.card .link svg{transition:transform .2s}.card .link:hover svg{transform:translateX(4px)}
.doc{transform:perspective(800px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}
.doc:hover{transform:perspective(800px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));translate:0 -4px}
.doc-av{transition:transform .4s cubic-bezier(.2,1.4,.4,1)}.doc:hover .doc-av{transform:scale(1.1) rotate(-4deg)}

/* before / after */
.ba{position:relative;height:clamp(150px,26vw,250px);border-radius:28px;overflow:hidden;background:linear-gradient(135deg,#f0a79a,#dd857f);box-shadow:var(--shadow);touch-action:pan-y;user-select:none}
.ba-layer{position:absolute;inset:0;width:100%;height:100%}
.ba-layer.before use{fill:#e9d48f;stroke:#c8a85a;stroke-width:1.5}
.ba-layer.after{clip-path:inset(0 0 0 var(--pos))}
.ba-layer.after use{fill:#fff;stroke:#d6e4e7;stroke-width:1.5}
.ba-tag{position:absolute;top:14px;background:rgba(0,0,0,.45);color:#fff;border-radius:99px;padding:4px 12px;font-size:12px;font-weight:700;pointer-events:none}
.ba-tag.l{left:14px}.ba-tag.r{right:14px}
.ba-handle{position:absolute;top:0;bottom:0;left:var(--pos);width:3px;background:#fff;transform:translateX(-50%);box-shadow:0 0 12px rgba(0,0,0,.25);pointer-events:none}
.ba-handle span{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:46px;height:46px;border-radius:50%;background:#fff;color:var(--teal-d);display:grid;place-items:center;font-size:20px;box-shadow:0 4px 16px rgba(0,0,0,.25)}
.ba input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize}
.ba:focus-within .ba-handle span{outline:3px solid var(--violet);outline-offset:3px}
.results .sec-h em{font-size:14px}

/* how it works + autoplay chat */
.how{align-items:center}
.how-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}
.steps{margin-top:6px}
.demo-chat{width:100%;max-width:410px;justify-self:center;background:#fff;border-radius:26px;overflow:hidden;box-shadow:0 28px 70px rgba(31,70,80,.22);border:1px solid var(--line)}
.dc-h{display:flex;gap:12px;align-items:center;background:var(--teal);color:#fff;padding:14px 16px}
.dc-h i{width:38px;height:38px;border-radius:50%;background:#fff;color:var(--teal);display:grid;place-items:center;font-weight:800;font-style:normal}
.dc-h small{display:flex;align-items:center;gap:6px;font-size:12px;opacity:.9}.dc-h u{width:8px;height:8px;border-radius:50%;background:#7dffb0;text-decoration:none;animation:pulse 2s infinite}
.dc-b{height:340px;overflow:hidden;padding:16px;display:flex;flex-direction:column;gap:10px;background:#f6f9fa}
.dm{max-width:84%;padding:10px 14px;border-radius:18px;font-size:14px;line-height:1.45;animation:pop .3s ease-out}
.dm.u{align-self:flex-end;background:var(--teal);color:#fff;border-bottom-right-radius:5px}
.dm.b{align-self:flex-start;background:#fff;border:1px solid var(--line);border-bottom-left-radius:5px}
.dm.typing{display:flex;gap:4px;padding:14px}.dm.typing span{width:7px;height:7px;border-radius:50%;background:var(--teal-l);animation:bl 1s infinite}
.dm.typing span:nth-child(2){animation-delay:.15s}.dm.typing span:nth-child(3){animation-delay:.3s}
.dc-in{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-top:1px solid var(--line);color:#9aa8ac;font-size:14px}
.dc-in em{font-style:normal;background:var(--teal);color:#fff;width:34px;height:34px;border-radius:50%;display:grid;place-items:center}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(55,196,119,.55)}100%{box-shadow:0 0 0 10px rgba(55,196,119,0)}}

/* testimonials */
.tcar{max-width:780px;margin:0 auto;text-align:center}
.tslides{display:grid}
.tslide{grid-area:1/1;margin:0;opacity:0;visibility:hidden;transform:translateY(14px);transition:opacity .5s,transform .5s,visibility .5s;display:grid;gap:18px;justify-items:center;align-content:start}
.tslide.on{opacity:1;visibility:visible;transform:none}
.stars{color:#e0a526;letter-spacing:4px;font-size:22px}
.tslide blockquote{margin:0;font-size:clamp(18px,2.3vw,25px);line-height:1.5;color:var(--teal-d);font-weight:500}
.tslide figcaption{display:flex;align-items:center;gap:10px;color:var(--mut);font-size:14px;font-weight:600}
.tslide figcaption i{width:38px;height:38px;border-radius:50%;color:#fff;display:grid;place-items:center;font:700 12px "Plus Jakarta Sans";font-style:normal}
.tdots{display:flex;gap:8px;justify-content:center;margin-top:26px}
.tdots button{width:10px;height:10px;border-radius:99px;border:0;background:#cdd9dc;cursor:pointer;padding:0;transition:width .3s,background .3s}
.tdots button.on{width:30px;background:var(--teal)}

/* FAQ accordion */
.acc{max-width:820px;display:grid;gap:12px}
.acc-i{border:1px solid var(--line);border-radius:18px;background:#fff;transition:border-color .25s,box-shadow .25s}
.acc-i:hover{border-color:var(--teal-l)}.acc-i.open{border-color:var(--teal-l);box-shadow:var(--shadow)}
.acc-i>button{width:100%;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 22px;background:none;border:0;font-weight:700;font-size:17px;text-align:left;cursor:pointer;border-radius:18px}
.acc-i>button i{width:28px;height:28px;border-radius:50%;background:var(--teal-bg);position:relative;flex:none;transition:transform .35s,background .25s;margin:0}
.acc-i>button i::before,.acc-i>button i::after{content:"";position:absolute;left:8px;right:8px;top:13px;height:2px;background:var(--teal-d);border-radius:2px;transition:transform .35s}
.acc-i>button i::after{transform:rotate(90deg)}
.acc-i.open>button i{transform:rotate(180deg);background:var(--teal)}.acc-i.open>button i::before,.acc-i.open>button i::after{background:#fff}.acc-i.open>button i::after{transform:rotate(0)}
.acc-p{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s ease}
.acc-i.open .acc-p{grid-template-rows:1fr}
.acc-p>div{overflow:hidden;visibility:hidden;transition:visibility .35s}
.acc-i.open .acc-p>div{visibility:visible}
.acc-p p{padding:0 22px 20px;color:var(--mut);margin:0}
.foot .by{margin-top:10px;font-size:12px;color:var(--teal);font-weight:600}

/* chat widget extras */
.chat-teaser{position:absolute;right:0;bottom:78px;width:236px;background:#fff;border-radius:18px 18px 4px 18px;box-shadow:0 14px 40px rgba(20,50,60,.25);padding:14px 30px 14px 16px;font-size:14px;line-height:1.4;cursor:pointer;animation:pop .35s ease-out}
.chat-teaser b{display:block}
.chat-teaser-x{position:absolute;top:4px;right:6px;border:0;background:none;font-size:20px;color:var(--mut);cursor:pointer;line-height:1}
.chat.open .chat-panel{animation:panelIn .3s cubic-bezier(.2,.8,.2,1);transform-origin:bottom right}
@keyframes panelIn{from{opacity:0;transform:translateY(18px) scale(.92)}}
.chat-rs{margin-left:auto;background:none;border:0;color:#fff;font-size:20px;cursor:pointer;line-height:1;padding:4px 6px;border-radius:8px}
.chat-rs:hover{background:rgba(255,255,255,.18)}
.chat-rs+.chat-x{margin-left:0}
.chat-prog{height:3px;background:rgba(77,138,150,.15);opacity:0;transition:opacity .3s}
.chat-prog.on{opacity:1}
.chat-prog i{display:block;height:100%;background:var(--violet);transform-origin:left;transform:scaleX(0);transition:transform .45s cubic-bezier(.2,.8,.2,1)}
.msg.bot:has(.ticket){width:88%}
.msg .after{margin:8px 0 0;font-size:14px}
.ticket{display:grid;gap:6px;background:linear-gradient(160deg,#eef6f7,#fff);border:1px dashed var(--teal-l);border-radius:14px;padding:12px 14px}
.ticket>b{font-size:15px}
.ticket dl{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin:2px 0 4px;font-size:13px}
.ticket dt{color:var(--mut)}.ticket dd{margin:0;font-weight:600}
.tick-ic{width:44px;height:44px}
.tick-ic circle{fill:#e6f3f0;stroke:#37a875;stroke-width:3;stroke-dasharray:145;stroke-dashoffset:145;animation:draw .6s .1s ease-out forwards}
.tick-ic path{fill:none;stroke:#2f8a5b;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;stroke-dashoffset:40;animation:draw .4s .55s ease-out forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.ics{justify-self:start;border:1.5px solid var(--teal);background:#fff;color:var(--teal-d);border-radius:99px;padding:6px 14px;font-weight:700;font-size:13px;cursor:pointer}
.ics:hover{background:var(--teal);color:#fff}

/* admin: entrance, charts, feed, live */
.side-brand{padding:0 10px}
.side-brand b{display:block;font-size:19px;color:#fff;font-weight:800;letter-spacing:-.01em}
.side-brand span{font-size:11.5px;color:#9db6bc;font-weight:500}
@keyframes rise{from{opacity:0;transform:translateY(14px)}}
.enter>*{animation:rise .5s cubic-bezier(.2,.8,.2,1) both}
.enter>*:nth-child(2){animation-delay:.05s}.enter>*:nth-child(3){animation-delay:.1s}.enter>*:nth-child(4){animation-delay:.15s}.enter>*:nth-child(5){animation-delay:.2s}.enter>*:nth-child(6){animation-delay:.25s}
.enter .kpi{animation:rise .5s cubic-bezier(.2,.8,.2,1) both}
.enter .kpi:nth-child(2){animation-delay:.08s}.enter .kpi:nth-child(3){animation-delay:.16s}.enter .kpi:nth-child(4){animation-delay:.24s}
.enter .bar{transform-box:fill-box;transform-origin:bottom;animation:grow .7s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i) * 35ms + .2s)}
@keyframes grow{from{transform:scaleY(0)}}
.enter .hbar i{animation:fill .9s cubic-bezier(.2,.8,.2,1) both;transform-origin:left}
@keyframes fill{from{transform:scaleX(0)}}
.donut{width:150px;flex:none}
.donut .seg{fill:none;stroke-width:16}
.donut .seg.bg{stroke:var(--soft)}.donut .seg.a{stroke:var(--teal)}.donut .seg.b{stroke:var(--violet)}.donut .seg.c{stroke:#e07a5f}
.d-big{font:800 22px "Plus Jakarta Sans";fill:var(--ink)}.d-sm{font-size:8px;fill:var(--mut)}
.enter .donut{animation:spin-in .9s cubic-bezier(.2,.8,.2,1) both}
@keyframes spin-in{from{opacity:0;transform:rotate(-110deg) scale(.7)}}
.donut-wrap{display:flex;gap:18px;align-items:center;justify-content:center;flex-wrap:wrap}
.legend{list-style:none;margin:0;padding:0;min-width:170px;flex:1}
.legend li{display:flex;align-items:center;gap:8px;font-size:13.5px;margin:9px 0}
.legend i{width:10px;height:10px;border-radius:3px}.legend i.a{background:var(--teal)}.legend i.b{background:var(--violet)}.legend i.c{background:#e07a5f}
.legend b{margin-left:auto;padding-left:14px}
.grid3{margin-bottom:16px}.grid2.eq{grid-template-columns:1fr 1fr}
.livedot{width:9px;height:9px;border-radius:50%;background:#37c477;align-self:center;animation:pulse 1.8s infinite;flex:none}
.feed{display:grid}
.fi{display:flex;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}.fi:first-child{border-top:0}
.fi .av{width:30px;height:30px}.av.ch-appt{background:var(--violet)}
.fi p{flex:1;font-size:13.5px;margin:0;min-width:0;overflow-wrap:anywhere}
.fi small{color:var(--mut);font-size:12px;white-space:nowrap}
.btn.live{background:#fff;border:1.5px solid var(--line);color:var(--mut)}
.btn.live i.lv{display:inline-block;width:9px;height:9px;margin:0;border-radius:50%;background:#aab7bb}
.btn.live.on{border-color:#37c477;color:#1d6b43;background:#eefaf3}
.btn.live.on i.lv{background:#37c477;animation:pulse 1.4s infinite}
@keyframes flash{from{background:#fff0b8}to{background:transparent}}
.fresh{animation:flash 2.4s ease-out}
.col-sum{font-size:12px;color:var(--mut);margin:-6px 0 0!important}
.lead.dropped{animation:drop .5s cubic-bezier(.2,1.4,.4,1)}
@keyframes drop{from{transform:scale(1.07) rotate(-2.5deg);box-shadow:0 14px 28px rgba(0,0,0,.22)}}
.lead[draggable=true]:active{opacity:.85}

@media(max-width:1000px){
  .stats{grid-template-columns:1fr 1fr;row-gap:28px}
  .hero-bg{inset:-20px -22px 0}
  .grid2.eq{grid-template-columns:1fr}
  .side-brand span{display:none}.side-brand b{font-size:17px}
  .demo-chat{max-width:460px}
}
@media(max-width:560px){
  .hero-bg{inset:-20px -16px 0}
  .marquee{flex-direction:column;align-items:flex-start;gap:10px}.mq-clip{width:100%}
  .ba{border-radius:20px}
  .tslide blockquote{font-size:18px}
  .acc-i>button{padding:16px 16px;font-size:16px}.acc-p p{padding:0 16px 18px}
  .chat-teaser{width:200px;bottom:72px}
  .donut{width:130px}
  .totop{bottom:14px;left:14px}
}
@media(hover:none){.card,.card:hover,.doc,.doc:hover{transform:none;translate:none}}

/* real photos */
.hero-art{background:#cfe0e4}
.hero-art .hero-photo{width:100%;height:100%;object-fit:cover;object-position:70% 30%;display:block;translate:none}
.hero-art::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(20,45,52,.55));pointer-events:none}
.float,.tags{z-index:2}
.gallery{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:14px;margin-top:8px}
.gallery figure{margin:0;border-radius:22px;overflow:hidden;aspect-ratio:3/4;background:var(--soft)}
.gallery figure.g1{aspect-ratio:auto}
.gallery img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s ease}
.gallery figure:hover img{transform:scale(1.06)}
.doc-photo{width:104px;height:104px;border-radius:50%;object-fit:cover;object-position:center 20%;display:block;margin:0 auto 14px;border:4px solid var(--c,#4d8a96);background:var(--soft);transition:transform .4s cubic-bezier(.2,1.4,.4,1)}
.doc:hover .doc-photo{transform:scale(1.08) rotate(-3deg)}
@media(max-width:700px){.gallery{grid-template-columns:1fr 1fr}.gallery figure.g1{grid-column:1/-1;aspect-ratio:16/10}}
