/* Start custom CSS *//* FACTOR PROTOTYPE STYLES - page 591
   Source of truth: http://factoradvisory.bg/factor/prototype.html
   Team section intentionally skipped; header and footer come from the theme.

   Every rule targets the one hook Elementor always emits - the element id -
   as .elementor-element-ID (containers only) or [data-id^="prefix"] (anything).
   Widget elements (headings, paragraphs, svgs) do NOT get an
   .elementor-element-ID class, so they are always matched via [data-id].
   Element ids follow a scheme:
   sec- section, box- container, head- section head, kicker-, lead-, h2- h3-
   headings, ptext- card copy, cta-N button + ctal-N label + ctai-N arrow window
   + ctaarr-N arrow svg, tl- text link + tll- label + tli- arrow window +
   tlarr- arrow svg, ico- icon, btnrow- button row, and cred-N out-N svc-N
   sit-N chip-N rel-N step-N diag-N faq-N for the repeated cards.
   Elementor strips class attributes from inline HTML inside paragraph widgets,
   so the prototype's .diagnostic-marker and .faq-symbol are matched structurally.

   The `body .elementor.elementor-591` prefix is REQUIRED: Elementor's atomic
   base-desktop.css sets .elementor .e-flexbox-base{display:flex} and
   .elementor .e-svg-base{width:65px;height:65px} and loads after this file, so
   equal specificity would lose. Every svg widget therefore needs an explicit
   box here, or it renders 65px tall and gets clipped by its parent. */

/* 1 - neutralise Elementor atomic defaults (first, so design rules win ties) */
body .elementor.elementor-591 .e-con, body .elementor.elementor-591 .e-atomic-element{display:block; width:auto; min-width:0; max-width:none; margin:0; padding:0; border:0; border-radius:0; background:none; gap:normal; flex-direction:row; align-items:stretch; justify-content:flex-start; --width:auto; --content-width:auto; --padding-block-start:0; --padding-block-end:0; --padding-inline-start:0; --padding-inline-end:0; --margin-block-start:0; --margin-block-end:0; --margin-inline-start:0; --margin-inline-end:0}
/* widget-level elements miss the class above, so reset them too - without
   min-width:0 they refuse to shrink and blow out grid/flex tracks */
body .elementor.elementor-591 .e-paragraph-base, body .elementor.elementor-591 .e-heading-base, body .elementor.elementor-591 .e-svg-base, body .elementor.elementor-591 .e-image-base{min-width:0; margin:0}

