/* ==========================================================================
   Brightvox — theme overrides (local.css)

   This file is organised so the SHARED chrome (header, footer, language
   switchers) is defined exactly once and applies to every page. Page-specific
   sections at the bottom only contain what is genuinely unique to that page
   (backgrounds, layout, content components).

   Sections
     1.  Design tokens
     2.  Base / resets
     3.  Header & navigation        (global — identical on every page)
     4.  Header language switcher
     4b. Header text on light-hero pages
     5.  Footer                      (global)
     6.  Footer language switcher
     7.  Responsive — header & footer
     8.  Page: Home / landing        (.path-frontpage)
     9.  Page: Service pages         (nodes 97 / 98 / 100)
     10. Page: Contact               (node 99)
     11. Cookie consent banner       (EU Cookie Compliance module)
     12. 404 page                    (page--404.html.twig)
   ========================================================================== */


/* ==========================================================================
   1. Design tokens
   ========================================================================== */
:root {
  --bv-ink: #263042;
  --bv-muted: #6f7888;
  --bv-line: #dfe4eb;
  --bv-paper: #fbfcfe;
  --bv-soft: #f1f4f8;
  --bv-night: #172033;
  --bv-night-2: #111a2b;
  --bv-accent: #83a9e8;
  --bv-accent-strong: #4f6fc6;
  --bv-page-gutter: 40px;
  --bv-contact-mobile-gutter: 32px;
  --bv-header-height: 72px;
}

/* Shared "ring flow" animation for every decorative repeating-radial-gradient
   ring pattern (footer, service/contact/final CTA panels, mobile menu arc).
   One period = 45.5px (the ring pitch used by all of them), so shifting the
   gradient stops by exactly one period and looping is seamless. */
@property --bv-ring-shift {
  syntax: '<length>';
  inherits: false;
  initial-value: 0px;
}

@keyframes bv-ring-flow {
  from { --bv-ring-shift: 0px; }
  to { --bv-ring-shift: 45.5px; }
}

@media (prefers-reduced-motion: reduce) {
  .bv-site-footer:before,
  .bv-service-final:before,
  .bv-contact-left:after,
  .bv-mobile-menu__arc,
  .bv-home-hero:before,
  .bv-signal-panel:before,
  .bv-final:before {
    animation: none;
  }
}


/* ==========================================================================
   2. Base / resets
   ========================================================================== */
html {
  scroll-behavior: smooth;
}

body {
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* The header is a zero-height absolute wrapper; the navbar inside is fixed. */
header.wrapper {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 50;
  height: 0;
  background: transparent;
}

/* Remove the Drupal admin-toolbar body offset on every page so the fixed
   header is never pushed down. */
body.toolbar-fixed,
body.user-logged-in {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

/* Standard content pages (page.html.twig): pad the main container so content
   clears the fixed navbar. Landing/service/contact pages reset this to 0. */
body:not(.path-frontpage):not(.bv-page-service):not(.bv-page-contact):not(.bv-404-page) #main-container {
  padding-top: 90px;
}


/* ==========================================================================
   3. Header & navigation (global — identical on every page)
   ========================================================================== */
.navbar.navbar-default:not(.navbar-clone),
.navbar.navbar-absolute:not(.navbar-clone),
.navbar.navbar-absolute.navbar-default:not(.navbar-clone) {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 50;
  height: var(--bv-header-height);
  padding: 0 !important;
}

/* The frame (background/blur/border) lives on its own layer behind the nav
   content so it can fade in on scroll without hiding the logo/links/switcher.
   See the scroll listener in bv-header.html.twig that toggles body.bv-scrolled. */
.navbar.navbar-default:not(.navbar-clone)::before,
.navbar.navbar-absolute:not(.navbar-clone)::before,
.navbar.navbar-absolute.navbar-default:not(.navbar-clone)::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: rgba(17, 26, 43, .88);
  border-bottom: 1px solid rgba(112, 132, 172, .22);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  opacity: 0;
  transition: opacity .3s ease;
}

/* Contact has a permanently split dark/light layout below it, so its frame
   never has a single matching "transparent" state — keep it always on. */
body.bv-scrolled .navbar.navbar-default:not(.navbar-clone)::before,
body.bv-scrolled .navbar.navbar-absolute:not(.navbar-clone)::before,
body.bv-scrolled .navbar.navbar-absolute.navbar-default:not(.navbar-clone)::before,
body.bv-page-contact .navbar.navbar-default:not(.navbar-clone)::before,
body.bv-page-contact .navbar.navbar-absolute:not(.navbar-clone)::before,
body.bv-page-contact .navbar.navbar-absolute.navbar-default:not(.navbar-clone)::before {
  opacity: 1;
}

.navbar.navbar-clone,
.navbar.fixed {
  background: rgba(23, 32, 51, .86);
  border-bottom: 1px solid rgba(112, 132, 172, .28);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

/* The cloned (sticky-on-scroll) navbar is never shown. */
body > .navbar.navbar-clone {
  display: none !important;
}

/* Container holds three columns: brand (left) · nav (centred) · lang (right). */
.navbar > .container {
  position: relative;
  max-width: 1200px;
  padding-left: 40px;
  padding-right: 40px;
  height: var(--bv-header-height);
  min-height: var(--bv-header-height);
  gap: 24px;
  align-items: center;
  justify-content: space-between;
}

.navbar .navbar-brand {
  width: auto !important;
  flex: 0 0 auto;
}

.bv-brand-wordmark {
  --bv-logo-rx: 0deg;
  --bv-logo-ry: 0deg;
  --bv-logo-z: 0px;
  --bv-logo-scale: 1;
  display: inline-flex;
  align-items: baseline;
  color: #f7f9fd;
  font-size: 23px;
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1;
  text-decoration: none;
  transform: perspective(360px) translateZ(var(--bv-logo-z)) rotateX(var(--bv-logo-rx)) rotateY(var(--bv-logo-ry)) scale(var(--bv-logo-scale));
  transform-style: preserve-3d;
  transform-origin: center;
  transition: transform .22s ease, filter .22s ease;
  will-change: transform;
}

.bv-brand-wordmark:hover,
.bv-brand-wordmark:focus-visible {
  --bv-logo-z: -12px;
  --bv-logo-scale: 1.075;
  filter:
    drop-shadow(0 10px 18px rgba(0, 0, 0, .28))
    drop-shadow(0 0 10px rgba(131, 169, 232, .18));
}

.bv-brand-wordmark__light {
  color: var(--bv-accent);
  font-weight: 500;
}

.bv-brand-wordmark__strong {
  color: #f7f9fd;
  font-weight: 700;
}

@media (prefers-reduced-motion: reduce) {
  .bv-brand-wordmark {
    transition: none;
    transform: none;
  }

  .bv-brand-wordmark:hover,
  .bv-brand-wordmark:focus-visible {
    filter: none;
  }
}

/* Desktop: take the nav out of flow and stretch it edge-to-edge so the links
   centre on the page regardless of the brand/lang widths. Clicks pass through
   the empty wrapper; only the link list itself is interactive. */
@media (min-width: 992px) {
  .navbar .navbar-collapse {
    display: flex !important;
    flex: none !important;
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    visibility: visible !important;
    opacity: 1 !important;
    transform: none !important;
    background: transparent !important;
    pointer-events: none;
  }

  .navbar .offcanvas-body {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100%;
    height: 100% !important;
    padding: 0;
    overflow: visible;
    pointer-events: none;
  }
}

/* Mobile hamburger trigger. */
.hamburger {
  width: 22px;
  height: 17px;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}

.hamburger span,
.hamburger:before,
.hamburger:after {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
  background: #f7f9fd;
}

.hamburger span {
  margin: 5px 0;
}

/* Centred main menu. */
.navbar .navbar-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  margin-left: auto;
  margin-right: auto;
  white-space: nowrap;
  pointer-events: auto;
}

/* !important: sandbox/css/style.css loads after this file and re-applies
   Bootstrap's --bs-navbar-nav-link-padding-x (1rem) via
   .navbar-expand-lg .navbar-nav .nav-link at the same specificity, which
   silently doubled the visual spacing on top of the flex `gap` above. */
.navbar .navbar-nav .nav-link {
  position: relative;
  padding: 0 !important;
  color: rgba(238, 244, 255, .56);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0;
  line-height: 1;
}

.navbar .navbar-nav .nav-link.is-active,
.navbar .navbar-nav .nav-link.active,
.navbar .navbar-nav .nav-link:hover,
.navbar .navbar-nav .nav-link:focus {
  color: #f7f9fd;
}

/* Animated underline on hover / active. */
.navbar .navbar-nav .nav-link:after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -6px;
  width: 100%;
  height: 1.5px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s cubic-bezier(.22,.61,.36,1);
}

.navbar .navbar-nav .nav-link:hover:after,
.navbar .navbar-nav .nav-link.is-active:after {
  transform: scaleX(1);
}

/* Once the header frame appears on scroll, drop the active-link underline —
   it stays only while the frame is transparent at the very top. Hovering the
   active link still underlines it (:not(:hover) keeps that case out). */
body.bv-scrolled .navbar .navbar-nav .nav-link.is-active:not(:hover):after,
body.bv-scrolled .navbar .navbar-nav .nav-link.active:not(:hover):after {
  transform: scaleX(0);
}

