/* ==========================================================================
   FortiTech AI Chatbot — widget, promo banner, pricing & checkout styles
   Loaded after the main Webflow stylesheet on every page. Uses the site's
   existing design tokens (--color--orange, --color--black, etc.) so it
   matches the rest of the dark Fortinet-themed site.
   ========================================================================== */

/* ==========================================================================
   1. Homepage announcement banner
   ========================================================================== */

/* Full-bleed background, but the CONTENT is constrained to the same grid the
   navbar uses (max-width 100rem + 2.5rem side padding) so the pill lines up
   under the logo and the close button lines up with "Contact Us". */
.ai-announce-bar {
  position: relative;
  z-index: 500;
  background-color: #150406;
  background-image: linear-gradient(90deg, rgba(255, 0, 4, 0.16) 0%, rgba(255, 0, 4, 0.05) 45%, rgba(255, 0, 4, 0.14) 100%);
  border-bottom: 1px solid rgba(255, 0, 4, 0.35);
  color: var(--color--white);
  font-family: Satoshi, sans-serif;
}

.ai-announce-bar[hidden] {
  display: none;
}

/* Mirrors the site's `.padding-global > .container` nesting exactly: side
   padding on the OUTER element, max-width + auto margins on the inner one.
   Doing it the other way round drifts out of alignment past 1600px wide. */
.ai-announce-bar {
  padding-left: 2.5rem;
  padding-right: 2.5rem;
}

.ai-announce-inner {
  width: 100%;
  max-width: 100rem;
  margin: 0 auto;
  padding: .85rem 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .85rem;
}

.ai-announce-pill {
  background-color: var(--color--orange);
  color: var(--color--white);
  border-radius: 50rem;
  padding: .2rem .6rem;
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  white-space: nowrap;
  flex-shrink: 0;
}

.ai-announce-text {
  font-size: .88rem;
  font-weight: 400;
  opacity: .85;
  line-height: 1.35;
}

.ai-announce-text strong {
  font-weight: 700;
  opacity: 1;
}

.ai-announce-free {
  color: var(--color--orange);
  font-weight: 700;
}

.ai-announce-cta {
  flex-shrink: 0;
  background-color: var(--color--orange);
  color: var(--color--white);
  border-radius: 50rem;
  padding: .45rem 1.1rem;
  font-size: .8rem;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
  transition: opacity .2s ease;
}

.ai-announce-cta:hover {
  opacity: .88;
  color: var(--color--white);
}

/* Pinned to the far right so the pill/text/CTA group stays optically centred. */
.ai-announce-close {
  position: absolute;
  top: 50%;
  right: 2.5rem;
  transform: translateY(-50%);
  background: none;
  border: none;
  color: var(--color--white);
  opacity: .5;
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
  padding: .2rem .3rem;
}

.ai-announce-close:hover {
  opacity: 1;
}

/* ==========================================================================
   2. Homepage promo section
   ========================================================================== */

.chatbot-promo-section {
  margin-top: 9rem;
}

.chatbot-promo-wrapper {
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1.25fr 1fr;
  align-items: center;
  gap: 3rem;
  background:
    radial-gradient(120% 140% at 100% 0%, rgba(255, 0, 4, 0.22) 0%, rgba(255, 0, 4, 0) 55%),
    var(--color--dark-grey);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 1.5rem;
  padding: 3.5rem;
}

.chatbot-promo-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  color: var(--color--orange);
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .1em;
  margin-bottom: 1rem;
}

.chatbot-promo-eyebrow::before {
  content: "";
  width: .45rem;
  height: .45rem;
  border-radius: 50%;
  background-color: var(--color--orange);
  box-shadow: 0 0 0 .25rem rgba(255, 0, 4, 0.25);
}

.chatbot-promo-title {
  color: var(--color--white);
  font-size: 2.6rem;
  font-weight: 700;
  line-height: 1.1;
  margin-bottom: 1rem;
  max-width: 20ch;
}

.chatbot-promo-copy {
  color: var(--color--white);
  opacity: .7;
  font-size: 1rem;
  line-height: 1.6;
  max-width: 46ch;
  margin-bottom: 1.75rem;
}

.chatbot-promo-actions {
  display: flex;
  align-items: center;
  gap: .75rem;
  flex-wrap: wrap;
}

.chatbot-promo-note {
  color: var(--color--white);
  opacity: .45;
  font-size: .78rem;
  margin-top: 1rem;
}

/* Mini faux-chat preview on the right of the promo */
.chatbot-promo-preview {
  background-color: rgba(0, 0, 0, 0.55);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 1rem;
  padding: 1.1rem;
  display: flex;
  flex-direction: column;
  gap: .6rem;
  box-shadow: 0 1.5rem 3rem rgba(0, 0, 0, 0.45);
}

.chatbot-promo-preview-head {
  display: flex;
  align-items: center;
  gap: .55rem;
  padding-bottom: .75rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--color--white);
  font-size: .8rem;
  font-weight: 700;
}

.chatbot-promo-dot {
  width: .5rem;
  height: .5rem;
  border-radius: 50%;
  background-color: #22c55e;
}

.chatbot-promo-bubble {
  font-size: .82rem;
  line-height: 1.45;
  padding: .55rem .75rem;
  border-radius: .75rem;
  max-width: 90%;
}

.chatbot-promo-bubble.user {
  align-self: flex-end;
  background-color: var(--color--orange);
  color: var(--color--white);
  border-bottom-right-radius: .2rem;
}

.chatbot-promo-bubble.bot {
  align-self: flex-start;
  background-color: rgba(255, 255, 255, 0.07);
  color: var(--color--white);
  border-bottom-left-radius: .2rem;
}

/* ==========================================================================
   3. Chatbot landing page sections
   ========================================================================== */

/* ---------- Hero ----------
   The site's own .hero-wrapper has no row-gap, so stacked children end up
   touching (heading/subtext/buttons at 0px apart). This is a self-contained
   hero with explicit spacing instead of fighting that class. */

.ai-hero {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  margin-top: 7rem;
}

.ai-hero-badge {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  background-color: rgba(255, 0, 4, 0.1);
  border: 1px solid rgba(255, 0, 4, 0.4);
  color: var(--color--white);
  border-radius: 50rem;
  padding: .45rem 1rem;
  font-size: .78rem;
  font-weight: 600;
  margin-bottom: 1.75rem;
}

.ai-hero-badge svg {
  width: 1rem;
  height: 1rem;
  color: var(--color--orange);
  flex-shrink: 0;
}

.ai-hero-title {
  color: var(--color--white);
  font-size: clamp(2.25rem, 5vw, 4rem);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: -.02em;
  max-width: 18ch;
  margin: 0 0 1.25rem;
}

.ai-hero-sub {
  color: var(--color--white);
  opacity: .65;
  font-size: 1.05rem;
  line-height: 1.6;
  max-width: 54ch;
  margin: 0 0 2.25rem;
}

.ai-hero-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .75rem;
  margin-bottom: 1.5rem;
}

/* Scoped to beat `.plan-cta { width: 100% }`, which is defined later in this
   file and would otherwise stretch these two into a stacked column. */
.ai-hero-actions .plan-cta {
  width: auto;
  gap: .5rem;
  padding: .9rem 1.6rem;
}

.ai-hero-actions .plan-cta svg {
  width: 1.1rem;
  height: 1.1rem;
  flex-shrink: 0;
}

.ai-hero-trust {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: .75rem;
  color: var(--color--white);
  opacity: .45;
  font-size: .82rem;
}

.ai-hero-trust b {
  color: var(--color--orange);
  opacity: 1;
  font-weight: 700;
}

.ai-dot {
  width: .25rem;
  height: .25rem;
  border-radius: 50%;
  background-color: currentColor;
  opacity: .6;
}

/* ---------- Hero chat mockup ---------- */

.ai-chat-mockup {
  width: 100%;
  max-width: 34rem;
  margin-top: 4rem;
  background-color: #131313;
  border: 1px solid var(--color--grey);
  border-radius: 1.25rem;
  overflow: hidden;
  text-align: left;
  box-shadow: 0 2rem 4rem rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 0, 4, 0.08);
}

