/* =========================================================================
   Hitech revamp 2026 - site chrome, on every front page.
   Loaded by layouts/front.blade.php after hitech.css and hitech-ui.css
   (before the page's own styles). Plain CSS, no build step.
   Two parts, each edited only inside its own markers:
   1. loader, header, sticky/pinned header, side menu
   2. typed band, footer, cookie notice (maintenance: hitech-maintenance.css)
   ========================================================================= */

/* ==== PART 1: loader, header, side menu ================================== */

/* Values from SPEC 5 (tokens from hitech.css, which always loads first; fallbacks for safety).
   Set by hitech-chrome.js (PART 1):
     html.ht-lifted      the loading curtain has lifted (one way; at once without a loader)
     html.ht-head-enter  the header entrance after the curtain (removed once it has played)
     html.ht-head        the header script runs: header + burger are fixed and follow the scroll
     html.ht-head-solid  glass bar (as soon as the page scrolls)     html.ht-head-away  hidden (scrolling down)
     html.ht-head-light  a white .light-section band is under the bar or its shadow, top 150 px (near-black glass, short shadow)
     html.ht-menu-lock   side menu open: the page does not scroll
     #ht-side-menu       [inert] while closed (from the first frame of the slide-out); --ht-md0 (ms)
   Side menu state: body.menu-open (venor.js; other files depend on it - never .open-menu). */

/* ---------- Loading screen (Pace) ----------
   The Admin logo breathes on the Admin colour while a thin light line with a live % counter runs
   along the top. When the page is ready the curtain lifts in .7 s with the logo, led by a thin
   light edge (the first headings unfold as it lifts: the stage opens 250 ms after pace-done). */
.pace-cover {
  transition: transform .7s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)), visibility 0s linear .7s;
}
.pace-cover::before { /* the Admin logo (the layout sets --ht-loader-img) */
  content: "";
  position: absolute;
  inset: 0;
  background: var(--ht-loader-img, none) 50% 50% / 200px auto no-repeat;
  animation: ht-loader-breathe 2.4s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)) infinite alternate;
}
.pace-cover::after { /* the light edge that leads the lift */
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -18px;
  height: 36px;
  background:
    linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, .9) 50%, rgba(255, 255, 255, 0)) 50% 50% / 100% 1px no-repeat,
    radial-gradient(50% 50% at 50% 50%, rgba(255, 255, 255, .2), rgba(255, 255, 255, 0));
  opacity: 0;
  pointer-events: none;
}
body.pace-done .pace-cover,
html.ht-lifted .pace-cover {
  height: 100vh;                         /* venor.css collapses it (height 0) ... */
  background: var(--ht-loader-bg, #000); /* ... into light grey #f2f2f2 without the logo: never */
  transform: translate3d(0, -100%, 0);
  visibility: hidden;
}
body.pace-done .pace-cover::before,
html.ht-lifted .pace-cover::before {
  animation-play-state: paused;
  translate: 0 -7vh; /* the logo rides up a little faster than the curtain */
  transition: translate .7s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1));
}
body.pace-done .pace-cover::after,
html.ht-lifted .pace-cover::after { opacity: 1; transition: opacity .15s linear; }
@keyframes ht-loader-breathe {
  from { scale: .955; opacity: .8; }
  to { scale: 1; opacity: 1; }
}
.pace .pace-progress { /* white head, mist tail, soft glow (Signal is kept for things you can act on) */
  height: 2px;
  background: linear-gradient(90deg, rgba(167, 172, 182, 0), rgba(167, 172, 182, .55) 62%, #fff);
  box-shadow: 0 0 12px rgba(255, 255, 255, .4);
  pointer-events: none;
}
.pace.pace-inactive { pointer-events: none; }
.pace .pace-progress-inner { /* a soft flare on the leading tip */
  position: absolute;
  top: -5px;
  right: -16px;
  width: 140px;
  height: 12px;
  background: radial-gradient(closest-side, rgba(255, 255, 255, .55), rgba(255, 255, 255, 0));
}
.pace .pace-progress::after { /* live counter: Pace writes data-progress-text ("38%") */
  content: attr(data-progress-text);
  position: absolute;
  top: 14px;
  right: 4px;
  color: var(--ht-mist, #a7acb6);
  font-size: .75rem;
  font-weight: 600;
  font-stretch: 112%;
  line-height: 1;
  letter-spacing: .04em;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  transition: translate .5s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
/* Below 10 % (Pace writes data-progress "00"-"09") the line is too short to hold the counter:
   it rides just ahead of the tip, then glides behind it. */
.pace .pace-progress[data-progress^="0"]::after { translate: calc(100% + 12px) 0; }
.pace.pace-inactive .pace-progress {
  display: block;
  opacity: 0;
  visibility: hidden; /* gone once faded: no invisible strip over the top of the page */
  transition: opacity .35s linear, visibility 0s linear .35s;
}

/* ---------- Header: type, spacing, focus ---------- */
.header__content__venor .header__action-btn {
  font-size: .8125rem;
  font-weight: 600;
  font-stretch: 112%;
  line-height: 34px;
  letter-spacing: .005em;
}
.header__content__venor .header__action-btn svg { fill: currentColor; margin-left: 6px; } /* also at 768-1199 px */
.rtl .header__content__venor .header__action-btn svg { margin-left: 0; margin-right: 6px; }
@media (min-width: 768px) {
  /* the desktop geometry at tablet widths too: venor's 52 px (768-1199 px) left the burger 89 px
     away from the search icon instead of 37 px; RTL is the mirror (venor's RTL had 67 px) */
  .header__actions__venor { margin-right: 0; }
  .rtl .header__actions__venor { margin-left: 0; }
  .rtl .header__lang { margin: 0 5px 0 0; padding-left: 0; padding-right: 12px; }
  .header__actions__venor > .header__action,
  .header__actions__venor > .ht-hs-action { margin-left: 12px; margin-right: 0; }
  .header__actions__venor > .header__action:first-child { margin-left: 0; }
  .rtl .header__actions__venor > .header__action,
  .rtl .header__actions__venor > .ht-hs-action { margin-left: 0; margin-right: 12px; }
  .rtl .header__actions__venor > .header__action:first-child { margin-right: 0; }
}
.header__logo a { display: inline-block; border-radius: 6px; transition: opacity .3s ease; } /* venor: "all" would fade the focus ring in */
.header__logo a:focus-visible { outline: 2px solid var(--ht-signal, #4361ff); outline-offset: 6px; }

/* ---------- Header entrance: after the curtain, logo, pills, search and burger arrive one after
   another (only with the loader on; nothing is hidden without JavaScript or Pace). ---------- */
.header__actions__venor > .header__action { --ht-hi: 1; }
.header__actions__venor > .header__action + .header__action { --ht-hi: 2; }
.header__actions__venor > .ht-hs-action { --ht-hi: 3; }
.header-burger .burger span:nth-child(2) { --ht-bi: 1; }
.header-burger .burger span:nth-child(3) { --ht-bi: 2; }
@media (prefers-reduced-motion: no-preference) {
  html.ht-js:not(.ht-lifted) body.pace-running:not(.pace-done) :is(.header__logo, .header__actions__venor > .header__action, .header__actions__venor > .ht-hs-action) { opacity: 0; }
  html.ht-js:not(.ht-lifted) body.pace-running:not(.pace-done) .header-burger .burger span { scale: 0 1; }
  html.ht-head-enter .header__logo { animation: ht-logo-in 1.2s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)) 380ms both; }
  html.ht-head-enter .rtl .header__logo { animation-name: ht-logo-in-rtl; }
  html.ht-head-enter :is(.header__actions__venor > .header__action, .header__actions__venor > .ht-hs-action) {
    animation: ht-head-in .9s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)) calc(380ms + var(--ht-hi, 1) * 80ms) both;
  }
  html.ht-head-enter .header-burger .burger span {
    animation: ht-bar-in .8s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)) calc(700ms + var(--ht-bi, 0) * 70ms) both;
  }
}
@keyframes ht-logo-in {
  from { opacity: 0; translate: 0 -10px; clip-path: inset(-20% 100% -20% 0); }
  to { opacity: 1; translate: none; clip-path: inset(-20% 0 -20% 0); }
}
@keyframes ht-logo-in-rtl {
  from { opacity: 0; translate: 0 -10px; clip-path: inset(-20% 0 -20% 100%); }
  to { opacity: 1; translate: none; clip-path: inset(-20% 0 -20% 0); }
}
@keyframes ht-head-in { from { opacity: 0; translate: 0 -16px; } }
@keyframes ht-bar-in { from { scale: 0 1; } }