/* Right-hand cell holds the language switcher. */
.navbar-other {
  width: auto !important;
  flex: 0 0 auto;
  align-items: center;
}

/* Hide Drupal's default "navigation other" region — we render our own
   switcher instead. */
.navbar-other .region,
.navbar-other nav,
.navbar-other ul,
.navbar-other .region-navigation-other > * {
  display: none !important;
}


/* ==========================================================================
   4. Header language switcher
   ========================================================================== */
/* Keep the switcher visible even though the rule above hides navs/uls. */
.navbar-other .bv-lang-switcher,
.navbar-other .bv-lang-switcher nav,
.navbar-other .bv-lang-switcher .links-inline {
  display: flex !important;
  align-items: center;
}

/* Render the language list inline as "EN / CZ" (reversed so EN shows first). */
.navbar-other .bv-lang-switcher nav {
  flex-direction: row-reverse;
}

.navbar-other .bv-lang-switcher .nav-link {
  display: inline-flex;
  align-items: center;
  padding: 0;
}

.navbar-other .bv-lang-switcher [data-drupal-language="en"]::after {
  content: "/";
  margin: 0 7px;
  color: rgba(238, 244, 255, .35);
  font-size: inherit;
  font-weight: 700;
  letter-spacing: 0;
}

.navbar-other .bv-lang-switcher a {
  position: relative;
  color: rgba(238, 244, 255, .56);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .18em;
  line-height: 1;
  text-decoration: none;
  text-transform: uppercase;
  white-space: nowrap;
  transition: color .2s ease;
}

.navbar-other .bv-lang-switcher a:hover,
.navbar-other .bv-lang-switcher a:focus,
.navbar-other .bv-lang-switcher .is-active > a,
.navbar-other .bv-lang-switcher a.is-active {
  color: #f7f9fd;
}

/* Animated underline on hover / active, matching the main nav links.
   bottom is -7.5px (not -6px like .nav-link) to compensate for the smaller
   12px/line-height:1 box here vs. the nav-link's 15px box, so both
   underlines land at the same absolute height under the navbar. */
.navbar-other .bv-lang-switcher a:after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -7.5px;
  width: 100%;
  height: 1.5px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s cubic-bezier(.22,.61,.36,1);
}

.navbar-other .bv-lang-switcher a:hover:after,
.navbar-other .bv-lang-switcher .is-active > a:after,
.navbar-other .bv-lang-switcher a.is-active:after {
  transform: scaleX(1);
}

/* Once the header frame appears on scroll, drop the active-language
   underline too — same rule as the main nav's active-link underline.
   Hovering the active language still underlines it. */
body.bv-scrolled .navbar-other .bv-lang-switcher .is-active > a:not(:hover):after,
body.bv-scrolled .navbar-other .bv-lang-switcher a.is-active:not(:hover):after {
  transform: scaleX(0);
}

/* Fallback styling when the switcher renders as a plain <ul>. */
.bv-lang-switcher ul {
  display: flex;
  align-items: center;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

.bv-lang-switcher ul li {
  display: flex;
  align-items: center;
}

.bv-lang-switcher ul li + li::before {
  content: "/";
  margin: 0 5px;
  color: rgba(238, 244, 255, .35);
  font-size: 11px;
  font-weight: 700;
}

.bv-lang-switcher ul li a {
  position: relative;
  color: rgba(238, 244, 255, .74);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .14em;
  text-decoration: none;
  text-transform: uppercase;
  white-space: nowrap;
  transition: color .2s;
}

.bv-lang-switcher ul li a:hover,
.bv-lang-switcher ul li.is-active a {
  color: #f7f9fd;
}

.bv-lang-switcher ul li a:after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -6px;
  width: 100%;
  height: 1.5px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s cubic-bezier(.22,.61,.36,1);
}

.bv-lang-switcher ul li a:hover:after,
.bv-lang-switcher ul li.is-active a:after {
  transform: scaleX(1);
}

body.bv-scrolled .bv-lang-switcher ul li.is-active a:not(:hover):after {
  transform: scaleX(0);
}


/* ==========================================================================
   4b. Header text on light-hero pages
   Services, legal and the 404 page start with a bright background behind
   the (still transparent) header frame, so the default light nav text is
   unreadable until the frame appears on scroll. Swap to dark ink text for
   that unscrolled state only; once body.bv-scrolled is added the selectors
   below stop matching and the default light-mode colours take over again —
   this is the exact same scroll-linked behaviour used on the services
   pages, just extended to the 404 page too.
   .bv-404-page is stamped onto <body> by brightvox_preprocess_html() (see
   brightvox.theme) whenever the current route is system.404 — the page has
   no node of its own to hang a class off of.
   :is(.page-node-type-landing-page:not(.path-frontpage)) still covers any
   other landing_page-type content (this used to also catch the demo node
   71 the site briefly used as its 404 page; that's superseded by the
   .bv-404-page class above and page--404.html.twig now).
   Homepage stays dark-hero (excluded via :not(.path-frontpage), since it's
   the only other landing_page) and contact keeps a permanent dark frame (see
   section 3), so neither needs this swap.
   ========================================================================== */
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .bv-brand-wordmark,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .bv-brand-wordmark__strong {
  color: var(--bv-ink);
}

body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .bv-brand-wordmark__light {
  color: var(--bv-accent-strong);
}

body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .hamburger span,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .hamburger:before,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .hamburger:after {
  background: var(--bv-ink);
}

body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .navbar .navbar-nav .nav-link {
  color: var(--bv-muted);
}

body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .navbar .navbar-nav .nav-link.is-active,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .navbar .navbar-nav .nav-link.active,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .navbar .navbar-nav .nav-link:hover,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .navbar .navbar-nav .nav-link:focus {
  color: var(--bv-ink);
}

body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .navbar-other .bv-lang-switcher [data-drupal-language="en"]::after,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .bv-lang-switcher ul li + li::before {
  color: rgba(38, 48, 66, .3);
}

body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .navbar-other .bv-lang-switcher a,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .bv-lang-switcher ul li a {
  color: var(--bv-muted);
}

body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .navbar-other .bv-lang-switcher a:hover,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .navbar-other .bv-lang-switcher a:focus,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .navbar-other .bv-lang-switcher .is-active > a,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .navbar-other .bv-lang-switcher a.is-active,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .bv-lang-switcher ul li a:hover,
body:is(.page-node-type-landing-page:not(.path-frontpage), .bv-page-legal, .bv-404-page):not(.bv-scrolled) .bv-lang-switcher ul li.is-active a {
  color: var(--bv-ink);
}


/* ==========================================================================
   5. Footer (global)
   ========================================================================== */
footer.bv-footer-outer {
  display: block;
  width: 100%;
  position: relative;
  overflow: hidden;
  color: #c8d1df;
  background: #070f1d;
}

.bv-site-footer {
  position: relative;
  overflow: hidden;
  background: #070f1d;
  color: #c8d1df;
}

.bv-site-footer:before {
  content: "";
  position: absolute;
  bottom: -40%;
  left: -8%;
  width: 40%;
  height: 160%;
  background: repeating-radial-gradient(circle at 0% 50%, transparent calc(0px + var(--bv-ring-shift)) calc(44px + var(--bv-ring-shift)), rgba(131,169,232,.18) calc(44px + var(--bv-ring-shift)) calc(45.5px + var(--bv-ring-shift)));
  -webkit-mask: linear-gradient(to top, #000, transparent 75%);
  mask: linear-gradient(to top, #000, transparent 75%);
  pointer-events: none;
  animation: bv-ring-flow 2s linear infinite;
}

.bv-site-footer__inner {
  position: relative;
  z-index: 2;
  max-width: 1200px;
  margin: 0 auto;
  padding: 80px 40px 36px;
}

.bv-site-footer__grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1fr;
  gap: 40px;
  padding-bottom: 44px;
}

.bv-site-footer__wordmark {
  display: inline-flex;
  align-items: baseline;
  margin-bottom: 18px;
  color: #f7f9fd;
  font-size: 23px;
  line-height: 1;
  letter-spacing: 0;
  text-decoration: none;
}

/* Logo uses the header's tilt/glow hover effect instead of the generic
   footer-link underline (see .bv-site-footer a:after below). */
.bv-site-footer a.bv-site-footer__wordmark:after {
  content: none;
}

.bv-site-footer__wordmark span {
  color: var(--bv-accent);
  font-weight: 500;
}

.bv-site-footer__wordmark strong {
  color: #f7f9fd;
  font-weight: 700;
}

.bv-site-footer p {
  max-width: 320px;
  margin: 0 0 22px;
  color: rgba(200, 209, 223, .72);
  font-size: 15px;
  line-height: 1.65;
}

.bv-site-footer__lang,
.bv-site-footer__bottom {
  color: rgba(200, 209, 223, .56);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .12em;
}

.bv-site-footer__title {
  margin-bottom: 20px;
  color: rgba(200, 209, 223, .58);
  font-size: 11.5px;
  font-weight: 800;
  letter-spacing: .18em;
  text-transform: uppercase;
}

.bv-site-footer__links {
  display: flex;
  flex-direction: column;
  gap: 12px;
  align-items: flex-start;
}

.bv-site-footer a {
  position: relative;
  color: #c8d1df;
  text-decoration: none;
}

.bv-site-footer a:hover,
.bv-site-footer a:focus {
  color: #f7f9fd;
}

.bv-site-footer a:after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -5px;
  width: 100%;
  height: 1.5px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s cubic-bezier(.22,.61,.36,1);
}

