/* The chat icon in the bottom-right corner and its growing into the Try it chat (launcher.js). */
.nova-launcher { position: fixed; right: 24px; bottom: calc(24px + env(safe-area-inset-bottom, 0px)); z-index: 900; display: grid; place-items: center; width: 64px; height: 64px; padding: 0; border: 0; border-radius: 50%; background: var(--red); color: #fff; box-shadow: 0 0 0 6px #ed503820, 0 18px 40px -14px rgba(23, 23, 18, .55); cursor: pointer; transition: transform .25s cubic-bezier(.2, .8, .2, 1), opacity .2s, background .2s; }
.nova-launcher:hover { background: #d53e29; transform: translateY(-3px); }
.nova-launcher:focus-visible { outline: 3px solid var(--ink); outline-offset: 5px; }
.nova-launcher svg { display: block; }
/* Gone while the chat is open in the section, or while a stand-in card is on its way. */
.nova-chat-open .nova-launcher, .nova-launcher.is-away { opacity: 0; transform: scale(.4); pointer-events: none; }
/* Out of the way of the cookie banner until a choice is made. */
body:has(#marketing-consent:not([hidden])) .nova-launcher { opacity: 0; pointer-events: none; }

/* The chat in Try it: hidden while it is "docked" in the icon. */
.try-chat { transition: opacity .22s ease; }
.try-chat.is-docked { opacity: 0; }

/* The stand-in card: red with the icon at the corner, white with the amber ring at full size (--p 0 → 1). */
.nova-morph { --p: 0; position: fixed; z-index: 899; display: grid; place-items: center; overflow: hidden; pointer-events: none; color: #fff; background: color-mix(in srgb, #fff calc(var(--p) * 100%), var(--red)); box-shadow: 0 0 0 calc(var(--p) * 2px) var(--amber), 0 30px 70px -34px rgba(23, 23, 18, .45); transition: opacity .2s; }
.nova-morph svg { opacity: calc(1 - var(--p) * 1.6); transform: scale(calc(1 + var(--p) * .6)); }
.nova-morph.is-done { opacity: 0; }

@media (max-width: 700px) {
  .nova-launcher { right: 16px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); width: 58px; height: 58px; }
}
@media (prefers-reduced-motion: reduce) {
  .nova-launcher, .try-chat { transition: none; }
}