/* ---------- Header on scroll (html.ht-head): fixed at every width; a glass bar as soon as the page
   scrolls (a compact 70 px bar from 768 px), hidden while you scroll down, back on the way up.
   One mechanism at every width: venor's body.sticky (>= 1200 px, from 250 px) changes nothing
   here, so crossing 250 px is seamless. Moves use the separate translate property (venor's
   .animated.fadeInDown owns transform). The burger moves with its wrapper .header-burger; the
   inner .burger has no translate of its own (hitech-ui.js's magnet does not pull it).
   Over a white band (html.ht-head-light) the glass stays near-black with a short, soft shadow.
   Keyboard focus, anchor jumps and scrollIntoView stop clear of the bar (scroll-padding). ---------- */
html.ht-head .header {
  position: fixed;
  pointer-events: none; /* the empty header box never swallows clicks: only the bar takes them */
}
html.ht-head .header__content__venor { pointer-events: auto; }
html.ht-head-away body:not(.menu-open) .header__content__venor { pointer-events: none; }
html.ht-head .header-burger { position: fixed; }
@media (min-width: 768px) {
  /* compact bar: 15 px above the logo instead of 50 (the glass reaches 15 px below it) */
  html.ht-head { --ht-head-shift: -35px; --ht-head-ext: 15px; --ht-burger-shift: -33px; }
}
.header__content__venor::before { /* the glass */
  content: "";
  position: absolute;
  z-index: -1;
  top: 0;
  left: 0;
  right: 0;
  bottom: calc(var(--ht-head-ext, 0px) * -1);
  background: rgba(8, 8, 12, .72);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
  backdrop-filter: blur(16px) saturate(140%);
  border-bottom: 1px solid rgba(255, 255, 255, .1);
  box-shadow: 0 30px 70px -30px rgba(0, 0, 0, .9);
  opacity: 0;
  pointer-events: none;
  transition:
    opacity .45s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)),
    background-color .5s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)),
    box-shadow .5s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
/* over a white band the .72 glass read as a flat grey slab with a 70 px grey smear under it */
html.ht-head-light .header__content__venor::before {
  background-color: rgba(8, 8, 12, .93);
  box-shadow: 0 16px 34px -24px rgba(0, 0, 0, .5);
}
@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .header__content__venor::before,
  html.ht-head-light .header__content__venor::before { background: #0a0a0e; }
}
html.ht-head-solid .header__content__venor::before { opacity: 1; }
html.ht-head-solid:not(.ht-head-away) .header__content__venor::before { pointer-events: auto; } /* the glass is part of the bar */
html.ht-head-away .header__content__venor::before { transition-delay: .45s; } /* turns to glass once out of sight */
html.ht-head .header__content__venor,
html.ht-head .header-burger { transition: translate .6s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)); }
html.ht-head-solid .header__content__venor { translate: 0 var(--ht-head-shift, 0px); }
html.ht-head-solid .header-burger { translate: 0 var(--ht-burger-shift, 0px); }
html.ht-head-away body:not(.menu-open) .header__content__venor { translate: 0 calc(-100% - 90px); transition-duration: .45s; }
html.ht-head-away body:not(.menu-open) .header-burger { translate: 0 -150px; transition-duration: .45s; }
@media (min-width: 1200px) {
  /* venor's sticky mode (body.sticky from 250 px) would reshape the bar, pin the burger on its
     own and drop both in again (fadeInDown): here they keep the shape, the glass and the moves
     above, so nothing changes on screen when the page crosses 250 px. */
  html.ht-head body.sticky > .header { height: auto; }
  html.ht-head body.sticky .header__content__venor {
    position: relative;
    top: auto;
    right: auto;
    left: auto;
    z-index: auto;
    width: 100%;
    padding: 50px 85px 0 50px;
    background: none;
    box-shadow: none;
    animation: none;
  }
  html.ht-head body.rtl.sticky .header__content__venor { padding: 50px 50px 0 85px; }
  html.ht-head body.sticky .header-burger .burger {
    position: relative;
    top: auto;
    right: auto;
    left: auto;
    animation: none;
  }
}
/* Tab / Shift+Tab, anchor jumps and scrollIntoView stop below the bar (70 px) and above WhatsApp, which
   rises with the cookie card (--ht-float-lift): no focused control hides under them (WCAG 2.4.11).
   Page anchors add only their own small breathing room (scroll-margin). Firefox leaves a control that
   still partly shows where it is: hitech-chrome.js (PART 1) then moves it into this zone. It also keeps
   a focus stop that is not a control (a scroller, a frame) or sits in the moving logo band clear of
   Call and the ring, which hitech-fab.js steps aside only for links, buttons and fields. */
html.ht-head {
  scroll-padding-top: 6rem;
  scroll-padding-bottom: calc(var(--ht-fab-bottom, 24px) + var(--ht-fab-main, 56px) + 1rem);
}
/* The pages' own jump targets (hitech.css) keep the bar's room themselves (7rem headings, a 6rem form
   box, a 3.5rem request block): on top of the 6rem above they landed 56-96 px lower. With the bar
   following the scroll they keep only their own breathing room, so the article contents, the legal
   index, the "Request this service" glide and the form box land where they always did: headings 112 px
   down, the form box 96 px, the request block 56 px (its own 5-8.5rem top padding is the room; its
   whole form shows on a 900 px screen). Without JavaScript the bar does not follow: their own values. */
html.ht-head :is(.ht-read h2, .ht-read h3, .ht-read h4, .ht-doc__heading, .ht-doc__group) { scroll-margin-top: 1rem; }
html.ht-head .ht-formbox { scroll-margin-top: 0; }
/* Inside the sticky request panel Firefox counts only the box's own margin, not the page's padding:
   keep the box's room there (Chrome and Safari land it at 88 px either way). */
@media (min-width: 992px) and (min-height: 780px) { html.ht-head .ht-req__panel .ht-formbox { scroll-margin-top: 6rem; } }
html.ht-head .ht-req { scroll-margin-top: -2.5rem; }

/* ---------- Burger: a real button (role/tabindex/aria in the layout), 44 px target, bars -> X ---------- */
.header-burger .burger { position: relative; -webkit-tap-highlight-color: transparent; }
.rtl .header-burger .burger { margin-left: 0; margin-right: 15px; } /* venor's 15 px is on the outer side in RTL: now the mirror of LTR */
.header-burger .burger::before { /* the hit area: at least 44 x 44 px around the 25 x 19 px bars */
  content: "";
  position: absolute;
  top: -12px;
  right: -10px;
  bottom: -13px; /* the bars' box is 19 px tall: 19 + 25 = 44 */
  left: -10px;
  border-radius: 12px;
}
body:has(> .mfp-bg) .header-burger { z-index: 1041; } /* under an open lightbox, like the rest of the header and the floating buttons */
.header-burger .burger:focus { outline: none; }
.header-burger .burger:focus-visible::before { outline: 2px solid var(--ht-signal, #4361ff); outline-offset: 0; }
.header-burger .burger span {
  transform: none;
  transition:
    width .35s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)),
    opacity .25s linear,
    scale .3s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)),
    rotate .3s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)),
    translate .3s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)) .18s;
}
.menu-open .header-burger .burger span { /* the bars meet in the middle, then turn into an X */
  transition:
    width .35s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)),
    opacity .2s linear,
    scale .3s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)),
    translate .3s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)),
    rotate .38s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)) .2s;
}
.menu-open .header-burger .burger span:first-child { transform: none; translate: 0 8px; rotate: 45deg; }
.menu-open .header-burger .burger span:nth-child(2) { opacity: 0; scale: 0 1; }
.menu-open .header-burger .burger span:last-child { transform: none; translate: 0 -8px; rotate: -45deg; }
@media (forced-colors: active) {
  /* Windows contrast themes paint backgrounds with the page colour: the bars (and the X) would vanish */
  .header-burger .burger span { forced-color-adjust: none; background-color: CanvasText; }
}