.ai-mockup-bar {
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .85rem 1.1rem;
  background: linear-gradient(120deg, #1a1a1a 0%, #241012 100%);
  border-bottom: 1px solid var(--color--grey);
}

.ai-mockup-dot {
  width: .5rem;
  height: .5rem;
  border-radius: 50%;
  background-color: #22c55e;
}

.ai-mockup-title {
  flex: 1;
  color: var(--color--white);
  font-size: .85rem;
  font-weight: 700;
}

.ai-mockup-status {
  color: var(--color--white);
  opacity: .45;
  font-size: .72rem;
}

.ai-mockup-body {
  padding: 1.1rem;
  display: flex;
  flex-direction: column;
  gap: .7rem;
}

.ai-mockup-msg {
  max-width: 88%;
  padding: .7rem .9rem;
  border-radius: 1rem;
  font-size: .85rem;
  line-height: 1.5;
}

.ai-mockup-msg.user {
  align-self: flex-end;
  background-color: var(--color--orange);
  color: var(--color--white);
  border-bottom-right-radius: .25rem;
}

.ai-mockup-msg.bot {
  align-self: flex-start;
  background-color: rgba(255, 255, 255, 0.07);
  color: var(--color--white);
  border-bottom-left-radius: .25rem;
}

.ai-mockup-msg.bot p {
  margin: 0 0 .5rem;
}

.ai-mockup-msg.bot p:last-child {
  margin-bottom: 0;
}

.ai-mockup-msg.bot ul {
  margin: 0 0 .5rem;
  padding-left: 1.1rem;
  display: flex;
  flex-direction: column;
  gap: .25rem;
}

.ai-mockup-msg.bot li::marker {
  color: var(--color--orange);
}

.ai-mockup-typing {
  align-self: flex-start;
  background-color: rgba(255, 255, 255, 0.07);
  border-radius: 1rem;
  border-bottom-left-radius: .25rem;
  padding: .8rem .95rem;
  display: flex;
  gap: .3rem;
}

.ai-mockup-typing span {
  width: .4rem;
  height: .4rem;
  border-radius: 50%;
  background-color: rgba(255, 255, 255, 0.6);
  animation: chatbot-blink 1.3s infinite ease-in-out both;
}

.ai-mockup-typing span:nth-child(2) { animation-delay: .18s; }
.ai-mockup-typing span:nth-child(3) { animation-delay: .36s; }

/* ---------- Section headings ---------- */

.ai-head {
  text-align: center;
  max-width: 60ch;
}

.ai-head-title {
  color: var(--color--white);
  font-size: clamp(1.75rem, 3.5vw, 2.75rem);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -.015em;
  margin: 0 0 .85rem;
}

.ai-head-sub {
  color: var(--color--white);
  opacity: .6;
  font-size: 1rem;
  line-height: 1.6;
  margin: 0;
}

/* ---------- Capability cards ---------- */

.ai-cap-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.25rem;
  width: 100%;
}

.ai-cap-card {
  background-color: var(--color--dark-grey);
  border: 1px solid var(--color--grey);
  border-radius: 1rem;
  padding: 1.75rem 1.5rem;
  transition: border-color .2s ease, transform .2s ease;
}

.ai-cap-card:hover {
  border-color: rgba(255, 0, 4, 0.5);
  transform: translateY(-3px);
}

.ai-cap-icon {
  width: 2.75rem;
  height: 2.75rem;
  border-radius: .75rem;
  background-color: rgba(255, 0, 4, 0.12);
  border: 1px solid rgba(255, 0, 4, 0.3);
  color: var(--color--orange);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 1.1rem;
}

.ai-cap-icon svg {
  width: 1.35rem;
  height: 1.35rem;
}

.ai-cap-name {
  color: var(--color--white);
  font-size: 1rem;
  font-weight: 700;
  margin-bottom: .45rem;
}

.ai-cap-desc {
  color: var(--color--white);
  opacity: .6;
  font-size: .87rem;
  line-height: 1.55;
}

/* ---------- How-it-works steps ---------- */

.ai-steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem;
  width: 100%;
}

.ai-step {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.ai-step-icon {
  width: 3.25rem;
  height: 3.25rem;
  border-radius: 50%;
  background-color: rgba(255, 0, 4, 0.12);
  border: 1px solid rgba(255, 0, 4, 0.35);
  color: var(--color--orange);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 1rem;
}

.ai-step-icon svg {
  width: 1.5rem;
  height: 1.5rem;
}

.ai-step-num {
  color: var(--color--orange);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .09em;
  text-transform: uppercase;
  margin-bottom: .5rem;
}

.ai-step-name {
  color: var(--color--white);
  font-size: 1.05rem;
  font-weight: 700;
  margin-bottom: .5rem;
}

.ai-step-desc {
  color: var(--color--white);
  opacity: .6;
  font-size: .87rem;
  line-height: 1.55;
  max-width: 30ch;
}

.ai-chip-q {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.15rem;
  height: 1.15rem;
  border-radius: 50%;
  background-color: rgba(255, 0, 4, 0.18);
  color: var(--color--orange);
  font-size: .7rem;
  font-weight: 700;
  margin-right: .55rem;
  flex-shrink: 0;
}

.pricing-card-icon {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: .7rem;
  background-color: rgba(255, 0, 4, 0.12);
  border: 1px solid rgba(255, 0, 4, 0.3);
  color: var(--color--orange);
  display: flex;
  align-items: center;
  justify-content: center;
}

.pricing-card-icon svg {
  width: 1.25rem;
  height: 1.25rem;
}

.ai-pricing-note {
  color: var(--color--white);
  opacity: .45;
  font-size: .82rem;
  text-align: center;
  margin: 0;
}

.ai-pricing-note b {
  color: #4ade80;
  opacity: 1;
}

/* Price unit line, e.g. "1 hour · one specific problem" */
.pricing-card-unit {
  color: var(--color--white);
  opacity: .5;
  font-size: .8rem;
  margin-top: -.6rem;
}

/* Explicit "Not included" block — the free tier's limits are the whole
   reason the paid sessions exist, so they're stated plainly. */
.pricing-card-excludes {
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  padding-top: .9rem;
}

.pricing-excludes-label {
  color: var(--color--white);
  opacity: .4;
  font-size: .7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  margin-bottom: .5rem;
}

.pricing-card-excludes ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: .4rem;
}

.pricing-card-excludes li {
  color: var(--color--white);
  opacity: .4;
  font-size: .82rem;
  padding-left: 1.3rem;
  position: relative;
}

.pricing-card-excludes li::before {
  content: "";
  position: absolute;
  left: .18rem;
  top: .52rem;
  width: .6rem;
  height: 1px;
  background-color: currentColor;
}

/* Continuation rates, mirroring how IT support firms publish them */
.pricing-card-terms {
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  padding-top: .85rem;
  display: flex;
  flex-direction: column;
  gap: .45rem;
}

.pricing-card-terms div {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .75rem;
  font-size: .8rem;
}

.pricing-card-terms span {
  color: var(--color--white);
  opacity: .5;
}

.pricing-card-terms b {
  color: var(--color--white);
  font-weight: 700;
  white-space: nowrap;
}

/* Billing terms row under the cards */
.ai-pricing-terms {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.25rem;
  width: 100%;
}

.ai-term {
  background-color: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: .9rem;
  padding: 1.1rem 1.25rem;
}

.ai-term b {
  color: var(--color--white);
  display: block;
  font-size: .88rem;
  font-weight: 700;
  margin-bottom: .35rem;
}

.ai-term span {
  color: var(--color--white);
  opacity: .55;
  font-size: .82rem;
  line-height: 1.5;
}

/* Currency conversion note in the checkout modal */
.ai-modal-fx {
  background-color: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: .6rem;
  padding: .7rem .85rem;
  color: var(--color--white);
  opacity: .7;
  font-size: .76rem;
  line-height: 1.5;
  margin-bottom: 1rem;
}

.ai-modal-fx b {
  opacity: 1;
  font-weight: 700;
}

/* Active-session meter in the chat panel */
.chatbot-counter.session {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  opacity: .8;
  color: #4ade80;
}

.chatbot-counter.session svg {
  width: .9rem;
  height: .9rem;
  flex-shrink: 0;
}

.chatbot-counter.session b {
  color: var(--color--white);
}

.chatbot-extend {
  background: none;
  border: 1px solid rgba(74, 222, 128, 0.5);
  color: #4ade80;
  border-radius: 50rem;
  padding: .15rem .6rem;
  font-size: .7rem;
  font-weight: 700;
  font-family: Satoshi, sans-serif;
  cursor: pointer;
  margin-left: .25rem;
}

.chatbot-extend:hover {
  background-color: rgba(74, 222, 128, 0.12);
}

.chatbot-paywall-note {
  color: var(--color--white);
  opacity: .4;
  font-size: .74rem;
  text-align: center;
  margin-top: .35rem;
}

.chatbot-plan-mini-price span {
  font-size: .68rem;
  opacity: .55;
  font-weight: 400;
}

/* Mirrors .home-features-wrapper so section rhythm matches the rest of the site */
.ai-section-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3.5rem;
  margin-top: 10rem;
  width: 100%;
}

.ai-section-wrapper.tight {
  gap: 2.5rem;
}

.ai-hero-badge {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  background-color: rgba(255, 0, 4, 0.12);
  border: 1px solid rgba(255, 0, 4, 0.4);
  color: var(--color--white);
  border-radius: 50rem;
  padding: .4rem 1rem;
  font-size: .78rem;
  font-weight: 600;
  margin-bottom: 1.5rem;
}

