/* "Try our AI free": hero button + live voice call card (site/js/talk.js). Uses site.css variables. */

/* Hero: the two buttons sit side by side. */
.hero__cta.has-talk{flex-direction:row;flex-wrap:wrap;align-items:center;gap:12px}
@media (max-width:960px){.hero__cta.has-talk{justify-content:center}}
.btn.talk-cta{flex:0 0 auto;font-size:17px;padding:17px 26px 17px 22px;gap:12px} /* site.css stretches .btn--ai on phones */
.talk-cta__mic{position:relative;display:grid;place-items:center;width:22px;height:22px}
.talk-cta__mic svg{width:19px;height:19px;color:var(--orange)}
.talk-cta__mic::after{content:"";position:absolute;right:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:#22A55A;box-shadow:0 0 0 2px var(--ink);animation:talk-live 1.9s ease-out infinite}
@keyframes talk-live{0%{box-shadow:0 0 0 2px var(--ink),0 0 0 2px rgba(34,165,90,.55)}70%,100%{box-shadow:0 0 0 2px var(--ink),0 0 0 10px rgba(34,165,90,0)}}

/* The call card. */
html.talk-open{overflow:hidden}
.talk{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px}
.talk[hidden]{display:none}
.talk__scrim{position:absolute;inset:0;background:rgba(10,10,10,.5);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:talk-fade .3s var(--ease) both}
.talk__card{--ai:0;--me:0;position:relative;isolation:isolate;width:min(430px,100%);max-height:calc(100dvh - 40px);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;
  display:grid;justify-items:center;gap:18px;padding:20px 26px 24px;text-align:center;color:var(--white);
  background:#0B0B0B;border-radius:32px;
  box-shadow:0 60px 120px -40px rgba(0,0,0,.65),inset 0 0 0 1px rgba(255,255,255,.07);
  animation:talk-up .55s var(--ease-out) both}
.talk__card::before{content:"";position:absolute;left:50%;top:-140px;width:560px;height:520px;margin-left:-280px;z-index:-1;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,105,0,.3),rgba(255,105,0,0));
  opacity:calc(.55 + .45*var(--ai));transform:scale(calc(.92 + .2*var(--ai)))}