/* ---------- Skip link (layout: the first Tab stop): a white pill that slides in at the top while
   focused and puts the focus on the page's main content (#ht-main, hitech-chrome.js). ---------- */
.ht-skip {
  position: fixed;
  z-index: 10040; /* above the header, the burger and the back-to-top ring; under the search panel */
  top: 14px;
  left: 14px;
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  min-height: 44px;
  padding: 0 1.25rem;
  border: 1px solid transparent; /* drawn in contrast themes */
  border-radius: 999px;
  background: #fff;
  color: #0b0b10;
  font-family: var(--ht-font, "Archivo", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif);
  font-size: .875rem;
  font-weight: 600;
  font-stretch: 112%;
  line-height: 1;
  letter-spacing: .005em;
  text-decoration: none;
  white-space: nowrap;
  box-shadow: none; /* the glow only while it shows: parked, it would tint the top edge */
  translate: 0 calc(-100% - 28px); /* parked above the screen (still a Tab stop) */
  transition: translate .55s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)), box-shadow .45s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
.rtl .ht-skip { left: auto; right: 14px; }
.ht-skip:hover,
.ht-skip:focus { color: #0b0b10; text-decoration: none; }
.ht-skip:focus { translate: none; box-shadow: 0 0 0 1px rgba(67, 97, 255, .5), 0 14px 38px -12px rgba(67, 97, 255, .75); }
.ht-skip svg { flex: none; fill: currentColor; rotate: 90deg; } /* the site's arrow, pointing down to the page */
.ht-skip:focus-visible { outline: 2px solid var(--ht-signal, #4361ff); outline-offset: 3px; }
.ht-main:focus { outline: none; } /* the skip link's target is a region, not a control: no ring */
@media print {
  .ht-skip { display: none; }
}

/* ---------- Side menu: dark glass over the page, the panel slides in as a curtain, the links
   unfold one after another (hitech.js: data-ht-split + data-ht-hold, played by PART 1 JS). ---------- */
.fixed-sidebar-menu-overlay { /* keeps venor's close cursor */
  background: rgba(8, 8, 12, .62);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
  backdrop-filter: blur(16px) saturate(140%);
  transition: opacity .7s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)), visibility 0s linear .7s;
}
.fixed-sidebar-menu-overlay.visible { transition: opacity .7s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)), visibility 0s; }
@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .fixed-sidebar-menu-overlay { background: rgba(8, 8, 12, .88); }
}
html.ht-menu-lock { scrollbar-gutter: stable; } /* no layout shift when the scroll bar goes */
html.ht-menu-lock body { overflow: hidden; }
.header7 .fixed-sidebar-menu {
  right: 0;
  display: flex;
  flex-direction: column;
  overflow-x: hidden;
  overflow-y: auto; /* short screens scroll inside the panel */
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 255, 255, .22) transparent;
  box-shadow: -40px 0 90px -30px rgba(0, 0, 0, .85), inset 1px 0 0 rgba(255, 255, 255, .1);
  transform: translate3d(100%, 0, 0);
  visibility: hidden; /* closed: out of the tab order */
  transition: transform .8s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)), visibility 0s linear .8s;
}
.menu-open .header7 .fixed-sidebar-menu {
  transform: none;
  visibility: visible;
  transition: transform .8s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)), visibility 0s;
}
.rtl .header7 .fixed-sidebar-menu {
  right: auto;
  left: 0;
  box-shadow: 40px 0 90px -30px rgba(0, 0, 0, .85), inset -1px 0 0 rgba(255, 255, 255, .1);
  transform: translate3d(-100%, 0, 0);
}
.rtl.menu-open .header7 .fixed-sidebar-menu { transform: none; }
.fixed-sidebar-menu > .sidebar-content { flex: 1 0 auto; display: flex; }
.fixed-sidebar-menu .left-side {
  float: none;
  flex: 1 0 auto;
  height: auto;
  padding: clamp(84px, 13vh, 128px) 45px clamp(28px, 5vh, 48px);
}
.fixed-sidebar-menu .left-side-inner { /* one column; the arc shares the links' row so it frames them at any height */
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  width: 100%;
}
.fixed-sidebar-menu .left-side-inner > .flx-div {
  position: absolute;
  grid-area: 1 / 1 / 2 / 2; /* explicit end lines: "auto" would reach the end of the panel */
  inset: 0;
  display: flex;
  align-items: center; /* centred on the links, overflowing evenly */
  justify-content: center;
  margin: 0;
}
.fixed-sidebar-menu .flx-div img { flex: none; width: clamp(300px, 115%, 562px); max-width: none; height: auto; }
.fixed-sidebar-menu .header__nav-item { margin-bottom: clamp(4px, 1.5vh, 16px); }
.fixed-sidebar-menu .header__nav-link {
  display: inline-block; /* the word spans need inline flow (venor: inline-flex) */
  padding: .1em .45em;
  color: rgba(255, 255, 255, .72);
  font-size: clamp(1.75rem, 1.15rem + 1.2vw, 2.125rem);
  font-weight: 700;
  font-stretch: 125%;
  line-height: 1.12;
  letter-spacing: -.02em;
  transition: color .35s ease, opacity .35s ease, text-shadow .5s ease, -webkit-text-stroke-color .35s ease;
}
.fixed-sidebar-menu .header__nav-link::before { /* venor's highlighter becomes a thin line that draws in */
  left: .45em;
  right: .45em;
  bottom: .04em;
  width: auto;
  height: 2px;
  border-radius: 2px;
  background: rgba(255, 255, 255, .85);
  transform: scaleX(0);
  transform-origin: 0 50%;
  transition: transform .55s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)), background-color .3s ease, box-shadow .3s ease;
}
.rtl .fixed-sidebar-menu .header__nav-link::before { transform-origin: 100% 50%; }
.fixed-sidebar-menu .header__nav-link.active { color: #fff; }
.fixed-sidebar-menu .header__nav-link.active::before { left: .45em; width: auto; transform: scaleX(1); }
.fixed-sidebar-menu .header__nav-link:hover,
.fixed-sidebar-menu .header__nav-link:focus-visible {
  color: transparent !important; /* the outlined look of the original menu, now with a glow */
  -webkit-text-stroke: 1px #fff;
  text-shadow: 0 0 26px rgba(67, 97, 255, .6);
}
.fixed-sidebar-menu .header__nav-link:hover::before,
.fixed-sidebar-menu .header__nav-link:focus-visible::before {
  left: .45em;
  width: auto;
  background: var(--ht-signal, #4361ff);
  box-shadow: 0 0 14px rgba(67, 97, 255, .85);
  transform: scaleX(1);
}
.fixed-sidebar-menu .header__nav-link:focus-visible { outline: 2px solid var(--ht-signal, #4361ff); outline-offset: 4px; border-radius: 6px; }
@media (hover: hover) and (pointer: fine) {
  .fixed-sidebar-menu .header__nav:hover .header__nav-link:not(:hover) { opacity: .42; }
}
.fixed-sidebar-menu .menu-description { padding-top: clamp(1.25rem, 4vh, 2.25rem); }
.fixed-sidebar-menu .menu-description p {
  margin-bottom: 1rem;
  color: var(--ht-mist, #a7acb6);
  font-size: 1.125rem;
  font-weight: 600;
  font-stretch: 112%;
  line-height: 1.4;
}
.fixed-sidebar-menu .menu-description p:last-child { margin-bottom: 0; }
.fixed-sidebar-menu .left-side-inner .header-social-share { margin-top: clamp(1.5rem, 5vh, 3rem); }
.fixed-sidebar-menu .header-social-share li { transition: scale .4s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)); }
.fixed-sidebar-menu .header-social-share li a {
  border-color: rgba(255, 255, 255, .32);
  transition: background-color .4s ease, border-color .4s ease, color .4s ease, box-shadow .45s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
.fixed-sidebar-menu .header-social-share li a:hover,
.fixed-sidebar-menu .header-social-share li a:focus-visible {
  border-color: #fff;
  background: #fff;
  color: #000;
  box-shadow: 0 0 0 6px rgba(67, 97, 255, .18), 0 12px 32px -14px rgba(67, 97, 255, .55);
}
.fixed-sidebar-menu .header-social-share li a:focus-visible { outline: 2px solid var(--ht-signal, #4361ff); outline-offset: 3px; }
.fixed-sidebar-menu .header-social-share li a:focus-visible em { filter: none; -webkit-filter: none; }
@media (hover: hover) and (pointer: fine) {
  .fixed-sidebar-menu .header-social-share li:hover { scale: 1.06; }
}
.fixed-sidebar-menu .address-sidebar { position: static; margin-top: clamp(1.75rem, 5vh, 3rem); }
.fixed-sidebar-menu .address-sidebar > div {
  color: rgba(255, 255, 255, .64);
  font-size: .8125rem;
  font-weight: 500;
  font-stretch: 112%;
  line-height: 1.4;
}
/* The rest of the panel rises after the last link has started to unfold (closing: no delay).
   --ht-md0: set by hitech-chrome.js from the number of links (980 ms = 7 links, 90 ms apart). */
.fixed-sidebar-menu .menu-description { --ht-md: var(--ht-md0, 980ms); }
.fixed-sidebar-menu .header-social-share li:nth-child(1) { --ht-md: calc(var(--ht-md0, 980ms) + 100ms); }
.fixed-sidebar-menu .header-social-share li:nth-child(2) { --ht-md: calc(var(--ht-md0, 980ms) + 145ms); }
.fixed-sidebar-menu .header-social-share li:nth-child(3) { --ht-md: calc(var(--ht-md0, 980ms) + 190ms); }
.fixed-sidebar-menu .header-social-share li:nth-child(4) { --ht-md: calc(var(--ht-md0, 980ms) + 235ms); }
.fixed-sidebar-menu .header-social-share li:nth-child(5) { --ht-md: calc(var(--ht-md0, 980ms) + 280ms); }
.fixed-sidebar-menu .header-social-share li:nth-child(n+6) { --ht-md: calc(var(--ht-md0, 980ms) + 325ms); }
.fixed-sidebar-menu .address-sidebar { --ht-md: calc(var(--ht-md0, 980ms) + 370ms); }
html.ht-js .fixed-sidebar-menu :is(.menu-description, .header-social-share li, .address-sidebar) {
  opacity: 0;
  translate: 0 1.25rem;
  transition: opacity .25s linear, translate 0s linear .3s, scale .4s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
html.ht-js .menu-open .fixed-sidebar-menu :is(.menu-description, .header-social-share li, .address-sidebar) {
  opacity: 1;
  translate: none;
  transition:
    opacity .8s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)) var(--ht-md, 600ms),
    translate 1.1s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)) var(--ht-md, 600ms),
    scale .4s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
.fixed-sidebar-menu .flx-div { display: block; } /* venor shows the arc only while open: it vanished as the panel left */
.fixed-sidebar-menu .flx-div img { opacity: 0; scale: .9; transition: opacity .3s linear, scale 0s linear .8s; }
.menu-open .fixed-sidebar-menu .flx-div img {
  opacity: 1;
  scale: 1;
  transition: opacity 1.4s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)) .2s, scale 2s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)) .2s;
  animation: ht-arc-drift 9s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)) 2.2s infinite alternate;
}
@keyframes ht-arc-drift { from { rotate: 0deg; } to { rotate: 5deg; } }
@media (max-width: 767.98px) {
  .fixed-sidebar-menu .left-side { padding: 84px 22px 32px; }
  .fixed-sidebar-menu .header__nav-link { padding: .1em .35em; font-size: 1.375rem; font-weight: 650; font-stretch: 112%; }
  .fixed-sidebar-menu .left-side-inner .header-social-share { display: block; } /* venor hides the slider's row here, and with it these */
  .fixed-sidebar-menu .left-side-inner .header-social-share ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 0; }
  .fixed-sidebar-menu .left-side-inner .header-social-share li { margin: 0; }
  .fixed-sidebar-menu .left-side-inner .header-social-share li a { width: 38px; height: 38px; line-height: 36px; }
}
@media (min-width: 768px) and (max-height: 860px) {
  /* laptop screens (1366 x 768, 1280 x 720 and their shorter browser windows): a tighter rhythm,
     so the whole menu fits; still shorter screens scroll inside the panel */
  .fixed-sidebar-menu .left-side { padding-top: clamp(64px, 10vh, 128px); padding-bottom: clamp(20px, 3.5vh, 48px); }
  .fixed-sidebar-menu .header__nav-item { margin-bottom: clamp(2px, .9vh, 16px); }
  .fixed-sidebar-menu .header__nav-link { font-size: max(1.5rem, min(clamp(1.75rem, 1.15rem + 1.2vw, 2.125rem), 4.6vh)); }
  .fixed-sidebar-menu .menu-description { padding-top: clamp(1rem, 3vh, 2.25rem); }
  .fixed-sidebar-menu .left-side-inner .header-social-share,
  .fixed-sidebar-menu .address-sidebar { margin-top: clamp(1rem, 3vh, 3rem); }
}

