.elementor-386 .elementor-element.elementor-element-bb8c8ac{--display:flex;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-theme-builder-content-area{height:400px;}.elementor-location-header:before, .elementor-location-footer:before{content:"";display:table;clear:both;}/* Start custom CSS for html, class: .elementor-element-62e5ec9 *//* ============================================================
   TSPRT — SITE FOOTER
   Paste into Appearance → Customize → Additional CSS
   (append below your existing brand rules).

   No JavaScript: the reveal uses CSS scroll-driven animation.
   Browsers without support simply show the footer immediately,
   which is the correct fallback.
   ============================================================ */

.tsprt-ft, .tsprt-ft *{ margin:0; padding:0; box-sizing:border-box; }

.tsprt-ft{
  background:#141311;
  color:#f2eee6;
  font-family:'Archivo', system-ui, sans-serif;
  padding:clamp(56px,9vh,96px) clamp(22px,3.4vw,58px) clamp(20px,3vh,30px);
}
.tsprt-ft__inner{ max-width:1800px; margin:0 auto; }

/* ---------- upper band ---------- */
.tsprt-ft__top{
  display:grid;
  grid-template-columns:minmax(180px,1fr) auto auto;
  gap:clamp(40px,7vw,120px);
  align-items:start;
  padding-bottom:clamp(60px,10vh,120px);
}

.tsprt-ft__mark{ display:block; width:fit-content; text-decoration:none !important; }
.tsprt-ft__mark img{
  display:block;
  width:clamp(58px,4.6vw,84px);
  height:auto;
  transition:opacity .35s ease;
}
@media (hover:hover){ .tsprt-ft__mark:hover img{ opacity:.62; } }

.tsprt-ft__col{
  display:flex; flex-direction:column;
  gap:clamp(11px,1.5vh,16px);
  padding-top:clamp(6px,1.2vh,14px);
}
.tsprt-ft__col a{
  font-size:11px; letter-spacing:.17em; text-transform:uppercase; font-weight:600;
  color:#f2eee6 !important; text-decoration:none !important;
  width:fit-content; position:relative; padding-bottom:3px;
  transition:opacity .3s ease;
}
.tsprt-ft__col a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:currentColor;
  transform:scaleX(0); transform-origin:right center;
  transition:transform .45s cubic-bezier(.22,.61,.36,1);
}
@media (hover:hover){
  .tsprt-ft__col a:hover{ opacity:.72; }
  .tsprt-ft__col a:hover::after{ transform:scaleX(1); transform-origin:left center; }
}

/* ---------- lower band ---------- */
.tsprt-ft__rule{ border:0; border-top:1px solid rgba(242,238,230,.22); }

.tsprt-ft__base{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:clamp(18px,3vw,50px);
  align-items:center;
  padding-top:clamp(16px,2.4vh,24px);
  font-family:'IBM Plex Mono', ui-monospace, monospace;
  font-size:clamp(9.5px,.72vw,11px);
  letter-spacing:.2em;
  text-transform:uppercase;
  color:rgba(242,238,230,.58);
}
.tsprt-ft__base > :nth-child(2){ text-align:center; }
.tsprt-ft__base > :nth-child(3){ text-align:right; }
.tsprt-ft__base .gap{ padding:0 .9em; }

/* ============================================================
   REVEAL — CSS scroll-driven, no JS
   Only applied where animation-timeline is supported, so
   unsupported browsers never get stuck on the hidden state.
   ============================================================ */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference){

    @keyframes tsprtRise{
      from{ opacity:0; transform:translateY(18px); }
      to  { opacity:1; transform:none; }
    }
    @keyframes tsprtDraw{
      from{ transform:scaleX(0); }
      to  { transform:scaleX(1); }
    }

    .tsprt-ft .rv{
      animation:tsprtRise linear both;
      animation-timeline:view();
      animation-range:entry 0% entry 62%;
    }
    /* staggered by shifting each item's range, not by delay —
       delays don't apply to scroll timelines */
    .tsprt-ft .rv1{ animation-range:entry 4%  entry 66%; }
    .tsprt-ft .rv2{ animation-range:entry 8%  entry 70%; }
    .tsprt-ft .rv3{ animation-range:entry 12% entry 74%; }
    .tsprt-ft .rv4{ animation-range:entry 16% entry 78%; }

    .tsprt-ft .rv-line{
      transform-origin:left center;
      animation:tsprtDraw linear both;
      animation-timeline:view();
      animation-range:entry 6% entry 70%;
    }
  }
}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .tsprt-ft{ padding:clamp(48px,7vh,72px) 22px 20px; }
  .tsprt-ft__top{
    grid-template-columns:1fr 1fr;
    gap:34px 24px;
    padding-bottom:46px;
  }
  .tsprt-ft__mark{ grid-column:1 / -1; margin-bottom:8px; }
  .tsprt-ft__mark img{ width:62px; }
  .tsprt-ft__col{ padding-top:0; gap:13px; }
  .tsprt-ft__base{
    grid-template-columns:1fr; gap:10px; text-align:left;
    font-size:9.5px; letter-spacing:.16em; line-height:1.9;
  }
  .tsprt-ft__base > :nth-child(2),
  .tsprt-ft__base > :nth-child(3){ text-align:left; }
  .tsprt-ft__base .gap{ padding:0 .6em; }
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-9df0975 *//* ============================================================
   TSPRT — SITE FOOTER
   Paste into Appearance → Customize → Additional CSS
   (append below your existing brand rules).

   No JavaScript: the reveal uses CSS scroll-driven animation.
   Browsers without support simply show the footer immediately,
   which is the correct fallback.
   ============================================================ */