.bv-site-footer a:hover:after {
  transform: scaleX(1);
}

.bv-site-footer__bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding-top: 26px;
  flex-wrap: wrap;
  letter-spacing: 0;
}

.bv-site-footer__company-info {
  display: grid;
  grid-template-columns: 1.1fr 1.4fr 1.45fr .9fr;
  gap: 28px;
  align-items: start;
  padding: 30px 0;
  border-top: 1px solid rgba(112, 132, 172, .28);
  border-bottom: 1px solid rgba(112, 132, 172, .28);
  color: rgba(200, 209, 223, .62);
  font-size: 12.5px;
  line-height: 1.55;
}

.bv-site-footer__company-card {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.bv-site-footer__company-card--bank,
.bv-site-footer__company-card--contact {
  justify-self: end;
  text-align: right;
}

.bv-site-footer__company-label {
  margin-bottom: 7px;
  color: rgba(131, 169, 232, .72);
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: .18em;
  line-height: 1.2;
  text-transform: uppercase;
}

.bv-site-footer__company-info strong {
  color: rgba(247, 249, 253, .9);
  font-weight: 700;
}

.bv-site-footer__company-info b {
  color: rgba(247, 249, 253, .82);
  font-weight: 700;
}

.bv-site-footer__company-info a {
  color: rgba(200, 209, 223, .78);
}

.bv-site-footer__company-card--contact a {
  align-self: flex-end;
}


/* ==========================================================================
   6. Footer language switcher
   ========================================================================== */
.bv-footer-lang {
  display: flex;
  align-items: center;
  gap: 6px;
}

.bv-site-footer__lang,
.bv-site-footer__lang nav,
.bv-site-footer__lang .links-inline {
  display: flex;
  align-items: center;
}

.bv-site-footer__lang nav {
  flex-direction: row-reverse;
}

.bv-site-footer__lang .nav-link {
  display: inline-flex;
  align-items: center;
  padding: 0;
}

.bv-site-footer__lang [data-drupal-language="en"]::after {
  content: "/";
  margin: 0 6px;
  color: rgba(200, 209, 223, .28);
  font-size: inherit;
  font-weight: 500;
  letter-spacing: 0;
}

.bv-site-footer__lang a,
.bv-footer-lang-link {
  color: rgba(200, 209, 223, .36);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .14em;
  line-height: 1;
  text-decoration: none;
  text-transform: uppercase;
  transition: color .2s;
}

.bv-site-footer__lang a:hover,
.bv-site-footer__lang a:focus,
.bv-site-footer__lang .is-active > a,
.bv-site-footer__lang a.is-active,
.bv-footer-lang-link:hover {
  color: rgba(247, 249, 253, .92);
}

.bv-footer-lang span {
  color: rgba(200, 209, 223, .28);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0;
}


/* ==========================================================================
   7. Responsive — header & footer
   ========================================================================== */
/* Tablet: tighten the menu spacing / font when the centred nav gets crowded. */
@media (min-width: 992px) and (max-width: 1199.98px) {
  .navbar .navbar-nav {
    gap: 18px;
  }

  .navbar .navbar-nav .nav-link {
    font-size: 14px;
  }

  .navbar .bv-lang-switcher a {
    font-size: 12px;
  }

  .bv-site-footer__company-info {
    grid-template-columns: 1fr 1fr;
  }

  .bv-site-footer__company-card--bank,
  .bv-site-footer__company-card--contact {
    justify-self: stretch;
    text-align: left;
  }

  .bv-site-footer__company-card--contact a {
    align-self: flex-start;
  }
}

/* Mobile + tablet (hamburger visible below lg): let the brand row grow to fill
   the bar so the hamburger is pushed to the far right (flex-grow stays within
   the container — width:100% overflowed the viewport). */
@media (max-width: 991.98px) {
  .navbar .navbar-brand {
    flex: 1 1 auto !important;
    width: auto !important;
  }

  .navbar .navbar-brand .d-lg-none {
    margin-left: auto;
  }
}

@media (max-width: 767.98px) {
  :root {
    --bv-page-gutter: 24px;
  }

  .navbar > .container {
    padding-left: var(--bv-page-gutter);
    padding-right: var(--bv-page-gutter);
  }

  /* Off-canvas mobile menu panel. */
  .navbar-collapse.offcanvas {
    background: var(--bv-night-2);
  }

  .navbar .navbar-nav {
    gap: 0;
  }

  .navbar .navbar-nav .nav-link {
    padding: 12px 0;
    color: #f7f9fd;
  }

  .navbar-other {
    display: none !important;
  }

  .bv-site-footer__inner {
    padding: 56px 24px 30px;
  }

  .bv-site-footer__grid {
    grid-template-columns: 1fr 1fr;
  }

  .bv-site-footer__company-info {
    grid-template-columns: 1fr;
    gap: 22px;
    padding: 28px 0;
  }

  .bv-site-footer__company-card--bank,
  .bv-site-footer__company-card--contact {
    justify-self: stretch;
    text-align: left;
  }

  .bv-site-footer__company-card--contact a {
    align-self: flex-start;
  }
}

@media (max-width: 479.98px) {
  :root {
    --bv-page-gutter: 18px;
  }

  .navbar > .container {
    padding-left: var(--bv-page-gutter);
    padding-right: var(--bv-page-gutter);
  }

  .bv-site-footer__inner {
    padding-left: 18px;
    padding-right: 18px;
  }

  .bv-site-footer__grid {
    grid-template-columns: 1fr;
    gap: 30px;
  }
}


/* ==========================================================================
   8. Page: Home / landing (.path-frontpage)
   Dark, full-bleed landing page. Only page-specific backgrounds, layout
   resets and the hero live here — the header/footer come from above.
   ========================================================================== */
html:has(body:is(.path-frontpage)) {
  background: #172033;
}

body:is(.path-frontpage).toolbar-fixed,
body:is(.path-frontpage).user-logged-in {
  margin-top: 0 !important;
  padding-top: 0 !important;
  background: #172033;
}

body:is(.path-frontpage) .dialog-off-canvas-main-canvas,
body:is(.path-frontpage) .main-content,
body:is(.path-frontpage) .block-system-main-block,
body:is(.path-frontpage) .node--type-landing-page,
body:is(.path-frontpage) .node--type-landing-page > .content {
  background: #172033;
}

body:is(.path-frontpage) #main-container,
body:is(.path-frontpage) #content,
body:is(.path-frontpage) #block-brightvox-mainpagecontent,
body:is(.path-frontpage) #block-brightvox-mainpagecontent .block-inner,
body:is(.path-frontpage) article.node--type-landing-page,
body:is(.path-frontpage) article.node--type-landing-page > .content {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

body:is(.path-frontpage) #main-container {
  max-width: none !important;
  width: 100% !important;
}

/* Hide admin tabs / messages so the landing page is edge-to-edge. */
body:is(.path-frontpage).user-logged-in .region-top-bar,
body:is(.path-frontpage).user-logged-in [data-drupal-messages-fallback],
body:is(.path-frontpage).user-logged-in .hidden,
body:is(.path-frontpage).user-logged-in .contextual-region > .contextual,
body:is(.path-frontpage).user-logged-in .contextual .trigger {
  margin: 0 !important;
  padding: 0 !important;
  min-height: 0 !important;
}

body:is(.path-frontpage).user-logged-in nav.tabs,
body:is(.path-frontpage).user-logged-in ul.tabs-content,
body:is(.path-frontpage) #block-brightvox-tabs,
body:is(.path-frontpage) #block-brightvox-primaryadminactions {
  display: none !important;
  height: 0 !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

body:is(.path-frontpage) #main-content {
  display: none !important;
}

body:is(.path-frontpage) .dialog-off-canvas-main-canvas > a#top {
  display: none;
}

/* Hero. */
body:is(.path-frontpage) .bv-home-hero-section {
  position: relative;
  margin-top: 0 !important;
  transform: translateY(0);
  z-index: 1;
  background: #172033 !important;
}

body:is(.path-frontpage) .bv-home-hero-section > .container-fluid,
body:is(.path-frontpage) .bv-home-hero-section > .container-fluid > .row,
body:is(.path-frontpage) .bv-home-hero-section > .container-fluid > .row > .col-12,
body:is(.path-frontpage) .bv-home-hero-section .paragraph--type--paragraph-content {
  margin-top: 0 !important;
  padding-top: 0 !important;
  background: #172033 !important;
}

/* Homepage design system (hero, why-grid, services cards, proof, final CTA).
   Was previously duplicated inline per-language inside the node content
   (field_paragraph_content) — moved here so it travels with a normal theme
   deploy instead of needing a one-off drush/DB fix on every environment. */