@media print {
  html.ht-head .header { position: absolute; }
  .pace,
  .pace-cover,
  .header-burger,
  .fixed-sidebar-menu-holder,
  .fixed-sidebar-menu-overlay { display: none !important; }
  .header__content__venor::before { display: none; }
}

/* ---------- Reduced motion: no drops, slides or loops - short fades only ---------- */
@media (prefers-reduced-motion: reduce) {
  .pace-cover { transition: opacity .25s linear, visibility 0s linear .25s; }
  .pace-cover::before { animation: none; }
  .pace-cover::after { display: none; }
  .pace .pace-progress::after { transition: none; }
  body.pace-done .pace-cover,
  html.ht-lifted .pace-cover { transform: none; opacity: 0; }
  body.pace-done .pace-cover::before,
  html.ht-lifted .pace-cover::before { translate: none; transition: none; }
  html.ht-head .header__content__venor,
  html.ht-head .header-burger { transition: none; }
  .header__content__venor::before { transition: opacity .2s linear; }
  html.ht-head-away .header__content__venor::before { transition-delay: 0s; }
  body.sticky .header__content__venor,
  body.sticky .header-burger .burger { animation: none; }
  .header-burger .burger span,
  .menu-open .header-burger .burger span { transition: opacity .2s linear; }
  .header7 .fixed-sidebar-menu,
  .rtl .header7 .fixed-sidebar-menu { transform: none; opacity: 0; transition: opacity .2s linear, visibility 0s linear .2s; }
  .menu-open .header7 .fixed-sidebar-menu,
  .rtl.menu-open .header7 .fixed-sidebar-menu { opacity: 1; transition: opacity .2s linear, visibility 0s; }
  .fixed-sidebar-menu-overlay,
  .fixed-sidebar-menu-overlay.visible { transition-duration: .2s; }
  html.ht-js .fixed-sidebar-menu :is(.menu-description, .header-social-share li, .address-sidebar) { translate: none; transition: opacity .2s linear; }
  html.ht-js .menu-open .fixed-sidebar-menu :is(.menu-description, .header-social-share li, .address-sidebar) { transition: opacity .2s linear; }
  .fixed-sidebar-menu .flx-div img,
  .menu-open .fixed-sidebar-menu .flx-div img { scale: none; transition: opacity .2s linear; animation: none; }
  .fixed-sidebar-menu .header__nav-link::before { transition: none; }
  .fixed-sidebar-menu .header-social-share li:hover { scale: none; }
  .ht-skip { transition: none; }
}

/* ==== END PART 1 ========================================================= */

/* ==== PART 2: typed band, footer, cookie notice (maintenance: hitech-maintenance.css) ==== */

