/* ============================================================
   Techbird fidelity layer  v1.0
   Reproduces the index.html details that have no native Elementor
   control. Enqueued by mu-plugins/techbird-birds.php.

   Every hidden or zero-scale starting state below is gated on
   html.tb-anim, a class added by techbird-reveal.js at runtime.
   With JavaScript off nothing is hidden and nothing is collapsed.
   ============================================================ */

/* 1. Astra wrapper must not add a second gutter or a narrower cap */
body.elementor-page #content > .ast-container{max-width:100%;padding-left:0;padding-right:0}
body.elementor-page #content{padding-top:0;padding-bottom:0}

/* 2. eyebrow accent bar  (index.html .eyebrow-line::before) */
.tb-eyebrow-line .elementor-heading-title{display:inline-flex;align-items:center;gap:12px}
.tb-eyebrow-line .elementor-heading-title::before{content:"";flex:0 0 auto;width:34px;height:2px;background:currentColor;opacity:.55}

/* 3. framed image hover zoom  (index.html .shot:hover img) */
.tb-shot img{transition:transform .7s cubic-bezier(.22,.61,.36,1)}
.tb-shot:hover img{transform:scale(1.025)}

/* 4. button icon nudge  (index.html .textlink:hover gap 9px -> 14px) */
.elementor-button .elementor-button-icon{transition:transform .18s ease}
.elementor-button:hover .elementor-button-icon{transform:translateX(5px)}

/* 5. card hover lift  (index.html .card:hover translateY(-4px)) */
.elementor-28 .elementor-element.elementor-element-c4a8c92,
.elementor-28 .elementor-element.elementor-element-cebcce1,
.elementor-28 .elementor-element.elementor-element-c2f3433,
.elementor-28 .elementor-element.elementor-element-bb96170,
.elementor-28 .elementor-element.elementor-element-584e6c9,
.elementor-28 .elementor-element.elementor-element-270e097,
.elementor-28 .elementor-element.elementor-element-5ca8168,
.elementor-29 .elementor-element.elementor-element-75ef4cc,
.elementor-29 .elementor-element.elementor-element-f75125f,
.elementor-29 .elementor-element.elementor-element-b4671d5,
.elementor-31 .elementor-element.elementor-element-8e38243,
.elementor-31 .elementor-element.elementor-element-61e26b1,
.elementor-31 .elementor-element.elementor-element-3a98abd,
.elementor-31 .elementor-element.elementor-element-2fcd5c0,
.elementor-31 .elementor-element.elementor-element-e6e3287,
.elementor-31 .elementor-element.elementor-element-70fb003,
.elementor-31 .elementor-element.elementor-element-f436e44,
.elementor-31 .elementor-element.elementor-element-9c85d4d,
.elementor-31 .elementor-element.elementor-element-30925f1,
.elementor-31 .elementor-element.elementor-element-7cb05fa,
.elementor-31 .elementor-element.elementor-element-22324cf,
.elementor-32 .elementor-element.elementor-element-6ac0290,
.elementor-32 .elementor-element.elementor-element-72aa5ee,
.elementor-32 .elementor-element.elementor-element-8c94e15,
.elementor-32 .elementor-element.elementor-element-c84d188,
.elementor-33 .elementor-element.elementor-element-ce5723c,
.elementor-33 .elementor-element.elementor-element-a0b4afb,
.elementor-33 .elementor-element.elementor-element-2cef6c1{transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease,background-color .22s ease}
.elementor-28 .elementor-element.elementor-element-c4a8c92:hover,
.elementor-28 .elementor-element.elementor-element-cebcce1:hover,
.elementor-28 .elementor-element.elementor-element-c2f3433:hover,
.elementor-28 .elementor-element.elementor-element-bb96170:hover,
.elementor-28 .elementor-element.elementor-element-584e6c9:hover,
.elementor-28 .elementor-element.elementor-element-270e097:hover,
.elementor-28 .elementor-element.elementor-element-5ca8168:hover,
.elementor-29 .elementor-element.elementor-element-75ef4cc:hover,
.elementor-29 .elementor-element.elementor-element-f75125f:hover,
.elementor-29 .elementor-element.elementor-element-b4671d5:hover,
.elementor-31 .elementor-element.elementor-element-8e38243:hover,
.elementor-31 .elementor-element.elementor-element-61e26b1:hover,
.elementor-31 .elementor-element.elementor-element-3a98abd:hover,
.elementor-31 .elementor-element.elementor-element-2fcd5c0:hover,
.elementor-31 .elementor-element.elementor-element-e6e3287:hover,
.elementor-31 .elementor-element.elementor-element-70fb003:hover,
.elementor-31 .elementor-element.elementor-element-f436e44:hover,
.elementor-31 .elementor-element.elementor-element-9c85d4d:hover,
.elementor-31 .elementor-element.elementor-element-30925f1:hover,
.elementor-31 .elementor-element.elementor-element-7cb05fa:hover,
.elementor-31 .elementor-element.elementor-element-22324cf:hover,
.elementor-32 .elementor-element.elementor-element-6ac0290:hover,
.elementor-32 .elementor-element.elementor-element-72aa5ee:hover,
.elementor-32 .elementor-element.elementor-element-8c94e15:hover,
.elementor-32 .elementor-element.elementor-element-c84d188:hover,
.elementor-33 .elementor-element.elementor-element-ce5723c:hover,
.elementor-33 .elementor-element.elementor-element-a0b4afb:hover,
.elementor-33 .elementor-element.elementor-element-2cef6c1:hover{transform:translateY(-4px)}