/* Example question chips on the landing page */
.ai-examples {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .75rem;
  max-width: 60rem;
}

.ai-example-chip {
  background-color: var(--color--dark-grey);
  border: 1px solid var(--color--grey);
  border-radius: 50rem;
  color: var(--color--white);
  padding: .65rem 1.15rem;
  font-size: .85rem;
  font-family: Satoshi, sans-serif;
  cursor: pointer;
  transition: border-color .2s ease, background-color .2s ease, transform .15s ease;
}

.ai-example-chip:hover {
  border-color: var(--color--orange);
  background-color: rgba(255, 0, 4, 0.08);
  transform: translateY(-2px);
}

/* ==========================================================================
   4. Pricing cards
   ========================================================================== */

.pricing-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  width: 100%;
  align-items: stretch;
}

.pricing-card {
  position: relative;
  background-color: var(--color--dark-grey);
  border: 1px solid var(--color--grey);
  border-radius: 1.25rem;
  padding: 2.25rem 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 1.15rem;
  transition: border-color .2s ease, transform .2s ease;
}

.pricing-card:hover {
  border-color: rgba(255, 255, 255, 0.28);
  transform: translateY(-3px);
}

.pricing-card.featured {
  border-color: var(--color--orange);
  background:
    radial-gradient(100% 60% at 50% 0%, rgba(255, 0, 4, 0.16) 0%, rgba(255, 0, 4, 0) 70%),
    var(--color--dark-grey);
}

.pricing-card-badge {
  position: absolute;
  top: -.8rem;
  left: 50%;
  transform: translateX(-50%);
  background-color: var(--color--orange);
  color: var(--color--white);
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  border-radius: 50rem;
  padding: .32rem .9rem;
  white-space: nowrap;
}

.pricing-card-name {
  color: var(--color--white);
  font-size: 1.15rem;
  font-weight: 700;
}

.pricing-card-tagline {
  color: var(--color--white);
  opacity: .55;
  font-size: .82rem;
  margin-top: -.6rem;
}

.pricing-card-price {
  color: var(--color--white);
  font-size: 2.4rem;
  font-weight: 700;
  line-height: 1;
  display: flex;
  align-items: baseline;
  gap: .25rem;
}

.pricing-card-price span {
  font-size: .85rem;
  opacity: .55;
  font-weight: 400;
}

.pricing-card-features {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: .7rem;
  flex: 1;
}

.pricing-card-features li {
  color: var(--color--white);
  opacity: .8;
  font-size: .87rem;
  line-height: 1.4;
  padding-left: 1.6rem;
  position: relative;
}

.pricing-card-features li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .3rem;
  width: .95rem;
  height: .95rem;
  border-radius: 50%;
  background-color: rgba(255, 0, 4, 0.18);
  border: 1px solid rgba(255, 0, 4, 0.6);
}

.pricing-card-features li::after {
  content: "";
  position: absolute;
  left: .32rem;
  top: .48rem;
  width: .2rem;
  height: .38rem;
  border-right: 2px solid var(--color--orange);
  border-bottom: 2px solid var(--color--orange);
  transform: rotate(45deg);
}

/* Plan CTA buttons — full width, consistent height across all three cards */
.plan-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  border-radius: 50rem;
  padding: .85rem 1.25rem;
  font-size: .9rem;
  font-weight: 700;
  font-family: Satoshi, sans-serif;
  text-decoration: none;
  cursor: pointer;
  border: 1px solid transparent;
  transition: opacity .2s ease, background-color .2s ease;
}

.plan-cta.solid {
  background-color: var(--color--orange);
  color: var(--color--white);
}

.plan-cta.solid:hover {
  opacity: .88;
  color: var(--color--white);
}

.plan-cta.outline {
  background-color: transparent;
  border-color: var(--color--grey);
  color: var(--color--white);
}

.plan-cta.outline:hover {
  border-color: var(--color--white);
  color: var(--color--white);
}

/* WhatsApp-style green, so the button reads as WhatsApp at a glance. */
.plan-cta.whatsapp {
  background-color: #10C754;
  color: #fff;
}

.plan-cta.whatsapp:hover {
  background-color: #0DA344;
  color: #fff;
}

.plan-cta:disabled {
  opacity: .45;
  cursor: default;
}

/* ==========================================================================
   5. Checkout modal (PayPal)
   ========================================================================== */

.ai-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background-color: rgba(0, 0, 0, 0.75);
  backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
}

.ai-modal-overlay[hidden] {
  display: none;
}

.ai-modal {
  width: 100%;
  max-width: 27rem;
  max-height: 90vh;
  overflow-y: auto;
  background-color: var(--color--dark-grey);
  border: 1px solid var(--color--grey);
  border-radius: 1.25rem;
  padding: 1.75rem;
  font-family: Satoshi, sans-serif;
  position: relative;
}

.ai-modal-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: none;
  border: none;
  color: var(--color--white);
  opacity: .6;
  font-size: 1.4rem;
  line-height: 1;
  cursor: pointer;
}

.ai-modal-close:hover {
  opacity: 1;
}

.ai-modal-title {
  color: var(--color--white);
  font-size: 1.25rem;
  font-weight: 700;
  margin-bottom: .35rem;
}

.ai-modal-subtitle {
  color: var(--color--white);
  opacity: .6;
  font-size: .85rem;
  margin-bottom: 1.25rem;
}

.ai-modal-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background-color: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: .75rem;
  padding: .9rem 1.1rem;
  margin-bottom: 1.25rem;
}

.ai-modal-summary-plan {
  color: var(--color--white);
  font-weight: 700;
  font-size: .95rem;
}

.ai-modal-summary-desc {
  color: var(--color--white);
  opacity: .55;
  font-size: .75rem;
}

.ai-modal-summary-price {
  color: var(--color--white);
  font-weight: 700;
  font-size: 1.35rem;
}

.ai-modal-divider {
  display: flex;
  align-items: center;
  gap: .75rem;
  color: var(--color--white);
  opacity: .35;
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  margin: 1.1rem 0;
}

.ai-modal-divider::before,
.ai-modal-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background-color: rgba(255, 255, 255, 0.15);
}

#ai-paypal-buttons {
  min-height: 3rem;
}

.ai-paypal-placeholder {
  border: 1px dashed rgba(255, 255, 255, 0.22);
  border-radius: .75rem;
  padding: 1rem;
  text-align: center;
  color: var(--color--white);
  opacity: .55;
  font-size: .78rem;
  line-height: 1.5;
}

.ai-modal-fineprint {
  color: var(--color--white);
  opacity: .4;
  font-size: .72rem;
  text-align: center;
  margin-top: .9rem;
  line-height: 1.5;
}

.ai-modal-success {
  text-align: center;
  padding: 1rem 0;
}

.ai-modal-success-icon {
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 50%;
  background-color: rgba(34, 197, 94, 0.15);
  border: 1px solid #22c55e;
  color: #4ade80;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.6rem;
  margin: 0 auto 1rem;
}

/* ==========================================================================
   6. Floating chat widget
   ========================================================================== */

.chatbot-launcher {
  position: fixed;
  right: 1.5rem;
  bottom: 1.5rem;
  z-index: 9990;
  height: 3.5rem;
  width: 3.5rem;
  max-width: 3.5rem;
  padding: .55rem;
  border-radius: 50rem;
  border: 1px solid rgba(255, 255, 255, 0.14);
  background-color: #171717;
  color: var(--color--white);
  display: flex;
  align-items: center;
  gap: .65rem;
  overflow: hidden;
  cursor: pointer;
  font-family: Satoshi, sans-serif;
  box-shadow: 0 .6rem 2rem rgba(0, 0, 0, 0.55);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease,
    max-width .3s cubic-bezier(.22, .61, .36, 1), padding .3s ease;
}

.chatbot-launcher:hover,
.chatbot-launcher:focus-visible {
  max-width: 15rem;
  padding: .55rem 1.15rem .55rem .55rem;
  transform: translateY(-3px);
  border-color: var(--color--orange);
  box-shadow: 0 .9rem 2.4rem rgba(255, 0, 4, 0.35);
}

/* The launcher icon sits in its own tinted disc rather than the button being
   one flat bubble, so it reads as a distinct badge. */
.ft-launch-icon {
  width: 2.5rem;
  height: 2.5rem;
  flex-shrink: 0;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 35%, #ff3d40 0%, var(--color--orange) 70%);
  color: var(--color--white);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 0 1px rgba(255, 0, 4, 0.5), 0 .25rem .8rem rgba(255, 0, 4, 0.45);
  animation: ft-launch-icon-bob 3.2s ease-in-out infinite;
}

.chatbot-launcher svg {
  width: 1.4rem;
  height: 1.4rem;
  flex-shrink: 0;
}