/* Values from SPEC 5 (tokens from hitech.css, which always loads first; fallbacks for safety).
   Set by hitech-chrome.js (PART 2):
     .typed-section.is-typing   typed.js runs (not under reduced motion)   .is-paused  typing rests
     .mt_typed_text.is-typed    the word is complete (it widens)           .is-lit     a light runs through it
     .mt_typed_text[data-ht-text]   the complete word (the light's copy)   --ht-typed-fit  longest word fits
     .js-cookie-consent.is-leaving  accepted: fades out, then the package's own script hides it
     .js-cookie-consent.is-open     it has started to show (hitech-fab.js measures it then; "ht:cookie" event)
     .js-cookie-consent.is-back     the menu or the search panel has just closed: it waits a moment, then wipes back in
   hitech.js: data-ht-split / data-ht-reveal / data-ht-auto (the footer and band arrive), data-ht-spot
   (--mx/--my for the mouse lights), data-ht-live (.is-paused on the footer off screen). */

/* ---------- Typed band: "Are you looking for" + the typed word as the outlined line ---------- */
.typed-section {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  overflow: clip;
  padding: clamp(3rem, 1.9rem + 3vw, 5rem) 0;
  border-top: 1px solid var(--ht-line, rgba(255, 255, 255, .14));
}
.typed-section .row { align-items: center; }
@media (min-width: 992px) {
  .typed-section .col-md-8 { flex: 1 1 0; max-width: none; }
  .typed-section .col-md-4 { flex: 0 0 auto; width: auto; max-width: none; }
}
@media (max-width: 991.98px) {
  .typed-section .col-md-8,
  .typed-section .col-md-4 { flex: 0 0 100%; max-width: 100%; }
  .typed-section .col-md-4.text-right { margin-top: clamp(1.75rem, 1.2rem + 1.5vw, 2.25rem); text-align: left !important; }
  .rtl .typed-section .col-md-4.text-right { text-align: right !important; }
}
/* The band starts at the same left edge as the page above it: from 1200 px the revamped pages run the
   wide container (hitech.css: 1360 px, never closer than 50 px to the screen edge), the home page keeps
   the theme's. Its Contact pill keeps out of the floating buttons' lane, with the same formula as
   hitech.css's "Floating buttons lane" (--ht-free = the space beside the container). Keep both in step
   with hitech.css. */
@media (min-width: 992px) {
  .typed-section {
    --ht-free: max(0px, (100vw - 960px) / 2);
    --ht-lane: max(0px, var(--ht-fab-edge, 24px) + var(--ht-fab-main, 56px) + 1.5rem - 15px - var(--ht-free));
  }
  .typed-section .col-md-4 { padding-right: calc(15px + var(--ht-lane, 0px)); }
  .rtl .typed-section .col-md-4 { padding-right: 15px; padding-left: calc(15px + var(--ht-lane, 0px)); }
}
@media (min-width: 1200px) {
  .typed-section { --ht-free: max(0px, (100vw - 1180px) / 2); }
  body:has(:is(.ht-sp, .ht-proj, .ht-folio, .ht-next, .ht-cp, .ht-blog, .ht-art, .ht-related, .ht-search, .ht-doc, .ht-404)) .typed-section {
    --ht-free: max(0px, (100vw - min(1360px, 100vw - 70px)) / 2);
  }
  body:has(:is(.ht-sp, .ht-proj, .ht-folio, .ht-next, .ht-cp, .ht-blog, .ht-art, .ht-related, .ht-search, .ht-doc, .ht-404)) .typed-section .container {
    max-width: min(1360px, calc(100% - 70px));
  }
}
.typed-section h4.parent-typed-text {
  margin: 0;
  padding: 0;
  color: #fff;
  font-family: var(--ht-font, "Archivo", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif);
  font-size: var(--ht-h2-l, clamp(2rem, 1.2rem + 2.6vw, 3.5rem));
  font-weight: 740;
  font-stretch: var(--ht-wide, 125%);
  line-height: 1.04;
  letter-spacing: -.035em;
  text-align: left;
}
@media (max-width: 575.98px) { /* phones: the row-heading size, so the longest typed word fits at about the same size */
  .typed-section h4.parent-typed-text { font-size: var(--ht-h3, clamp(1.625rem, 1.15rem + 1.5vw, 2.5rem)); }
}
.typed-section .mt_typed-beforetext::after { content: "\A"; white-space: pre; } /* the typed word: its own line */
.typed-section h4 span.mt_typed_text { /* the outlined line */
  position: relative;
  display: inline-block;
  max-width: 100%;
  color: transparent;
  -webkit-text-stroke: 1.5px rgba(255, 255, 255, .9);
  font-size: calc(1em * var(--ht-typed-fit, 1));
}
.ht-js .typed-section h4 span.mt_typed_text { white-space: nowrap; }
.typed-section.is-typing h4 span.mt_typed_text { /* typed narrow ... */
  font-stretch: 86%;
  transition: font-stretch .5s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
.typed-section.is-typing h4 span.mt_typed_text.is-typed { /* ... then it widens to the full cut */
  font-stretch: var(--ht-wide, 125%);
  transition: font-stretch 1.2s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
.typed-section h4 span.mt_typed_text::after { /* the light that runs through the complete word */
  content: attr(data-ht-text);
  content: attr(data-ht-text) / ""; /* a decorative copy: screen readers skip it (the word itself is read once) */
  position: absolute;
  inset: 0;
  color: #fff;
  -webkit-text-stroke-color: #fff;
  white-space: nowrap;
  text-shadow: 0 0 .35em rgba(255, 255, 255, .55);
  clip-path: inset(-.3em 100% -.3em 0);
  pointer-events: none;
}
.typed-section h4 span.mt_typed_text.is-lit::after {
  animation: ht-typed-light 1.4s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)) .3s both;
}
.typed-section .ht-typed-probe { /* hitech-chrome.js measures the words here (the final width) */
  position: absolute;
  top: 0;
  left: 0;
  font-stretch: var(--ht-wide, 125%);
  white-space: nowrap;
  -webkit-text-stroke: 1.5px transparent;
  visibility: hidden;
  pointer-events: none;
}
.typed-section span.typed-cursor { /* a white caret with a soft glow (Signal is kept for things you can act on) */
  display: inline-block;
  width: .075em;
  height: .84em;
  margin-left: .1em;
  overflow: hidden;
  vertical-align: -.06em;
  border-radius: 2px;
  background: #fff;
  color: transparent;
  line-height: 1;
  box-shadow: 0 0 .3em rgba(255, 255, 255, .7), 0 0 .9em rgba(255, 255, 255, .28);
  animation: ht-caret 1.1s ease-in-out infinite; /* a text caret's rhythm (it blinks only while the word rests) */
}
.typed-section.is-typing .mt_typed_text:not(.is-typed) + span.typed-cursor { animation: none; } /* solid while it types */
.typed-section.is-paused span.typed-cursor { animation-play-state: paused; }
.rtl .typed-section h4.parent-typed-text { text-align: right; font-family: "Cairo", sans-serif; font-stretch: normal; letter-spacing: 0; }
.rtl .typed-section span.typed-cursor { margin-left: 0; margin-right: .1em; }
@keyframes ht-typed-light {
  from { clip-path: inset(-.3em 100% -.3em -26%); }
  to { clip-path: inset(-.3em -26% -.3em 100%); }
}
@keyframes ht-caret {
  0%, 46% { opacity: 1; }
  58%, 88% { opacity: .12; }
  100% { opacity: 1; }
}
/* The Contact pill: the same white sweep as every outline pill (venor fills it #1e1e1e on black).
   Glow, focus ring and the magnetic pull come from hitech-ui.css / .js. */