/* 6. testimonial initials avatar  (index.html .tst-avatar) */
.tb-av .elementor-testimonial-meta-inner{display:flex;align-items:center;gap:14px}
.tb-av .elementor-testimonial-meta-inner::before{width:46px;height:46px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#2B7BFF,#1A3FA8);color:#fff;font-family:"Space Grotesk","Inter",sans-serif;font-weight:700;font-size:.95rem;letter-spacing:.02em}
.tb-av-sm .elementor-testimonial-meta-inner::before{content:"SM"}
.tb-av-we .elementor-testimonial-meta-inner::before{content:"WE"}
.tb-av-kg .elementor-testimonial-meta-inner::before{content:"KG"}

/* 7. stat band: staggered rise + accent rule draw  (index.html .strip) */
html.tb-anim #tb-strip > .e-con-inner > .e-con{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}
html.tb-anim #tb-strip > .e-con-inner.tb-in > .e-con{opacity:1;transform:none}
html.tb-anim #tb-strip > .e-con-inner.tb-in > #tb-stat-1{transition-delay:0.05s}
html.tb-anim #tb-strip > .e-con-inner.tb-in > #tb-stat-2{transition-delay:0.17s}
html.tb-anim #tb-strip > .e-con-inner.tb-in > #tb-stat-3{transition-delay:0.29s}
html.tb-anim #tb-strip > .e-con-inner.tb-in > #tb-stat-4{transition-delay:0.41s}
html.tb-anim #tb-strip > .e-con-inner.tb-in > #tb-stat-5{transition-delay:0.53s}
html.tb-anim #tb-rule-1,
html.tb-anim #tb-rule-2,
html.tb-anim #tb-rule-3,
html.tb-anim #tb-rule-4,
html.tb-anim #tb-rule-5{transform:scaleX(0);transform-origin:left center;transition:transform .85s cubic-bezier(.22,.61,.36,1)}
html.tb-anim #tb-strip > .e-con-inner.tb-in > #tb-stat-1 > #tb-rule-1{transform:none;transition-delay:0.30s}
html.tb-anim #tb-strip > .e-con-inner.tb-in > #tb-stat-2 > #tb-rule-2{transform:none;transition-delay:0.42s}
html.tb-anim #tb-strip > .e-con-inner.tb-in > #tb-stat-3 > #tb-rule-3{transform:none;transition-delay:0.54s}
html.tb-anim #tb-strip > .e-con-inner.tb-in > #tb-stat-4 > #tb-rule-4{transform:none;transition-delay:0.66s}
html.tb-anim #tb-strip > .e-con-inner.tb-in > #tb-stat-5 > #tb-rule-5{transform:none;transition-delay:0.78s}

/* 8. process rail: one continuous 2px line behind four dot nodes, drawn
   from 0 to full width over 1.9s, with the nodes lighting up in sequence.
   Mirrors index.html .process-line span and .process-node exactly.
   The rail geometry is measured at runtime by techbird-reveal.js and passed
   in as --tb-rail-t / -l / -r, so it stays locked to the node centres at any
   width and font size. The fallbacks match the static build. */
#tb-process-track{position:relative}
#tb-process-track::before,#tb-process-track::after{
  content:"";position:absolute;pointer-events:none;height:2px;border-radius:2px;
  top:var(--tb-rail-t,61px);left:var(--tb-rail-l,27px);right:var(--tb-rail-r,27px);
}
#tb-process-track::before{background:rgba(120,165,255,0.20)}
#tb-process-track::after{background:linear-gradient(90deg,#1A5FE0,#6BA5FF);transform-origin:left center}
html.tb-anim #tb-process-track::after{transform:scaleX(0);transition:transform 1.9s cubic-bezier(.22,.61,.36,1)}
html.tb-anim #tb-process-track.tb-anim-on::after{transform:scaleX(1)}

/* the dot nodes sit above the rail */
#tb-node-1,#tb-node-2,#tb-node-3,#tb-node-4{position:relative;z-index:2}
html.tb-anim #tb-node-1,html.tb-anim #tb-node-2,html.tb-anim #tb-node-3,html.tb-anim #tb-node-4{
  transition:background-color .5s ease,border-color .5s ease,box-shadow .5s ease;
}
html.tb-anim #tb-process-track.tb-anim-on #tb-node-1{background-color:#2B7BFF;border-color:#2B7BFF;box-shadow:0 0 0 7px rgba(43,123,255,0.18);transition-delay:0.35s}
html.tb-anim #tb-process-track.tb-anim-on #tb-node-2{background-color:#2B7BFF;border-color:#2B7BFF;box-shadow:0 0 0 7px rgba(43,123,255,0.18);transition-delay:0.70s}
html.tb-anim #tb-process-track.tb-anim-on #tb-node-3{background-color:#2B7BFF;border-color:#2B7BFF;box-shadow:0 0 0 7px rgba(43,123,255,0.18);transition-delay:1.05s}
html.tb-anim #tb-process-track.tb-anim-on #tb-node-4{background-color:#2B7BFF;border-color:#2B7BFF;box-shadow:0 0 0 7px rgba(43,123,255,0.18);transition-delay:1.40s}

/* stacked layout: the rail makes no sense once the steps wrap (index.html
   hides .process-line at the same point) */
@media (max-width:1024px){
  #tb-process-track::before,#tb-process-track::after{display:none}
}

/* 9. reduced motion: show the finished state, never move */
@media (prefers-reduced-motion: reduce){
  html.tb-anim #tb-strip > .e-con-inner > .e-con{opacity:1 !important;transform:none !important}
  html.tb-anim #tb-process-track::after{transform:none !important}
  html.tb-anim [id^="tb-rule-"]{transform:none !important}
  .tb-shot img,.elementor-button .elementor-button-icon{transition:none !important}
}