/* Collapsed to nothing by default so the launcher reads as an icon-only
   button; hovering (or focusing) the launcher reveals it. */
.ft-launcher-text {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  line-height: 1.2;
  font-size: .88rem;
  font-weight: 700;
  white-space: nowrap;
  max-width: 0;
  opacity: 0;
  overflow: hidden;
  transition: max-width .3s cubic-bezier(.22, .61, .36, 1), opacity .2s ease;
}

.chatbot-launcher:hover .ft-launcher-text,
.chatbot-launcher:focus-visible .ft-launcher-text {
  max-width: 11rem;
  opacity: 1;
}

.ft-launcher-text b {
  color: var(--color--orange);
  font-size: .68rem;
  font-weight: 700;
  opacity: .9;
}

/* Gentle idle bob to make it feel alive without being distracting. Stops
   under prefers-reduced-motion. */
@keyframes ft-launch-icon-bob {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-.18rem); }
}

@media (prefers-reduced-motion: reduce) {
  .ft-launch-icon {
    animation: none;
  }
}

.chatbot-launcher[hidden],
.chatbot-panel[hidden] {
  display: none !important;
}

/* Small attention bubble that appears once, above the launcher */
.chatbot-nudge {
  position: fixed;
  right: 1.5rem;
  bottom: 5.5rem;
  z-index: 9989;
  max-width: 15rem;
  background-color: var(--color--white);
  color: var(--color--black);
  border-radius: .9rem;
  padding: .8rem 2rem .8rem .95rem;
  font-family: Satoshi, sans-serif;
  font-size: .82rem;
  line-height: 1.4;
  font-weight: 500;
  box-shadow: 0 .75rem 2rem rgba(0, 0, 0, 0.45);
  cursor: pointer;
  animation: chatbot-nudge-in .35s ease both;
}

.chatbot-nudge[hidden] {
  display: none;
}

.chatbot-nudge::after {
  content: "";
  position: absolute;
  bottom: -.4rem;
  right: 1.75rem;
  width: .8rem;
  height: .8rem;
  background-color: var(--color--white);
  transform: rotate(45deg);
}

.chatbot-nudge-close {
  position: absolute;
  top: .3rem;
  right: .45rem;
  background: none;
  border: none;
  color: var(--color--black);
  opacity: .45;
  font-size: 1rem;
  line-height: 1;
  cursor: pointer;
  padding: .15rem;
}

@keyframes chatbot-nudge-in {
  from { opacity: 0; transform: translateY(.6rem); }
  to   { opacity: 1; transform: translateY(0); }
}

.chatbot-panel {
  position: fixed;
  right: 1.5rem;
  bottom: 1.5rem;
  z-index: 9995;
  width: 24rem;
  max-width: calc(100vw - 2rem);
  height: 36rem;
  max-height: calc(100vh - 3rem);
  background-color: #131313;
  border: 1px solid var(--color--grey);
  border-radius: 1.25rem;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: 0 1.75rem 3.5rem rgba(0, 0, 0, 0.6);
  font-family: Satoshi, sans-serif;
  animation: chatbot-panel-in .22s ease both;
}