.typed-section a.btn.btn-style1::before { background: #fff; }
.typed-section a.btn.btn-style1:hover,
.typed-section a.btn.btn-style1:focus-visible { color: #000; border-color: #fff; background-color: transparent; }
.typed-section a.btn.btn-style1:hover svg,
.typed-section a.btn.btn-style1:focus-visible svg { fill: #000; }
.typed-section a.btn.btn-style1:focus-visible::before { transform: scaleX(1); }
/* A soft light follows the mouse over the band (moved with translate: no repaint). */
.typed-section::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  z-index: -1;
  width: 46rem;
  height: 46rem;
  margin: -23rem 0 0 -23rem;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgba(255, 255, 255, .075), rgba(255, 255, 255, .022) 56%, transparent);
  translate: var(--mx, 50vw) var(--my, 50%);
  opacity: 0;
  pointer-events: none;
}

/* ---------- Footer ---------- */
.footer-section {
  --ht-foot-pad-x: clamp(1.5rem, -1rem + 6vw, 5.5rem);   /* left panel, sides */
  --ht-foot-pad-r: clamp(1.5rem, -.5rem + 4.5vw, 4.5rem); /* right panel, right side */
  position: relative;
  border-top: 1px solid rgba(255, 255, 255, .08); /* the seam with the typed band */
}
.footer-section .footer-wrapper > .row > [class*="col-"] { display: flex; } /* both panels: the full row height */
.footer-section .footer-left,
.footer-section .footer-right { flex: 1 1 auto; width: 100%; }

/* Left: the call to action over the contour pattern. */
.footer-section .footer-left {
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow: hidden;
  overflow: clip;
  padding: clamp(4.5rem, 3rem + 4vw, 7.5rem) var(--ht-foot-pad-x);
  border-top-right-radius: 0;
}
.rtl .footer-section .footer-left { border-top-left-radius: 0; }
/* The contour lines light up under the mouse: a soft round window (.ht-foot__glow, in the layout) is
   moved to the pointer with translate, and the same pattern, brighter, is held in place inside it by
   the opposite translate - nothing is repainted while the mouse moves. */
.footer-section .ht-foot__glow {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
  width: 38rem;
  height: 38rem;
  margin: -19rem 0 0 -19rem;
  overflow: hidden;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgba(255, 255, 255, .05), transparent 88%);
  -webkit-mask: radial-gradient(closest-side, #000, rgba(0, 0, 0, .45) 42%, transparent 74%) no-repeat;
          mask: radial-gradient(closest-side, #000, rgba(0, 0, 0, .45) 42%, transparent 74%) no-repeat;
  translate: var(--mx, 0px) var(--my, 0px);
  opacity: 0;
  pointer-events: none;
}
.footer-section .ht-foot__glow > span {
  position: absolute;
  top: 19rem;
  left: 19rem;
  width: 100vw;
  height: max(100vh, 64rem);
  background: url(../../img/pattern-1.png); /* tiles from the panel's corner, as .footer-left::before */
  filter: brightness(1.5);
  translate: calc(var(--mx, 0px) * -1) calc(var(--my, 0px) * -1);
}
.footer-section .inner > span { /* the label: a short rule each side (it is centred) */
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .75rem;
  margin: 0 0 clamp(1.25rem, 1rem + .8vw, 1.75rem);
  color: var(--ht-mist, #a7acb6);
  font-family: var(--ht-font, "Archivo", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif);
  font-size: .875rem;
  font-weight: 600;
  font-stretch: var(--ht-semi, 112%);
  line-height: 1.3;
  letter-spacing: .12em;
  word-spacing: normal;
}
.footer-section .inner > span::before,
.footer-section .inner > span::after {
  content: "";
  flex: none;
  width: 2.25rem;
  height: 1px;
  background: var(--ht-line-strong, rgba(255, 255, 255, .3));
  transform-origin: 100% 50%;
}
.footer-section .inner > span::after { transform-origin: 0 50%; }
.ht-motion .footer-section .inner > span[data-ht-reveal]:not(.is-in)::before,
.ht-motion .footer-section .inner > span[data-ht-reveal]:not(.is-in)::after { transform: scaleX(0); }
.ht-motion .footer-section .inner > span[data-ht-reveal].is-in::before,
.ht-motion .footer-section .inner > span[data-ht-reveal].is-in::after {
  transition: transform .9s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)) calc(var(--ht-d, 0ms) + 150ms);
}
.footer-section .inner h4 {
  max-width: none;
  margin: 0 auto clamp(1.75rem, 1.2rem + 1.5vw, 2.5rem);
  color: #fff;
  font-family: var(--ht-font, "Archivo", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif);
  font-size: var(--ht-h2-xl, clamp(2.5rem, 1.2rem + 4.6vw, 4.5rem));
  font-weight: 740;
  font-stretch: var(--ht-wide, 125%);
  line-height: .96;
  letter-spacing: -.035em;
  text-wrap: balance;
}
.footer-section .inner h4 .ht-foot__outline { /* the outlined line */
  color: transparent;
  -webkit-text-stroke: 1.5px rgba(255, 255, 255, .9);
}

/* Right: the two lists and the copyright line. */
.footer-section .footer-right {
  display: flex;
  flex-direction: column;
  padding: clamp(4rem, 3rem + 2.5vw, 5.75rem) var(--ht-foot-pad-r) clamp(2rem, 1.5rem + 1.5vw, 3rem) clamp(1.5rem, -2rem + 8vw, 7.5rem);
}
.footer-section .footer-right > .row { flex: 1 0 auto; align-content: space-between; margin: 0; }
.footer-section .footer-right > .row > [class*="col-"] { padding: 0; } /* the panel's padding sets the edges */
@media (min-width: 576px) {
  .footer-section .footer-right > .row > .col-sm-6:first-child { padding-right: 1.5rem; }
  .rtl .footer-section .footer-right > .row > .col-sm-6:first-child { padding-right: 0; padding-left: 1.5rem; }
}
.footer-section h4.title {
  margin: 0 0 .9rem;
  color: #fff;
  font-family: var(--ht-font, "Archivo", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif);
  font-size: clamp(1.1875rem, 1.05rem + .4vw, 1.375rem);
  font-weight: 700;
  font-stretch: var(--ht-semi, 112%);
  line-height: 1.2;
  letter-spacing: -.01em;
}
.footer-section span.venor-animate-border { /* the theme's running dashes: they draw in under the title */
  margin-bottom: 1.5rem;
  transform-origin: 0 50%;
  transition: opacity .5s ease;
}
.rtl .footer-section span.venor-animate-border { transform-origin: 100% 50%; }
.ht-motion .footer-section h4.title[data-ht-split]:not(.is-in) + span.venor-animate-border { transform: scaleX(0); }
.ht-motion .footer-section h4.title[data-ht-split].is-in + span.venor-animate-border {
  transition: transform 1s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)) calc(var(--ht-d, 0ms) + 250ms), opacity .5s ease;
}
.footer-section.is-paused span.venor-animate-border::after { animation-play-state: paused; }
.footer-section .menu-quick-link-container ul li,
.footer-section ul.ft-link li { display: block; margin: 0 0 .1rem; padding: 0; }
.footer-section .menu-quick-link-container ul li a,
.footer-section ul.ft-link li a { /* underline draws in under the mouse (venor animates "all" on links) */
  position: relative;
  display: inline-block;
  padding: .3rem 0;
  color: var(--ht-mist, #a7acb6);
  font-family: var(--ht-font, "Archivo", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif);
  font-size: .9375rem;
  font-weight: 500;
  line-height: 1.5;
  text-decoration: none;
  transition: color .35s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
.footer-section .menu-quick-link-container ul li a::after,
.footer-section ul.ft-link li a::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: .25rem;
  left: 0;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: 100% 50%;
  transition: transform .5s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
.footer-section .menu-quick-link-container ul li a:focus-visible,
.footer-section ul.ft-link li a:focus-visible {
  color: #fff;
  outline: 2px solid var(--ht-signal, #4361ff);
  outline-offset: 4px;
  border-radius: 3px;
}
.footer-section .menu-quick-link-container ul li a:focus-visible::after,
.footer-section ul.ft-link li a:focus-visible::after { transform: scaleX(1); }
.footer-section .social-share-inner ul { /* outlined circles that fill white on hover, as in the side menu */
  display: flex;
  flex-wrap: wrap;
  gap: .625rem;
  margin: 1.25rem 0 0;
  padding: 0;
}
.footer-section .social-share-inner ul li { display: block; margin: 0; }
.footer-section .social-share-inner ul li a {
  position: relative;
  isolation: isolate;
  display: inline-grid;
  place-items: center;
  width: 44px;
  height: 44px;
  overflow: hidden;
  border: 1px solid var(--ht-line-strong, rgba(255, 255, 255, .3));
  border-radius: 50%;
  color: #fff;
  font-size: 16px;
  line-height: 1;
  opacity: 1;
  text-decoration: none;
  -webkit-tap-highlight-color: transparent;
  transition: color .35s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)), border-color .35s ease, box-shadow .45s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)), scale .25s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
