.elementor-kit-103{--e-global-color-primary:#0F2D4A;--e-global-color-secondary:#111C29;--e-global-color-text:#5A6B80;--e-global-color-accent:#2563EB;--e-global-color-rqink:#081B2E;--e-global-color-rqsky:#38BDF8;--e-global-color-rqpaper:#F7F9FC;--e-global-color-rqhair:#E6EBF1;--e-global-color-rqondark:#BFD4E8;--e-global-color-rqwhite:#FFFFFF;--e-global-typography-primary-font-family:"Montserrat";--e-global-typography-primary-font-weight:700;--e-global-typography-primary-line-height:1.14;--e-global-typography-primary-letter-spacing:-0.025em;--e-global-typography-secondary-font-family:"Montserrat";--e-global-typography-secondary-font-weight:600;--e-global-typography-secondary-line-height:1.32;--e-global-typography-secondary-letter-spacing:-0.015em;--e-global-typography-text-font-family:"Inter";--e-global-typography-text-font-size:1.0625rem;--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.75;--e-global-typography-accent-font-family:"Inter";--e-global-typography-accent-font-weight:600;--e-global-typography-accent-line-height:1.4;--e-global-typography-rqkicker-font-family:"Inter";--e-global-typography-rqkicker-font-size:0.75rem;--e-global-typography-rqkicker-font-weight:700;--e-global-typography-rqkicker-text-transform:uppercase;--e-global-typography-rqkicker-line-height:1.4;--e-global-typography-rqkicker-letter-spacing:0.17em;--e-global-typography-rqlead-font-family:"Inter";--e-global-typography-rqlead-font-size:clamp(1.0625rem, 1.4vw, 1.25rem);--e-global-typography-rqlead-font-weight:400;--e-global-typography-rqlead-line-height:1.62;--e-global-typography-rqsmall-font-family:"Inter";--e-global-typography-rqsmall-font-size:0.9375rem;--e-global-typography-rqsmall-font-weight:400;--e-global-typography-rqsmall-line-height:1.6;color:#5A6B80;font-family:"Inter", Sans-serif;font-size:1.0625rem;font-weight:400;line-height:1.75;}.elementor-kit-103 button,.elementor-kit-103 input[type="button"],.elementor-kit-103 input[type="submit"],.elementor-kit-103 .elementor-button{background-color:#2563EB;font-family:"Inter", Sans-serif;font-size:1rem;font-weight:600;line-height:1em;color:#FFFFFF;border-radius:999px 999px 999px 999px;padding:1.125rem 1.875rem 1.125rem 1.875rem;}.elementor-kit-103 e-page-transition{background-color:#FFBC7D;}.elementor-kit-103 a{color:#2563EB;}.elementor-kit-103 a:hover{color:#0F2D4A;}.elementor-kit-103 h1{color:#111C29;font-family:"Montserrat", Sans-serif;font-size:clamp(2.2rem, 4.8vw, 3.75rem);font-weight:700;line-height:1.06;letter-spacing:-0.033em;}.elementor-kit-103 h2{color:#111C29;font-family:"Montserrat", Sans-serif;font-size:clamp(1.85rem, 3.6vw, 2.9rem);font-weight:700;line-height:1.12;letter-spacing:-0.03em;}.elementor-kit-103 h3{color:#111C29;font-family:"Montserrat", Sans-serif;font-size:clamp(1.2rem, 1.8vw, 1.4rem);font-weight:600;line-height:1.32;letter-spacing:-0.015em;}.elementor-kit-103 h4{color:#111C29;font-family:"Montserrat", Sans-serif;font-size:1.375rem;font-weight:600;line-height:1.4;letter-spacing:-0.02em;}.elementor-kit-103 h5{color:#111C29;font-family:"Montserrat", Sans-serif;font-size:1.125rem;font-weight:600;line-height:1.4;}.elementor-kit-103 h6{color:#111C29;font-family:"Montserrat", Sans-serif;font-size:1rem;font-weight:600;line-height:1.4;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1600px;}.e-con{--container-max-width:1600px;}.elementor-widget:not(:last-child){margin-block-end:0px;}.elementor-element{--widgets-spacing:0px 0px;--widgets-spacing-row:0px;--widgets-spacing-column:0px;}{}h1.entry-title{display:var(--page-title-display);}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* ==========================================================================
   RankQora, Site Settings > Custom CSS
   --------------------------------------------------------------------------
   Layout, spacing, colour and typography are all set on the elements
   themselves, through Elementor's own controls. What lives here is only the
   decoration Elementor has no control for: gradient filled text, the layered
   hero background, the grain, the marquee keyframe, and the hover states that
   depend on a pseudo element.
   ========================================================================== */

:root {
  --rq-ink: #081B2E;
  --rq-navy: #0F2D4A;
  --rq-royal: #2563EB;
  --rq-sky: #38BDF8;
  --rq-charcoal: #111C29;
  --rq-slate: #5A6B80;
  --rq-hair: #E6EBF1;
  --rq-hair-dk: #D2DAE4;
  --rq-paper: #F7F9FC;
  --rq-on-dark: #BFD4E8;
  --rq-on-dark-hair: rgba(255, 255, 255, 0.12);
  --rq-grad: linear-gradient(120deg, #2563EB 0%, #38BDF8 100%);
  --rq-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
  --rq-measure: 66ch;
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 7rem;
  /* clip, not hidden: hidden would make this a scroll container and break the
     sticky header. */
  overflow-x: clip;
}

body { overflow-x: clip; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* --------------------------------------------------------------------------
   Gradient filled text
   -------------------------------------------------------------------------- */

/* background-image, not the `background` shorthand. The shorthand resets every
   background sub property including background-clip, and in this build it was
   being dropped outright on some elements while the rest of the same rule
   applied, leaving transparent text over no gradient, which is invisible. */
.rq-grad,
.rq-grad-text .elementor-heading-title {
  background-image: var(--rq-grad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  /* Stops descenders clipping in WebKit. */
  padding-bottom: 0.06em;
}

.rq-index-num .elementor-heading-title { opacity: 0.85; }

/* --------------------------------------------------------------------------
   Dark grounds
   -------------------------------------------------------------------------- */

.rq-dark { position: relative; isolation: isolate; }

.rq-dark::before {
  content: "";
  position: absolute;
  inset: -30% -10% auto -10%;
  height: 140%;
  background:
    radial-gradient(52% 44% at 18% 12%, rgba(37, 99, 235, 0.40), transparent 68%),
    radial-gradient(44% 38% at 84% 72%, rgba(56, 189, 248, 0.26), transparent 66%);
  z-index: -2;
  pointer-events: none;
}

/* Fine grain, so the gradients do not band on wide screens. */
.rq-dark::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: 0.035;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* The hero carries a stronger glow plus a faint grid. */
.rq-hero::before {
  inset: -25% -15% auto -15%;
  height: 150%;
  background:
    radial-gradient(48% 42% at 14% 8%, rgba(37, 99, 235, 0.50), transparent 66%),
    radial-gradient(42% 40% at 88% 30%, rgba(56, 189, 248, 0.32), transparent 64%),
    radial-gradient(60% 50% at 50% 108%, rgba(37, 99, 235, 0.22), transparent 70%);
}

.rq-hero > .e-con-inner::before,
.rq-hero::after { pointer-events: none; }

.rq-hero .e-con-inner { position: relative; }

.rq-hero .e-con-inner::before {
  content: "";
  position: absolute;
  inset: -50vh -50vw;
  z-index: -1;
  opacity: 0.4;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: radial-gradient(70% 60% at 50% 40%, #000 30%, transparent 100%);
  -webkit-mask-image: radial-gradient(70% 60% at 50% 40%, #000 30%, transparent 100%);
}

.rq-footer::before {
  inset: auto -10% -60% -10%;
  height: 120%;
  background: radial-gradient(50% 60% at 50% 100%, rgba(37, 99, 235, 0.3), transparent 70%);
}

.rq-cta-band::before {
  inset: -40% -10% auto -10%;
  height: 180%;
  background:
    radial-gradient(40% 50% at 20% 20%, rgba(37, 99, 235, 0.45), transparent 66%),
    radial-gradient(40% 50% at 82% 80%, rgba(56, 189, 248, 0.3), transparent 66%);
}

/* The marquee strip is a thin band, so it gets no glow of its own. */
.rq-marquee::before { display: none; }

/* --------------------------------------------------------------------------
   Header
   -------------------------------------------------------------------------- */

.rq-header {
  backdrop-filter: saturate(180%) blur(16px);
  -webkit-backdrop-filter: saturate(180%) blur(16px);
  transition: border-color 0.25s var(--rq-ease), box-shadow 0.25s var(--rq-ease);
}

.rq-header.elementor-sticky--effects {
  border-bottom-color: var(--rq-hair) !important;
  box-shadow: 0 6px 24px -14px rgba(8, 27, 46, 0.28);
}

/* The menu pointer is off, so the active state is drawn here instead: the same
   gradient underline the hand coded nav used. */
.rq-nav .elementor-nav-menu > li > a { position: relative; }

.rq-nav .elementor-nav-menu > li > a::after {
  content: "";
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: 5px;
  height: 2px;
  border-radius: 2px;
  background: var(--rq-grad);
  transform: scaleX(0);
  transform-origin: 0 50%;
  transition: transform 0.25s var(--rq-ease);
}

.rq-nav .elementor-nav-menu > li > a:hover::after,
.rq-nav .elementor-nav-menu > li > a.elementor-item-active::after,
.rq-nav .elementor-nav-menu > li.current-menu-ancestor > a::after { transform: scaleX(1); }

.rq-nav .elementor-nav-menu--dropdown { box-shadow: 0 14px 40px -12px rgba(8, 27, 46, 0.18); }

/* --------------------------------------------------------------------------
   Badge and kicker
   -------------------------------------------------------------------------- */

.rq-badge .elementor-heading-title {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
}

.rq-badge .elementor-heading-title::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--rq-grad);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.18);
  flex: none;
}

.rq-badge { backdrop-filter: blur(8px); }

.rq-kicker .elementor-heading-title {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.rq-kicker .elementor-heading-title::before {
  content: "";
  width: 28px;
  height: 2px;
  border-radius: 2px;
  background: var(--rq-grad);
  flex: none;
}

/* --------------------------------------------------------------------------
   Measure
   -------------------------------------------------------------------------- */

/* Both .elementor-kit-103s on purpose. Elementor's optimised markup experiment removes
   the .elementor-widget-container wrapper, and a rule that only targets the
   wrapper silently stops capping the measure when that is switched on. */
.rq-measure, .rq-measure .elementor-widget-container { max-width: var(--rq-measure); }
.rq-measure-lead, .rq-measure-lead .elementor-widget-container { max-width: 60ch; }
.rq-measure-wide, .rq-measure-wide .elementor-widget-container { max-width: 72ch; }

/* --------------------------------------------------------------------------
   Buttons
   -------------------------------------------------------------------------- */

.rq-btn .elementor-button {
  transition: transform 0.22s var(--rq-ease), box-shadow 0.22s var(--rq-ease),
              background-color 0.22s var(--rq-ease), color 0.22s var(--rq-ease),
              border-color 0.22s var(--rq-ease);
}

.rq-btn .elementor-button:hover { transform: translateY(-2px); }
.rq-btn .elementor-button-icon svg { transition: transform 0.22s var(--rq-ease); }
.rq-btn .elementor-button:hover .elementor-button-icon svg { transform: translateX(3px); }

.rq-btn--primary .elementor-button { background-size: 160% 100%; }
.rq-btn--primary .elementor-button:hover { background-position: 100% 0; }

/* --------------------------------------------------------------------------
   Trust strip
   -------------------------------------------------------------------------- */

.rq-trust .elementor-icon-list-items { row-gap: 0.625rem; }

.rq-trust .elementor-icon-list-icon {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: linear-gradient(120deg, rgba(37, 99, 235, 0.14), rgba(56, 189, 248, 0.14));
  border: 1px solid rgba(37, 99, 235, 0.35);
  flex: none;
}

.rq-dark .rq-trust .elementor-icon-list-icon {
  border-color: rgba(56, 189, 248, 0.5);
  background: rgba(56, 189, 248, 0.12);
}

/* --------------------------------------------------------------------------
   Hero media
   -------------------------------------------------------------------------- */

.rq-hero-media { position: relative; }

.rq-hero-img img {
  aspect-ratio: 4 / 3;
  object-fit: cover;
  width: 100%;
}

.rq-float-card {
  left: -1.75rem;
  bottom: -1.75rem;
  top: auto;
  right: auto;
  backdrop-filter: blur(12px);
  min-width: 190px;
}

.rq-float-card--top {
  left: auto;
  right: -1.5rem;
  top: -1.5rem;
  bottom: auto;
}

@media (max-width: 1024px) {
  .rq-float-card { left: 0.75rem; bottom: -1.25rem; }
  .rq-float-card--top { display: none; }
}

/* --------------------------------------------------------------------------
   Marquee
   -------------------------------------------------------------------------- */

.rq-marquee {
  mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}

.rq-marquee__track {
  width: max-content;
  flex-wrap: nowrap;
  animation: rq-marquee 38s linear infinite;
}

.rq-marquee:hover .rq-marquee__track { animation-play-state: paused; }
.rq-marquee__group { flex-wrap: nowrap; flex: none; }

.rq-marquee__item .elementor-heading-title {
  white-space: nowrap;
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.rq-marquee__item .elementor-heading-title::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--rq-sky);
  opacity: 0.8;
  flex: none;
}

@keyframes rq-marquee { to { transform: translateX(-50%); } }

/* --------------------------------------------------------------------------
   Service cards

   These were full width rows in a vertical stack. They are now cards in a
   grid, so the lift and the gradient top hairline come from `.rq-card` and
   the only thing left here is the name colour and the chevron fill.
   -------------------------------------------------------------------------- */

.rq-service-card .rq-row-name .elementor-heading-title {
  transition: color 0.24s var(--rq-ease);
}

.rq-service-card:hover .rq-row-name .elementor-heading-title { color: var(--rq-royal); }

/* Pinned to the foot of the card so the chevrons line up across a row
   whatever length the one liners run to. */
.rq-service-card .rq-row-go { margin-top: auto; }

.rq-row-go {
  width: 44px;
  flex: none;
  transition: background 0.26s var(--rq-ease), border-color 0.26s var(--rq-ease), transform 0.26s var(--rq-ease);
}

.rq-row-go .elementor-icon { transition: color 0.26s var(--rq-ease); }

.rq-service-card:hover .rq-row-go {
  background: var(--rq-grad);
  border-color: transparent;
  transform: translateX(3px);
}

.rq-service-card:hover .rq-row-go .elementor-icon { color: #fff; }

@media (max-width: 767px) {
  .rq-row-go { width: 38px; }
}

/* --------------------------------------------------------------------------
   Cards
   -------------------------------------------------------------------------- */

.rq-card {
  transition: transform 0.32s var(--rq-ease), box-shadow 0.32s var(--rq-ease), border-color 0.32s var(--rq-ease);
  position: relative;
}

/* Gradient hairline that fades in along the top edge. */
.rq-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 2px;
  background: var(--rq-grad);
  transform: scaleX(0);
  transform-origin: 0 50%;
  transition: transform 0.4s var(--rq-ease);
  z-index: 2;
}

.rq-card:hover { transform: translateY(-5px); }
.rq-card:hover::before { transform: scaleX(1); }

.rq-case-media { line-height: 0; }
.rq-case-img img { aspect-ratio: 3 / 2; object-fit: cover; width: 100%; transition: transform 0.6s var(--rq-ease); }
.rq-card:hover .rq-case-img img { transform: scale(1.045); }

/* People */
.rq-person-media { position: relative; }
.rq-person-img img { aspect-ratio: 1; object-fit: cover; width: 100%; transition: transform 0.6s var(--rq-ease); }
.rq-person:hover .rq-person-img img { transform: scale(1.05); }

.rq-person-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(8, 27, 46, 0.55), transparent 55%);
  opacity: 0;
  transition: opacity 0.4s var(--rq-ease);
  pointer-events: none;
}

.rq-person:hover .rq-person-media::after { opacity: 1; }

/* Quotes */
.rq-quote { transition: transform 0.32s var(--rq-ease), box-shadow 0.32s var(--rq-ease); position: relative; }
.rq-quote:hover { transform: translateY(-4px); }

/* Positioned rather than left in flow: in flow the mark reserved a block of
   empty space above the text that varied with the font metrics. */
.rq-quote::before {
  content: "201C";
  position: absolute;
  top: 0.5rem;
  right: 1.25rem;
  font-family: "Montserrat", sans-serif;
  font-size: 3.75rem;
  font-weight: 700;
  line-height: 1;
  background-image: var(--rq-grad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  opacity: 0.28;
  pointer-events: none;
}

/* --------------------------------------------------------------------------
   Index cards, stats, tick lists
   -------------------------------------------------------------------------- */

/* The numeral used to sit in a fixed first track beside the copy, so it
   carried a min-width. In a card it leads the stack and needs none. */
.rq-index-num .elementor-heading-title { line-height: 1; }

@media (max-width: 767px) {
  .rq-index-num .elementor-heading-title { font-size: 1.625rem; }
}

.rq-stat-value .elementor-heading-title { line-height: 1; }

.rq-ticks .elementor-icon-list-icon {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  margin-top: 0.22rem;
  flex: none;
}

.rq-ticks--yes .elementor-icon-list-icon { background: rgba(37, 99, 235, 0.1); }
.rq-ticks--no .elementor-icon-list-icon { background: rgba(148, 163, 184, 0.14); }

/* --------------------------------------------------------------------------
   Alternating feature rows
   -------------------------------------------------------------------------- */

.rq-split-media > .e-con { flex: 1 1 0; min-width: 0; }

/* --------------------------------------------------------------------------
   FAQ
   -------------------------------------------------------------------------- */

.rq-faq .elementor-accordion-item { border-width: 1px 0 0 0 !important; }
.rq-faq .elementor-accordion-item:last-child { border-bottom-width: 1px !important; }
.rq-faq .elementor-tab-title { transition: color 0.18s var(--rq-ease); }
.rq-faq .elementor-tab-title:hover { color: var(--rq-royal); }

.rq-faq .elementor-accordion-icon {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: 1px solid var(--rq-hair-dk);
  display: grid;
  place-items: center;
  font-size: 11px;
  transition: border-color 0.3s var(--rq-ease), background-color 0.3s var(--rq-ease);
}

.rq-faq .elementor-tab-title:hover .elementor-accordion-icon { border-color: var(--rq-royal); }

.rq-faq .elementor-tab-title.elementor-active .elementor-accordion-icon {
  border-color: var(--rq-royal);
  background-color: rgba(37, 99, 235, 0.08);
}

/* --------------------------------------------------------------------------
   Form
   -------------------------------------------------------------------------- */

.rq-form .elementor-field-group > label { margin-bottom: 0.45rem; }

.rq-form .elementor-field-textual {
  padding: 0.875rem 1rem;
  line-height: 1.5;
  transition: border-color 0.18s var(--rq-ease), box-shadow 0.18s var(--rq-ease);
}

.rq-form .elementor-field-textual:focus {
  border-color: var(--rq-royal);
  box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.13);
  outline: none;
}

.rq-form textarea.elementor-field-textual { min-height: 140px; resize: vertical; }
.rq-form .elementor-field-type-acceptance .elementor-field-option { display: flex; gap: 0.75rem; align-items: flex-start; }
.rq-form .elementor-field-type-acceptance input { accent-color: var(--rq-royal); margin-top: 0.3rem; }
.rq-form .elementor-button { padding: 1.125rem 1.875rem; width: auto; }

.rq-form .elementor-field-required .elementor-field-label:after,
.rq-form .elementor-mark-required .elementor-field-label:after { color: var(--rq-royal); }

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */

.rq-footer-links .elementor-icon-list-icon { display: none; }
.rq-footer-links .elementor-icon-list-item > a,
.rq-footer-links .elementor-icon-list-text {
  transition: color 0.18s var(--rq-ease), padding-left 0.22s var(--rq-ease);
}

.rq-footer-links .elementor-icon-list-item:hover .elementor-icon-list-text {
  color: #fff;
  padding-left: 5px;
}

.rq-social .elementor-social-icon {
  background-color: rgba(255, 255, 255, 0.07) !important;
  border: 1px solid rgba(255, 255, 255, 0.1);
  transition: background 0.22s var(--rq-ease), transform 0.22s var(--rq-ease), border-color 0.22s var(--rq-ease);
}

.rq-social .elementor-social-icon:hover {
  background: var(--rq-grad) !important;
  border-color: transparent;
  transform: translateY(-2px);
}

/* --------------------------------------------------------------------------
   Focus
   -------------------------------------------------------------------------- */

:focus-visible { outline: 2px solid var(--rq-royal); outline-offset: 3px; border-radius: 3px; }
.rq-dark :focus-visible { outline-color: var(--rq-sky); }/* End custom CSS */