.tsprt-ft, .tsprt-ft *{ margin:0; padding:0; box-sizing:border-box; }

.tsprt-ft{
  background:#141311;
  color:#f2eee6;
  font-family:'Archivo', system-ui, sans-serif;
  padding:clamp(56px,9vh,96px) clamp(22px,3.4vw,58px) clamp(20px,3vh,30px);
}
.tsprt-ft__inner{ max-width:1800px; margin:0 auto; }

/* ---------- upper band ---------- */
.tsprt-ft__top{
  display:grid;
  grid-template-columns:minmax(180px,1fr) auto auto;
  gap:clamp(40px,7vw,120px);
  align-items:start;
  padding-bottom:clamp(60px,10vh,120px);
}

.tsprt-ft__mark{ display:block; width:fit-content; text-decoration:none !important; }
.tsprt-ft__mark img{
  display:block;
  width:clamp(58px,4.6vw,84px);
  height:auto;
  transition:opacity .35s ease;
}
@media (hover:hover){ .tsprt-ft__mark:hover img{ opacity:.62; } }

.tsprt-ft__col{
  display:flex; flex-direction:column;
  gap:clamp(11px,1.5vh,16px);
  padding-top:clamp(6px,1.2vh,14px);
}
.tsprt-ft__col a{
  font-size:11px; letter-spacing:.17em; text-transform:uppercase; font-weight:600;
  color:#f2eee6 !important; text-decoration:none !important;
  width:fit-content; position:relative; padding-bottom:3px;
  transition:opacity .3s ease;
}
.tsprt-ft__col a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:currentColor;
  transform:scaleX(0); transform-origin:right center;
  transition:transform .45s cubic-bezier(.22,.61,.36,1);
}
@media (hover:hover){
  .tsprt-ft__col a:hover{ opacity:.72; }
  .tsprt-ft__col a:hover::after{ transform:scaleX(1); transform-origin:left center; }
}

/* ---------- lower band ---------- */
.tsprt-ft__rule{ border:0; border-top:1px solid rgba(242,238,230,.22); }

.tsprt-ft__base{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:clamp(18px,3vw,50px);
  align-items:center;
  padding-top:clamp(16px,2.4vh,24px);
  font-family:'IBM Plex Mono', ui-monospace, monospace;
  font-size:clamp(9.5px,.72vw,11px);
  letter-spacing:.2em;
  text-transform:uppercase;
  color:rgba(242,238,230,.58);
}
.tsprt-ft__base > :nth-child(2){ text-align:center; }
.tsprt-ft__base > :nth-child(3){ text-align:right; }
.tsprt-ft__base .gap{ padding:0 .9em; }

/* ============================================================
   REVEAL — CSS scroll-driven, no JS
   Only applied where animation-timeline is supported, so
   unsupported browsers never get stuck on the hidden state.
   ============================================================ */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference){

    @keyframes tsprtRise{
      from{ opacity:0; transform:translateY(18px); }
      to  { opacity:1; transform:none; }
    }
    @keyframes tsprtDraw{
      from{ transform:scaleX(0); }
      to  { transform:scaleX(1); }
    }

    .tsprt-ft .rv{
      animation:tsprtRise linear both;
      animation-timeline:view();
      animation-range:entry 0% entry 62%;
    }
    /* staggered by shifting each item's range, not by delay —
       delays don't apply to scroll timelines */
    .tsprt-ft .rv1{ animation-range:entry 4%  entry 66%; }
    .tsprt-ft .rv2{ animation-range:entry 8%  entry 70%; }
    .tsprt-ft .rv3{ animation-range:entry 12% entry 74%; }
    .tsprt-ft .rv4{ animation-range:entry 16% entry 78%; }

    .tsprt-ft .rv-line{
      transform-origin:left center;
      animation:tsprtDraw linear both;
      animation-timeline:view();
      animation-range:entry 6% entry 70%;
    }
  }
}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .tsprt-ft{ padding:clamp(48px,7vh,72px) 22px 20px; }
  .tsprt-ft__top{
    grid-template-columns:1fr 1fr;
    gap:34px 24px;
    padding-bottom:46px;
  }
  .tsprt-ft__mark{ grid-column:1 / -1; margin-bottom:8px; }
  .tsprt-ft__mark img{ width:62px; }
  .tsprt-ft__col{ padding-top:0; gap:13px; }
  .tsprt-ft__base{
    grid-template-columns:1fr; gap:10px; text-align:left;
    font-size:9.5px; letter-spacing:.16em; line-height:1.9;
  }
  .tsprt-ft__base > :nth-child(2),
  .tsprt-ft__base > :nth-child(3){ text-align:left; }
  .tsprt-ft__base .gap{ padding:0 .6em; }
}/* End custom CSS */