/* =====================================================================
   Solvid DS components — React islands re-implemented as pure CSS.
   Values transcribed 1:1 from _ds_bundle.js (Button / Input / Accordion).
   ===================================================================== */

/* ---- Button ---- */
.ds-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  width:auto;height:42px;padding:0 18px;
  font:var(--text-button);font-size:var(--fs-button);letter-spacing:var(--ls-tight);
  border-radius:var(--radius-md);border:1px solid transparent;
  cursor:pointer;white-space:nowrap;text-decoration:none;
  transition:var(--transition-colors),transform var(--duration-fast) var(--ease-standard),box-shadow var(--duration-normal) var(--ease-standard);
}
.ds-btn:active{transform:translateY(0.5px) scale(0.99)}
.ds-btn[disabled]{opacity:.5;cursor:not-allowed}
.ds-btn iconify-icon,.ds-btn svg{display:block;flex-shrink:0}
.ds-btn-sm{height:34px;padding:0 14px;font-size:var(--fs-body-sm);border-radius:var(--radius-sm)}
.ds-btn-md{height:42px;padding:0 18px;font-size:var(--fs-button);border-radius:var(--radius-md)}
.ds-btn-lg{height:50px;padding:0 24px;font-size:var(--fs-body-md);border-radius:var(--radius-md)}
.ds-btn-block{width:100%}
.ds-btn-primary{background:var(--brand-primary);color:var(--text-inverse);box-shadow:var(--shadow-soft)}
.ds-btn-primary:hover{background:var(--brand-primary-hover);color:var(--text-inverse);box-shadow:var(--hover-glow)}
.ds-btn-secondary{background:var(--brand-secondary);color:var(--text-inverse);box-shadow:var(--shadow-soft)}
.ds-btn-secondary:hover{background:var(--brand-secondary-hover);color:var(--text-inverse);box-shadow:var(--hover-glow)}
.ds-btn-accent{background:var(--accent);color:var(--text-inverse);box-shadow:var(--shadow-soft)}
.ds-btn-accent:hover{background:var(--accent-hover);color:var(--text-inverse);box-shadow:var(--hover-glow)}
.ds-btn-danger{background:var(--error);color:var(--text-inverse);box-shadow:var(--shadow-soft)}
.ds-btn-danger:hover{background:#d92d20;color:var(--text-inverse);box-shadow:var(--hover-glow)}
.ds-btn-outline{background:var(--surface);color:var(--text-primary);border:1px solid var(--border-default);box-shadow:none}
.ds-btn-outline:hover{background:var(--neutral-50);color:var(--text-primary)}
.ds-btn-ghost{background:transparent;color:var(--text-secondary);border:1px solid transparent;box-shadow:none}
.ds-btn-ghost:hover{background:var(--neutral-100);color:var(--text-secondary)}
.cta-dark .ds-btn-outline,.price-card .ds-btn-outline{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.24)}
.cta-dark .ds-btn-outline:hover,.price-card .ds-btn-outline:hover{background:rgba(255,255,255,.16);color:#fff}
.price-card .ds-btn-primary{background:#fff;color:var(--brand-primary)}
.price-card .ds-btn-primary:hover{background:#f1f5f9;color:var(--brand-primary)}

/* ---- Input ---- */
.ds-input-wrap{display:flex;flex-direction:column;gap:6px;width:100%}
.ds-field{display:flex;align-items:center;gap:8px;height:42px;padding:0 14px;background:var(--surface);border:1px solid var(--border-default);border-radius:var(--radius-md);transition:var(--transition-base)}
.ds-field-lg{height:50px}
.ds-field-sm{height:36px}
.ds-field:focus-within{border-color:var(--border-focus);box-shadow:var(--focus-ring)}
.ds-field input,.ds-field textarea,.ds-field select{flex:1;min-width:0;border:none;outline:none;background:transparent;font:var(--text-body);font-size:var(--fs-body-sm);color:var(--text-primary)}
.ds-field input::placeholder{color:var(--text-placeholder)}

/* ---- Accordion (FAQ) ----------------------------------------------------
   Card-per-question. No divider rules: each item is its own elevated surface
   separated by whitespace, in the same radius / border / shadow language as
   .card elsewhere on the site. Open/close keeps the design system's
   grid-template-rows 0fr -> 1fr transition (height-agnostic, no JS measuring).
   ------------------------------------------------------------------------ */
.ds-acc{display:grid;gap:var(--space-3);border:0;background:transparent}
.ds-acc-item{
  background:var(--surface-card);
  border:1px solid var(--border-subtle);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-soft);
  overflow:hidden;
  transition:border-color 220ms var(--ease-standard),
             box-shadow 220ms var(--ease-standard),
             transform 220ms var(--ease-standard);
}
.ds-acc-item:hover{border-color:rgba(47,107,255,0.28);box-shadow:var(--shadow-medium);transform:translateY(-1px)}
.ds-acc-item.open{border-color:rgba(47,107,255,0.35);box-shadow:var(--shadow-large);transform:none}

.ds-acc-btn{
  width:100%;
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);
  padding:var(--space-5) var(--space-6);
  margin:0;border:0;background:transparent;cursor:pointer;text-align:left;
  font-family:var(--font-sans);
  font-size:var(--fs-h6);font-weight:var(--fw-semibold);line-height:var(--lh-snug);
  color:var(--text-primary);
  transition:color 120ms var(--ease-standard);
}
.ds-acc-btn:hover,.ds-acc-item.open .ds-acc-btn{color:var(--brand-primary)}
.ds-acc-btn:focus-visible{outline:2px solid var(--brand-primary);outline-offset:-2px}

/* Chevron sits in a soft brand tile that fills with the brand gradient when open */
.ds-acc-chev{
  width:32px;height:32px;flex-shrink:0;
  display:grid;place-items:center;
  border-radius:var(--radius-full);
  background:var(--brand-primary-soft);
  color:var(--brand-primary);
  transition:transform 300ms var(--ease-spring),
             background 220ms var(--ease-standard),
             color 220ms var(--ease-standard),
             box-shadow 220ms var(--ease-standard);
}
.ds-acc-item.open .ds-acc-chev{
  transform:rotate(180deg);
  background:var(--gradient-brand);
  color:#fff;
  box-shadow:var(--shadow-glow);
}

.ds-acc-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows 400ms var(--ease-standard)}
.ds-acc-item.open .ds-acc-panel{grid-template-rows:1fr}
.ds-acc-panel > div{overflow:hidden}
.ds-acc-body{
  padding:0 var(--space-6) var(--space-5);
  font-family:var(--font-sans);
  font-size:var(--fs-body);
  color:var(--text-secondary);
  line-height:var(--lh-relaxed);
  opacity:0;
  transition:opacity 220ms var(--ease-standard) 60ms;
}
.ds-acc-item.open .ds-acc-body{opacity:1}