/* 2 - tokens and base */
body .elementor.elementor-591{--ink:#19242e; --canvas:#fcfbfc; --action:#083efe; --signal:#ffbe08; --hairline:#e6e5e8; --secondary:#5b6773; --max:1240px; --header-h:72px; margin:0; min-width:320px; background:var(--canvas); color:var(--ink); font-family:"Onest", sans-serif; font-size:17px; line-height:1.6; scroll-behavior:smooth; text-rendering:optimizeLegibility; -webkit-font-smoothing:antialiased}
body .elementor.elementor-591 *, body .elementor.elementor-591 *::before, body .elementor.elementor-591 *::after{box-sizing:border-box}
body .elementor.elementor-591 img, body .elementor.elementor-591 svg{display:block; max-width:100%}
body .elementor.elementor-591 figure{margin:0}
body .elementor.elementor-591 a{color:inherit; text-decoration:none}
body .elementor.elementor-591 button{font:inherit; color:inherit}
body .elementor.elementor-591 p{margin:0}
body .elementor.elementor-591 :focus-visible{outline:3px solid var(--action); outline-offset:4px}
body .elementor.elementor-591 ::selection{background:var(--signal); color:var(--ink)}
body .elementor.elementor-591 h1, body .elementor.elementor-591 h2, body .elementor.elementor-591 h3{margin:0; color:inherit; font-family:"Onest", sans-serif; font-weight:800; letter-spacing:0}
body .elementor.elementor-591 h1{max-width:790px; font-size:clamp(3rem, 11.6vw, 4.5rem); line-height:1.04}
body .elementor.elementor-591 h2{max-width:860px; font-size:clamp(2.25rem, 8vw, 3.8rem); line-height:1.08}
body .elementor.elementor-591 h3{font-size:clamp(1.25rem, 4.8vw, 1.65rem); line-height:1.2}
body .elementor.elementor-591 #approach-title{max-width:900px}

/* 3 - layout primitives */
body .elementor.elementor-591 [data-id^="box-"], body .elementor.elementor-591 .elementor-element-credential-grid{width:min(calc(100% - 40px), var(--max)); margin-inline:auto}
body .elementor.elementor-591 [data-id^="sec-"]{border-top:1px solid var(--hairline); padding-block:80px; scroll-margin-top:calc(var(--header-h) + 16px)}
body .elementor.elementor-591 .elementor-element-sec-outcomes, body .elementor.elementor-591 .elementor-element-sec-related{background:var(--ink); color:var(--canvas)}
body .elementor.elementor-591 .elementor-element-sec-contact{background:var(--action); color:var(--canvas); border-top-color:var(--action)}
body .elementor.elementor-591 [data-id^="head-"]{max-width:760px; margin-bottom:48px}
body .elementor.elementor-591 [data-id^="kicker-"]{display:flex; align-items:center; gap:16px; margin:0 0 22px; color:var(--ink); font-size:12px; font-weight:700; line-height:1.25; letter-spacing:.2em; text-transform:uppercase}
body .elementor.elementor-591 [data-id^="kicker-"]::before{width:28px; height:1px; flex:0 0 28px; background:currentColor; content:""}
body .elementor.elementor-591 [data-id^="lead-"]{max-width:62ch; color:var(--secondary); font-size:clamp(1.05rem, 2vw, 1.18rem); line-height:1.65}
body .elementor.elementor-591 .elementor-element-sec-outcomes [data-id^="kicker-"], body .elementor.elementor-591 .elementor-element-sec-related [data-id^="kicker-"], body .elementor.elementor-591 .elementor-element-sec-contact [data-id^="kicker-"], body .elementor.elementor-591 .elementor-element-sec-contact [data-id^="lead-"]{color:var(--canvas)}
body .elementor.elementor-591 [data-id^="ico-"]{display:block; width:31px; height:31px; flex:0 0 31px; stroke:currentColor; stroke-width:1.5; fill:none; stroke-linecap:round; stroke-linejoin:round}
body .elementor.elementor-591 [data-id^="ico-"] svg{fill:none; stroke:currentColor}

/* 4 - buttons and text links (arrow races out and back in on hover) */
body .elementor.elementor-591 [data-id^="btnrow-"]{display:flex; flex-direction:column; gap:12px; margin-top:30px}
body .elementor.elementor-591 [data-id^="cta-"]{min-height:56px; display:inline-flex; align-items:center; justify-content:space-between; gap:24px; padding:14px 20px; border:1px solid var(--ink); border-radius:2px; font-size:15px; font-weight:700; line-height:1.2; transition:background 160ms ease, color 160ms ease, border-color 160ms ease}
body .elementor.elementor-591 .elementor-element-cta-1, body .elementor.elementor-591 .elementor-element-cta-3, body .elementor.elementor-591 .elementor-element-cta-4{border-color:var(--action); background:var(--action); color:var(--canvas)}
body .elementor.elementor-591 .elementor-element-cta-2{background:transparent; color:var(--ink)}
body .elementor.elementor-591 .elementor-element-cta-5{border-color:var(--canvas); background:var(--canvas); color:var(--action)}
body .elementor.elementor-591 [data-id^="tl-"]{display:inline-flex; align-items:center; gap:10px; margin-top:28px; color:var(--action); font-weight:700}
body .elementor.elementor-591 .elementor-element-sec-outcomes [data-id^="tl-"], body .elementor.elementor-591 .elementor-element-sec-related [data-id^="tl-"]{color:var(--canvas)}
/* the arrow window: fixed box, masked at the right edge so the arrow fades out */
body .elementor.elementor-591 [data-id^="ctai-"]{display:inline-flex; align-items:center; justify-content:flex-start; width:40px; height:24px; margin-right:-16px; overflow:hidden; clip-path:inset(0); -webkit-mask-image:linear-gradient(to right,#000 64%,transparent 100%); mask-image:linear-gradient(to right,#000 64%,transparent 100%)}
body .elementor.elementor-591 [data-id^="tli-"]{display:inline-flex; align-items:center; justify-content:flex-start; width:36px; height:22px; margin-left:-2px; overflow:hidden; -webkit-mask-image:linear-gradient(to right,#000 66%,transparent 100%); mask-image:linear-gradient(to right,#000 66%,transparent 100%)}
/* the arrow itself - the svg WIDGET WRAPPER must be sized, not just the svg,
   otherwise base-desktop.css's 65x65 default leaves only a sliver visible */
body .elementor.elementor-591 [data-id^="ctaarr-"]{display:block; flex:0 0 26px; width:26px; height:26px}
body .elementor.elementor-591 [data-id^="tlarr-"]{display:block; flex:0 0 24px; width:24px; height:24px}
body .elementor.elementor-591 [data-id^="ctaarr-"] svg{width:26px!important; height:26px!important; display:block; fill:currentColor; stroke:none}
body .elementor.elementor-591 [data-id^="tlarr-"] svg{width:24px!important; height:24px!important; display:block; fill:currentColor; stroke:none}
body .elementor.elementor-591 [data-id^="cta-"]:hover [data-id^="ctaarr-"] svg, body .elementor.elementor-591 [data-id^="cta-"]:focus [data-id^="ctaarr-"] svg, body .elementor.elementor-591 [data-id^="tl-"]:hover [data-id^="tlarr-"] svg, body .elementor.elementor-591 [data-id^="tl-"]:focus [data-id^="tlarr-"] svg{animation:factor-arrow-race .5s forwards}
@keyframes factor-arrow-race{0%{transform:translateX(0); animation-timing-function:cubic-bezier(.5,0,.4,1)} 45%{transform:translateX(185%)} 45.01%{transform:translateX(-150%); animation-timing-function:cubic-bezier(.25,.6,.3,1)} 85%{transform:translateX(3%); animation-timing-function:cubic-bezier(.4,0,.3,1)} 100%{transform:translateX(0)}}

/* 5 - hero */
body .elementor.elementor-591 .elementor-element-hero{padding:0; border-top:0}
body .elementor.elementor-591 .elementor-element-hero-main{display:grid; min-height:calc(100svh - var(--header-h) - 160px); background:var(--canvas)}
body .elementor.elementor-591 .elementor-element-hero-copy{display:flex; flex-direction:column; justify-content:center; padding:72px 20px 56px}
body .elementor.elementor-591 .elementor-element-hero-copy [data-id^="lead-"]{max-width:55ch}
body .elementor.elementor-591 .elementor-element-hero-divider{width:48px; height:1px; margin:28px 0 24px; background:var(--ink)}
body .elementor.elementor-591 .elementor-element-hero-tags{display:flex; flex-wrap:wrap; align-items:center; margin-top:34px; color:var(--ink); font-size:13px; font-weight:700; letter-spacing:.2em; text-transform:uppercase}
body .elementor.elementor-591 [data-id^="tag-"]{padding:8px 18px; border-left:1px solid var(--secondary)}
body .elementor.elementor-591 [data-id="tag-1"]{padding-left:0; border-left:0}
body .elementor.elementor-591 .elementor-element-hero-media{min-height:520px; border-top:1px solid var(--hairline); overflow:hidden; background:var(--hairline)}
body .elementor.elementor-591 .elementor-element-hero-media img{width:100%; height:100%; min-height:520px; object-fit:cover; object-position:52% 38%}

/* 6 - credentials strip */
body .elementor.elementor-591 .elementor-element-credentials{border-top:1px solid var(--hairline); border-bottom:1px solid var(--hairline); background:var(--canvas)}
body .elementor.elementor-591 .elementor-element-credential-grid{display:grid}
body .elementor.elementor-591 [data-id^="cred-"]{min-height:144px; display:flex; align-items:center; gap:20px; padding:28px 0; border-top:1px solid var(--hairline)}
body .elementor.elementor-591 [data-id^="cred-"]:first-child{border-top:0}
body .elementor.elementor-591 [data-id^="credstat-"]{display:grid; gap:2px}
body .elementor.elementor-591 [data-id^="credstat-"] strong{font-family:"Onest", sans-serif; font-size:58px; line-height:1; letter-spacing:0}
body .elementor.elementor-591 [data-id^="credstat-"] span, body .elementor.elementor-591 [data-id^="credtext-"]{font-size:15px; line-height:1.55}

/* 7 - approach and fit */
body .elementor.elementor-591 .elementor-element-box-approach{display:grid; gap:32px}
body .elementor.elementor-591 .elementor-element-copy-approach{display:grid; gap:24px; max-width:68ch}
body .elementor.elementor-591 .elementor-element-box-fit, body .elementor.elementor-591 .elementor-element-box-faq{display:grid; gap:48px}
body .elementor.elementor-591 .elementor-element-diaglist{border-bottom:1px solid var(--hairline)}
body .elementor.elementor-591 [data-id^="diag-"]{min-height:82px; display:grid; grid-template-columns:12px 1fr auto; align-items:center; gap:18px; padding:20px 0; border-top:1px solid var(--hairline); font-weight:600}
body .elementor.elementor-591 [data-id^="diag-"] span:first-child{width:6px; height:6px; background:var(--ink)}
body .elementor.elementor-591 [data-id^="diag-"] span:last-child{color:var(--secondary); font-size:24px}

/* 8 - outcomes */
body .elementor.elementor-591 .elementor-element-grid-outcomes{display:grid; border-top:1px solid var(--secondary); border-left:1px solid var(--secondary)}
body .elementor.elementor-591 [data-id^="out-"]{min-height:240px; padding:30px; border-right:1px solid var(--secondary); border-bottom:1px solid var(--secondary)}
body .elementor.elementor-591 [data-id^="sig-"]{width:6px; height:6px; margin-bottom:28px; background:var(--signal)}
body .elementor.elementor-591 [data-id^="out-"] [data-id^="ico-"]{margin-bottom:34px}
body .elementor.elementor-591 [data-id^="out-"] [data-id^="ptext-"]{margin-top:12px; color:var(--canvas); font-size:15px}

/* 9 - services */
body .elementor.elementor-591 .elementor-element-grid-services{display:grid; border-top:1px solid var(--hairline)}
body .elementor.elementor-591 [data-id^="svc-"]{min-height:176px; display:grid; grid-template-columns:auto 1fr auto; gap:22px; padding:28px 0; border-bottom:1px solid var(--hairline); color:var(--ink)}
body .elementor.elementor-591 [data-id^="svc-"]:hover{color:var(--action)}
body .elementor.elementor-591 [data-id^="svc-"] [data-id^="ptext-"]{margin-top:10px; color:var(--secondary); font-size:15px}
body .elementor.elementor-591 [data-id^="arr-"]{align-self:center; color:var(--action); font-size:25px}

/* 10 - process */
body .elementor.elementor-591 .elementor-element-layout-process{display:grid; gap:56px}
body .elementor.elementor-591 .elementor-element-stepper{position:relative; display:grid}
body .elementor.elementor-591 [data-id^="step-"]{position:relative; display:grid; grid-template-columns:48px 1fr; gap:22px; padding-bottom:38px}
body .elementor.elementor-591 [data-id^="step-"]:last-child{padding-bottom:0}
body .elementor.elementor-591 [data-id^="step-"]::before{position:absolute; top:48px; bottom:0; left:23px; width:1px; background:var(--hairline); content:""}
body .elementor.elementor-591 [data-id^="step-"]:last-child::before{display:none}
body .elementor.elementor-591 [data-id^="stepnum-"]{width:48px; height:48px; display:grid; place-items:center; border:1px solid var(--ink); background:var(--canvas); font-family:"Onest", sans-serif; font-weight:700}
body .elementor.elementor-591 [data-id^="step-"] [data-id^="ptext-"]{max-width:48ch; margin-top:8px; color:var(--secondary)}
body .elementor.elementor-591 .elementor-element-ctx-process{align-self:start; padding:34px; background:var(--ink); color:var(--canvas)}
body .elementor.elementor-591 [data-id="ptext-ctx"]{max-width:32ch; font-family:"Onest", sans-serif; font-size:clamp(1.55rem, 5vw, 2.25rem); font-weight:700; line-height:1.25; letter-spacing:0}

/* 11 - situations and industries */
body .elementor.elementor-591 .elementor-element-grid-situations{display:grid; border-top:1px solid var(--hairline); border-left:1px solid var(--hairline)}
body .elementor.elementor-591 [data-id^="sit-"]{min-height:250px; padding:30px; border-right:1px solid var(--hairline); border-bottom:1px solid var(--hairline)}
body .elementor.elementor-591 [data-id^="sit-"] [data-id^="ico-"]{margin-bottom:48px}
body .elementor.elementor-591 [data-id^="sit-"] [data-id^="ptext-"]{margin-top:12px; color:var(--secondary); font-size:15px}
body .elementor.elementor-591 .elementor-element-grid-industries{display:grid; border-top:1px solid var(--hairline); border-left:1px solid var(--hairline)}
body .elementor.elementor-591 [data-id^="chip-"]{min-height:104px; display:flex; align-items:center; gap:16px; padding:22px; border-right:1px solid var(--hairline); border-bottom:1px solid var(--hairline); font-weight:700}
body .elementor.elementor-591 [data-id^="chip-"]:hover{color:var(--action)}

/* 12 - FAQ */
body .elementor.elementor-591 .elementor-element-faqlist{border-bottom:1px solid var(--hairline)}
body .elementor.elementor-591 [data-id^="faq-"]{border-top:1px solid var(--hairline)}
body .elementor.elementor-591 [data-id^="faqq-"]{width:100%; min-height:82px; display:grid; grid-template-columns:1fr auto; align-items:center; gap:20px; padding:18px 0; border:0; background:transparent; text-align:left; font-family:"Onest", sans-serif; font-size:clamp(1.05rem, 3vw, 1.25rem); font-weight:700; cursor:pointer}
body .elementor.elementor-591 [data-id^="faqq-"]:hover{color:var(--action)}
body .elementor.elementor-591 [data-id^="faqsym-"]{font-size:28px; font-weight:400; line-height:1; transition:transform 160ms ease}
body .elementor.elementor-591 [data-id^="faqq-"][aria-expanded="true"] [data-id^="faqsym-"]{transform:rotate(45deg)}
body .elementor.elementor-591 [data-id^="faqa-"]{max-width:68ch; padding:0 56px 26px 0; color:var(--secondary)}
body .elementor.elementor-591 [data-id^="faqa-"][hidden]{display:none}
body .elementor.elementor-591 [data-id="faq-script"]{display:none}

/* 13 - related scope and final CTA */
body .elementor.elementor-591 .elementor-element-grid-related{display:grid; border-top:1px solid var(--secondary); border-left:1px solid var(--secondary)}
body .elementor.elementor-591 [data-id^="rel-"]{min-height:154px; display:flex; align-items:center; justify-content:space-between; gap:24px; padding:28px; border-right:1px solid var(--secondary); border-bottom:1px solid var(--secondary); color:var(--canvas); font-family:"Onest", sans-serif; font-size:clamp(1.15rem, 4vw, 1.55rem); font-weight:700; line-height:1.25}
body .elementor.elementor-591 [data-id^="rel-"]:hover{color:var(--signal)}
body .elementor.elementor-591 [data-id^="relarr-"]{font-size:28px; font-weight:400}
body .elementor.elementor-591 .elementor-element-box-contact{display:grid; gap:40px; align-items:end}
body .elementor.elementor-591 .elementor-element-copy-contact [data-id^="lead-"]{margin-top:20px}
body .elementor.elementor-591 .elementor-element-actions-contact{display:grid; gap:22px}
body .elementor.elementor-591 .elementor-element-contactline{display:grid; gap:8px; font-weight:700}
body .elementor.elementor-591 [data-id^="contactlink-"]{width:fit-content; border-bottom:1px solid var(--canvas)}

/* 14 - breakpoints (the prototype's own: 560 / 800 / 1040 / 1320) */
@media (min-width:560px){
  body .elementor.elementor-591 [data-id^="box-"], body .elementor.elementor-591 .elementor-element-credential-grid{width:min(calc(100% - 64px), var(--max))}
  body .elementor.elementor-591 [data-id^="btnrow-"]{flex-direction:row; flex-wrap:wrap}
  body .elementor.elementor-591 [data-id^="cta-"]{min-width:238px}
  body .elementor.elementor-591 .elementor-element-credential-grid, body .elementor.elementor-591 .elementor-element-grid-outcomes, body .elementor.elementor-591 .elementor-element-grid-situations, body .elementor.elementor-591 .elementor-element-grid-industries, body .elementor.elementor-591 .elementor-element-grid-related{grid-template-columns:repeat(2, minmax(0, 1fr))}
  body .elementor.elementor-591 [data-id^="cred-"]{padding-inline:26px; border-top:0; border-left:1px solid var(--hairline)}
  body .elementor.elementor-591 [data-id^="cred-"]:nth-child(odd){border-left:0}
  body .elementor.elementor-591 [data-id^="cred-"]:nth-child(n+3){border-top:1px solid var(--hairline)}
}
@media (min-width:800px){
  body .elementor.elementor-591 [data-id^="sec-"]{padding-block:112px}
  body .elementor.elementor-591 .elementor-element-hero-copy{padding-inline:max(40px, calc((100vw - var(--max)) / 2))}
  body .elementor.elementor-591 .elementor-element-box-fit, body .elementor.elementor-591 .elementor-element-box-faq{grid-template-columns:minmax(0, 4fr) minmax(0, 8fr); gap:72px}
  body .elementor.elementor-591 .elementor-element-grid-services{grid-template-columns:repeat(2, minmax(0, 1fr)); border-left:1px solid var(--hairline)}
  body .elementor.elementor-591 [data-id^="svc-"]{padding:30px; border-right:1px solid var(--hairline)}
  body .elementor.elementor-591 [data-id^="svc-"]:nth-child(odd){border-left:0}
  body .elementor.elementor-591 .elementor-element-box-contact{grid-template-columns:minmax(0, 8fr) minmax(280px, 4fr)}
}
@media (min-width:1040px){
  body .elementor.elementor-591{--header-h:78px; font-size:18px}
  body .elementor.elementor-591 .elementor-element-hero-main{grid-template-columns:minmax(0, 54.2%) minmax(0, 45.8%); min-height:748px}
  body .elementor.elementor-591 .elementor-element-hero-copy{padding-top:72px; padding-bottom:58px; padding-left:max(48px, calc((100vw - var(--max)) / 2)); padding-right:64px}
  body .elementor.elementor-591 .elementor-element-hero-media, body .elementor.elementor-591 .elementor-element-hero-media img{min-height:748px}
  body .elementor.elementor-591 .elementor-element-hero-media{border-top:0; border-left:1px solid var(--hairline)}
  body .elementor.elementor-591 .elementor-element-credential-grid{grid-template-columns:1.05fr 1.45fr 1.45fr 1.45fr}
  body .elementor.elementor-591 [data-id^="cred-"], body .elementor.elementor-591 [data-id^="cred-"]:nth-child(n+3){min-height:154px; padding-inline:34px; border-top:0; border-left:1px solid var(--hairline)}
  body .elementor.elementor-591 [data-id^="cred-"]:first-child{padding-left:0; border-left:0}
  body .elementor.elementor-591 .elementor-element-box-approach{grid-template-columns:minmax(0, 4fr) minmax(0, 8fr); gap:72px}
  body .elementor.elementor-591 .elementor-element-grid-outcomes{grid-template-columns:repeat(4, minmax(0, 1fr))}
  body .elementor.elementor-591 .elementor-element-layout-process{grid-template-columns:minmax(0, 7fr) minmax(320px, 5fr); gap:84px}
  body .elementor.elementor-591 .elementor-element-grid-situations, body .elementor.elementor-591 .elementor-element-grid-industries, body .elementor.elementor-591 .elementor-element-grid-related{grid-template-columns:repeat(3, minmax(0, 1fr))}
}
@media (min-width:1320px){body .elementor.elementor-591 h1{font-size:4.45rem}}
@media (prefers-reduced-motion:reduce){
  body .elementor.elementor-591{scroll-behavior:auto}
  body .elementor.elementor-591 *, body .elementor.elementor-591 *::before, body .elementor.elementor-591 *::after{transition-duration:.01ms !important; animation-duration:.01ms !important; animation-iteration-count:1 !important}
  body .elementor.elementor-591 [data-id^="cta-"]:hover [data-id^="ctaarr-"] svg, body .elementor.elementor-591 [data-id^="tl-"]:hover [data-id^="tlarr-"] svg{animation:none; transform:translateX(3px)}
}/* End custom CSS */