.footer-section .social-share-inner ul li a::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  background: #fff;
  transform: scale(0);
  transition: transform .45s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
.footer-section .social-share-inner ul li a em { font-size: 16px; line-height: 1; }
.footer-section .social-share-inner ul li a strong { /* the CMS label ("facebook"): for screen readers only, in both directions (venor's -9999px indent shows it in RTL) */
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  text-indent: 0;
}
.footer-section .social-share-inner ul li a:focus-visible {
  color: #000;
  border-color: #fff;
  outline: 2px solid var(--ht-signal, #4361ff);
  outline-offset: 3px;
}
.footer-section .social-share-inner ul li a:focus-visible::before { transform: scale(1); }
.footer-section .social-share-inner ul li a:active { scale: .94; }
.footer-section .copyright-text { /* in the flow, under a hairline (venor: absolute, -85 px) */
  position: static;
  margin-top: clamp(2.5rem, 2rem + 1.5vw, 3.5rem);
  padding-top: 1.25rem;
  /* the floating WhatsApp / Call column (hitech-fab.css) never covers the line: it ends 12px before it */
  padding-right: max(0px, calc(var(--ht-fab-main, 56px) + var(--ht-fab-edge, 24px) + 12px - var(--ht-foot-pad-r)));
  border-top: 1px solid var(--ht-line, rgba(255, 255, 255, .14));
}
.rtl .footer-section .copyright-text {
  padding-right: 0;
  padding-left: max(0px, calc(var(--ht-fab-main, 56px) + var(--ht-fab-edge, 24px) + 12px - var(--ht-foot-pad-r)));
}
.footer-section .copyright-text p {
  color: var(--ht-mist, #a7acb6);
  font-family: var(--ht-font, "Archivo", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif);
  font-size: .875rem;
  font-weight: 500;
  line-height: 1.6;
}
.footer-section .copyright-text p a { color: #fff; }

@media (max-width: 991.98px) {
  .footer-section { --ht-foot-pad-r: clamp(1.5rem, 5vw, 3rem); }
  .footer-section .footer-left { padding: clamp(3.5rem, 2.5rem + 4vw, 5.5rem) clamp(1.5rem, 5vw, 3rem); }
  .footer-section .footer-right { padding: clamp(3rem, 2.5rem + 2vw, 4rem) var(--ht-foot-pad-r) calc(2.5rem + env(safe-area-inset-bottom, 0px)); }
}
@media (max-width: 575.98px) {
  .footer-section .footer-widget { margin-bottom: 2.25rem; }
  .footer-section .footer-right .col-12:nth-child(2) .footer-widget { margin-bottom: 0; }
}

/* Mouse devices: the lights follow the pointer, the links and icons answer it. */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .typed-section::before { transition: opacity .7s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)), translate .9s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)); }
  .typed-section:hover::before { opacity: 1; }
  .footer-section .ht-foot__glow,
  .footer-section .ht-foot__glow > span { /* the same easing on both: the lines never slip */
    transition: opacity .7s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)), translate .6s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
    will-change: translate;
  }
  .ht-fine .footer-section .footer-left:hover .ht-foot__glow { opacity: 1; }
}
@media (hover: hover) {
  .footer-section .menu-quick-link-container ul li a:hover,
  .footer-section ul.ft-link li a:hover { color: #fff; }
  .footer-section .menu-quick-link-container ul li a:hover::after,
  .footer-section ul.ft-link li a:hover::after { transform: scaleX(1); transform-origin: 0 50%; }
  .rtl .footer-section .menu-quick-link-container ul li a:hover::after,
  .rtl .footer-section ul.ft-link li a:hover::after { transform-origin: 100% 50%; }
  .footer-section .social-share-inner ul li a:hover {
    color: #000;
    border-color: #fff;
    box-shadow: 0 0 0 6px rgba(67, 97, 255, .18), 0 12px 32px -14px rgba(67, 97, 255, .55);
  }
  .footer-section .social-share-inner ul li a:hover::before { transform: scale(1); }
  .footer-section .footer-widget:hover span.venor-animate-border { opacity: .32; }
}

/* Scroll-linked: the typed line slides in as the band arrives, the footer's call to action rises and
   the copyright line fades in as the page ends (named timelines: they also work under clipped boxes). */
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    .typed-section { view-timeline: --ht-typed block; }
    .footer-section { view-timeline: --ht-foot block; }
    .ht-motion .typed-section h4.parent-typed-text { /* complete once the whole band is on screen */
      animation: ht-typed-slide linear both;
      animation-timeline: --ht-typed;
      animation-range: entry 0% entry 100%;
    }
    .ht-motion .rtl .typed-section h4.parent-typed-text { animation-name: ht-typed-slide-rtl; }
    .ht-motion .footer-section .footer-left .inner {
      animation: ht-foot-rise linear both;
      animation-timeline: --ht-foot;
      animation-range: entry 0% entry 100%;
    }
    /* the last line of the page: no scroll reveal can reach it (it never gets above the fold line) */
    .ht-motion .footer-section .copyright-text {
      animation: ht-foot-end linear both;
      animation-timeline: --ht-foot;
      animation-range: entry 50% entry 100%;
    }
  }
}
@keyframes ht-typed-slide { from { translate: min(7vw, 6rem) 0; opacity: .3; } }
@keyframes ht-typed-slide-rtl { from { translate: max(-7vw, -6rem) 0; opacity: .3; } }
@keyframes ht-foot-rise { from { translate: 0 3rem; } }
@keyframes ht-foot-end { from { opacity: 0; translate: 0 1rem; } }

/* ---------- Cookie notice: a glass card (vendor/cookie-consent views) ----------
   Bottom left on computers (clear of the floating buttons), full width just above the bottom edge
   below 1200 px (hitech-fab.js lifts the floating buttons while it covers them). It arrives once the
   loading curtain has lifted and the first heading has unfolded; under the loader, the menu panel,
   the floating buttons and the search panel (z-index 9989 instead of the theme's 2147483647).
   It comes in, and steps aside for the side menu and the search panel, with a clip-path wipe from the
   bottom edge, never by moving or fading the card itself: hitech-fab.js measures the card (place +
   opacity) the moment it starts to show, so the floating buttons rise together with it
   (hitech-chrome.js pokes it then: .is-open / .is-back). Only when accepted does it fade down. */
.js-cookie-consent.cookie-consent {
  position: fixed;
  top: auto;
  right: auto;
  bottom: calc(24px + env(safe-area-inset-bottom, 0px));
  left: 24px;
  z-index: 9989;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: .875rem 1rem;
  width: min(520px, calc(50vw - 175px)); /* stays left of the centred "Request this service" button */
  margin: 0;
  padding: .875rem .875rem .875rem 1rem;
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 18px;
  background: rgba(8, 8, 12, .72);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
  backdrop-filter: blur(16px) saturate(140%);
  box-shadow: 0 30px 70px -30px rgba(0, 0, 0, .9), inset 0 1px 0 rgba(255, 255, 255, .06);
  color: #fff;
  font-family: var(--ht-font, "Archivo", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif);
  text-align: left;
  clip-path: inset(-1.5rem -3.5rem -5.5rem round 18px); /* open: its shadow fits (the wipes start from here) */
  transition: clip-path .8s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)), visibility 0s;
}
@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .js-cookie-consent.cookie-consent { background: #0a0a0e; }
}
.rtl .js-cookie-consent.cookie-consent { right: 24px; left: auto; text-align: right; }
.js-cookie-consent .cookie-consent__icon {
  display: inline-grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 1px solid var(--ht-line-strong, rgba(255, 255, 255, .3));
  border-radius: 50%;
  color: #fff;
  font-size: 15px;
}
.js-cookie-consent .cookie-consent__message {
  color: rgba(255, 255, 255, .78);
  font-family: inherit;
  font-size: .875rem;
  font-weight: 500;
  line-height: 1.45;
}
.js-cookie-consent .cookie-consent__message a { margin: 0; color: #fff; opacity: 1; transition: color .3s ease; }
.js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree { /* solid white pill: Signal fill sweeps in on hover */
  position: relative;
  isolation: isolate;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .6rem;
  height: auto;
  min-height: 44px;
  margin: 0;
  padding: 0 1.15rem;
  overflow: hidden;
  border: 0;
  border-radius: 999px;
  background: #fff;
  color: #000;
  font-family: inherit;
  font-size: .875rem;
  font-weight: 600;
  font-stretch: var(--ht-semi, 112%);
  line-height: 1;
  white-space: nowrap;
  -webkit-tap-highlight-color: transparent;
  transition: color .35s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)), box-shadow .45s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)), scale .25s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