@keyframes chatbot-panel-in {
  from { opacity: 0; transform: translateY(1rem) scale(.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

.chatbot-header {
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: 1rem 1.1rem;
  background: linear-gradient(120deg, #1a1a1a 0%, #241012 100%);
  border-bottom: 1px solid var(--color--grey);
  flex-shrink: 0;
}

.chatbot-avatar {
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  background-color: var(--color--orange);
  color: var(--color--white);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.chatbot-avatar svg {
  width: 1.15rem;
  height: 1.15rem;
}

.chatbot-header-text {
  flex: 1;
  min-width: 0;
}

.chatbot-header-title {
  color: var(--color--white);
  font-weight: 700;
  font-size: .92rem;
  line-height: 1.2;
}

.chatbot-header-status {
  display: flex;
  align-items: center;
  gap: .35rem;
  color: var(--color--white);
  opacity: .55;
  font-size: .72rem;
  margin-top: .15rem;
}

.chatbot-status-dot {
  width: .4rem;
  height: .4rem;
  border-radius: 50%;
  background-color: #22c55e;
  flex-shrink: 0;
}

.chatbot-tier-pill {
  background-color: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 50rem;
  padding: .18rem .55rem;
  font-size: .65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--color--white);
  white-space: nowrap;
}

.chatbot-tier-pill.paid {
  background-color: rgba(255, 0, 4, 0.2);
  border-color: var(--color--orange);
}

.chatbot-close {
  background: none;
  border: none;
  color: var(--color--white);
  opacity: .6;
  cursor: pointer;
  font-size: 1.35rem;
  line-height: 1;
  padding: .2rem .3rem;
  flex-shrink: 0;
}

.chatbot-close:hover {
  opacity: 1;
}

/* Panel body — every step renders inside this scroll area */
.chatbot-body {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

/* ---------- Lead-capture step ---------- */

.chatbot-lead {
  padding: 1.5rem 1.25rem;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  flex: 1;
}

.chatbot-lead-icon {
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  background-color: rgba(255, 0, 4, 0.15);
  border: 1px solid rgba(255, 0, 4, 0.5);
  color: var(--color--orange);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 1rem;
}

.chatbot-lead-icon svg {
  width: 1.4rem;
  height: 1.4rem;
}

.chatbot-lead-title {
  color: var(--color--white);
  font-size: 1.1rem;
  font-weight: 700;
  margin-bottom: .4rem;
}

.chatbot-lead-copy {
  color: var(--color--white);
  opacity: .6;
  font-size: .85rem;
  line-height: 1.5;
  margin-bottom: 1.35rem;
}

.chatbot-field {
  margin-bottom: 1rem;
}

.chatbot-field-label {
  color: var(--color--white);
  font-size: .78rem;
  font-weight: 600;
  opacity: .85;
  margin-bottom: .4rem;
  display: block;
}

.chatbot-input {
  width: 100%;
  color: #fbfbfb;
  background-color: rgba(255, 255, 255, 0.05);
  border: 1px solid var(--color--grey);
  border-radius: .6rem;
  padding: .7rem .85rem;
  font-size: .88rem;
  font-family: Satoshi, sans-serif;
  transition: border-color .2s ease, background-color .2s ease;
  box-sizing: border-box;
}

.chatbot-input::placeholder {
  color: rgba(255, 255, 255, 0.35);
}

.chatbot-input:focus {
  outline: none;
  border-color: var(--color--orange);
  background-color: rgba(255, 255, 255, 0.07);
}

.chatbot-error {
  color: #ff6b6f;
  font-size: .78rem;
  min-height: 1.1rem;
  margin-bottom: .35rem;
}

.chatbot-submit {
  width: 100%;
  background-color: var(--color--orange);
  color: var(--color--white);
  border: none;
  border-radius: 50rem;
  padding: .8rem 1.25rem;
  font-weight: 700;
  font-size: .9rem;
  font-family: Satoshi, sans-serif;
  cursor: pointer;
  transition: opacity .2s ease;
}

.chatbot-submit:hover:not(:disabled) {
  opacity: .9;
}

.chatbot-submit:disabled {
  opacity: .5;
  cursor: not-allowed;
}

/* Honeypot — off-screen rather than display:none, which some bots skip. */
.cb-hp {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.chatbot-lead-fineprint {
  color: var(--color--white);
  opacity: .4;
  font-size: .72rem;
  text-align: center;
  margin-top: .9rem;
  line-height: 1.5;
}

/* ---------- Message list ---------- */

.chatbot-messages {
  flex: 1;
  overflow-y: auto;
  padding: 1.1rem;
  display: flex;
  flex-direction: column;
  gap: .8rem;
  scroll-behavior: smooth;
}

.chatbot-messages::-webkit-scrollbar {
  width: .35rem;
}

.chatbot-messages::-webkit-scrollbar-thumb {
  background-color: rgba(255, 255, 255, 0.15);
  border-radius: 50rem;
}

.chatbot-msg {
  max-width: 88%;
  padding: .7rem .9rem;
  border-radius: 1rem;
  font-size: .87rem;
  line-height: 1.55;
  word-wrap: break-word;
  overflow-wrap: anywhere;
}

.chatbot-msg.user {
  align-self: flex-end;
  background-color: var(--color--orange);
  color: var(--color--white);
  border-bottom-right-radius: .25rem;
}

.chatbot-msg.assistant {
  align-self: flex-start;
  background-color: rgba(255, 255, 255, 0.07);
  color: var(--color--white);
  border-bottom-left-radius: .25rem;
}

/* Markdown rendered inside assistant replies */
.chatbot-msg p {
  margin: 0 0 .6rem;
}

.chatbot-msg p:last-child {
  margin-bottom: 0;
}

.chatbot-msg strong {
  font-weight: 700;
  color: var(--color--white);
}

.chatbot-msg em {
  font-style: italic;
}

.chatbot-msg ul {
  margin: .4rem 0 .6rem;
  padding-left: 1.1rem;
  display: flex;
  flex-direction: column;
  gap: .3rem;
}

.chatbot-msg li {
  font-size: .86rem;
  line-height: 1.5;
}

.chatbot-msg li::marker {
  color: var(--color--orange);
}

.chatbot-msg code {
  background-color: rgba(0, 0, 0, 0.45);
  border-radius: .3rem;
  padding: .1rem .35rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: .82em;
}

/* Typing indicator */
.chatbot-typing {
  align-self: flex-start;
  background-color: rgba(255, 255, 255, 0.07);
  border-radius: 1rem;
  border-bottom-left-radius: .25rem;
  padding: .85rem 1rem;
  display: flex;
  gap: .3rem;
}

.chatbot-typing span {
  width: .4rem;
  height: .4rem;
  border-radius: 50%;
  background-color: rgba(255, 255, 255, 0.6);
  animation: chatbot-blink 1.3s infinite ease-in-out both;
}

.chatbot-typing span:nth-child(2) { animation-delay: .18s; }
.chatbot-typing span:nth-child(3) { animation-delay: .36s; }

@keyframes chatbot-blink {
  0%, 80%, 100% { opacity: .25; transform: translateY(0); }
  40%           { opacity: 1;   transform: translateY(-.15rem); }
}

/* Suggested-question chips inside the chat */
.chatbot-suggestions {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  padding: 0 1.1rem .5rem;
  flex-shrink: 0;
}

.chatbot-suggestion {
  background-color: rgba(255, 255, 255, 0.06);
  border: 1px solid var(--color--grey);
  border-radius: 50rem;
  color: var(--color--white);
  padding: .4rem .8rem;
  font-size: .76rem;
  font-family: Satoshi, sans-serif;
  cursor: pointer;
  transition: border-color .2s ease, background-color .2s ease;
}

.chatbot-suggestion:hover {
  border-color: var(--color--orange);
  background-color: rgba(255, 0, 4, 0.1);
}

/* ---------- Composer ---------- */

.chatbot-counter {
  color: var(--color--white);
  opacity: .45;
  font-size: .72rem;
  text-align: center;
  padding: .35rem 1rem;
  flex-shrink: 0;
}

.chatbot-counter b {
  opacity: .9;
  font-weight: 700;
}

.chatbot-footer {
  display: flex;
  gap: .5rem;
  padding: .8rem;
  border-top: 1px solid var(--color--grey);
  background-color: rgba(0, 0, 0, 0.35);
  flex-shrink: 0;
}

.chatbot-footer .chatbot-input {
  flex: 1;
  border-radius: 50rem;
}

/* ---------- Screenshot attachments ---------- */

.chatbot-attach {
  width: 2.4rem;
  height: 2.4rem;
  flex-shrink: 0;
  align-self: flex-end;
  background: none;
  border: 1px solid var(--color--grey);
  border-radius: 50%;
  color: var(--color--white);
  opacity: .65;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: opacity .2s ease, border-color .2s ease;
}

.chatbot-attach svg {
  width: 1.05rem;
  height: 1.05rem;
}

.chatbot-attach:hover:not(:disabled) {
  opacity: 1;
  border-color: var(--color--orange);
}

.chatbot-attach:disabled {
  opacity: .35;
  cursor: not-allowed;
}

.chatbot-attachments {
  display: flex;
  gap: .5rem;
  flex-wrap: wrap;
  padding: 0 .8rem .6rem;
  flex-shrink: 0;
}

.chatbot-attachment {
  position: relative;
  width: 3.25rem;
  height: 3.25rem;
  border-radius: .5rem;
  overflow: hidden;
  border: 1px solid var(--color--grey);
}

.chatbot-attachment img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.chatbot-attachment-x {
  position: absolute;
  top: .1rem;
  right: .1rem;
  width: 1.1rem;
  height: 1.1rem;
  border: none;
  border-radius: 50%;
  background-color: rgba(0, 0, 0, 0.75);
  color: var(--color--white);
  font-size: .85rem;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Screenshot shown inside a sent message */
.chatbot-msg-img {
  display: block;
  max-width: 100%;
  border-radius: .5rem;
  margin-bottom: .45rem;
  border: 1px solid rgba(255, 255, 255, 0.2);
}

/* Drag-and-drop feedback */
.chatbot-panel.dragging {
  outline: 2px dashed var(--color--orange);
  outline-offset: -4px;
}

.chatbot-send {
  width: 2.6rem;
  height: 2.6rem;
  flex-shrink: 0;
  background-color: var(--color--orange);
  color: var(--color--white);
  border: none;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: opacity .2s ease;
}

.chatbot-send svg {
  width: 1.05rem;
  height: 1.05rem;
}

.chatbot-send:disabled,
.chatbot-input:disabled {
  opacity: .45;
  cursor: not-allowed;
}

/* ---------- In-panel paywall ---------- */

.chatbot-paywall {
  padding: 1.5rem 1.25rem;
  overflow-y: auto;
  flex: 1;
  display: flex;
  flex-direction: column;
}

.chatbot-paywall-icon {
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  background-color: rgba(255, 0, 4, 0.15);
  border: 1px solid rgba(255, 0, 4, 0.5);
  color: var(--color--orange);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 1rem;
}

.chatbot-paywall-icon svg {
  width: 1.4rem;
  height: 1.4rem;
}

.chatbot-paywall-title {
  color: var(--color--white);
  font-weight: 700;
  font-size: 1.1rem;
  margin-bottom: .4rem;
}

.chatbot-paywall-subtitle {
  color: var(--color--white);
  opacity: .6;
  font-size: .85rem;
  line-height: 1.5;
  margin-bottom: 1.25rem;
}

.chatbot-plan-mini {
  border: 1px solid var(--color--grey);
  border-radius: .9rem;
  padding: 1rem;
  margin-bottom: .75rem;
  cursor: pointer;
  transition: border-color .2s ease, background-color .2s ease;
}

.chatbot-plan-mini:hover {
  border-color: rgba(255, 255, 255, 0.35);
}

.chatbot-plan-mini.featured {
  border-color: var(--color--orange);
  background-color: rgba(255, 0, 4, 0.07);
}

.chatbot-plan-mini-top {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .5rem;
  margin-bottom: .5rem;
}

.chatbot-plan-mini-name {
  color: var(--color--white);
  font-weight: 700;
  font-size: .95rem;
}

.chatbot-plan-mini-price {
  color: var(--color--white);
  font-weight: 700;
  font-size: 1.05rem;
}

.chatbot-plan-mini-price span {
  font-size: .72rem;
  opacity: .55;
  font-weight: 400;
}

.chatbot-plan-mini-features {
  list-style: none;
  margin: 0 0 .85rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: .3rem;
}

.chatbot-plan-mini-features li {
  color: var(--color--white);
  opacity: .65;
  font-size: .78rem;
  padding-left: .9rem;
  position: relative;
}

.chatbot-plan-mini-features li::before {
  content: "•";
  position: absolute;
  left: 0;
  color: var(--color--orange);
}

.chatbot-paywall-link {
  color: var(--color--white);
  opacity: .5;
  font-size: .78rem;
  text-align: center;
  text-decoration: underline;
  margin-top: auto;
  padding-top: .75rem;
}

.chatbot-paywall-link:hover {
  opacity: .8;
  color: var(--color--white);
}

/* ---------- Upgraded confirmation ---------- */

.chatbot-upgraded-banner {
  background-color: rgba(34, 197, 94, 0.12);
  border-bottom: 1px solid rgba(34, 197, 94, 0.4);
  color: #4ade80;
  font-size: .78rem;
  font-weight: 600;
  text-align: center;
  padding: .55rem 1rem;
  flex-shrink: 0;
}

/* ==========================================================================
   7. Quotation form (quote.html)
   ========================================================================== */

.quote-layout {
  max-width: 44rem;
  margin: 0 auto;
  width: 100%;
}

.quote-form {
  display: flex;
  flex-direction: column;
}

.quote-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 1.25rem;
}

.quote-select {
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .85rem center;
  background-size: 1rem;
  padding-right: 2.5rem;
}

.quote-select option {
  background-color: #131313;
  color: var(--color--white);
}

.quote-textarea {
  min-height: 8rem;
  resize: vertical;
  font-family: Satoshi, sans-serif;
}

.quote-checkbox-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .6rem;
  margin-top: .4rem;
}

.quote-checkbox {
  display: flex;
  align-items: center;
  gap: .6rem;
  background-color: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--color--grey);
  border-radius: .6rem;
  padding: .7rem .85rem;
  cursor: pointer;
  transition: border-color .2s ease, background-color .2s ease;
}

.quote-checkbox:hover {
  border-color: rgba(255, 255, 255, 0.3);
}

.quote-checkbox input {
  width: 1.05rem;
  height: 1.05rem;
  accent-color: var(--color--orange);
  flex-shrink: 0;
}

.quote-checkbox span {
  color: var(--color--white);
  font-size: .84rem;
  line-height: 1.3;
}

.quote-checkbox:has(input:checked) {
  border-color: var(--color--orange);
  background-color: rgba(255, 0, 4, 0.08);
}

.quote-submit {
  width: 100%;
  margin-top: .5rem;
}

.quote-success {
  max-width: 28rem;
  margin: 0 auto;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 2rem 0;
}

/* A class rule with `display:` beats the browser's own `[hidden]{display:none}`
   default at equal specificity, so the HTML `hidden` attribute alone doesn't
   hide this element once .quote-success sets its own display. Restated here
   with the attribute in the selector, which wins regardless of source order. */
.quote-success[hidden] {
  display: none;
}

.quote-success .chatbot-lead-icon {
  background-color: rgba(34, 197, 94, 0.15);
  border-color: #22c55e;
  color: #4ade80;
}

/* ==========================================================================
   8. Callback side tab
   ========================================================================== */

.ft-callback-tab {
  position: fixed;
  right: 0;
  top: 50%;
  transform-origin: 100% 50%;
  transform: translateY(-50%) translateX(0);
  z-index: 9980;
  display: flex;
  align-items: center;
  gap: .55rem;
  max-width: 2.9rem;
  overflow: hidden;
  background-color: var(--color--dark-grey);
  border: 1px solid var(--color--grey);
  border-right: none;
  border-radius: .75rem 0 0 .75rem;
  color: var(--color--white);
  font-family: Satoshi, sans-serif;
  padding: .8rem .9rem;
  cursor: pointer;
  text-align: left;
  box-shadow: -.35rem 0 1.5rem rgba(0, 0, 0, 0.45);
  transition: background-color .2s ease, border-color .2s ease, padding-right .2s ease,
    max-width .3s cubic-bezier(.22, .61, .36, 1);
}

.ft-callback-tab:hover,
.ft-callback-tab:focus-visible {
  max-width: 14rem;
  background-color: #241012;
  border-color: var(--color--orange);
  padding-right: 1.15rem;
}

.ft-callback-tab svg {
  width: 1.15rem;
  height: 1.15rem;
  color: var(--color--orange);
  flex-shrink: 0;
}

/* Collapsed to nothing by default so the tab reads as an icon-only button;
   hovering (or focusing) reveals the label. */
.ft-callback-tab span {
  display: flex;
  flex-direction: column;
  line-height: 1.25;
  font-size: .78rem;
  font-weight: 600;
  white-space: nowrap;
  max-width: 0;
  opacity: 0;
  transition: max-width .3s cubic-bezier(.22, .61, .36, 1), opacity .2s ease;
}

.ft-callback-tab:hover span,
.ft-callback-tab:focus-visible span {
  max-width: 10rem;
  opacity: 1;
}

.ft-callback-tab b {
  color: var(--color--orange);
  font-size: .7rem;
  font-weight: 700;
}

/* "from AED 4,999" prefix on variable-priced products */
.price-from {
  font-size: .8rem;
  font-weight: 400;
  opacity: .55;
  margin-right: .15rem;
}

/* The "not sure which" helper card sits at the end of the pricing grid */
.pricing-card-help {
  background-color: rgba(255, 255, 255, 0.03);
  border-style: dashed;
}

.pricing-card-help .plan-cta + .plan-cta {
  margin-top: .6rem;
}

/* ==========================================================================
   9. Page-load entrance animation
   Mirrors the fade-and-rise the Webflow IX2 interactions use elsewhere on the
   site, but as plain CSS so it doesn't depend on the IX2 engine.
   ========================================================================== */

@keyframes ft-fade-rise {
  from { opacity: 0; transform: translateY(1.25rem); }
  to   { opacity: 1; transform: translateY(0); }
}

.ai-announce-bar {
  animation: ft-fade-rise .7s cubic-bezier(.22, .61, .36, 1) .35s both;
}

/* The tab is vertically centred with translateY(-50%), so its entrance has to
   keep that offset in every frame or it jumps down the page. */
@keyframes ft-tab-slide-in {
  from { opacity: 0; transform: translateY(-50%) translateX(100%); }
  to   { opacity: 1; transform: translateY(-50%) translateX(0); }
}

.ft-callback-tab {
  animation: ft-tab-slide-in .6s cubic-bezier(.22, .61, .36, 1) .9s both;
}

@media (prefers-reduced-motion: reduce) {
  .ai-announce-bar,
  .ft-callback-tab {
    animation: none;
  }
}

/* ==========================================================================
   10. Fortinet product cards, themed for the dark site
   The Webflow export gives these cards a white background with black text
   (.spark-wrapped-card-2.spark-stacked), which reads as a stack of bright
   boxes on a black page. Overridden here rather than in the 7,000-line
   generated stylesheet so the change stays isolated and reversible.
   The coloured accent borders are kept, since they carry the categorisation.
   ========================================================================== */

.spark-wrapped-card-2.spark-stacked {
  background-color: var(--color--dark-grey);
  border-color: var(--color--grey);
  transition: border-color .2s ease, background-color .2s ease, transform .2s ease;
}

.spark-wrapped-card-2.spark-stacked:hover {
  background-color: #232323;
  transform: translateY(-3px);
}

/* Keep each category's accent colour, just on a dark surface */
.spark-wrapped-card-2.spark-stacked.secure-networking {
  background-color: var(--color--dark-grey);
}

.spark-bold-heading-2.spark-card-title,
.spark-wrapped-card-2.spark-stacked .spark-bold-heading-2 {
  color: var(--color--white);
}

.spark-wrapped-card-2.spark-stacked .spark-small-sub-paragraph-2 {
  color: var(--color--white);
  opacity: .65;
}

/* The category icons are supplied as artwork with white/light backgrounds,
   so give them a light plate rather than letting them float on the dark card. */
.spark-wrapped-card-2.spark-stacked .spark-square-image-card-2 {
  background-color: rgba(255, 255, 255, 0.92);
  padding: .35rem;
  box-sizing: border-box;
}

/* ==========================================================================
   11. Section entrance animations (Support and Get a Quote pages)
   ========================================================================== */

.ai-hero,
.ai-section-wrapper,
.chatbot-promo-section,
.quote-layout {
  animation: ft-fade-rise .8s cubic-bezier(.22, .61, .36, 1) both;
}

/* Stagger so sections arrive in reading order rather than all at once */
.ai-hero { animation-delay: .1s; }
.ai-section-wrapper { animation-delay: .2s; }
.quote-layout { animation-delay: .15s; }
.chatbot-promo-section { animation-delay: .25s; }

/* `backwards` not `both`: the animation must not leave its final transform
   stuck on the element, or it overrides the :hover lift defined earlier. */
.pricing-card {
  animation: ft-fade-rise .6s cubic-bezier(.22, .61, .36, 1) backwards;
}

.pricing-card:nth-child(1) { animation-delay: .25s; }
.pricing-card:nth-child(2) { animation-delay: .32s; }
.pricing-card:nth-child(3) { animation-delay: .39s; }
.pricing-card:nth-child(4) { animation-delay: .46s; }
.pricing-card:nth-child(5) { animation-delay: .53s; }
.pricing-card:nth-child(6) { animation-delay: .60s; }

@media (prefers-reduced-motion: reduce) {
  .ai-hero,
  .ai-section-wrapper,
  .chatbot-promo-section,
  .quote-layout,
  .pricing-card {
    animation: none;
  }
}

/* ==========================================================================
   12. Technology partners
   Wordmarks are rendered as styled text so the section needs no third-party
   logo files. Adding a `logo` path in site-extras.js swaps in a real image.
   ========================================================================== */

.ft-partner-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 1rem;
  width: 100%;
}

.ft-partner-tile {
  --partner-accent: var(--color--orange);
  background-color: var(--color--dark-grey);
  border: 1px solid var(--color--grey);
  border-radius: .9rem;
  min-height: 6rem;
  padding: 1.25rem 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: border-color .2s ease, background-color .2s ease, transform .2s ease;
}

.ft-partner-tile:hover {
  border-color: var(--partner-accent);
  background-color: #232323;
  transform: translateY(-3px);
}

.ft-partner-logo-img {
  max-width: 100%;
  max-height: 2.75rem;
  object-fit: contain;
  /* The Fortinet badge artwork is dark-on-transparent, so lift it on dark. */
  filter: brightness(0) invert(1);
  opacity: .9;
}

.ft-partner-tile:hover .ft-partner-logo-img {
  opacity: 1;
}

/* Typographic wordmarks */
.ft-wordmark {
  color: var(--color--white);
  opacity: .78;
  font-family: Satoshi, sans-serif;
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: -.02em;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  transition: opacity .2s ease;
}

.ft-partner-tile:hover .ft-wordmark { opacity: 1; }

.ft-wm-microsoft svg { width: 1.3rem; height: 1.3rem; }
.ft-wm-microsoft { font-weight: 400; letter-spacing: 0; }
.ft-wm-cisco { letter-spacing: .01em; font-weight: 400; font-size: 1.3rem; }
.ft-wm-hp { font-size: 1.7rem; font-weight: 300; letter-spacing: .02em; }
.ft-wm-dell { letter-spacing: .18em; font-weight: 400; font-size: 1.25rem; }
.ft-wm-lenovo { letter-spacing: -.03em; font-size: 1.4rem; }
.ft-wm-huawei { letter-spacing: .12em; font-weight: 500; font-size: 1.2rem; }
.ft-wm-engenius { letter-spacing: -.01em; font-size: 1.25rem; }
.ft-wm-dlink { letter-spacing: .01em; font-size: 1.3rem; }
.ft-wm-tplink { letter-spacing: -.01em; font-size: 1.3rem; }

/* Partner detail modal */
.ft-partner-modal-head {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1.1rem;
  padding-right: 1.5rem;
}

.ft-partner-modal-mark {
  width: 4.5rem;
  height: 3.25rem;
  flex-shrink: 0;
  border-radius: .6rem;
  background-color: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.1);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: .4rem;
}

.ft-partner-modal-mark .ft-wordmark { font-size: .8rem; opacity: 1; }
.ft-partner-modal-mark .ft-wm-microsoft svg { width: .85rem; height: .85rem; }
.ft-partner-modal-mark .ft-partner-logo-img { max-height: 1.9rem; }

.ft-partner-tagline {
  color: var(--color--white);
  opacity: .55;
  font-size: .82rem;
  margin-top: .1rem;
}

.ft-partner-badge {
  display: inline-block;
  margin-top: .45rem;
  background-color: rgba(255, 0, 4, 0.14);
  border: 1px solid rgba(255, 0, 4, 0.5);
  color: var(--color--orange);
  border-radius: 50rem;
  padding: .18rem .6rem;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .03em;
}

.ft-partner-summary {
  color: var(--color--white);
  opacity: .72;
  font-size: .88rem;
  line-height: 1.6;
  margin: 0 0 1rem;
}

.ft-partner-section-label {
  color: var(--color--white);
  opacity: .4;
  font-size: .7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  margin-bottom: .55rem;
}

.ft-partner-products {
  list-style: none;
  margin: 0 0 1.1rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: .45rem;
}

.ft-partner-products li {
  color: var(--color--white);
  opacity: .78;
  font-size: .85rem;
  padding-left: 1.1rem;
  position: relative;
}

.ft-partner-products li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .48rem;
  width: .35rem;
  height: .35rem;
  border-radius: 50%;
  background-color: var(--color--orange);
}

/* ==========================================================================
   13. Site search
   ========================================================================== */

.ft-search-trigger {
  display: flex;
  align-items: center;
  gap: .45rem;
  background-color: rgba(255, 255, 255, 0.06);
  border: 1px solid var(--color--grey);
  border-radius: 50rem;
  color: var(--color--white);
  font-family: Satoshi, sans-serif;
  font-size: .8rem;
  padding: .4rem .85rem;
  cursor: pointer;
  transition: border-color .2s ease, background-color .2s ease;
}

.ft-search-trigger:hover {
  border-color: var(--color--orange);
  background-color: rgba(255, 0, 4, 0.08);
}

.ft-search-trigger svg {
  width: .95rem;
  height: .95rem;
  flex-shrink: 0;
  opacity: .8;
}

.ft-search-modal {
  max-width: 34rem;
  padding: 1.25rem;
}

.ft-search-box {
  display: flex;
  align-items: center;
  gap: .6rem;
  border: 1px solid var(--color--grey);
  border-radius: .7rem;
  padding: .2rem .85rem;
  margin-right: 2rem;
  background-color: rgba(255, 255, 255, 0.04);
}

.ft-search-box svg {
  width: 1.05rem;
  height: 1.05rem;
  color: var(--color--white);
  opacity: .5;
  flex-shrink: 0;
}

.ft-search-box input {
  flex: 1;
  background: none;
  border: none;
  outline: none;
  color: var(--color--white);
  font-family: Satoshi, sans-serif;
  font-size: 1rem;
  padding: .8rem 0;
}

.ft-search-box input::placeholder { color: rgba(255, 255, 255, 0.35); }
.ft-search-box input::-webkit-search-cancel-button { filter: invert(1); opacity: .5; }

.ft-search-results {
  margin-top: 1rem;
  max-height: 24rem;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: .5rem;
}

.ft-search-hint {
  color: var(--color--white);
  opacity: .45;
  font-size: .85rem;
  padding: .75rem .25rem;
}

.ft-search-hint a { color: var(--color--orange); text-decoration: underline; }

.ft-search-result {
  display: block;
  border: 1px solid var(--color--grey);
  border-radius: .7rem;
  padding: .8rem .95rem;
  text-decoration: none;
  transition: border-color .2s ease, background-color .2s ease;
}

.ft-search-result:hover {
  border-color: var(--color--orange);
  background-color: rgba(255, 0, 4, 0.07);
}

.ft-search-result-title {
  color: var(--color--white);
  font-size: .92rem;
  font-weight: 700;
  margin-bottom: .25rem;
}

.ft-search-result-snippet {
  color: var(--color--white);
  opacity: .55;
  font-size: .8rem;
  line-height: 1.5;
}

/* ==========================================================================
   14. Responsive
   ========================================================================== */

@media screen and (max-width: 991px) {
  /* Nav collapses to a hamburger here, so there's no logo to align to any
     more. Stack the banner into a tidy centred block instead of trying to
     keep a single row, and float the dismiss button into the corner. */
  .ai-announce-bar {
    padding-left: 1rem;
    padding-right: 1rem;
  }

  .ai-announce-inner {
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: .55rem;
    padding: .75rem 1.5rem .85rem;
  }

  .ai-announce-pill {
    margin-left: 0;
    order: 1;
  }

  .ai-announce-text {
    order: 2;
    flex: none;
    font-size: .82rem;
    max-width: 40ch;
  }

  .ai-announce-cta {
    order: 3;
    font-size: .78rem;
    padding: .45rem 1rem;
  }

  .ai-announce-close {
    top: .75rem;
    right: .5rem;
    transform: none;
  }

  .pricing-grid {
    grid-template-columns: 1fr;
    max-width: 26rem;
    margin: 0 auto;
  }

  .chatbot-promo-wrapper {
    grid-template-columns: 1fr;
    padding: 2.25rem;
    gap: 2rem;
  }

  .chatbot-promo-title {
    font-size: 2rem;
  }

  .ai-section-wrapper {
    margin-top: 6rem;
    gap: 2.5rem;
  }

  .ai-hero {
    margin-top: 4rem;
  }

  .ai-cap-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .ft-partner-grid {
    grid-template-columns: repeat(3, 1fr);
  }

  .ai-pricing-terms {
    grid-template-columns: 1fr;
  }

  .ai-steps {
    grid-template-columns: repeat(2, 1fr);
    gap: 2.25rem 1.25rem;
  }

  .chatbot-promo-section {
    margin-top: 6rem;
  }
}

@media screen and (max-width: 767px) {
  .chatbot-panel {
    right: .75rem;
    left: .75rem;
    bottom: .75rem;
    width: auto;
    height: calc(100vh - 1.5rem);
    max-height: none;
  }

  .chatbot-launcher {
    right: 1rem;
    bottom: 1rem;
    height: 3.25rem;
    width: 3.25rem;
    max-width: 3.25rem;
    font-size: .85rem;
  }

  /* No hover on touch, so keep it icon-only; tapping opens the panel directly. */
  .chatbot-launcher:hover,
  .chatbot-launcher:focus-visible {
    max-width: 3.25rem;
    padding: .55rem;
  }

  .chatbot-nudge {
    right: 1rem;
    bottom: 5rem;
  }

  .chatbot-promo-wrapper {
    padding: 1.75rem;
  }

  .chatbot-promo-title {
    font-size: 1.7rem;
  }

  .ai-cap-grid,
  .ai-steps {
    grid-template-columns: 1fr;
  }

  .ai-chat-mockup {
    margin-top: 2.5rem;
  }

  .ai-hero-actions .plan-cta {
    width: 100%;
  }

  .ai-hero-actions {
    width: 100%;
    max-width: 20rem;
  }

  .quote-form-grid,
  .quote-checkbox-grid {
    grid-template-columns: 1fr;
  }

  .ft-partner-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .ft-partner-modal-head {
    flex-direction: column;
    align-items: flex-start;
  }

  /* On phones the side tab would fight the chat launcher, so it collapses to
     a small icon-only button tucked above it. No hover on touch, so the
     label stays hidden; tapping opens the callback modal directly. */
  .ft-callback-tab {
    top: auto;
    bottom: 5.25rem;
    transform: translateY(0);
    max-width: 2.75rem;
    border-radius: 50rem;
    border-right: 1px solid var(--color--grey);
    right: 1rem;
    padding: .7rem;
  }

  .ft-callback-tab:hover,
  .ft-callback-tab:focus-visible {
    max-width: 2.75rem;
    padding-right: .7rem;
  }

  .ft-callback-tab span {
    font-size: .74rem;
  }

  .ft-callback-tab b {
    display: none;
  }

  @keyframes ft-tab-slide-in {
    from { opacity: 0; transform: translateY(0) translateX(120%); }
    to   { opacity: 1; transform: translateY(0) translateX(0); }
  }
}

/* Shown in place of PayPal while online card payment is switched off. */
.ft-pay-contact {
  border: 1px solid var(--color--grey);
  border-radius: .8rem;
  padding: 1.1rem;
  margin-bottom: 1rem;
  background-color: rgba(255, 255, 255, 0.03);
}

.ft-pay-contact-title {
  color: var(--color--white);
  font-size: .95rem;
  font-weight: 700;
  margin-bottom: .35rem;
}

.ft-pay-contact-copy {
  color: var(--color--white);
  opacity: .6;
  font-size: .84rem;
  line-height: 1.5;
  margin-bottom: .9rem;
}

/* ==========================================================================
   10. Footer nav override
   Webflow's exported grid only has 5 tracks (brand + 4 link columns). We
   added a 5th link column (Support, Get a Quote) to mirror the navbar, so
   the grid needs a 6th track — otherwise that column has nowhere to go and
   either overflows the row or gets squeezed into an existing cell (which is
   what broke this the first time: 4 stacked links in one column made that
   cell taller than its siblings, and the footer's social/legal row below
   doesn't reserve space for that, so it visually overlapped).
   ========================================================================== */
.spark-footer-grid-2 {
  grid-template-columns: 2fr 1fr 1fr 1fr 1fr 1fr !important;
}

@media screen and (max-width: 991px) {
  .spark-footer-grid-2 {
    grid-template-columns: 2.25fr !important;
  }
}

/* ==========================================================================
   11. "Our Commitment to Your Security" cards
   These cards used to carry a small quote-mark icon at the top (removed —
   the section was styled like client testimonials with a quote icon and a
   "hear directly from our clients" subhead, but the copy is FortiTech
   talking about itself, not real client quotes). Without the icon, the
   card's original top padding (2.5rem) reads as a dead gap, so it's
   tightened here instead of just deleting markup and leaving stray space.
   ========================================================================== */
.testimonial-card {
  padding-top: 1.75rem !important;
}

/* ==========================================================================
   12. Header phone + footer contact block
   Real, clickable contact details. The site previously had no phone number
   or email visible anywhere in the chrome, so a visitor who wanted to buy
   had to hunt for a way to reach the company.
   ========================================================================== */
.ft-header-phone .text-block-3 {
  white-space: nowrap;
  font-weight: 700;
}

.ft-header-phone:hover .text-block-3 {
  color: var(--color--orange);
}

.ft-footer-contact {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem .75rem;
  margin-bottom: 1rem;
  font-family: Satoshi, sans-serif;
  font-size: .82rem;
}

.ft-footer-contact a {
  color: var(--color--white);
  text-decoration: none;
  opacity: .75;
  transition: opacity .2s ease, color .2s ease;
}

.ft-footer-contact a:hover {
  opacity: 1;
  color: var(--color--orange);
}

.ft-footer-contact-sep {
  opacity: .25;
  color: var(--color--white);
}

@media screen and (max-width: 767px) {
  /* Stack rather than wrap mid-number, and drop the separators. */
  .ft-footer-contact {
    flex-direction: column;
    align-items: flex-start;
    gap: .55rem;
  }

  .ft-footer-contact-sep {
    display: none;
  }
}

/* Contact page: direct contact details, labelled so a visitor knows which
   line to use rather than being handed three unexplained numbers. */
.ft-contact-direct {
  max-width: 46rem;
  margin: 0 auto 2.5rem;
  padding: 1.5rem;
  border: 1px solid var(--color--grey);
  border-radius: .8rem;
  background-color: rgba(255, 255, 255, 0.03);
  font-family: Satoshi, sans-serif;
}

.ft-contact-direct-title {
  color: var(--color--white);
  font-size: .95rem;
  font-weight: 700;
  margin-bottom: 1rem;
  text-align: center;
}

.ft-contact-direct-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: .75rem;
}

