/* Hallmark · pre-emit critique: P4 H4 E4 S4 R5 V3
 * Virdual refinement layer (design.md, 23 Oct 2026). Loaded after Breakdance CSS on Breakdance-rendered pages only.
 * Visual layer only: no copy, route or structure changes.
 */
:root {
  --vr-bg-hero: #040D1A;
  --vr-bg: #071325;
  --vr-surface: #0A1A32;
  --vr-line: rgba(0, 212, 255, .12);
  --vr-line-strong: rgba(0, 212, 255, .28);
  --vr-head: #E8F0F8;
  --vr-text: #9AB3C8;
  --vr-muted: #57708A;
  --vr-accent: #00D4FF;
  --vr-accent-2: #1A73E8;
  --vr-font-display: Rajdhani, sans-serif;
  --vr-font-body: "IBM Plex Sans", sans-serif;
  --vr-font-mono: "IBM Plex Mono", monospace;
}

html, body { overflow-x: clip; }
html body { background-color: var(--vr-bg-hero); }

/* 1. Stretched sections: the converter froze Elementor's stretch widths in px (1425 / 1008 / 752 / 375). Let them fill the viewport. */
html body main > .bde-f-container > section.bde-f-container { width: auto !important; left: 0 !important; }

/* 2. No scroll-triggered entrance fades: content is visible on load. */
html body [data-entrance],
html body .is-before,
html body .is-animating { opacity: 1 !important; transform: none !important; animation: none !important; visibility: visible !important; }

/* 3. No gradient text. Emphasis words are solid accent. */
html body .vi-gradient-text,
html body .vi-cmmeump,
html body .vi-c2f6if2,
html body .vi-c69xrbb,
html body .vi-ch7o5ha {
  background-image: none !important;
  -webkit-background-clip: border-box !important;
  background-clip: border-box !important;
  -webkit-text-fill-color: currentColor !important;
  color: var(--vr-accent) !important;
}

/* 4. Section labels: plain mono text, no pill. */
html body .vi-c9mnqeq,
html body .vi-cceijy5,
html body .vi-c20os89,
html body .vi-ctb3c1r,
html body .vi-tpl-eyebrow {
  display: inline-block;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  font-family: var(--vr-font-mono) !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  letter-spacing: .08em !important;
  text-transform: uppercase;
  color: var(--vr-accent) !important;
}

/* 4b. Rhythm: content-section heads sit left, over their grids. Hero moments, proof logos, testimonials and CTA bands stay centred. */
html body :is(.vi-ctcbkh8, .vi-cabh1ll):not(:is(.vi-ctgccof, .vi-ckveozx) *) {
  text-align: left !important;
  align-items: flex-start !important;
}
html body :is(.vi-ctcbkh8, .vi-cabh1ll):not(:is(.vi-ctgccof, .vi-ckveozx) *) :is(h2, h3, span, p, div) { text-align: left !important; }
html body :is(.vi-ctcbkh8, .vi-cabh1ll):not(:is(.vi-ctgccof, .vi-ckveozx) *) > * { margin-left: 0 !important; }
html body :is(.vi-ctcbkh8, .vi-cabh1ll):not(:is(.vi-ctgccof, .vi-ckveozx) *) p { max-width: 720px; margin-left: 0 !important; margin-right: auto !important; }

/* 5. Display type: one scale, tighter tracking. */
html body .vi-ct4uzj0,
html body .vi-csel8kp,
html body .vi-ch6y4nj,
html body .vi-c642930,
html body .vi-cpbai9b {
  font-size: 40px !important;
  line-height: 1.15 !important;
  letter-spacing: -.005em !important;
  font-weight: 700 !important;
}
html body .vi-ceqir4i { font-size: 32px !important; line-height: 1.2 !important; letter-spacing: 0 !important; }
html body .vi-cgj79fs,
html body .vi-cssbb5s,
html body .vi-ci27hrd { font-size: 24px !important; line-height: 1.25 !important; letter-spacing: 0 !important; }
html body .vi-cg2xfux { font-size: 22px !important; line-height: 1.25 !important; letter-spacing: 0 !important; }
html body .vi-ccja9xl,
html body .vi-c4mtzfv { line-height: 1.3 !important; letter-spacing: 0 !important; }