.js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--ht-signal, #4361ff);
  transform: scaleX(0);
  transform-origin: 0 50%;
  transition: transform .45s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
.rtl .js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree::before { transform-origin: 100% 50%; }
.js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree svg {
  flex: none;
  transition: transform .35s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
.rtl .js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree svg { transform: scaleX(-1); }
.js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree:focus-visible {
  color: #fff;
  outline: 2px solid var(--ht-signal, #4361ff);
  outline-offset: 3px;
}
.js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree:focus-visible::before { transform: scaleX(1); }
.js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree:focus-visible svg { transform: translateX(4px); }
.js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree:active { scale: .96; }
@media (hover: hover) {
  .js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree:hover {
    color: #fff;
    box-shadow: 0 0 0 1px rgba(67, 97, 255, .5), 0 14px 38px -12px rgba(67, 97, 255, .75);
  }
  .js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree:hover::before { transform: scaleX(1); }
  .js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree:hover svg { transform: translateX(4px); }
  .rtl .js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree:hover svg { transform: scaleX(-1) translateX(4px); }
}
/* Arrival: after the curtain (html.ht-stage), once the first heading has unfolded: the glass wipes up
   from the bottom edge, then its icon, text and button rise one after another. */
.ht-motion:not(.ht-stage) .js-cookie-consent.cookie-consent { visibility: hidden; clip-path: inset(100% 0 0 round 18px); }
.ht-motion.ht-stage .js-cookie-consent.cookie-consent { animation: ht-cookie-in 1.2s linear 1.1s backwards; }
.ht-motion.ht-stage .js-cookie-consent.cookie-consent > * { animation: ht-cookie-item 1s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)) 1.34s backwards; }
.ht-motion.ht-stage .js-cookie-consent.cookie-consent > :nth-child(2) { animation-delay: 1.43s; }
.ht-motion.ht-stage .js-cookie-consent.cookie-consent > :nth-child(3) { animation-delay: 1.52s; }
/* Out of the way while the side menu or the search panel is open: it sinks into the bottom edge. */
body.menu-open .js-cookie-consent.cookie-consent,
html.ht-hs-lock .js-cookie-consent.cookie-consent {
  visibility: hidden;
  clip-path: inset(100% 0 0 round 18px);
  transition: clip-path .45s var(--ht-ease-inout, cubic-bezier(.77, 0, .175, 1)), visibility 0s linear .45s;
}
/* When either closes it waits a moment (.is-back, hitech-chrome.js) and wipes back in as the floating buttons rise. */
.js-cookie-consent.cookie-consent.is-back { clip-path: inset(100% 0 0 round 18px); }
/* Under the dark layer of a lightbox (Magnific, e.g. the About video), like the rest of the page. */
body:has(> .mfp-bg) .js-cookie-consent.cookie-consent { z-index: 1041; }
/* Accepted: it fades down; the package's script has already set the cookie and hidden it
   (display: none inline) - this keeps it on screen until the fade is over. */
.js-cookie-consent.cookie-consent.is-leaving {
  display: grid !important;
  opacity: 0;
  translate: 0 1.25rem;
  scale: .97;
  pointer-events: none;
  transition: opacity .4s ease, translate .55s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1)), scale .55s var(--ht-ease-out, cubic-bezier(.16, 1, .3, 1));
}
@keyframes ht-cookie-in { /* a short rest first: the floating buttons start to rise before the glass shows */
  0% { visibility: hidden; clip-path: inset(100% 0 0 round 18px); }
  8% { clip-path: inset(100% 0 0 round 18px); animation-timing-function: cubic-bezier(.16, 1, .3, 1); }
}
@keyframes ht-cookie-item { from { opacity: 0; transform: translateY(.875rem); } }
@media print {
  .js-cookie-consent.cookie-consent { display: none !important; }
}
@media (min-width: 1200px) and (max-width: 1311.98px) { /* the narrowest cards: without the icon the message keeps to the same two lines */
  .js-cookie-consent.cookie-consent { grid-template-columns: minmax(0, 1fr) auto; }
  .js-cookie-consent .cookie-consent__icon { display: none; }
}
@media (max-width: 1199.98px) {
  .js-cookie-consent.cookie-consent,
  .rtl .js-cookie-consent.cookie-consent {
    right: 16px;
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    left: 16px;
    width: auto;
  }
}
@media (max-width: 575.98px) {
  .js-cookie-consent.cookie-consent,
  .rtl .js-cookie-consent.cookie-consent {
    right: 12px;
    bottom: calc(12px + env(safe-area-inset-bottom, 0px));
    left: 12px;
    grid-template-columns: auto minmax(0, 1fr);
    padding: 1rem;
  }
  .js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree { grid-column: 1 / -1; width: 100%; }
}
@media (max-width: 1199.98px) { /* without JavaScript nothing lifts the floating buttons: keep out of their lane */
  html:not(.ht-js) .js-cookie-consent.cookie-consent { right: calc(var(--ht-fab-main, 56px) + var(--ht-fab-edge, 24px) + 10px); }
  html:not(.ht-js) .rtl .js-cookie-consent.cookie-consent { right: 12px; left: calc(var(--ht-fab-main, 56px) + var(--ht-fab-edge, 24px) + 10px); }
}

/* ---------- Maintenance page: css/front/hitech-maintenance.css ----------
   Its styles live in their own file, used only while maintenance mode is on (so they no longer
   weigh on every other page): includes/ht-maintenance.blade.php prints it inline, or nothing when
   the layout's <head> links it. */

/* ---------- Right to left (Arabic): Cairo at its normal width, no tracking (the typed band: above) ---------- */
.rtl .footer-section :is(.inner > span, .inner h4, h4.title, li a, .copyright-text p),
.rtl .js-cookie-consent.cookie-consent {
  font-family: "Cairo", sans-serif;
  font-stretch: normal;
  letter-spacing: 0;
}
.rtl .js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree { font-stretch: normal; }

/* ---------- Reduced motion: no slides, sweeps or loops ---------- */
@media (prefers-reduced-motion: reduce) {
  .typed-section span.typed-cursor { animation: none; }
  .typed-section h4 span.mt_typed_text.is-lit::after { animation: none; }
  .footer-section span.venor-animate-border::after { animation: none; }
  .footer-section .social-share-inner ul li a::before,
  .footer-section .menu-quick-link-container ul li a::after,
  .footer-section ul.ft-link li a::after,
  .js-cookie-consent button.js-cookie-consent-agree.cookie-consent__agree::before { transition: none; }
  .js-cookie-consent.cookie-consent,
  .ht-motion.ht-stage .js-cookie-consent.cookie-consent,
  .ht-motion.ht-stage .js-cookie-consent.cookie-consent > * { animation: none; }
  .js-cookie-consent.cookie-consent,
  body.menu-open .js-cookie-consent.cookie-consent,
  html.ht-hs-lock .js-cookie-consent.cookie-consent { transition: none; } /* it shows and hides at once (no wipes) */
  .js-cookie-consent.cookie-consent.is-leaving { translate: none; scale: none; transition: opacity .2s linear; } /* accepted: a short fade */
}

/* ==== END PART 2 ========================================================= */
