/* Silo North signal-motion layer.
   Additive only: the canonical layout and brand remain in concept.css. */

.hero{isolation:isolate}
.hero .wrap{position:relative;z-index:2}
.signal-field{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  z-index:0;
  pointer-events:none;
  opacity:.72;
}
.hero:before{z-index:1}

/* Paint-only motion layer. Never change the positioning mode of map children. */
.field-map{
  --mx:50%;
  --my:50%;
  isolation:isolate;
}
.field-map:after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:1;
  background:radial-gradient(circle at var(--mx) var(--my),rgba(224,90,51,.075),transparent 28%);
  opacity:.8;
  transition:opacity .25s ease;
}
.field-map:hover:after{opacity:1}
.field-map svg{z-index:1}

.paths path{
  stroke-dasharray:1 0;
  will-change:stroke-dashoffset,opacity;
}
.paths path.is-signal{
  stroke:var(--orange);
  stroke-width:1.85;
  stroke-dasharray:10 16;
  animation:signal-trace 1.65s linear infinite;
  opacity:.88;
}
.paths path.is-active{
  stroke:var(--orange);
  stroke-width:2.2;
  stroke-dasharray:12 12;
  animation:signal-trace 1.15s linear infinite;
}
@keyframes signal-trace{to{stroke-dashoffset:-52}}

.map-core{
  box-shadow:0 0 0 0 rgba(224,90,51,.18);
}
.field-map.is-live .map-core{
  animation:core-breathe 3.8s ease-in-out infinite;
}
@keyframes core-breathe{
  0%,100%{box-shadow:0 0 0 0 rgba(224,90,51,.08)}
  50%{box-shadow:0 0 0 16px rgba(224,90,51,0)}
}

.map-node{will-change:transform}
.map-node.is-signal:not(.is-active){
  border-color:#6c4a38;
  color:var(--paper);
}

.btn[data-magnetic]{
  will-change:transform;
  transition:transform .16s ease,background .2s ease,color .2s ease,border-color .2s ease;
}

.signal-strip span{
  position:relative;
  overflow:hidden;
}
.signal-strip span:after{
  content:"";
  position:absolute;
  left:-45%;
  bottom:0;
  width:32%;
  height:1px;
  background:linear-gradient(90deg,transparent,var(--orange),transparent);
  opacity:0;
}
.signal-strip.is-live span:after{
  animation:strip-scan 7s linear infinite;
  opacity:.45;
}
.signal-strip span:nth-child(2):after{animation-delay:1.1s}
.signal-strip span:nth-child(3):after{animation-delay:2.2s}
.signal-strip span:nth-child(4):after{animation-delay:3.3s}
.signal-strip span:nth-child(5):after{animation-delay:4.4s}
@keyframes strip-scan{0%{transform:translateX(0)}100%{transform:translateX(460%)}}

@media(prefers-reduced-motion:reduce){
  .signal-field{display:none}
  .paths path.is-signal,.paths path.is-active,.field-map.is-live .map-core,.signal-strip.is-live span:after{animation:none}
  .btn[data-magnetic]{transition:none}
}
