/* =========================================================
   Scroll-animated 3D service illustrations + Triad map
   --p (0..1) is set by site.js from the scroll position.
   Without JS (or with reduced motion) --p stays 1 = finished state.
   ========================================================= */
.tdm-scene{--p:1;position:relative;height:460px;border-radius:22px;overflow:hidden;isolation:isolate;color:#fff;font-family:Inter,system-ui,sans-serif;
  background:radial-gradient(520px 320px at 30% 20%,rgba(80,199,215,.22),transparent 70%),linear-gradient(160deg,#0B1620,#122331);
  box-shadow:0 40px 80px -40px rgba(11,22,32,.7),0 0 0 1px rgba(80,199,215,.25)}
.tdm-scene::before{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:40px 40px;-webkit-mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,#000,transparent 85%);mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,#000,transparent 85%)}
.tdm-scene svg{display:block}

/* ---------- Lead generation: one territory lights up, leads flow to you ---------- */
.tdm-scene--leadgen{
  --rx:calc(58deg - var(--p) * 6deg);--rz:calc(-42deg + var(--p) * 14deg);
  --a:clamp(0,calc(var(--p) * 2.6),1);
  --d:clamp(0,calc((var(--p) - .08) * 3.2),1)}
.tdm-scene--leadgen .sc-stage{position:absolute;left:35%;top:56%;width:0;height:0;transform-style:preserve-3d;transform:rotateX(var(--rx)) rotateZ(var(--rz))}
.tdm-scene--leadgen .sc-grid{position:absolute;left:-150px;top:-150px;width:300px;height:300px;display:grid;grid-template-columns:repeat(5,1fr);gap:8px;transform-style:preserve-3d}
.tdm-scene--leadgen .sc-grid i{border-radius:7px;background:linear-gradient(135deg,rgba(255,255,255,.1),rgba(255,255,255,.03));border:1px solid rgba(80,199,215,.22);transform:translateZ(var(--z,0px));opacity:calc(1 - var(--p) * .4);box-shadow:0 0 0 0 transparent}
.tdm-scene--leadgen .sc-grid i.hot{opacity:1;background:linear-gradient(135deg,#B9F3F9,#50C7D7 60%,#4F8CFF);border-color:#fff;transform:translateZ(calc(var(--a) * 46px));box-shadow:0 0 calc(var(--a) * 50px) rgba(80,199,215,.95)}
.tdm-scene--leadgen .sc-rings b{position:absolute;left:-60px;top:-60px;width:120px;height:120px;border-radius:50%;border:2px solid rgba(139,230,240,.8);opacity:0;animation:scRing 3.2s ease-out infinite}
.tdm-scene--leadgen .sc-rings b:nth-child(2){animation-delay:1.05s}
.tdm-scene--leadgen .sc-rings b:nth-child(3){animation-delay:2.1s}
@keyframes scRing{0%{transform:scale(.3);opacity:.9}100%{transform:scale(2.6);opacity:0}}
.tdm-scene--leadgen .sc-pin{position:absolute;left:-23px;top:-62px;width:46px;height:62px;transform-origin:50% 100%;opacity:var(--d);
  transform:translateZ(calc(var(--a) * 46px + (1 - var(--d)) * 230px)) rotateZ(calc(var(--rz) * -1)) rotateX(calc(var(--rx) * -1))}
.tdm-scene--leadgen .sc-pin svg{width:46px;height:62px;filter:drop-shadow(0 0 14px rgba(80,199,215,.9))}
.tdm-scene--leadgen .sc-pin path{fill:#fff}
.tdm-scene--leadgen .sc-pin circle{fill:#1F9DB0}
.sc-card{position:absolute;right:5%;width:238px;display:flex;gap:12px;align-items:center;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.18);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  opacity:var(--k);transform:translate3d(calc((1 - var(--k)) * -150px),calc((1 - var(--k)) * 34px),0) scale(calc(.72 + var(--k) * .28))}
.sc-card.c1{top:13%;--k:clamp(0,calc((var(--p) - .34) * 5),1)}
.sc-card.c2{top:38%;--k:clamp(0,calc((var(--p) - .5) * 5),1)}
.sc-card.c3{top:63%;--k:clamp(0,calc((var(--p) - .66) * 5),1);border-color:rgba(80,199,215,.8);background:rgba(80,199,215,.16);box-shadow:0 0 30px -6px rgba(80,199,215,.8)}
.sc-card b{display:block;font-size:14.5px;line-height:1.2}
.sc-card small{display:block;font-size:12px;color:#B8C7D1;margin-top:2px}
.sc-ico{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:rgba(80,199,215,.18);border:1px solid rgba(80,199,215,.4)}
.sc-ico svg{width:18px;height:18px;fill:none;stroke:#8BE6F0;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sc-lock{position:absolute;left:5%;bottom:7%;display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:#50C7D7;color:#041018;font:600 11.5px "JetBrains Mono",ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;
  --k:clamp(0,calc((var(--p) - .8) * 6),1);opacity:var(--k);transform:translateY(calc((1 - var(--k)) * 14px))}
.sc-lock svg{width:14px;height:14px;fill:none;stroke:#041018;stroke-width:2.2;stroke-linecap:round}

/* ---------- PPC: your ad pops, the click lands, calls climb ---------- */
.tdm-scene--ppc{
  --t:clamp(0,calc(var(--p) * 3.4),1);
  --k2:clamp(0,calc((var(--p) - .28) * 4),1);
  --k3:clamp(0,calc((var(--p) - .42) * 4.2),1);
  --k4:clamp(0,calc((var(--p) - .64) * 7),1)}
.sc-browser{position:absolute;left:6%;top:9%;width:54%;max-width:370px;padding:12px 14px 6px;border-radius:16px;background:#fff;color:#0E1A24;transform-style:preserve-3d;
  transform:perspective(1100px) rotateY(calc(26deg - var(--p) * 14deg)) rotateX(7deg);box-shadow:-30px 40px 60px -30px rgba(0,0,0,.7)}
.sc-dots{display:flex;gap:5px}
.sc-dots i{width:8px;height:8px;border-radius:50%;background:#D5DEE4}
.sc-bar{display:flex;align-items:center;gap:8px;border:1.5px solid #E1E8ED;border-radius:999px;padding:8px 12px;margin:9px 0 11px;font:500 12.5px "JetBrains Mono",ui-monospace,monospace}
.sc-bar svg{flex:none;width:14px;height:14px;fill:none;stroke:#667682;stroke-width:2.2;stroke-linecap:round}
.sc-q{display:inline-block;overflow:hidden;white-space:nowrap;max-width:calc(var(--t) * 20.5ch)}
.sc-caret{flex:none;width:1.5px;height:14px;background:#0E1A24;margin-left:-6px;animation:scBlink 1s steps(2) infinite}
@keyframes scBlink{50%{opacity:0}}
.sc-ad{position:relative;display:grid;gap:2px;padding:11px 12px;border-radius:12px;border:1.5px solid #50C7D7;background:#F1FBFC;transform:translateZ(calc(var(--k2) * 64px));
  box-shadow:0 calc(var(--k2) * 26px) calc(var(--k2) * 40px) -14px rgba(31,157,176,.75)}
.sc-ad small{font:700 10px Inter,sans-serif;letter-spacing:.04em;color:#0E1A24}
.sc-ad b{font-size:15px;color:#1565C0}
.sc-ad span{font-size:11.5px;color:#667682;padding-right:74px}
.sc-ad em{position:absolute;right:10px;bottom:10px;font:700 11px Inter,sans-serif;font-style:normal;background:#50C7D7;color:#041018;padding:6px 10px;border-radius:8px;
  box-shadow:0 0 0 calc(var(--k4) * 16px) rgba(80,199,215,calc(.55 - var(--k4) * .55))}
.sc-res{padding:10px 2px;border-top:1px solid #EDF1F4;margin-top:10px;opacity:calc(1 - var(--k2) * .55)}
.sc-res i{display:block;height:7px;border-radius:4px;background:#E1E8ED;margin-bottom:6px;width:55%}
.sc-res i:nth-child(2){width:92%}
.sc-res i:nth-child(3){width:74%;margin-bottom:0}
.sc-cursor{position:absolute;z-index:3;width:26px;height:26px;fill:#fff;stroke:#0B1620;stroke-width:1.5;stroke-linejoin:round;filter:drop-shadow(0 4px 6px rgba(0,0,0,.5));
  left:calc(74% - var(--k3) * 17%);top:calc(84% - var(--k3) * 50%);opacity:clamp(0,calc((var(--p) - .36) * 8),1)}
.sc-chart{position:absolute;right:6%;top:14%;width:27%;height:58%}
.sc-chart-label{position:absolute;left:0;top:0;font:600 11px "JetBrains Mono",ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase;color:#8BE6F0}
.sc-chart-label::after{content:" ↑"}
.sc-bars{position:absolute;left:0;right:8px;bottom:0;height:84%;display:flex;align-items:flex-end;gap:11%;border-bottom:1px solid rgba(255,255,255,.2)}
.sc-bars i{position:relative;flex:1;--g:clamp(0,calc((var(--p) - .5 - var(--i) * .07) * 3.6),1);height:calc(var(--h) * var(--g) * 100%);opacity:clamp(0,calc(var(--g) * 25),1);background:linear-gradient(180deg,#8BE6F0,#50C7D7 45%,#2C8FB8);border-radius:1px}
.sc-bars i::before{content:"";position:absolute;left:0;top:-8px;width:100%;height:8px;background:#C9F6FA;transform:skewX(-45deg);transform-origin:0 100%}
.sc-bars i::after{content:"";position:absolute;right:-8px;top:0;width:8px;height:100%;background:#1D6F92;transform:skewY(-45deg);transform-origin:0 0}
.sc-flow{position:absolute;left:6%;bottom:7%;display:flex;gap:26px}
.sc-flow span{position:relative;--f:clamp(0,calc((var(--p) - .62 - var(--i) * .11) * 9),1);padding:7px 14px;border-radius:999px;font:600 11.5px "JetBrains Mono",ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;
  color:rgba(255,255,255,calc(.4 + var(--f) * .6));border:1px solid rgba(80,199,215,calc(.25 + var(--f) * .75));background:rgba(80,199,215,calc(.04 + var(--f) * .2));box-shadow:0 0 calc(var(--f) * 20px) -2px rgba(80,199,215,.9)}
.sc-flow span + span::before{content:"→";position:absolute;left:-20px;top:50%;transform:translateY(-50%);color:rgba(139,230,240,calc(.3 + var(--f) * .7))}

/* ---------- Website: layers assemble into a finished site ---------- */
.tdm-scene--web{
  --rx:calc(57deg - var(--p) * 9deg);--rz:calc(-40deg + var(--p) * 12deg);
  --e:clamp(0,calc((var(--p) - .12) * 1.45),1);--gap:calc((1 - var(--e)) * 62px + 1px);
  --k:clamp(0,calc((var(--p) - .62) * 3.2),1)}
.tdm-scene--web .sc-stage{position:absolute;left:54%;top:calc(60% - var(--e) * 8%);width:0;height:0;transform-style:preserve-3d;transform:rotateX(var(--rx)) rotateZ(var(--rz))}
.sc-layer{position:absolute;left:-150px;top:-100px;width:300px;height:200px;border-radius:12px;transform:translateZ(calc(var(--n) * var(--gap)))}
.sc-layer i{position:absolute;display:block;font-style:normal}
.sc-layer.l1{--n:0;background:#0F1D2A;border:1px solid rgba(80,199,215,.55);box-shadow:0 0 50px -6px rgba(80,199,215,.5)}
.sc-layer.l2{--n:1;border:1px solid rgba(79,140,255,calc(.55 - var(--e) * .55))}
.sc-layer.l3{--n:2;border:1px solid rgba(139,230,240,calc(.45 - var(--e) * .45))}
.sc-layer.l4{--n:3;border:1px solid rgba(255,255,255,calc(.35 - var(--e) * .35))}
/* wireframe */
.l1 i{border:1.5px dashed rgba(139,230,240,.45);border-radius:5px}
.l1 .w-nav,.l2 .d-nav{left:12px;right:12px;top:10px;height:18px}
.l1 .w-hero,.l2 .d-hero{left:12px;right:12px;top:36px;height:84px}
.l1 .w-c,.l2 .d-c{bottom:12px;width:84px;height:56px;left:12px}
.l1 .w-c:nth-of-type(4),.l2 .d-c:nth-of-type(4){left:108px}
.l1 .w-c:nth-of-type(5),.l2 .d-c:nth-of-type(5){left:204px}
/* design */
.l2 i{border-radius:5px}
.l2 .d-nav{background:rgba(255,255,255,.14)}
.l2 .d-hero{background:linear-gradient(110deg,rgba(80,199,215,.9),rgba(79,140,255,.9))}
.l2 .d-c{background:rgba(255,255,255,.16)}
/* content */
.l3 .t-logo{left:18px;top:14px;width:10px;height:10px;border-radius:50%;background:#50C7D7}
.l3 .t-h{left:24px;top:52px;width:150px;height:13px;border-radius:4px;background:#fff}
.l3 .t-p{left:24px;top:74px;width:120px;height:6px;border-radius:3px;background:rgba(255,255,255,.75)}
.l3 .t-p.s{top:86px;width:90px}
.l3 .t-l{bottom:44px;left:22px;width:60px;height:6px;border-radius:3px;background:rgba(255,255,255,.6)}
.l3 .t-l:nth-of-type(6){left:118px}
.l3 .t-l:nth-of-type(7){left:214px}
/* finish */
.l4 .s-btn{left:24px;top:98px;width:62px;height:15px;border-radius:5px;background:#0B1620;box-shadow:0 0 0 1px rgba(255,255,255,.5)}
.l4 .s-badge{right:-10px;top:-12px;padding:5px 10px;border-radius:999px;background:#3DDC97;color:#04210F;font:700 11px "JetBrains Mono",ui-monospace,monospace;letter-spacing:.1em;
  --b:clamp(0,calc((var(--p) - .86) * 9),1);opacity:var(--b);transform:scale(calc(.6 + var(--b) * .4));box-shadow:0 0 22px rgba(61,220,151,.8)}
.sc-labels{position:absolute;left:5%;top:9%;list-style:none;margin:0;padding:0;display:grid;gap:9px;z-index:2}
.sc-labels li{--f:clamp(0,calc((var(--p) - .04 - var(--i) * .2) * 7),1);font:600 11.5px "JetBrains Mono",ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,calc(.32 + var(--f) * .68));padding:6px 12px 6px 8px;border-radius:8px;border:1px solid rgba(80,199,215,calc(.12 + var(--f) * .5));background:rgba(80,199,215,calc(var(--f) * .12))}
.sc-labels b{color:#8BE6F0;margin-right:6px}
.sc-phone{position:absolute;right:6%;bottom:calc(-46% + var(--k) * 53%);width:98px;height:190px;border-radius:20px;border:3px solid #33495A;background:#0F1D2A;box-shadow:0 30px 50px -20px rgba(0,0,0,.8),0 0 30px -8px rgba(80,199,215,.6);overflow:hidden}
.sc-phone i{position:absolute;display:block;left:9px;right:9px;border-radius:4px}
.sc-phone .p-nav{top:10px;height:9px;background:rgba(255,255,255,.14)}
.sc-phone .p-hero{top:26px;height:64px;background:linear-gradient(140deg,#50C7D7,#4F8CFF)}
.sc-phone .p-line{top:100px;height:6px;background:rgba(255,255,255,.7)}
.sc-phone .p-line.s{top:113px;right:34px;background:rgba(255,255,255,.4)}
.sc-phone .p-btn{top:132px;height:20px;background:#50C7D7;border-radius:6px}

/* ---------- Triad map ---------- */
.tdm-map{position:relative;border-radius:22px;overflow:hidden;box-shadow:0 40px 80px -40px rgba(11,22,32,.7),0 0 0 1px rgba(80,199,215,.25)}
.tdm-map svg{display:block;width:100%;height:auto}
.tdm-map .tm-city{cursor:pointer;transition:opacity .3s}
.tdm-map .tm-core,.tdm-map .tm-ring,.tdm-map .tm-halo,.tdm-map .tm-label{transition:all .3s cubic-bezier(.2,.8,.2,1);transform-box:fill-box;transform-origin:center}
.tdm-map .tm-ring{animation:tmPulse 2.6s ease-out infinite}
@keyframes tmPulse{0%{transform:scale(.7);opacity:1}100%{transform:scale(2.4);opacity:0}}
.tdm-map a.tm-city:hover .tm-core,.tdm-map a.tm-city:focus .tm-core,.tdm-map .tm-city.is-active .tm-core{fill:#fff;stroke:#50C7D7;transform:scale(1.5)}
.tdm-map a.tm-city:hover .tm-label,.tdm-map a.tm-city:focus .tm-label,.tdm-map .tm-city.is-active .tm-label{fill:#8BE6F0}
.tdm-map a.tm-city:hover .tm-halo,.tdm-map .tm-city.is-active .tm-halo{transform:scale(1.6)}
.tdm-map.has-active .tm-city:not(.is-active){opacity:.55}
.tdm-map.has-active .tm-city:not(.is-active):hover{opacity:1}
.tdm-map a.tm-city:focus{outline:none}
.tdm-map .tm-link{stroke-dasharray:6 8;animation:tmDash 1.6s linear infinite}
@keyframes tmDash{to{stroke-dashoffset:-28}}

/* ---------- Small screens ---------- */
@media (max-width:640px){
  .tdm-scene{height:420px;border-radius:18px}
  .tdm-scene--leadgen .sc-stage{left:50%;top:36%;transform:scale(.7) rotateX(var(--rx)) rotateZ(var(--rz))}
  .sc-card{width:auto;padding:9px 10px;gap:8px;right:auto}
  .sc-card b{font-size:12.5px}.sc-card small{font-size:10.5px}
  .sc-ico{width:28px;height:28px;border-radius:8px}.sc-ico svg{width:14px;height:14px}
  .sc-card.c1{left:4%;right:52%;top:auto;bottom:20%}
  .sc-card.c2{left:52%;right:4%;top:auto;bottom:20%}
  .sc-card.c3{left:4%;right:4%;top:auto;bottom:4%}
  .sc-lock{display:none}
  .sc-browser{left:4%;top:6%;width:66%;transform:perspective(900px) rotateY(calc(18deg - var(--p) * 10deg)) rotateX(5deg)}
  .sc-chart{right:4%;top:auto;bottom:16%;width:24%;height:40%}
  .sc-flow{left:4%;bottom:5%;gap:22px}
  .sc-flow span{padding:6px 10px;font-size:10px}
  .sc-cursor{left:calc(70% - var(--k3) * 24%);top:calc(80% - var(--k3) * 42%)}
  .tdm-scene--web .sc-stage{left:50%;top:calc(60% - var(--e) * 6%);transform:scale(.78) rotateX(var(--rx)) rotateZ(var(--rz))}
  .sc-labels{left:4%;top:5%;gap:6px}
  .sc-labels li{font-size:10px;padding:4px 8px 4px 6px}
  .sc-phone{right:4%;width:76px;height:148px;border-radius:16px;bottom:calc(-46% + var(--k) * 50%)}
  .sc-phone .p-hero{height:44px}.sc-phone .p-line{top:80px}.sc-phone .p-line.s{top:92px}.sc-phone .p-btn{top:108px;height:16px}
}
@media (prefers-reduced-motion:reduce){
  .tdm-scene *,.tdm-map *{animation:none!important}
}