@media (max-width:640px){
  .ds-acc{gap:var(--space-2)}
  .ds-acc-btn{padding:var(--space-4) var(--space-5);gap:var(--space-3)}
  .ds-acc-chev{width:28px;height:28px}
  .ds-acc-body{padding:0 var(--space-5) var(--space-4);font-size:var(--fs-body-sm)}
}
@media (prefers-reduced-motion:reduce){
  .ds-acc-item,.ds-acc-chev,.ds-acc-panel,.ds-acc-body{transition:none}
}
/* =====================================================================
   Elementor bridge — makes the approved design-system classes take effect
   when applied to Elementor container / widget wrappers.
   ===================================================================== */
.elementor-widget:not(:last-child){margin-block-end:0}
.elementor-widget-heading .elementor-heading-title{color:var(--text-primary);font-family:var(--font-sans)}
.elementor-widget-text-editor{font:var(--text-body);color:var(--text-secondary)}
.elementor-widget-text-editor p:not(:last-child){margin-bottom:var(--space-4)}

.elementor-widget-heading.display .elementor-heading-title{font:var(--text-display-m);letter-spacing:-0.025em}
.elementor-widget-heading.display-l .elementor-heading-title{font:var(--text-display-l);letter-spacing:-0.03em}
.elementor-widget-heading.h1 .elementor-heading-title{font:var(--text-h1);letter-spacing:-0.02em}
.elementor-widget-heading.h2 .elementor-heading-title{font:var(--text-h2);letter-spacing:-0.02em}
.elementor-widget-heading.h3 .elementor-heading-title{font:var(--text-h3);letter-spacing:-0.015em}
.elementor-widget-heading.h4 .elementor-heading-title{font:var(--text-h4);letter-spacing:-0.01em}
.elementor-widget-heading.h5 .elementor-heading-title{font:var(--text-h5)}
.elementor-widget-heading.overline .elementor-heading-title{font-size:13px;font-weight:600;line-height:1.4;letter-spacing:0.06em;text-transform:uppercase;color:var(--brand-primary)}
.elementor-widget-heading.on-dark .elementor-heading-title{color:#fff}
.elementor-widget-heading.price-num .elementor-heading-title{font:var(--text-display-m);letter-spacing:-0.02em;color:#fff}
@media (max-width:640px){
.elementor-widget-heading.display .elementor-heading-title{font-size:clamp(32px,8vw,44px)}
.elementor-widget-heading.display-l .elementor-heading-title{font-size:clamp(36px,9vw,52px)}
}

.elementor-widget-text-editor.lead,.elementor-widget-text-editor.lead p{font-size:19px;line-height:1.6;color:var(--text-secondary)}
.elementor-widget-text-editor.body-sm,.elementor-widget-text-editor.body-sm p{font-size:14px;line-height:1.55;color:var(--text-secondary)}
.elementor-widget-text-editor.on-dark,.elementor-widget-text-editor.on-dark p{color:rgba(255,255,255,.78)}

/* Elementor Button widget -> Solvid Button */
.elementor-widget-button.fsg-btn .elementor-button{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:42px;padding:0 18px;
  font:var(--text-button);font-size:var(--fs-button);letter-spacing:var(--ls-tight);
  border-radius:var(--radius-md);border:1px solid transparent;
  background-color:var(--brand-primary);color:var(--text-inverse);
  box-shadow:var(--shadow-soft);white-space:nowrap;
  transition:var(--transition-colors),transform var(--duration-fast) var(--ease-standard),box-shadow var(--duration-normal) var(--ease-standard);
}
.elementor-widget-button.fsg-btn .elementor-button:active{transform:translateY(0.5px) scale(0.99)}
.elementor-widget-button.fsg-btn .elementor-button:hover{background-color:var(--brand-primary-hover);color:var(--text-inverse);box-shadow:var(--hover-glow)}
.elementor-widget-button.fsg-btn .elementor-button-content-wrapper{display:inline-flex;align-items:center;gap:8px}
.elementor-widget-button.fsg-btn .elementor-button-icon{display:flex;align-items:center}
.elementor-widget-button.fsg-btn .elementor-button-icon iconify-icon{display:block}
.elementor-widget-button.fsg-btn.sz-sm .elementor-button{height:34px;padding:0 14px;font-size:var(--fs-body-sm);border-radius:var(--radius-sm)}
.elementor-widget-button.fsg-btn.sz-lg .elementor-button{height:50px;padding:0 24px;font-size:var(--fs-body-md);border-radius:var(--radius-md)}
.elementor-widget-button.fsg-btn.blk .elementor-button{width:100%}
.elementor-widget-button.fsg-btn.v-secondary .elementor-button{background-color:var(--brand-secondary)}
.elementor-widget-button.fsg-btn.v-secondary .elementor-button:hover{background-color:var(--brand-secondary-hover)}
.elementor-widget-button.fsg-btn.v-accent .elementor-button{background-color:var(--accent)}
.elementor-widget-button.fsg-btn.v-accent .elementor-button:hover{background-color:var(--accent-hover)}
.elementor-widget-button.fsg-btn.v-outline .elementor-button{background-color:var(--surface);color:var(--text-primary);border:1px solid var(--border-default);box-shadow:none}
.elementor-widget-button.fsg-btn.v-outline .elementor-button:hover{background-color:var(--neutral-50);color:var(--text-primary);box-shadow:none}
.elementor-widget-button.fsg-btn.v-ghost .elementor-button{background-color:transparent;color:var(--text-secondary);border:1px solid transparent;box-shadow:none}
.elementor-widget-button.fsg-btn.v-ghost .elementor-button:hover{background-color:var(--neutral-100);color:var(--text-secondary);box-shadow:none}
.cta-dark .elementor-widget-button.fsg-btn.v-outline .elementor-button,
.price-card .elementor-widget-button.fsg-btn.v-outline .elementor-button{background-color:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.24)}
.cta-dark .elementor-widget-button.fsg-btn.v-outline .elementor-button:hover,
.price-card .elementor-widget-button.fsg-btn.v-outline .elementor-button:hover{background-color:rgba(255,255,255,.16);color:#fff}
.price-card .elementor-widget-button.fsg-btn .elementor-button{background-color:#fff;color:var(--brand-primary)}
.price-card .elementor-widget-button.fsg-btn .elementor-button:hover{background-color:#f1f5f9;color:var(--brand-primary)}

/* Trailing/leading icons on Elementor buttons — exact Lucide glyphs, drawn as masks so they
   inherit currentColor and stay crisp at any size. */
.elementor-widget-button.fsg-btn .elementor-button-content-wrapper::after{content:none}
.elementor-widget-button.fsg-btn.i-arrow-right .elementor-button-content-wrapper::after{
  content:"";width:16px;height:16px;flex-shrink:0;background-color:currentColor;
  -webkit-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m12 5 7 7-7 7'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m12 5 7 7-7 7'/%3E%3C/svg%3E") center/contain no-repeat;
}
.elementor-widget-button.fsg-btn.i-message .elementor-button-content-wrapper::after{
  content:"";width:16px;height:16px;flex-shrink:0;background-color:currentColor;
  -webkit-mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.9 20A9 9 0 1 0 4 16.1L2 22z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.9 20A9 9 0 1 0 4 16.1L2 22z'/%3E%3C/svg%3E") center/contain no-repeat;
}

/* Containers carrying a component class own their own box model — these values come
   straight from the approved design and must not be overridden by Elementor's cascade. */
.e-con.card{padding:var(--space-6)!important}
.e-con.card.card-lg{padding:var(--space-10)!important}
.e-con.cta-dark{padding:var(--space-16)!important}
.e-con.price-card{padding:var(--space-12)!important}
.e-con.stat-card{padding:var(--space-8) var(--space-4)!important}
@media (max-width:640px){
.e-con.cta-dark{padding:var(--space-10) var(--space-6)!important}
.e-con.price-card{padding:var(--space-8) var(--space-6)!important}
}
.e-con > .e-con-inner{width:100%}
a.e-con,a.e-con:hover{color:inherit;text-decoration:none}
.e-con.card{background-color:var(--surface-card)}
.e-con.stat-card,.e-con.card,.e-con.cta-dark,.e-con.price-card{display:flex}

/* Prevent horizontal overflow */
html,body{max-width:100%;overflow-x:clip}

/* Astra reset — full-bleed canvas for the Elementor build */
.ast-container,.site-content .ast-container{max-width:100%;padding:0}
.ast-page-builder-template .site-content>.ast-container{max-width:100%;padding:0}
.entry-content>.elementor{margin:0}
#content .ast-container{padding-left:0;padding-right:0}