.ft-contact-direct-grid a {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  padding: .75rem .5rem;
  border-radius: .55rem;
  text-align: center;
  text-decoration: none;
  background-color: rgba(255, 255, 255, 0.03);
  transition: background-color .2s ease;
}

.ft-contact-direct-grid a:hover {
  background-color: rgba(255, 0, 4, 0.12);
}

.ft-contact-label {
  color: var(--color--orange);
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.ft-contact-value {
  color: var(--color--white);
  font-size: .84rem;
  font-weight: 600;
  word-break: break-word;
}

@media screen and (max-width: 767px) {
  .ft-contact-direct-grid {
    grid-template-columns: 1fr 1fr;
  }
}

@media screen and (max-width: 400px) {
  .ft-contact-direct-grid {
    grid-template-columns: 1fr;
  }
}

/* Inline form confirmation (contact page). The form used to POST straight to
   Formspree, which navigated the visitor away to Formspree's own thank-you
   page; this keeps them on fortitech.ae. Note the [hidden] override — a class
   with an explicit `display` silently beats the browser's [hidden] default. */
.ft-form-success {
  max-width: 46rem;
  margin: 0 auto;
  padding: 2rem 1.5rem;
  border: 1px solid var(--color--grey);
  border-radius: .8rem;
  background-color: rgba(255, 255, 255, 0.03);
  text-align: center;
  font-family: Satoshi, sans-serif;
  display: block;
}

.ft-form-success[hidden] {
  display: none;
}

.ft-form-success-icon {
  width: 3rem;
  height: 3rem;
  margin: 0 auto 1rem;
  border-radius: 50%;
  background-color: var(--color--orange);
  color: var(--color--white);
  font-size: 1.5rem;
  line-height: 3rem;
}

.ft-form-success-title {
  color: var(--color--white);
  font-size: 1.25rem;
  font-weight: 700;
  margin-bottom: .5rem;
}

.ft-form-success-copy {
  color: var(--color--white);
  opacity: .7;
  font-size: .9rem;
  line-height: 1.6;
}

/* Mobile: the whole .right-navbar-content is display:none below 991px, which
   would bury the phone number inside the hamburger. Click-to-call is the most
   valuable action on a phone, so the number is pulled back out and shown next
   to the burger icon instead of being hidden behind it. */
@media screen and (max-width: 991px) {
  .right-navbar-content {
    display: flex !important;
    align-items: center;
    gap: .5rem;
  }

  /* ...but only the phone survives; the rest stays in the burger menu. */
  .right-navbar-content > *:not(.ft-header-phone) {
    display: none !important;
  }

  .ft-header-phone {
    display: inline-flex !important;
    align-items: center;
    padding: .45rem .8rem;
    border: 1px solid var(--color--orange);
    border-radius: 50rem;
  }

  .ft-header-phone .text-block-3 {
    font-size: .78rem;
    color: var(--color--orange);
  }
}

@media screen and (max-width: 479px) {
  /* Very narrow: shorten to an icon-style label so it never wraps the logo. */
  .ft-header-phone {
    padding: .4rem .65rem;
  }

  .ft-header-phone .text-block-3 {
    font-size: .72rem;
  }
}

/* The header "Contact Us" button was wrapping onto two lines once the phone
   number was added next to it, which made the pill tall and lopsided. */
.right-navbar-content .primary-button {
  white-space: nowrap;
  flex-shrink: 0;
}

.right-navbar-content .primary-button .text-size-small {
  white-space: nowrap;
}

/* Give the row a little breathing room so the number and button never collide. */
.right-navbar-content {
  gap: .75rem;
}

/* Same wrapping problem as the Contact Us button: "Get a Quote" and
   "Outbreak Map" were breaking onto two lines and making the navbar ragged. */
.nav-link .text-block-5,
.nav-link .text-block-4,
.nav-link .text-block-6,
.nav-link .text-block-7,
.nav-link .text-block-8,
.nav-link .text-block-9,
.nav-link .text-block-10,
.link-block-navbar .text-block-3 {
  white-space: nowrap;
}

.nav-link,
.link-block-navbar {
  flex-shrink: 0;
}
