/* ==========================================================================
   Mind Your Power — Therapy Page PREMIUM Animations (1/3)
   File   : assets/css/therapy-animations.css
   Scope  : Loaded ONLY by therapy.html — namespaced to .tseo / .singl-banner
   Perf   : GPU-only transforms, IntersectionObserver-driven, prefers-reduced-motion
   ========================================================================== */
.tseo-page{
    --tseo-ease-out:cubic-bezier(0.16,1,0.3,1);
    --tseo-ease-spring:cubic-bezier(0.34,1.56,0.64,1);
    --tseo-ease-smooth:cubic-bezier(0.4,0,0.2,1);
    --tseo-dur:0.75s;
    --tseo-stagger:90ms;
}
.tseo-progress{
    position:fixed;top:0;left:0;width:100%;height:3px;z-index:9999;
    pointer-events:none;background:rgba(255,100,23,0.12);opacity:0;transition:opacity .3s;
}
.tseo-progress.is-visible{opacity:1;}
.tseo-progress__bar{
    display:block;height:100%;width:0%;
    background:linear-gradient(90deg,#FF6417 0%,#ff8a4a 50%,#FF6417 100%);
    background-size:200% 100%;animation:tseoGradientMove 2s linear infinite;
    box-shadow:0 0 10px rgba(255,100,23,.55);transition:width .08s linear;
}
@keyframes tseoFadeUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}
@keyframes tseoFadeIn{from{opacity:0}to{opacity:1}}
@keyframes tseoScaleIn{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
@keyframes tseoBlurIn{from{opacity:0;transform:translateY(18px);filter:blur(8px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
@keyframes tseoGradientMove{0%{background-position:0% 50%}100%{background-position:200% 50%}}
@keyframes tseoFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes tseoFloatSlow{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-14px) rotate(1deg)}}
@keyframes tseoKenBurns{from{transform:scale(1)}to{transform:scale(1.08)}}
@keyframes tseoShimmer{0%{transform:translateX(-100%)}100%{transform:translateX(200%)}}
@keyframes tseoScrollDot{0%{transform:translateX(-50%) translateY(0);opacity:1}60%{transform:translateX(-50%) translateY(10px);opacity:0}100%{transform:translateX(-50%) translateY(10px);opacity:0}}
@keyframes tseoRipple{to{transform:scale(4);opacity:0}}
/* Banner */
.singl-banner{position:relative;overflow:hidden;isolation:isolate;}
.singl-banner-image{overflow:hidden;transform:translateZ(0);}
.singl-banner-image img{transform:scale(1.08);transition:transform 1.8s var(--tseo-ease-out);will-change:transform;}
.singl-banner.is-loaded .singl-banner-image img{transform:scale(1);}
.singl-banner-overlay{background:linear-gradient(180deg,rgba(18,12,8,.18) 0%,rgba(18,12,8,.62) 100%);}
.singl-banner-breadcrumb{opacity:0;transform:translateY(12px);animation:tseoFadeUp .7s var(--tseo-ease-out) .35s forwards;}
.singl-banner-title{opacity:0;transform:translateY(26px);animation:tseoFadeUp .9s var(--tseo-ease-out) .15s forwards;overflow:hidden;}
.singl-banner-title.tseo-split-ready{opacity:1;transform:none;animation:none;}
.singl-banner-title .tseo-char{display:inline-block;opacity:0;transform:translateY(100%) rotate(2deg);transition:transform .65s var(--tseo-ease-out),opacity .5s ease;will-change:transform;}
.singl-banner-title .tseo-char.is-in{opacity:1;transform:translateY(0) rotate(0);}
.singl-banner::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.08) 50%,transparent 60%);transform:translateX(-100%);animation:tseoShimmer 1.4s var(--tseo-ease-out) 1.2s forwards;pointer-events:none;z-index:2;}
.tseo-scroll-hint{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:3;opacity:0;animation:tseoFadeIn .8s ease 1.6s forwards;}
.tseo-scroll-hint__mouse{width:26px;height:40px;border:2px solid rgba(255,255,255,.75);border-radius:20px;position:relative;}
.tseo-scroll-hint__mouse::after{content:"";position:absolute;left:50%;top:8px;width:4px;height:8px;background:#fff;border-radius:4px;transform:translateX(-50%);animation:tseoScrollDot 1.6s ease-in-out infinite;}
.tseo-scroll-hint span{font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.85);font-weight:600;}
/* Sections — orbs & reveal base */
.tseo-section{position:relative;overflow:hidden;isolation:isolate;}
.tseo-section::before,.tseo-section::after{content:"";position:absolute;border-radius:50%;pointer-events:none;opacity:0;transition:opacity 1s ease;z-index:0;}
.tseo-section.is-visible::before,.tseo-section.is-visible::after{opacity:1;}
.tseo-section::before{width:520px;height:520px;background:radial-gradient(circle at 30% 30%,rgba(255,100,23,.07),transparent 68%);top:-180px;right:-140px;animation:tseoFloatSlow 8s ease-in-out infinite;}
.tseo-section::after{width:420px;height:420px;background:radial-gradient(circle at 60% 40%,rgba(255,140,70,.06),transparent 70%);bottom:-120px;left:-100px;animation:tseoFloat 7s ease-in-out infinite reverse;}
.tseo-section--alt::before{background:radial-gradient(circle at 30% 30%,rgba(255,100,23,.05),transparent 68%);}
.tseo-wrap{position:relative;z-index:1;}
[data-reveal]{opacity:0;transform:translateY(28px);transition:opacity .75s var(--tseo-ease-out),transform .75s var(--tseo-ease-out),filter .75s var(--tseo-ease-out),clip-path 1s var(--tseo-ease-out);will-change:transform,opacity;transition-delay:var(--tseo-delay,0ms);}
[data-reveal].is-visible{opacity:1;transform:translateY(0);}
[data-reveal="left"]{transform:translateX(-36px);} [data-reveal="left"].is-visible{transform:translateX(0);}
[data-reveal="right"]{transform:translateX(36px);} [data-reveal="right"].is-visible{transform:translateX(0);}
[data-reveal="scale"]{transform:scale(.94);} [data-reveal="scale"].is-visible{transform:scale(1);}
[data-reveal="blur"]{filter:blur(10px);transform:translateY(18px);} [data-reveal="blur"].is-visible{filter:blur(0);transform:translateY(0);}
.tseo-eyebrow[data-reveal]{transform:translateY(10px);letter-spacing:.12em;transition-duration:.6s;}
.tseo-eyebrow[data-reveal].is-visible{letter-spacing:.14em;}
.tseo-h2{position:relative;}
.tseo-h2::after{content:"";position:absolute;left:0;bottom:-8px;height:3px;width:0;background:linear-gradient(90deg,#FF6417,#ff9a5c);border-radius:3px;transition:width .85s var(--tseo-ease-out) .25s;}
.tseo-h2.is-visible::after{width:54px;}
.tseo-p[data-reveal],.tseo-lede[data-reveal]{transition-duration:.7s;}
/* Images — safe reveal + subtle zoom. Images remain visible even if JS/observer is unavailable. */
.tseo-figure{position:relative;overflow:hidden;transform:translateZ(0);clip-path:none !important;opacity:1 !important;visibility:visible !important;}
.tseo-figure[data-reveal]{clip-path:none !important;opacity:1 !important;transform:none;transition:none;}
.tseo-figure img{display:block !important;width:100%;height:auto !important;max-width:100%;aspect-ratio:4 / 3;object-fit:cover;opacity:1 !important;visibility:visible !important;transform:scale(1.02) translateY(var(--tseo-parallax,0px));transition:transform 1.2s var(--tseo-ease-out),filter .6s ease;will-change:transform;}
.tseo-figure.is-visible img{transform:scale(1) translateY(var(--tseo-parallax,0px));}
.tseo-figure:hover img{transform:scale(1.04) translateY(var(--tseo-parallax,0px));}
.tseo-quote{position:relative;overflow:hidden;}
.tseo-quote[data-reveal]{border-left-color:transparent;transition:border-left-color .5s ease .4s,opacity .7s var(--tseo-ease-out),transform .7s var(--tseo-ease-out);}
.tseo-quote[data-reveal].is-visible{border-left-color:#FF6417;}
.tseo-quote::before{content:"\201C";position:absolute;left:-6px;top:-18px;font-size:5rem;line-height:1;color:rgba(255,100,23,.08);font-family:Georgia,serif;pointer-events:none;}
.tseo-note[data-reveal]{transform:translateY(16px) scale(.98);} .tseo-note[data-reveal].is-visible{transform:translateY(0) scale(1);}
.tseo-list li[data-reveal]{opacity:0;transform:translateX(-10px);} .tseo-list li[data-reveal].is-visible{opacity:1;transform:translateX(0);}
.tseo-list li::before{transform:scale(0);transition:transform .45s var(--tseo-ease-spring) .3s;} .tseo-list li.is-visible::before{transform:scale(1);}
/* Cards — 3D tilt + spotlight */
.tseo-cards{perspective:1000px;}
.tseo-card{position:relative;overflow:hidden;transform-style:preserve-3d;will-change:transform;}
.tseo-card[data-reveal]{opacity:0;transform:translateY(30px) rotateX(6deg);} .tseo-card[data-reveal].is-visible{opacity:1;transform:translateY(0) rotateX(0);}
.tseo-card::before{content:"";position:absolute;inset:0;background:radial-gradient(500px circle at var(--tseo-mx,50%) var(--tseo-my,50%),rgba(255,100,23,.08),transparent 55%);opacity:0;transition:opacity .4s ease;pointer-events:none;}
.tseo-card:hover::before{opacity:1;}
.tseo-card:hover{transform:translateY(-8px) rotateX(1deg);box-shadow:0 22px 48px rgba(28,27,26,.12);}
.tseo-card__icon{transition:transform .5s var(--tseo-ease-spring),background .3s ease,color .3s ease;}
.tseo-card:hover .tseo-card__icon{transform:scale(1.08) rotate(-6deg);background:#FF6417;color:#fff;}
/* Steps — line draw + number pop */
.tseo-steps{position:relative;}
.tseo-steps::after{content:"";position:absolute;left:21px;top:22px;bottom:22px;width:2px;background:var(--tseo-line);transform-origin:top;transform:scaleY(0);transition:transform 1.1s var(--tseo-ease-out) .2s;z-index:0;}
.tseo-steps.is-visible::after{transform:scaleY(1);}
.tseo-steps>li{opacity:0;transform:translateX(-14px);transition:opacity .6s var(--tseo-ease-out),transform .6s var(--tseo-ease-out);transition-delay:var(--tseo-delay,0ms);}
.tseo-steps>li.is-visible{opacity:1;transform:translateX(0);}
.tseo-steps>li::before{transform:scale(0);transition:transform .5s var(--tseo-ease-spring);box-shadow:0 6px 18px rgba(255,100,23,.35);z-index:2;}
.tseo-steps>li.is-visible::before{transform:scale(1);}
.tseo-steps>li.is-visible:hover::before{transform:scale(1.08);}
/* FAQ */
.tseo-faq__item{border-bottom:1px solid var(--tseo-line);transition:background .3s ease;}
.tseo-faq__item:hover{background:rgba(255,248,241,.55);}
.tseo-faq__item summary{position:relative;cursor:pointer;list-style:none;transition:color .3s ease;}
.tseo-faq__item summary::-webkit-details-marker{display:none;}
.tseo-faq__item summary::after{content:"+";position:absolute;right:0;top:50%;transform:translateY(-50%) rotate(0);width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:var(--tseo-cream);color:var(--tseo-accent);font-size:1.2rem;font-weight:300;transition:transform .4s var(--tseo-ease-out),background .3s ease,color .3s ease;}
.tseo-faq__item[open] summary::after{transform:translateY(-50%) rotate(45deg);background:var(--tseo-accent);color:#fff;}
.tseo-faq__item[open] .tseo-faq__answer{animation:tseoFadeUp .45s var(--tseo-ease-out);}
.tseo-faq__item[data-reveal]{opacity:0;transform:translateY(14px);} .tseo-faq__item[data-reveal].is-visible{opacity:1;transform:translateY(0);}
/* Buttons — shine + ripple + magnetic */
.tseo-btn,.tseo-btn--ghost{position:relative;overflow:hidden;isolation:isolate;transform:translateZ(0);transition:transform .35s var(--tseo-ease-out),box-shadow .35s var(--tseo-ease-out),background .3s ease,color .3s ease,border-color .3s ease;will-change:transform;}
.tseo-btn::before,.tseo-btn--ghost::before{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 20%,rgba(255,255,255,.28) 50%,transparent 80%);transform:translateX(-120%);transition:transform .75s var(--tseo-ease-out);pointer-events:none;z-index:1;}
.tseo-btn:hover::before,.tseo-btn--ghost:hover::before{transform:translateX(120%);}
.tseo-btn:hover{transform:translateY(-2px) scale(1.015);box-shadow:0 14px 30px rgba(255,100,23,.32);}
.tseo-btn:active{transform:translateY(0) scale(.985);}
.tseo-btn--ghost:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(28,27,26,.08);}
.tseo-btn__ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.45);transform:scale(0);pointer-events:none;animation:tseoRipple .65s ease-out forwards;}
.tseo-cta{position:relative;overflow:hidden;isolation:isolate;}
.tseo-cta::before{content:"";position:absolute;inset:-60%;background:radial-gradient(circle at 20% 30%,rgba(255,100,23,.14),transparent 40%),radial-gradient(circle at 85% 70%,rgba(255,154,92,.12),transparent 42%);animation:tseoFloatSlow 10s ease-in-out infinite;pointer-events:none;z-index:0;}
.tseo-cta>*{position:relative;z-index:1;}
.tseo-cta[data-reveal]{opacity:0;transform:translateY(30px) scale(.98);} .tseo-cta[data-reveal].is-visible{opacity:1;transform:translateY(0) scale(1);}
.tseo-contact__item{transition:transform .35s var(--tseo-ease-out),color .3s ease;}
.tseo-contact__item:hover{transform:translateY(-2px);} .tseo-contact__item i{transition:transform .35s var(--tseo-ease-spring);} .tseo-contact__item:hover i{transform:scale(1.15) rotate(-8deg);}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}
  [data-reveal],.singl-banner-title,.tseo-figure[data-reveal],.tseo-card[data-reveal],.tseo-steps>li{opacity:1!important;transform:none!important;clip-path:none!important;filter:none!important;}
  .tseo-progress{display:none;} .singl-banner-image img{transform:none!important;} .tseo-figure,.tseo-figure img{opacity:1!important;visibility:visible!important;clip-path:none!important;}
}
@media(max-width:860px){.singl-banner::after{display:none;} .tseo-scroll-hint{display:none;} .tseo-h2::after{width:42px;} .tseo-h2.is-visible::after{width:42px;}}