.talk__grid{position:absolute;inset:0;z-index:-1;pointer-events:none;border-radius:inherit;
  background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
  background-size:28px 28px;background-position:center -1px;
  -webkit-mask-image:radial-gradient(ellipse 75% 50% at 50% 30%,#000 0%,transparent 78%);mask-image:radial-gradient(ellipse 75% 50% at 50% 30%,#000 0%,transparent 78%)}

.talk__top{justify-self:stretch;display:flex;align-items:center;justify-content:space-between}
.talk__badge{display:inline-flex;align-items:center;gap:8px;padding:6px 12px 6px 10px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--n300);background:rgba(255,255,255,.06);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.talk__badge i{width:7px;height:7px;border-radius:50%;background:var(--orange)}
.talk__card[data-state="live"] .talk__badge{color:var(--white)}
.talk__card[data-state="live"] .talk__badge i{background:#22A55A;animation:talk-dot 1.4s ease-in-out infinite}
@keyframes talk-dot{50%{opacity:.35}}
.talk__x{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;color:var(--n400);transition:background-color .2s,color .2s}
.talk__x:hover{background:rgba(255,255,255,.08);color:var(--white)}
.talk__x svg{width:18px;height:18px}

/* Orb inside a faint ring (no countdown on screen). --ai = AI voice level, --me = visitor's mic level (0 to 1, set every frame). */
.talk__stage{position:relative;width:216px;height:216px;display:grid;place-items:center;margin:2px 0 6px}
.talk__ring{position:absolute;inset:0}
.talk__ring circle{fill:none;stroke-width:3}
.talk__ring-bg{stroke:rgba(255,255,255,.08)}
.talk__me{position:absolute;width:166px;height:166px;border-radius:50%;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.9);
  opacity:calc(.06 + .6*var(--me));transform:scale(calc(1 + .16*var(--me)))}
.talk__orb{position:relative;width:126px;height:126px;border-radius:50%;overflow:hidden;
  background:radial-gradient(circle at 34% 28%,#FFE4C6 0,#FF9C40 21%,#FF6900 50%,#C93400 84%,#8A2200 100%);
  box-shadow:0 0 calc(34px + 70px*var(--ai)) calc(2px + 16px*var(--ai)) rgba(255,105,0,calc(.3 + .45*var(--ai))),
    inset -16px -20px 36px rgba(110,25,0,.55),inset 12px 14px 28px rgba(255,240,225,.28);
  transform:scale(calc(1 + .13*var(--ai)));transition:filter .6s}
.talk__orb span{position:absolute;inset:-25%;filter:blur(14px);mix-blend-mode:soft-light;animation:talk-spin 9s linear infinite;
  background:conic-gradient(from 0deg,rgba(255,255,255,0),rgba(255,226,194,.7),rgba(255,255,255,0) 32%,rgba(140,30,0,.55) 58%,rgba(255,255,255,0) 82%)}
.talk__card[data-state="intro"] .talk__orb{animation:talk-breathe 3.4s ease-in-out infinite}
.talk__card[data-state="connecting"] .talk__orb{animation:talk-breathe 1.2s ease-in-out infinite}
.talk__card[data-state="ended"] .talk__orb,.talk__card[data-state="error"] .talk__orb,.talk__card[data-state="limit"] .talk__orb{filter:saturate(.3) brightness(.62)}
@keyframes talk-breathe{50%{transform:scale(1.06)}}
@keyframes talk-spin{to{transform:rotate(360deg)}}

.talk__h{font-family:var(--head);font-weight:500;font-size:30px;line-height:1.1;letter-spacing:-.025em;color:var(--white)}
.talk__sub{margin-top:8px;font-size:15px;line-height:1.5;color:var(--n400);max-width:31ch;margin-inline:auto}
.talk__hints{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:360px}
.talk__hints li{padding:7px 12px;border-radius:999px;font-size:13px;line-height:1.3;color:var(--n300);background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.talk__card:is([data-state="ended"],[data-state="error"],[data-state="limit"]) .talk__hints{display:none}

/* Cloudflare's bot check. Invisible for almost everyone; a tick box appears here only if Cloudflare asks for one. */
.talk__check{display:contents}
.talk__actions{display:grid;justify-items:center;gap:12px;min-height:64px;align-content:center}
.talk__go,.talk__book,.talk__end,.talk__again{display:none}
.talk__card[data-state="intro"] .talk__go{display:inline-flex}
.talk__card:is([data-state="ended"],[data-state="limit"]) .talk__book{display:inline-flex}
.talk__card:is([data-state="connecting"],[data-state="live"]) .talk__end{display:grid}
.talk__card:is([data-state="ended"],[data-state="error"]) .talk__again{display:inline-block}
.talk__again.is-out{display:none!important}
.talk__go svg,.talk__book svg{width:18px;height:18px}
.talk__end{place-items:center;width:64px;height:64px;border-radius:50%;background:var(--red);color:var(--white);
  box-shadow:0 14px 30px -12px rgba(220,59,64,.7);transition:transform .2s var(--ease),background-color .2s}
.talk__end:hover{background:#C2272D;transform:translateY(-1px)}
.talk__end svg{width:26px;height:26px}
.talk__again{font-size:15px;font-weight:700;color:var(--n300);padding:6px 10px;border-radius:999px;transition:color .2s}
.talk__again:hover{color:var(--white)}
.talk__fine{font-size:12px;line-height:1.5;color:var(--n500);max-width:34ch}
.talk__fine:empty{display:none}

/* Local preview only: switch between voice models (agents in dograh-config.js). talk.js never adds it on buildcrew.dev. */
.talk__models{justify-self:stretch;display:grid;justify-items:center;gap:8px;padding-top:14px;border-top:1px solid rgba(255,255,255,.08)}
.talk__models p{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--n500)}
.talk__models div{display:flex;flex-wrap:wrap;justify-content:center;gap:4px;padding:4px;border-radius:22px;background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.talk__models button{padding:7px 13px;border-radius:999px;font-size:13px;font-weight:700;line-height:1.2;color:var(--n400);transition:color .2s,background-color .2s}
.talk__models button:hover{color:var(--white)}
.talk__models button[aria-pressed="true"]{color:var(--white);background:var(--orange)}
.talk__card:is([data-state="connecting"],[data-state="live"]) .talk__models{display:none}

@keyframes talk-fade{from{opacity:0}}
@keyframes talk-up{from{opacity:0;transform:translateY(18px) scale(.97)}}
@keyframes talk-sheet{from{transform:translateY(100%)}}

@media (max-width:560px){
  .talk{place-items:end center;padding:0}
  .talk__card{width:100%;max-height:calc(100dvh - 24px);border-radius:28px 28px 0 0;padding-bottom:calc(26px + env(safe-area-inset-bottom));animation:talk-sheet .45s var(--ease-out) both}
  .talk__h{font-size:27px}
}
@media (prefers-reduced-motion:reduce){
  .talk__orb,.talk__orb span,.talk-cta__mic::after,.talk__card[data-state="live"] .talk__badge i{animation:none!important}
  .talk__card,.talk__scrim{animation:none}
}