.bv-home {
  --bv-ink: #263042;
  --bv-muted: #6f7888;
  --bv-line: #dfe4eb;
  --bv-paper: #fbfcfe;
  --bv-soft: #f1f4f8;
  --bv-night: #172033;
  --bv-night-2: #111a2b;
  --bv-accent: #83a9e8;
  --bv-accent-strong: #4f6fc6;
  font-family: Outfit, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--bv-ink);
  background: var(--bv-paper);
  line-height: 1.5;
  overflow: hidden;
}
.bv-home-section.wrapper { padding: 0; }
.bv-home-section > .container-fluid { max-width: none; padding-left: 0; padding-right: 0; }
.bv-home-section > .container-fluid > .row { --bs-gutter-x: 0; margin-left: 0; margin-right: 0; }
.bv-home-section > .container-fluid > .row > .col-12 { padding-left: 0; padding-right: 0; }
.bv-home * { box-sizing: border-box; }
.bv-wrap { max-width: 1200px; margin: 0 auto; padding: 0 40px; }
.bv-home-hero .bv-wrap { max-width: 1200px; width: 100%; }
.bv-kicker {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 28px;
  color: var(--bv-accent-strong);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
}
.bv-kicker:before {
  content: "";
  display: block;
  width: 28px;
  height: 1px;
  background: currentColor;
}
.bv-label {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 50px;
  color: var(--bv-muted);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
}
.bv-label span:first-child { color: var(--bv-accent-strong); }
.bv-label:after {
  content: "";
  width: 24px;
  height: 1px;
  background: var(--bv-line);
}
.bv-serif {
  font-family: Georgia, "Times New Roman", serif;
  font-style: italic;
  font-weight: 400;
  letter-spacing: 0;
}
.bv-button-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.bv-button {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 56px;
  padding: 15px 28px;
  border-radius: 8px;
  font-weight: 700;
  text-decoration: none;
  transition: transform .2s ease, border-color .2s ease, background .2s ease, color .2s ease;
}
.bv-button:hover { transform: translateY(-2px); }
.bv-button-primary { color: var(--bv-night); background: var(--bv-accent); }
.bv-button-primary:hover { background: #9bbbf0; color: var(--bv-night); }
.bv-button-ghost { color: #eef4ff; border: 1px solid rgba(255,255,255,.22); }
.bv-button-ghost:hover { color: #fff; border-color: rgba(131,169,232,.8); }
.bv-home-hero {
  position: relative;
  min-height: calc(100vh - 84px);
  display: flex;
  align-items: center;
  color: #f7f9fd;
  background: linear-gradient(155deg, var(--bv-night), var(--bv-night-2));
  overflow: hidden;
}
.bv-home-hero:before {
  content: "";
  position: absolute;
  inset: 0 0 0 32%;
  background: repeating-radial-gradient(circle at 8% 50%, transparent calc(0px + var(--bv-ring-shift)) calc(44px + var(--bv-ring-shift)), rgba(131,169,232,.2) calc(44px + var(--bv-ring-shift)) calc(45.5px + var(--bv-ring-shift)));
  -webkit-mask: linear-gradient(to right, transparent, #000 44%);
  mask: linear-gradient(to right, transparent, #000 44%);
  opacity: .9;
  animation: bv-ring-flow 2s linear infinite;
}
.bv-home-hero:after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 10% 12%, rgba(131,169,232,.17), transparent 34%);
  pointer-events: none;
}
.bv-hero-content {
  position: relative;
  z-index: 2;
  max-width: 1000px;
  padding: 140px 0 104px;
}
.bv-hero-title {
  margin: 0 0 34px;
  color: #fbfcff;
  font-size: clamp(52px, 7.4vw, 108px);
  font-weight: 700;
  letter-spacing: -.038em;
  line-height: .98;
}
.bv-hero-title .bv-serif { color: var(--bv-accent); }
.bv-hero-copy {
  max-width: 620px;
  margin: 0 0 42px;
  color: #c8d1df;
  font-size: clamp(18px, 1.8vw, 21px);
  line-height: 1.6;
}
.bv-section { padding: 118px 0; }
.bv-why-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(320px, .95fr);
  gap: 64px;
  align-items: stretch;
}
.bv-heading {
  margin: 0;
  color: var(--bv-ink);
  font-size: clamp(33px, 4vw, 48px);
  font-weight: 700;
  letter-spacing: -.03em;
  line-height: 1.07;
}
.bv-heading .bv-serif { color: var(--bv-accent-strong); }
.bv-copy {
  max-width: 520px;
  margin: 30px 0 0;
  color: #596273;
  font-size: 17px;
  line-height: 1.65;
}
.bv-checks {
  margin-top: 52px;
  border-top: 1px solid var(--bv-line);
}
.bv-check {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 0;
  border-bottom: 1px solid var(--bv-line);
  color: #303a4c;
  font-size: 15.5px;
  font-weight: 600;
}
.bv-check:before {
  content: "";
  width: 15px;
  height: 8px;
  border-left: 2px solid var(--bv-accent-strong);
  border-bottom: 2px solid var(--bv-accent-strong);
  transform: rotate(-45deg);
  flex: none;
  margin-top: -4px;
}
.bv-signal-panel {
  position: relative;
  min-height: 480px;
  border: 1px solid var(--bv-line);
  border-radius: 18px;
  overflow: hidden;
  background: linear-gradient(155deg, #253149, var(--bv-night));
}
.bv-signal-panel:before {
  content: "";
  position: absolute;
  inset: 0;
  background: repeating-radial-gradient(circle at 12% 88%, transparent calc(0px + var(--bv-ring-shift)) calc(44px + var(--bv-ring-shift)), rgba(131,169,232,.2) calc(44px + var(--bv-ring-shift)) calc(45.5px + var(--bv-ring-shift)));
  -webkit-mask: linear-gradient(135deg, #000, transparent 70%);
  mask: linear-gradient(135deg, #000, transparent 70%);
  animation: bv-ring-flow 2s linear infinite;
}
.bv-signal-panel:after {
  content: "";
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(135deg, transparent, transparent 16px, rgba(255,255,255,.05) 16px, rgba(255,255,255,.05) 17px);
}
.bv-signal-caption {
  position: absolute;
  left: 28px;
  bottom: 28px;
  z-index: 2;
  padding: 9px 15px;
  border-radius: 8px;
  color: #eef4ff;
  background: rgba(17,26,43,.72);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.bv-services {
  background: var(--bv-soft);
  border-top: 1px solid var(--bv-line);
  border-bottom: 1px solid var(--bv-line);
}
.bv-services-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 48px;
  margin-bottom: 56px;
}
.bv-services-head p {
  max-width: 340px;
  margin: 0;
  color: #596273;
  font-size: 16px;
  line-height: 1.6;
}
.bv-card-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}
.bv-card {
  display: flex;
  flex-direction: column;
  min-height: 390px;
  padding: 36px 32px 32px;
  border: 1px solid var(--bv-line);
  border-radius: 16px;
  color: inherit;
  background: #fff;
  text-decoration: none;
  transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}
.bv-card:hover {
  transform: translateY(-6px);
  border-color: rgba(79,111,198,.55);
  box-shadow: 0 24px 50px -28px rgba(17,26,43,.58);
}
.bv-card-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 44px;
}
.bv-card-mark {
  width: 46px;
  height: 46px;
  border-radius: 11px;
  background: repeating-radial-gradient(circle at 0% 50%, transparent 0 6px, var(--bv-accent-strong) 6px 7.5px);
  -webkit-mask: linear-gradient(to right, #000 35%, transparent);
  mask: linear-gradient(to right, #000 35%, transparent);
}
.bv-card-num { color: #808999; font-size: 13px; font-weight: 700; }
.bv-card h3 {
  margin: 0 0 12px;
  color: var(--bv-ink);
  font-size: 21px;
  font-weight: 700;
  letter-spacing: -.015em;
  line-height: 1.2;
}
.bv-card p {
  margin: 0 0 28px;
  color: #596273;
  font-size: 15px;
  line-height: 1.6;
}
.bv-card-action {
  margin-top: auto;
  color: var(--bv-accent-strong);
  font-size: 15px;
  font-weight: 700;
}
.bv-proof blockquote { max-width: 980px; margin: 0; }
.bv-proof blockquote p:first-child {
  margin: 0 0 30px;
  color: var(--bv-ink);
  font-size: clamp(30px, 3.8vw, 48px);
  font-weight: 700;
  letter-spacing: -.03em;
  line-height: 1.12;
}
.bv-proof blockquote p:nth-child(2) {
  max-width: 760px;
  margin: 0 0 28px;
  color: #596273;
  font-size: clamp(18px, 1.9vw, 21px);
  line-height: 1.6;
}
.bv-proof footer {
  color: var(--bv-muted);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .04em;
}
.bv-final {
  position: relative;
  overflow: hidden;
  color: #f7f9fd;
  background: linear-gradient(155deg, #172033, #10192a);
}
.bv-final:before {
  content: "";
  position: absolute;
  inset: 0 0 0 45%;
  background: repeating-radial-gradient(circle at 100% 50%, transparent calc(0px + var(--bv-ring-shift)) calc(44px + var(--bv-ring-shift)), rgba(131,169,232,.2) calc(44px + var(--bv-ring-shift)) calc(45.5px + var(--bv-ring-shift)));
  -webkit-mask: linear-gradient(to left, #000, transparent 70%);
  mask: linear-gradient(to left, #000, transparent 70%);
  animation: bv-ring-flow 2s linear infinite;
}
.bv-final-content {
  position: relative;
  z-index: 2;
  max-width: 860px;
}
.bv-final h2 {
  margin: 0 0 38px;
  color: #fbfcff;
  font-size: clamp(34px, 4.4vw, 56px);
  font-weight: 700;
  letter-spacing: -.03em;
  line-height: 1.05;
}
.bv-final .bv-serif { color: var(--bv-accent); }
@media (max-width: 767.98px) {
  .bv-wrap { padding: 0 24px; }
  .bv-hero-content { padding: 100px 0 64px; }
  .bv-section { padding: 72px 0; }
  .bv-why-grid,
  .bv-card-grid { grid-template-columns: 1fr; }
  .bv-services-head { align-items: flex-start; flex-direction: column; gap: 12px; margin-bottom: 40px; }
  .bv-signal-panel { display: none; }
  .bv-card { min-height: 0; }
}
@media (max-width: 479.98px) {
  .bv-wrap { padding: 0 18px; }
  .bv-hero-title { font-size: clamp(46px, 15vw, 64px); }
  .bv-button { width: 100%; justify-content: center; }
  .bv-card { padding: 30px 24px; }
}


/* ==========================================================================
   9. Page: Service pages (.bv-page-service)
   ========================================================================== */
body:is(.bv-page-service) {
  background: var(--bv-paper);
}

body:is(.bv-page-service, .bv-page-contact) .dialog-off-canvas-main-canvas > a#top {
  display: none;
}

body:is(.bv-page-service) #main-container,
body:is(.bv-page-service) #content,
body:is(.bv-page-service) #block-brightvox-mainpagecontent,
body:is(.bv-page-service) #block-brightvox-mainpagecontent .block-inner,
body:is(.bv-page-service) article.node--type-landing-page,
body:is(.bv-page-service) article.node--type-landing-page > .content {
  max-width: none !important;
  width: 100% !important;
  margin-top: 0 !important;
  padding-top: 0 !important;
}

body:is(.bv-page-service).user-logged-in nav.tabs,
body:is(.bv-page-service).user-logged-in ul.tabs-content,
body:is(.bv-page-service) #block-brightvox-tabs,
body:is(.bv-page-service) #block-brightvox-primaryadminactions,
body:is(.bv-page-service) #main-content {
  display: none !important;
  height: 0 !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

body:is(.bv-page-service) .bv-service-page-section.wrapper,
body:is(.bv-page-service) .bv-service-page-section > .container-fluid,
body:is(.bv-page-service) .bv-service-page-section > .container-fluid > .row,
body:is(.bv-page-service) .bv-service-page-section > .container-fluid > .row > .col-12 {
  max-width: none;
  margin: 0;
  padding: 0 !important;
}

body:is(.bv-page-service) .node--type-landing-page .content > section.bv-service-page-section:first-child > div.container-fluid.space-none {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

body:is(.bv-page-service) .bv-service-page-section > .container-fluid > .row {
  --bs-gutter-x: 0;
}

/* Service page content components. */
.bv-service {
  color: var(--bv-ink);
  background: var(--bv-paper);
  font-family: Outfit, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  line-height: 1.5;
  overflow: hidden;
}

.bv-service * {
  box-sizing: border-box;
}

.bv-service-wrap,
.bv-service-section,
.bv-service-final__inner {
  max-width: 1200px;
  margin: 0 auto;
  padding-left: 40px;
  padding-right: 40px;
}

.bv-service-hero {
  background: var(--bv-paper);
  border-top: 0;
}

.bv-service-wrap {
  padding-top: 118px;
  padding-bottom: 88px;
}

.bv-service-crumb {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 64px;
  color: #9aa3b1;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
}

.bv-service-crumb a {
  color: var(--bv-accent-strong);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0;
  text-decoration: none;
  text-transform: none;
}

.bv-service h1 {
  max-width: 1000px;
  margin: 0;
  color: var(--bv-ink);
  font-size: clamp(40px, 6.2vw, 82px);
  font-weight: 700;
  letter-spacing: -.036em;
  line-height: 1.03;
}

.bv-service em {
  color: var(--bv-accent-strong);
  font-family: Georgia, "Times New Roman", serif;
  font-style: italic;
  font-weight: 400;
  letter-spacing: 0;
}

.bv-service-rule {
  height: 1px;
  margin: 56px 0;
  background: var(--bv-line);
}

.bv-service-lead {
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  gap: 56px;
  align-items: center;
}

.bv-service-lead p {
  margin: 0;
  color: #596273;
  font-size: clamp(18px, 1.8vw, 21px);
  line-height: 1.62;
}

.bv-service-button {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  width: fit-content;
  padding: 16px 30px;
  border-radius: 8px;
  color: var(--bv-night);
  background: var(--bv-accent);
  font-size: 16px;
  font-weight: 700;
  text-decoration: none;
  transition: transform .2s ease, background .2s ease, border-color .2s ease;
}

.bv-service-button:hover {
  color: var(--bv-night);
  background: #9bbbf0;
  transform: translateY(-2px);
}

.bv-service-button--ghost {
  color: #eef4ff;
  background: transparent;
  border: 1px solid rgba(255,255,255,.22);
}

.bv-service-button--ghost:hover {
  color: #fff;
  background: transparent;
  border-color: rgba(131,169,232,.8);
}

.bv-service-section {
  padding-top: 120px;
  padding-bottom: 120px;
}

.bv-service-offerings {
  max-width: none;
  padding-left: max(40px, calc((100vw - 1200px) / 2 + 40px));
  padding-right: max(40px, calc((100vw - 1200px) / 2 + 40px));
  background: var(--bv-soft);
  border-top: 1px solid var(--bv-line);
  border-bottom: 1px solid var(--bv-line);
}

.bv-service-label {
  display: flex;
  align-items: center;
  gap: 13px;
  margin-bottom: 28px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
}

.bv-service-label span {
  width: 7px;
  height: 7px;
  display: inline-block;
  background: var(--bv-accent-strong);
  border-radius: 2px;
}

.bv-service-label i {
  width: 22px;
  height: 1px;
  display: inline-block;
  background: var(--bv-line);
}

.bv-service-label b {
  color: var(--bv-muted);
}

.bv-service-section h2 {
  max-width: 620px;
  margin: 0 0 56px;
  color: var(--bv-ink);
  font-size: clamp(31px, 3.7vw, 44px);
  font-weight: 700;
  letter-spacing: -.03em;
  line-height: 1.08;
}

.bv-service-card-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
}

.bv-service-card {
  display: flex;
  gap: 24px;
  padding: 32px 32px 30px;
  border: 1px solid var(--bv-line);
  border-radius: 16px;
  background: #fff;
}

.bv-service-mark {
  flex: none;
  width: 46px;
  height: 46px;
  border-radius: 11px;
  background: repeating-radial-gradient(circle at 0% 50%, transparent 0 6px, var(--bv-accent-strong) 6px 7.5px);
  -webkit-mask: linear-gradient(to right, #000 35%, transparent);
  mask: linear-gradient(to right, #000 35%, transparent);
}

.bv-service-card h3,
.bv-service-step h3 {
  margin: 0 0 10px;
  color: var(--bv-ink);
  font-size: 19px;
  font-weight: 700;
  letter-spacing: -.012em;
  line-height: 1.25;
}

.bv-service-card p,
.bv-service-step p,
.bv-service-launch__head p {
  margin: 0;
  color: #596273;
  font-size: 15px;
  line-height: 1.6;
}

.bv-service-launch__head {
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: 48px;
  align-items: end;
  margin-bottom: 56px;
}

.bv-service-launch__head h2 {
  margin-bottom: 0;
}

.bv-service-step-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}

.bv-service-step {
  padding: 30px 28px;
  border: 1px solid var(--bv-line);
  border-radius: 16px;
  background: var(--bv-paper);
}

.bv-service-step__num {
  margin-bottom: 18px;
  color: var(--bv-accent-strong);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 34px;
  line-height: 1;
}

.bv-service-audience p {
  max-width: 1000px;
  margin: 0;
  color: #303a4c;
  font-size: clamp(23px, 2.7vw, 33px);
  letter-spacing: -.02em;
  line-height: 1.35;
}

.bv-service-final {
  position: relative;
  overflow: hidden;
  color: #f7f9fd;
  background: linear-gradient(155deg, #172033, #10192a);
}

.bv-service-final:before {
  content: "";
  position: absolute;
  inset: 0 0 0 45%;
  background: repeating-radial-gradient(circle at 100% 50%, transparent calc(0px + var(--bv-ring-shift)) calc(44px + var(--bv-ring-shift)), rgba(131,169,232,.2) calc(44px + var(--bv-ring-shift)) calc(45.5px + var(--bv-ring-shift)));
  -webkit-mask: linear-gradient(to left, #000, transparent 70%);
  mask: linear-gradient(to left, #000, transparent 70%);
  animation: bv-ring-flow 2s linear infinite;
}

.bv-service-final__inner {
  position: relative;
  z-index: 2;
  padding-top: 120px;
  padding-bottom: 120px;
}

.bv-service-final h2 {
  max-width: 820px;
  margin: 0 0 22px;
  color: #fbfcff;
  font-size: clamp(32px, 4.2vw, 52px);
  font-weight: 700;
  letter-spacing: -.03em;
  line-height: 1.06;
}

.bv-service-final p {
  max-width: 560px;
  margin: 0 0 38px;
  color: #c8d1df;
  font-size: clamp(17px, 1.8vw, 20px);
  line-height: 1.6;
}

.bv-service-actions {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
}

@media (max-width: 767.98px) {
  .bv-service-wrap,
  .bv-service-section,
  .bv-service-final__inner {
    padding-left: 24px;
    padding-right: 24px;
  }

  .bv-service-wrap {
    padding-top: 104px;
    padding-bottom: 64px;
  }

  .bv-service-crumb {
    align-items: flex-start;
    flex-direction: column;
    gap: 20px;
    margin-bottom: 52px;
  }

  .bv-service-lead,
  .bv-service-card-grid,
  .bv-service-launch__head,
  .bv-service-step-grid {
    grid-template-columns: 1fr;
  }

  .bv-service-section,
  .bv-service-final__inner {
    padding-top: 72px;
    padding-bottom: 72px;
  }

  .bv-service-offerings {
    padding-left: 24px;
    padding-right: 24px;
  }
}

@media (max-width: 479.98px) {
  .bv-service-wrap,
  .bv-service-section,
  .bv-service-final__inner,
  .bv-service-offerings {
    padding-left: 18px;
    padding-right: 18px;
  }

  .bv-service-card {
    padding: 28px 24px;
  }
}


/* ==========================================================================
   10. Page: Contact (.bv-page-contact)
   Full-height two-column split (info panel + webform).
   ========================================================================== */
body.bv-page-contact {
  background: var(--bv-paper);
}

body.bv-page-contact #main-container,
body.bv-page-contact #content {
  max-width: none !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}

body.bv-page-contact .title-wrapper {
  display: none !important;
  height: 0 !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

body.bv-page-contact #content {
  display: grid;
  grid-template-columns: 2fr 3fr;
  min-height: 100svh;
}

/* Place the two panels explicitly — #content also contains invisible
   siblings (the messages wrapper, the #main-content skip-link anchor)
   which count as grid items and would otherwise push these two into
   the wrong cells (auto-placement wraps to a second row). */
body.bv-page-contact #block-brightvox-mainpagecontent {
  grid-column: 1;
  grid-row: 1;
}

body.bv-page-contact #block-brightvox-webform-contact {
  grid-column: 2;
  grid-row: 1;
}

body.bv-page-contact #block-brightvox-mainpagecontent,
body.bv-page-contact #block-brightvox-mainpagecontent .block-inner,
body.bv-page-contact article.node--type-page,
body.bv-page-contact article.node--type-page > .content,
body.bv-page-contact article.node--type-page .field--name-body,
body.bv-page-contact #block-brightvox-webform-contact,
body.bv-page-contact #block-brightvox-webform-contact .block-inner {
  height: 100%;
  margin: 0 !important;
  padding: 0 !important;
}

body.bv-page-contact.user-logged-in nav.tabs,
body.bv-page-contact.user-logged-in ul.tabs-content,
body.bv-page-contact #block-brightvox-tabs,
body.bv-page-contact #block-brightvox-primaryadminactions,
body.bv-page-contact #block-brightvox-breadcrumbs,
body.bv-page-contact #block-brightvox-pagetitle,
body.bv-page-contact .breadcrumb,
body.bv-page-contact h1.title,
body.bv-page-contact .page-title,
body.bv-page-contact .page-header,
body.bv-page-contact #main-content {
  display: none !important;
  height: 0 !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Contact uses a wider navbar on desktop so the brand/nav align with the split layout. */
body.bv-page-contact .navbar.navbar-default:not(.navbar-clone)::before,
body.bv-page-contact .navbar.navbar-absolute:not(.navbar-clone)::before,
body.bv-page-contact .navbar.navbar-absolute.navbar-default:not(.navbar-clone)::before {
  border-bottom-color: transparent;
}

@media (min-width: 992px) {
  body.bv-page-contact .navbar > .container {
    max-width: 1400px;
    padding-left: 48px;
    padding-right: 48px;
  }
}

/* Left info panel. */
.bv-contact-left {
  position: relative;
  min-height: 100svh;
  overflow: hidden;
  color: #f7f9fd;
  background: #172033;
}

.bv-contact-left:after {
  content: "";
  position: absolute;
  right: -20%;
  bottom: -10%;
  width: 80%;
  height: 80%;
  background: repeating-radial-gradient(circle at 80% 50%, transparent calc(0px + var(--bv-ring-shift)) calc(44px + var(--bv-ring-shift)), rgba(131,169,232,.2) calc(44px + var(--bv-ring-shift)) calc(45.5px + var(--bv-ring-shift)));
  -webkit-mask: linear-gradient(to right, transparent, #000 60%);
  mask: linear-gradient(to right, transparent, #000 60%);
  pointer-events: none;
  animation: bv-ring-flow 2s linear infinite;
}

.bv-contact-left__inner {
  position: relative;
  z-index: 2;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  padding: 120px 64px 72px 56px;
}

.bv-contact-label {
  display: flex;
  align-items: center;
  gap: 13px;
  margin-bottom: 48px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
}

.bv-contact-label span,
.bv-contact-services a span {
  width: 7px;
  height: 7px;
  display: inline-block;
  background: var(--bv-accent);
  border-radius: 2px;
  flex: none;
}

.bv-contact-label i {
  width: 22px;
  height: 1px;
  display: inline-block;
  background: rgba(131,169,232,.28);
}

.bv-contact-label b,
.bv-contact-services__title {
  color: rgba(200, 209, 223, .62);
}

.bv-contact-left h1 {
  margin: 0 0 28px;
  color: #fbfcff;
  font-size: clamp(36px, 3.8vw, 56px);
  font-weight: 700;
  letter-spacing: -.03em;
  line-height: 1.05;
}

.bv-contact-left em {
  color: var(--bv-accent);
  font-family: Georgia, "Times New Roman", serif;
  font-style: italic;
  font-weight: 400;
  letter-spacing: 0;
}

.bv-contact-intro {
  max-width: 400px;
  margin: 0;
  color: #c8d1df;
  font-size: 17px;
  line-height: 1.65;
}

.bv-contact-rule {
  height: 1px;
  margin: 40px 0;
  background: rgba(131,169,232,.2);
}

.bv-contact-services__title {
  margin-bottom: 20px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.bv-contact-services a {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 0;
  border-bottom: 1px solid rgba(131,169,232,.17);
  color: #eef4ff;
  font-size: 16px;
  font-weight: 600;
  text-decoration: none;
}

.bv-contact-expectation {
  margin-top: auto;
  padding-top: 48px;
  border-top: 1px solid rgba(131,169,232,.17);
  color: rgba(200,209,223,.66);
  font-size: 14px;
  line-height: 1.6;
}

.bv-contact-expectation strong {
  color: #eef4ff;
  font-weight: 700;
}

/* Right webform panel. */
body.bv-page-contact #block-brightvox-webform-contact {
  min-height: 100svh;
  display: flex;
  align-items: flex-start;
  background: var(--bv-paper);
  padding: 120px 80px 80px 72px !important;
}

body.bv-page-contact #block-brightvox-webform-contact .block-inner {
  width: 100%;
  max-width: 560px;
}

body.bv-page-contact #block-brightvox-webform-contact .block-inner:before {
  content: "Send us a message";
  display: block;
  margin: 0 0 48px;
  color: var(--bv-ink);
  font-size: clamp(24px, 2.4vw, 32px);
  font-weight: 700;
  letter-spacing: -.025em;
  line-height: 1.1;
}

body.bv-page-contact .webform-submission-contact-brightvox-form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: 32px;
  row-gap: 36px;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .form-item-message,
body.bv-page-contact .webform-submission-contact-brightvox-form > input[type="hidden"] {
  grid-column: 1 / -1;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .js-form-item,
body.bv-page-contact .webform-submission-contact-brightvox-form .form-actions {
  margin: 0 !important;
}

body.bv-page-contact .webform-submission-contact-brightvox-form label {
  display: block;
  margin: 0 0 8px;
  color: var(--bv-muted);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .form-required::after {
  display: none;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .form-control,
body.bv-page-contact .webform-submission-contact-brightvox-form .form-select,
body.bv-page-contact .webform-submission-contact-brightvox-form textarea {
  width: 100%;
  min-height: 52px;
  padding: 13px 0;
  border: 0;
  border-bottom: 1.5px solid #dfe4eb;
  border-radius: 0;
  color: var(--bv-ink);
  background: transparent;
  box-shadow: none;
  font-size: 17px;
  font-family: inherit;
  line-height: 1.4;
  outline: none;
  transition: border-color .22s ease;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .form-control::placeholder,
body.bv-page-contact .webform-submission-contact-brightvox-form textarea::placeholder {
  color: #b9c0cc;
}

body.bv-page-contact .webform-submission-contact-brightvox-form textarea {
  min-height: 150px;
  resize: vertical;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .form-item-topic {
  position: relative;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .form-select {
  -webkit-appearance: none;
  appearance: none;
  cursor: pointer;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .form-item-topic:after {
  content: "↓";
  position: absolute;
  right: 0;
  bottom: 17px;
  font-size: 13px;
  color: var(--bv-muted);
  pointer-events: none;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .form-control:focus,
body.bv-page-contact .webform-submission-contact-brightvox-form .form-select:focus,
body.bv-page-contact .webform-submission-contact-brightvox-form textarea:focus {
  border-bottom-color: var(--bv-accent-strong);
}

body.bv-page-contact .webform-submission-contact-brightvox-form .description {
  display: none;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .form-actions {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .form-item-expectation-text {
  grid-column: 1 / -1;
  margin-top: -16px !important;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .webform-button--submit {
  width: auto;
  min-height: 58px;
  padding: 17px 34px;
  border: 0;
  border-radius: 8px;
  color: var(--bv-night);
  background: var(--bv-accent-strong);
  font-size: 16px;
  font-weight: 600;
  cursor: pointer;
  transition: background .18s ease;
}

body.bv-page-contact .webform-submission-contact-brightvox-form .webform-button--submit:hover,
body.bv-page-contact .webform-submission-contact-brightvox-form .webform-button--submit:focus {
  color: var(--bv-night);
  background: #6685d4;
}

.bv-contact-form-note {
  margin: 0;
  color: var(--bv-muted);
  font-size: 13px;
  line-height: 1.5;
}

@media (max-width: 767.98px) {
  body.bv-page-contact #content {
    display: block;
    min-height: auto;
  }

  body.bv-page-contact #block-brightvox-mainpagecontent,
  body.bv-page-contact #block-brightvox-mainpagecontent .block-inner,
  body.bv-page-contact article.node--type-page,
  body.bv-page-contact article.node--type-page > .content,
  body.bv-page-contact article.node--type-page .field--name-body,
  body.bv-page-contact #block-brightvox-webform-contact,
  body.bv-page-contact #block-brightvox-webform-contact .block-inner {
    height: auto;
  }

  .bv-contact-left,
  .bv-contact-left__inner,
  body.bv-page-contact #block-brightvox-webform-contact {
    min-height: auto;
  }

  body.bv-page-contact .bv-contact-left {
    padding-left: 0 !important;
    padding-right: 0 !important;
    box-sizing: border-box;
  }

  body.bv-page-contact .bv-contact-left__inner {
    width: calc(100% - (var(--bv-contact-mobile-gutter) * 2));
    margin-left: var(--bv-contact-mobile-gutter) !important;
    margin-right: var(--bv-contact-mobile-gutter) !important;
    padding: 96px 0 56px !important;
    box-sizing: border-box;
  }

  body.bv-page-contact .bv-contact-left__inner > * {
    margin-left: 0;
    margin-right: 0;
  }

  body.bv-page-contact .bv-contact-rule {
    width: 100%;
  }

  body.bv-page-contact #block-brightvox-webform-contact {
    padding: 64px 0 72px !important;
  }

  body.bv-page-contact #block-brightvox-webform-contact .block-inner {
    width: calc(100% - (var(--bv-contact-mobile-gutter) * 2));
    margin-left: var(--bv-contact-mobile-gutter) !important;
    margin-right: var(--bv-contact-mobile-gutter) !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    box-sizing: border-box;
  }

  body.bv-page-contact .webform-submission-contact-brightvox-form {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  body.bv-page-contact .webform-submission-contact-brightvox-form .form-actions,
  body.bv-page-contact .webform-submission-contact-brightvox-form .form-item-expectation-text {
    grid-column: 1 / -1;
  }
}

@media (max-width: 479.98px) {
  body.bv-page-contact .bv-contact-left__inner,
  body.bv-page-contact #block-brightvox-webform-contact {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* ============================================================
   Mobile menu overlay (Brightvox)
   Full-screen panel that slides in from the right when the
   hamburger is tapped. Hidden on desktop (hamburger is d-lg-none).
   ============================================================ */
.bv-mobile-menu {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  flex-direction: column;
  background: var(--bv-night);
  transform: translateX(100%);
  opacity: 0;
  pointer-events: none;
  transition: transform .36s cubic-bezier(.22,.61,.36,1), opacity .28s ease;
}

.bv-mobile-menu.is-open {
  transform: translateX(0);
  opacity: 1;
  pointer-events: auto;
}

.bv-mobile-menu__arc {
  position: absolute;
  inset: 0;
  /* Solid concentric rings radiating from the right edge. */
  background: repeating-radial-gradient(circle at 96% 48%, transparent calc(0px + var(--bv-ring-shift)) calc(44px + var(--bv-ring-shift)), rgba(131,169,232,.16) calc(44px + var(--bv-ring-shift)) calc(45.5px + var(--bv-ring-shift)));
  /* Fade the rings out before the text column so they never sit behind text. */
  -webkit-mask-image: linear-gradient(to right, transparent 0 52%, #000 86%);
  mask-image: linear-gradient(to right, transparent 0 52%, #000 86%);
  pointer-events: none;
  animation: bv-ring-flow 2s linear infinite;
}

.bv-mobile-menu__bar {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 24px;
  border-bottom: 1px solid rgba(131,169,232,.18);
}

.bv-mobile-menu__brand {
  font-size: 22px;
  letter-spacing: -.01em;
  color: #f7f9fd;
  text-decoration: none;
}

.bv-mobile-menu__brand span {
  font-weight: 500;
  color: var(--bv-accent);
}

.bv-mobile-menu__brand b {
  font-weight: 700;
}

.bv-mobile-menu__close {
  position: relative;
  width: 36px;
  height: 36px;
  padding: 8px;
  border: 0;
  background: none;
  cursor: pointer;
}

.bv-mobile-menu__close span {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 22px;
  height: 2px;
  border-radius: 1px;
  background: #f7f9fd;
}

.bv-mobile-menu__close span:first-child {
  transform: translate(-50%, -50%) rotate(45deg);
}

.bv-mobile-menu__close span:last-child {
  transform: translate(-50%, -50%) rotate(-45deg);
}

.bv-mobile-menu__nav {
  position: relative;
  z-index: 2;
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  padding: 40px 32px 0;
}

.bv-mobile-menu__link,
.bv-mobile-menu__sub {
  display: block;
  text-decoration: none;
  transition: color .2s ease;
}

.bv-mobile-menu__link i,
.bv-mobile-menu__sub i {
  display: none;
}

.bv-mobile-menu__link {
  padding: 14px 0;
  color: rgba(238,244,255,.9);
  font-size: 21px;
  font-weight: 600;
  letter-spacing: -.01em;
  border-bottom: 1px solid rgba(131,169,232,.1);
}

.bv-mobile-menu__link--accent {
  color: var(--bv-accent);
  border-bottom: 0;
}

/* The divider belongs under the whole services group, not under "Services":
   drop it from the "Services" parent and put it under the last sub-item. */
.bv-mobile-menu__link:has(+ .bv-mobile-menu__sub) {
  border-bottom: 0;
}

.bv-mobile-menu__sub {
  padding: 9px 0 9px 18px;
  color: rgba(196,205,223,.62);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: -.005em;
}

/* Last service carries the divider that separates services from Contact. */
.bv-mobile-menu__sub:has(+ .bv-mobile-menu__link--accent) {
  padding-bottom: 16px;
  margin-bottom: 4px;
  border-bottom: 1px solid rgba(131,169,232,.1);
}

.bv-mobile-menu__link:hover,
.bv-mobile-menu__link:focus {
  color: #fbfcff;
}

.bv-mobile-menu__sub:hover,
.bv-mobile-menu__sub:focus {
  color: #d6deec;
}

.bv-mobile-menu__foot {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 20px 32px;
  border-top: 1px solid rgba(131,169,232,.18);
}

.bv-mobile-menu__lang a,
.bv-mobile-menu__lang span {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .14em;
  text-decoration: none;
}

.bv-mobile-menu__lang .is-active a,
.bv-mobile-menu__lang a {
  color: rgba(238,244,255,.92);
}

.bv-mobile-menu__lang ul {
  display: flex;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.bv-mobile-menu__cta {
  flex: none;
  padding: 12px 22px;
  border-radius: 8px;
  color: var(--bv-night);
  background: var(--bv-accent);
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
}

/* Desktop: never show the overlay even if state lingers. */
@media (min-width: 992px) {
  .bv-mobile-menu {
    display: none;
  }
}

@media (max-width: 991.98px) {
  body.bv-page-contact .bv-contact-left__inner,
  body.bv-page-contact #block-brightvox-webform-contact .block-inner {
    width: auto !important;
    max-width: none !important;
    margin-left: var(--bv-contact-mobile-gutter) !important;
    margin-right: var(--bv-contact-mobile-gutter) !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    box-sizing: border-box;
  }

  body.bv-page-contact .bv-contact-left__inner {
    padding-top: 96px !important;
    padding-bottom: 56px !important;
  }

  body.bv-page-contact #block-brightvox-webform-contact {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

body.bv-page-legal {
  background: var(--bv-paper);
}

body.bv-page-legal .dialog-off-canvas-main-canvas > a#top {
  display: none;
}

body.bv-page-legal #main-container,
body.bv-page-legal #content,
body.bv-page-legal #block-brightvox-mainpagecontent,
body.bv-page-legal #block-brightvox-mainpagecontent .block-inner,
body.bv-page-legal article.node--type-page,
body.bv-page-legal article.node--type-page > .content,
body.bv-page-legal #main-container,
body.bv-page-legal #content,
body.bv-page-legal #block-brightvox-mainpagecontent,
body.bv-page-legal #block-brightvox-mainpagecontent .block-inner,
body.bv-page-legal article.node--type-page,
body.bv-page-legal article.node--type-page > .content {
  max-width: none !important;
  width: 100% !important;
  margin-top: 0 !important;
  padding-top: 0 !important;
}

body.bv-page-legal .title-wrapper,
body.bv-page-legal #block-brightvox-tabs,
body.bv-page-legal #block-brightvox-primaryadminactions,
body.bv-page-legal #main-content,
body.bv-page-legal .title-wrapper,
body.bv-page-legal #block-brightvox-tabs,
body.bv-page-legal #block-brightvox-primaryadminactions,
body.bv-page-legal #main-content {
  display: none !important;
  height: 0 !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

.bv-legal-page {
  color: var(--bv-ink);
  background: var(--bv-paper);
  font-family: Outfit, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 17px;
  line-height: 1.7;
}

.bv-legal-hero,
.bv-legal-content {
  max-width: 1200px;
  margin: 0 auto;
  padding-left: 40px;
  padding-right: 40px;
}

.bv-legal-hero {
  padding-top: 118px;
  padding-bottom: 58px;
}

.bv-legal-hero h1 {
  max-width: 980px;
  margin: 0;
  color: var(--bv-ink);
  font-size: clamp(40px, 5.4vw, 72px);
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1.06;
}

.bv-legal-hero .bv-service-rule {
  margin: 46px 0;
}

.bv-legal-page__lead {
  max-width: 760px;
  margin: 0;
  color: #596273;
  font-size: clamp(18px, 1.8vw, 21px);
  line-height: 1.62;
}

.bv-legal-content {
  padding-bottom: 96px;
}

.bv-legal-content section {
  max-width: 820px;
  padding: 34px 0;
  border-top: 1px solid var(--bv-line);
}

.bv-legal-content section:first-child {
  padding-top: 0;
  border-top: 0;
}

.bv-legal-page h2 {
  margin: 0 0 14px;
  color: var(--bv-ink);
  font-size: 24px;
  font-weight: 700;
  letter-spacing: 0;
}

.bv-legal-page h3 {
  margin: 20px 0 10px;
  color: var(--bv-ink);
  font-size: 18px;
  font-weight: 700;
}

.bv-legal-page p,
.bv-legal-page ul {
  margin: 0 0 16px;
}

.bv-legal-page ul {
  padding-left: 1.25rem;
}

.bv-legal-page a {
  color: var(--bv-accent-strong);
  overflow-wrap: anywhere;
}

@media (max-width: 767.98px) {
  .bv-legal-hero,
  .bv-legal-content {
    padding-left: 24px;
    padding-right: 24px;
  }

  .bv-legal-hero {
    padding-top: 104px;
    padding-bottom: 46px;
  }

  .bv-legal-hero .bv-service-rule {
    margin: 36px 0;
  }

  .bv-legal-content {
    padding-bottom: 72px;
  }

  .bv-legal-content section {
    padding: 30px 0;
  }

  .bv-legal-page {
    font-size: 16px;
  }
}

@media (max-width: 479.98px) {
  .bv-legal-hero,
  .bv-legal-content {
    padding-left: 18px;
    padding-right: 18px;
  }
}


/* ==========================================================================
   11. Cookie consent banner (EU Cookie Compliance module)
   ========================================================================== */
#sliding-popup {
  background: linear-gradient(155deg, var(--bv-night), var(--bv-night-2)) !important;
  border-top: 1px solid rgba(112, 132, 172, .22);
}

.sliding-popup-bottom {
  box-shadow: 0 -24px 50px -28px rgba(17, 26, 43, .58);
}

.eu-cookie-compliance-content {
  max-width: 1200px;
  margin: 0 auto;
  padding: 28px var(--bv-page-gutter);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
}

.eu-cookie-compliance-message {
  float: none;
  max-width: 640px;
  margin: 0;
  font-family: Outfit, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.eu-cookie-compliance-message h2 {
  margin: 0 0 8px;
  color: #fbfcff !important;
  font-size: 19px;
  font-weight: 700;
  letter-spacing: -.01em;
  line-height: 1.3;
}

.eu-cookie-compliance-message p {
  display: block;
  margin: 0;
  color: #c8d1df !important;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.6;
}

.eu-cookie-compliance-buttons,
.eu-cookie-compliance-categories-buttons {
  float: none;
  display: flex;
  align-items: center;
  gap: 14px;
  max-width: none;
  margin: 0;
  flex-shrink: 0;
}

.eu-cookie-compliance-buttons .button,
.eu-cookie-compliance-agree-button,
.eu-cookie-compliance-default-button,
.eu-cookie-compliance-secondary-button,
.eu-cookie-compliance-save-preferences-button,
.agree-button,
.decline-button {
  display: inline-flex;
  align-items: center;
  margin: 0;
  box-shadow: none;
  text-shadow: none;
  background-image: none;
  border-radius: 8px;
  border: 1px solid transparent;
  min-height: 56px;
  padding: 15px 28px;
  font-family: inherit;
  font-size: 15px;
  font-weight: 700;
  transition: transform .2s ease, border-color .2s ease, background .2s ease, color .2s ease;
}

/* The module's "default"/"secondary" button classes swap which one is the
   accept action depending on the chosen consent method (opt-in vs opt-out),
   so style off .agree-button / .decline-button instead, which stay put. */
.agree-button {
  color: var(--bv-night) !important;
  background-color: var(--bv-accent);
}

.agree-button:hover {
  background-color: #9bbbf0;
  color: var(--bv-night) !important;
  transform: translateY(-2px);
}

.decline-button,
.disagree-button {
  color: #eef4ff !important;
  background-color: transparent;
  border-color: rgba(255, 255, 255, .22);
}

/* .decline-button also carries the module's .eu-cookie-compliance-default-button
   class, whose own :hover (grey gradient fill) and :active (1px downward
   nudge) rules have equal-or-higher specificity than ours and would otherwise
   win on interaction — pin the ghost-button look explicitly. */
.decline-button:hover,
.disagree-button:hover {
  color: #fff !important;
  background-color: transparent !important;
  background-image: none !important;
  border-color: rgba(131, 169, 232, .8);
  transform: translateY(-2px);
}

.decline-button:active,
.disagree-button:active {
  position: relative;
  top: 0;
}

/* Matches the site's link-hover convention (see .bv-site-footer a): no
   underline at rest, an animated underline swipe on hover instead of a
   permanent one. */
.eu-cookie-compliance-more-button {
  position: relative;
  color: var(--bv-accent) !important;
  font-weight: 600;
  text-decoration: none !important;
}

.eu-cookie-compliance-more-button:after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -2px;
  width: 100%;
  height: 1.5px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s cubic-bezier(.22,.61,.36,1);
}

.eu-cookie-compliance-more-button:hover {
  color: #9bbbf0 !important;
}

.eu-cookie-compliance-more-button:hover:after {
  transform: scaleX(1);
}

.eu-cookie-withdraw-tab {
  background: var(--bv-night) !important;
  color: #eef4ff !important;
  border-color: rgba(112, 132, 172, .3) !important;
  border-radius: 8px 8px 0 0;
  font-family: inherit;
  font-weight: 600;
  font-size: 13px;
}

@media (max-width: 767.98px) {
  .eu-cookie-compliance-content {
    padding: 24px;
  }
}

@media (max-width: 600px) {
  .eu-cookie-compliance-content {
    flex-direction: column;
    align-items: stretch;
    gap: 20px;
  }

  .eu-cookie-compliance-message {
    max-width: none;
  }

  .eu-cookie-compliance-buttons,
  .eu-cookie-compliance-categories-buttons {
    flex-wrap: wrap;
  }

  .eu-cookie-compliance-buttons .button,
  .eu-cookie-compliance-agree-button,
  .eu-cookie-compliance-default-button,
  .eu-cookie-compliance-secondary-button,
  .eu-cookie-compliance-save-preferences-button,
  .decline-button {
    flex: 1 1 auto;
    justify-content: center;
    text-align: center;
  }
}

/* Scroll-to-top button (sandbox .progress-wrap) uses the generic Bootstrap
   --bs-primary blue by default; recolor to the brand accent and thicken the
   ring slightly so it matches the rest of the site. */
.progress-wrap:after {
  color: var(--bv-accent-strong) !important;
}

.progress-wrap svg.progress-circle path {
  stroke: var(--bv-accent-strong) !important;
  stroke-width: 5 !important;
}


/* ==========================================================================
   12. 404 page (page--404.html.twig)
   ========================================================================== */
.bv-404 {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: calc(var(--bv-header-height) + 80px) 24px 80px;
  background: var(--bv-paper);
  text-align: center;
}

.bv-404-inner {
  max-width: 560px;
}

.bv-404-code {
  margin: 0 0 8px;
  color: var(--bv-accent-strong);
  font-family: Outfit, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: clamp(56px, 10vw, 96px);
  font-weight: 700;
  letter-spacing: -.03em;
  line-height: 1;
}

.bv-404-heading {
  margin: 0 0 32px;
  color: var(--bv-ink);
  font-family: Outfit, Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: clamp(22px, 3vw, 30px);
  font-weight: 700;
  letter-spacing: -.01em;
}

.bv-404-home {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 48px;
  padding: 13px 24px;
  border-radius: 8px;
  color: #fff;
  background: var(--bv-accent-strong);
  font-weight: 700;
  text-decoration: none;
  transition: transform .2s ease, background .2s ease;
}

.bv-404-home:hover {
  color: #fff;
  background: #6685d4;
  transform: translateY(-2px);
}

/* Header: same scroll-linked treatment as the services pages (section 4b)
   — dark logo/nav text over the transparent frame while unscrolled, back to
   the default light text once body.bv-scrolled kicks in. No nav-link shows
   as active here since /404 doesn't match any menu item; only the language
   switcher's own active state is unaffected by that. No color overrides
   needed in this section — see .bv-404-page in section 4b. */
