/* A temporary surface reading of the supplied render, not an internal model. */
@property --twin-read { syntax:"<percentage>"; inherits:true; initial-value:14%; }
.twin-scan { position:absolute; inset:0; z-index:6; pointer-events:none; visibility:hidden; }
.is-twin-scanning .twin-scan { visibility:visible; }
.twin-surface { position:absolute; inset:0; clip-path:url(#saathee-silhouette); }
.twin-reading { position:absolute; inset:0; mask-image:linear-gradient(to bottom,#000 calc(var(--twin-read) - 1%),transparent var(--twin-read)); }
.twin-reading img { position:absolute; inset:0; width:100%; height:100%; object-fit:contain; filter:grayscale(1) brightness(.28) contrast(1.25); }
.twin-reading svg,.twin-anchors { position:absolute; inset:0; width:100%; height:100%; overflow:visible; }
.twin-reading svg { fill:none; stroke:#b9dae2; stroke-width:1; }
.twin-reading svg path { vector-effect:non-scaling-stroke; }
.twin-light { position:absolute; inset:0; background:linear-gradient(to bottom,transparent calc(var(--twin-read) - 5%),#d8edf41a calc(var(--twin-read) - 1%),transparent calc(var(--twin-read) + 3%)); }
.twin-line { position:absolute; left:0; right:0; top:var(--twin-read); height:1px; background:#d1e7efb3; }
.twin-anchors g { opacity:0; }
.twin-anchors path { fill:none; stroke:#97bcc8; stroke-width:.6; vector-effect:non-scaling-stroke; }
.twin-anchors circle { fill:#d0e6ed; }
.twin-anchors text { fill:#b6ccd5; font:20px monospace; letter-spacing:1px; }
.is-twin-scanning .studio-hotspots { opacity:0; pointer-events:none; }
.studio-stage.is-lighting:not(.is-inspecting):not(.is-twin-scanning) .studio-product__detail { opacity:.12; mask-image:radial-gradient(ellipse 14% 18% at var(--light-x,50%) var(--light-y,45%),#000,transparent); }
.is-twin-scanning .studio-product__detail,.is-twin-scanning .lab-surface-light { opacity:0; }
.is-twin-scanning .lab-outline { opacity:0; }
.lab-object .twin-scan { z-index:7; }
.twin-mobile-legend { display:none; }
.is-twin-scanning .lab-stage-hint { opacity:0; }
.studio-hero__footer .s-metrics > div:last-child { position:relative; }
.studio-hero__footer .has-scan-signal::after { content:""; position:absolute; bottom:-8px; left:0; width:65%; height:1px; background:linear-gradient(90deg,transparent,#b3d8e2,transparent); transform-origin:left; animation:twin-signal-path 1.8s ease-out both; }
.has-scan-signal { animation:twin-connected 1.8s ease-out both; }
.connection-life__label .has-scan-signal { animation:twin-app-pulse 1.8s ease-out both; }
@keyframes twin-app-pulse { 0%,100% { opacity:1; transform:scale(1); } 30% { opacity:.35; } 55% { opacity:1; transform:scale(1.25); } }
@keyframes twin-connected { 0%,100% { color:inherit; } 40% { color:#c1e2ea; } }
@keyframes twin-signal-path { 0% { opacity:0; transform:scaleX(0); } 45% { opacity:.6; transform:scaleX(1); } 100% { opacity:0; transform:scaleX(1); } }
@media(max-width:767px) {
  .twin-anchors text { font-size:23px; letter-spacing:0; }
  .saathi-lab .twin-anchors text { display:none; }
  .is-twin-scanning .twin-mobile-legend { position:absolute; z-index:8; left:20px; right:20px; bottom:15px; display:flex; justify-content:space-between; gap:8px; color:#b6ccd5; font:7px/1.5 monospace; pointer-events:none; }
}
@media(prefers-reduced-motion:reduce) { .twin-scan { display:none; }.has-scan-signal,.has-scan-signal::after { animation:none; } }