/* 6. Body copy: IBM Plex Sans 17 / 1.65 (several blocks were set in the display face). */
html body .vi-cq83fhy,
html body .vi-c6iaajt,
html body .vi-ckl578q,
html body .vi-cjsj1q7,
html body .vi-c5hkadq,
html body .vi-ccrdsk7,
html body .vi-c7wdj1m,
html body main .vi-cvco2j8 p:not([class*="vi-c"]) {
  font-family: var(--vr-font-body) !important;
  font-size: 17px !important;
  line-height: 1.65 !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
}
html body .vi-cp4j3y9 { font-size: 16px !important; line-height: 1.65 !important; }
html body .vi-ccjtbjn { line-height: 1.65 !important; }

/* 6b. Google reviews widget: match the card system instead of the plugin's grey. */
html body .grp-container .grp-card {
  background-color: var(--vr-surface) !important;
  border: 1px solid var(--vr-line) !important;
  border-radius: 12px !important;
  box-shadow: none !important;
}
html body .grp-container .grp-card,
html body .grp-container .grp-card * { font-family: var(--vr-font-body) !important; }
html body .grp-container .grp-card :is(p, .grp-card-text, .grp-text) { color: var(--vr-text) !important; line-height: 1.6 !important; }

/* 7. Icons sit on the card, no boxed tiles. */
html body .vi-ccr81vs,
html body .vi-ci5it6r {
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

/* 8. Cards: flat, hairline, gentle hover. Backgrounds stay as built (inner panels rely on them). */
html body .vi-cwdfw1p,
html body .vi-cykug4b,
html body .vi-clygs33,
html body .vi-c911jpz {
  border: 1px solid var(--vr-line) !important;
  border-radius: 12px !important;
  box-shadow: none !important;
  transition: border-color .18s ease, transform .18s ease !important;
}
html body .vi-cwdfw1p:hover,
html body .vi-cykug4b:hover,
html body .vi-clygs33:hover { border-color: var(--vr-line-strong) !important; transform: translateY(-2px); }

/* 9. Buttons: one primary, one secondary. Same height, radius and type. */
html body .vi-cpdjmgy,
html body .vi-cox20ga,
html body .vi-c94i3ez,
html body .vi-c33y93w,
html body .vi-c5fp79c,
html body .vi-tpl-btn:not(.vi-tpl-btn--ghost) {
  min-height: 48px !important;
  padding: 0 26px !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 0 !important;
  border-radius: 8px !important;
  background-image: linear-gradient(120deg, var(--vr-accent), var(--vr-accent-2)) !important;
  color: var(--vr-bg-hero) !important;
  font-family: var(--vr-font-display) !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  letter-spacing: .06em !important;
  text-transform: uppercase !important;
  line-height: 1 !important;
  white-space: nowrap;
  box-shadow: none !important;
  transition: filter .18s ease, transform .18s ease !important;
}
html body .vi-crhamh6,
html body .vi-c485dfn,
html body .vi-chaihl4,
html body .vi-tpl-btn.vi-tpl-btn--ghost {
  min-height: 48px !important;
  padding: 0 24px !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 1px solid var(--vr-line-strong) !important;
  border-radius: 8px !important;
  background-image: linear-gradient(transparent, transparent) !important;
  background-color: transparent !important;
  color: var(--vr-head) !important;
  font-family: var(--vr-font-display) !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  letter-spacing: .06em !important;
  text-transform: uppercase !important;
  line-height: 1 !important;
  white-space: nowrap;
  box-shadow: none !important;
  transition: border-color .18s ease, color .18s ease, transform .18s ease !important;
}
html body :is(.vi-cpdjmgy, .vi-cox20ga, .vi-c94i3ez, .vi-c33y93w, .vi-c5fp79c, .vi-crhamh6, .vi-c485dfn, .vi-chaihl4) *:not(svg):not(path) {
  font-family: inherit !important; font-size: inherit !important; font-weight: inherit !important;
  letter-spacing: inherit !important; text-transform: inherit !important; color: inherit !important; line-height: inherit !important;
}
html body .vi-cpdjmgy:hover, html body .vi-cox20ga:hover, html body .vi-c94i3ez:hover,
html body .vi-c33y93w:hover, html body .vi-c5fp79c:hover, html body .vi-tpl-btn:not(.vi-tpl-btn--ghost):hover { filter: brightness(1.12); }
html body .vi-crhamh6:hover, html body .vi-c485dfn:hover, html body .vi-chaihl4:hover,
html body .vi-tpl-btn.vi-tpl-btn--ghost:hover { border-color: var(--vr-accent) !important; color: var(--vr-accent) !important; }
html body .vi-cpdjmgy:active, html body .vi-cox20ga:active, html body .vi-c94i3ez:active, html body .vi-c33y93w:active,
html body .vi-c5fp79c:active, html body .vi-crhamh6:active, html body .vi-c485dfn:active, html body .vi-chaihl4:active,
html body .vi-tpl-btn:active { transform: translateY(1px); }
html body a:focus-visible,
html body button:focus-visible,
html body input:focus-visible,
html body textarea:focus-visible,
html body select:focus-visible { outline: 2px solid var(--vr-accent) !important; outline-offset: 3px; }

html body .grp-container .grp-write-btn {
  min-height: 44px; padding: 0 22px !important; display: inline-flex; align-items: center; gap: 8px;
  background: transparent !important; border: 1px solid var(--vr-line-strong) !important; border-radius: 8px !important;
  color: var(--vr-head) !important; font-family: var(--vr-font-display) !important; font-size: 15px !important;
  font-weight: 700 !important; letter-spacing: .06em; text-transform: uppercase; box-shadow: none !important;
}
html body .grp-container .grp-write-btn:hover { border-color: var(--vr-accent) !important; color: var(--vr-accent) !important; }

/* 9b. Hero status widget: real figures, flat panels. No glass blur, no glow, no float. */
html body .vi-coho1r9,
html body .vi-c8w015h,
html body .vi-ckcdj2t {
  background-color: var(--vr-surface) !important;
  border: 1px solid var(--vr-line) !important;
  border-radius: 12px !important;
  box-shadow: none !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  animation: none !important;
}

/* 10. Reduced motion. */
@media (prefers-reduced-motion: reduce) {
  html body *, html body *::before, html body *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
  html body [data-vi-particles] canvas { display: none !important; }
}

/* Mobile scale */
@media (max-width: 767px) {
  html body .vi-ct4uzj0, html body .vi-csel8kp, html body .vi-ch6y4nj, html body .vi-c642930, html body .vi-cpbai9b { font-size: 30px !important; overflow-wrap: anywhere; min-width: 0; }
  html body .vi-ceqir4i { font-size: 26px !important; }
  html body .vi-cgj79fs, html body .vi-cssbb5s, html body .vi-ci27hrd { font-size: 21px !important; }
  html body .vi-cq83fhy, html body .vi-c6iaajt, html body .vi-ckl578q, html body .vi-cjsj1q7, html body .vi-c5hkadq,
  html body .vi-ccrdsk7, html body .vi-c7wdj1m, html body main .vi-cvco2j8 p:not([class*="vi-c"]) { font-size: 16px !important; }
}
@media (max-width: 479px) {
  html body .vi-cpdjmgy, html body .vi-cox20ga, html body .vi-c94i3ez, html body .vi-c33y93w, html body .vi-c5fp79c,
  html body .vi-crhamh6, html body .vi-c485dfn, html body .vi-chaihl4 { padding: 0 18px !important; font-size: 14px !important; letter-spacing: .04em !important; }
}

/* 11. Closing CTA band: the two buttons sit together instead of in two half-width columns. */
html body .vi-cjjovgc:has(.vi-c94i3ez) { justify-content: center !important; gap: 16px !important; flex-wrap: wrap !important; }
html body .vi-cjjovgc:has(.vi-c94i3ez) > * { width: auto !important; flex: 0 0 auto !important; max-width: 100%; }
html body .vi-cjjovgc:has(.vi-c94i3ez) > * *:not(a):not(a *) { width: auto !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important; }
html body section:has(.vi-cjjovgc .vi-c94i3ez) p { max-width: 760px; margin-left: auto !important; margin-right: auto !important; }

/* 12. Emphasis words take the heading's size at every breakpoint. */
html body :is(.vi-gradient-text, .vi-cmmeump, .vi-c2f6if2, .vi-c69xrbb, .vi-ch7o5ha) { font-size: inherit !important; line-height: inherit !important; letter-spacing: inherit !important; }
/* Hero label stays with the headline on tablet and phone. */
@media (max-width: 1023px) {
  html body .vi-ca6xsv4 { align-items: flex-start !important; }
}

/* 13. Phone gutters: sections carried desktop-scale side padding (30 to 80px) onto phones. */
@media (max-width: 767px) {
  html body :is(section.vi-c3jdsd6, section.vi-co20s3j, section.vi-c2lw680, section.vi-c306112, section.vi-ch81pxg, section.vi-chfnplk,
    section.vi-cq3j6tf, section.vi-cgjzskb, section.vi-ckveozx, section.vi-c1satba, section.vi-ctgccof, section.vi-csdqdfy) {
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
  html body :is(.vi-cjtm3m9, .vi-cxbg7p4) { padding-left: 16px !important; padding-right: 16px !important; }
}

/* 11b. Same pairing for every primary + phone button row built from two half-width columns (contact hero and others). */
html body .bde-f-container:has(> .vi-c635nrx :is(.vi-c94i3ez, .vi-cox20ga)):has(> .vi-c635nrx :is(.vi-c485dfn, .vi-crhamh6)) { justify-content: center !important; gap: 16px !important; flex-wrap: wrap !important; }
html body .bde-f-container:has(> .vi-c635nrx :is(.vi-c94i3ez, .vi-cox20ga)):has(> .vi-c635nrx :is(.vi-c485dfn, .vi-crhamh6)) > .vi-c635nrx { width: auto !important; flex: 0 0 auto !important; max-width: 100%; }
html body .bde-f-container:has(> .vi-c635nrx :is(.vi-c94i3ez, .vi-cox20ga)):has(> .vi-c635nrx :is(.vi-c485dfn, .vi-crhamh6)) > .vi-c635nrx *:not(a):not(a *) { width: auto !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important; }
html body .vi-cbwof6l .bde-f-container:has(> .vi-c635nrx :is(.vi-c94i3ez, .vi-cox20ga)):has(> .vi-c635nrx :is(.vi-c485dfn, .vi-crhamh6)) { justify-content: flex-start !important; }

/* 4c. Head groups that carry a closing-CTA or testimonial heading stay centred (remote support and others). */
html body :is(.vi-ctcbkh8, .vi-cabh1ll):has(.vi-c642930, .vi-ch6y4nj) { text-align: center !important; align-items: center !important; }
html body :is(.vi-ctcbkh8, .vi-cabh1ll):has(.vi-c642930, .vi-ch6y4nj) :is(h2, h3, span, p, div) { text-align: center !important; }
html body :is(.vi-ctcbkh8, .vi-cabh1ll):has(.vi-c642930, .vi-ch6y4nj) > * { margin-left: auto !important; margin-right: auto !important; }

/* 14. Remote support: oversized semibold lead paragraphs become calm body copy. */
html body :is(.vi-cuifn1a, .vi-cz3yr40, .vi-c54oomy) {
  font-family: var(--vr-font-body) !important;
  font-size: 19px !important;
  line-height: 1.6 !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
  color: var(--vr-text) !important;
}

/* 15. Blog index (legacy cards): even image crops, one title scale, body-face excerpts, quiet card CTA. */
html body .vi-c4pagdt .vi-c7nemoh { width: 100% !important; aspect-ratio: 16 / 9 !important; height: auto !important; object-fit: cover !important; }
html body .vi-ccim887 {
  background: rgba(4, 13, 26, .78) !important;
  border: 1px solid var(--vr-line-strong);
  border-radius: 6px !important;
  padding: 4px 10px !important;
  font-family: var(--vr-font-mono) !important;
  font-size: 11px !important;
  letter-spacing: .08em;
  text-transform: uppercase;
}
html body .vi-ccim887, html body .vi-ccim887 * { color: var(--vr-accent) !important; }
html body .vi-cajpwv9 { font-size: 22px !important; line-height: 1.25 !important; font-weight: 700 !important; letter-spacing: 0 !important; color: var(--vr-head) !important; }
html body .vi-cyu0k1b { font-family: var(--vr-font-body) !important; font-size: 15px !important; line-height: 1.6 !important; font-weight: 400 !important; }
html body .vi-c4lpxch {
  min-height: 40px !important; padding: 0 16px !important; display: inline-flex !important; align-items: center; gap: 8px;
  background-image: linear-gradient(transparent, transparent) !important; background-color: transparent !important;
  border: 1px solid var(--vr-line-strong) !important; border-radius: 8px !important; box-shadow: none !important;
  color: var(--vr-head) !important; font-family: var(--vr-font-display) !important; font-size: 14px !important; font-weight: 700 !important;
  letter-spacing: .06em !important; text-transform: uppercase !important; line-height: 1 !important; white-space: nowrap;
}
html body .vi-c4lpxch * { color: inherit !important; font: inherit !important; letter-spacing: inherit !important; text-transform: inherit !important; }
html body .vi-c4lpxch:hover { border-color: var(--vr-accent) !important; color: var(--vr-accent) !important; }
html body :is(.vi-coogf91, .vi-cldjr2s) { font-size: 56px !important; line-height: 1.1 !important; letter-spacing: -.01em !important; }
html body .vi-cx27n6o { font-family: var(--vr-font-display) !important; font-size: 22px !important; font-weight: 700 !important; }
@media (max-width: 767px) {
  html body :is(.vi-coogf91, .vi-cldjr2s) { font-size: 38px !important; }
  html body :is(.vi-cuifn1a, .vi-cz3yr40, .vi-c54oomy) { font-size: 17px !important; }
}

/* 16. Long-form: article and policy body copy at a readable measure; titles in the display weight. */
html body .vi-post-content > :is(p, ul, ol, h2, h3, h4, blockquote) { max-width: 760px; }
html body .vi-post-content :is(li) { font-family: var(--vr-font-body) !important; font-size: 17px !important; line-height: 1.65 !important; }
html body :is(.vi-c65x5g8, .vi-policy__title) { font-weight: 700 !important; letter-spacing: -.01em !important; line-height: 1.12 !important; }

/* 17. Tab titles (remote support) in the display face, not Roboto. */
html body :is(.vi-tab-title, .vi-tab-mtitle), html body :is(.vi-tab-title, .vi-tab-mtitle) * { font-family: var(--vr-font-display) !important; font-weight: 700 !important; }
@media (max-width: 1023px) {
  html body .vi-cbwof6l .vi-ca6xsv4 { margin-left: 0 !important; margin-right: auto !important; align-self: flex-start !important; }
}
@media (max-width: 1023px) {
  html body .vi-cbwof6l > .vi-caf4l3z { align-self: flex-start !important; margin-left: 0 !important; margin-right: auto !important; }
}