/* Closing CTA heading underline — keep the accent line directly beneath the
   visible heading text, beginning at the "Start" edge rather than the full CTA. */
.tseo-cta .tseo-h2 {
  display: table;
  width: auto;
  max-width: 100%;
  margin: 0 auto 18px;
  position: relative;
  text-align: center;
}
.tseo-cta .tseo-h2::after {
  left: 0;
  right: auto;
  bottom: -8px;
  transform: none;
}
@media (max-width: 560px) {
  .tseo-cta .tseo-h2 {
    display: block;
    width: fit-content;
    max-width: 100%;
  }
}

/* --------------------------------------------------------------------------
   FINAL FIX: session timeline connector must stay BEHIND the numbered icons
   -------------------------------------------------------------------------- */
.tseo-page .tseo-steps {
    position: relative !important;
    isolation: isolate !important;
    --tseo-step-line-x: 21px;
}

/* The connector is the lowest layer inside the timeline. */
.tseo-page .tseo-steps::after {
    z-index: 0 !important;
    pointer-events: none !important;
}

/* Each step is an explicit stacking layer above the connector.
   This is important because the animation uses transform on <li>. */
.tseo-page .tseo-steps > li {
    position: relative !important;
    z-index: 2 !important;
    border-left: 0 !important;
}

/* The orange numbered icon is the highest layer and has an opaque fill,
   so the connector can never render through it. */
.tseo-page .tseo-steps > li::before {
    position: absolute !important;
    z-index: 10 !important;
    background: var(--tseo-accent) !important;
    opacity: 1 !important;
}

/* Keep the content above the connector as well. */
.tseo-page .tseo-steps > li > .tseo-step__title,
.tseo-page .tseo-steps > li > .tseo-step__text {
    position: relative !important;
    z-index: 3 !important;
}

@media (max-width: 560px) {
    .tseo-page .tseo-steps { --tseo-step-line-x: 18px; }
}
