/* Alphorys V3 — territory system */
:root{
  --muted:#9b958c;
}
.system-svg-v3{
  overflow:visible;
  filter:drop-shadow(0 0 32px rgba(255,106,61,.035));
}
.system-svg-v3 .territory-grid path{
  fill:none;
  stroke:rgba(236,232,223,.045);
  stroke-width:1;
}
.system-svg-v3 .territory-land{
  fill:rgba(236,232,223,.009);
  stroke:rgba(236,232,223,.15);
  stroke-width:1.05;
  vector-effect:non-scaling-stroke;
}
.system-svg-v3 .territory-lux{
  fill:rgba(255,106,61,.014);
  stroke:rgba(255,106,61,.28);
}
.system-svg-v3 .territory-border{
  fill:none;
  stroke:rgba(236,232,223,.075);
  stroke-width:1;
  stroke-dasharray:3 7;
}
.system-svg-v3 .territory-names text{
  fill:rgba(210,204,194,.36);
  font-family:var(--sans);
  font-size:9px;
  letter-spacing:.28em;
}
.system-svg-v3 .geo-axis .geo-spine{
  fill:none;
  stroke:rgba(236,232,223,.12);
  stroke-width:1;
  stroke-dasharray:2 7;
}
.system-svg-v3 .geo-city circle{
  fill:#a49d94;
  opacity:.52;
}
.system-svg-v3 .geo-city text{
  fill:rgba(210,204,194,.33);
  font-family:var(--sans);
  font-size:7px;
  letter-spacing:.16em;
}
.system-svg-v3 .territory-radar circle,
.system-svg-v3 .territory-radar path{
  fill:none;
  stroke:rgba(236,232,223,.055);
  stroke-width:1;
}
.system-svg-v3 .territory-radar circle:nth-child(2){
  stroke-dasharray:2 9;
}
.system-svg-v3 .v3-system-paths path{
  fill:none;
  stroke:url(#v3-route);
  stroke-width:1.4;
  stroke-linecap:round;
  opacity:.8;
}
.system-svg-v3 .v3-system-paths .hot{
  stroke:#ff734a;
  stroke-width:1.8;
  filter:drop-shadow(0 0 5px rgba(255,106,61,.34));
}
.system-svg-v3 .v3-system-paths .faint{
  opacity:.68;
}
.system-svg-v3 .process-link{
  cursor:pointer;
  outline:none;
}
.system-svg-v3 .process-link .node-signal{
  fill:rgba(255,106,61,0);
  stroke:rgba(255,106,61,0);
  stroke-width:1;
  transition:fill .35s ease,stroke .35s ease,transform .35s ease;
  transform-box:fill-box;
  transform-origin:center;
}
.system-svg-v3 .process-link .node-ring{
  fill:#090909;
  stroke:#b9b2a8;
  stroke-width:1.25;
  transition:stroke .28s ease,filter .28s ease,transform .28s ease;
  transform-box:fill-box;
  transform-origin:center;
}
.system-svg-v3 .process-link .node-core{
  fill:#e4ded4;
  stroke:none;
  transition:fill .28s ease;
}
.system-svg-v3 .process-link .label-index{
  fill:#777169;
  font-family:var(--sans);
  font-size:8px;
  letter-spacing:.18em;
}
.system-svg-v3 .process-link .label-name{
  fill:#c9c2b8;
  font-family:var(--serif);
  font-size:18px;
  transition:fill .28s ease,transform .28s ease;
}
.system-svg-v3 .process-link:hover .node-signal,
.system-svg-v3 .process-link:focus .node-signal{
  fill:rgba(255,106,61,.055);
  stroke:rgba(255,106,61,.18);
  transform:scale(1.22);
}
.system-svg-v3 .process-link:hover .node-ring,
.system-svg-v3 .process-link:focus .node-ring,
.system-svg-v3 .node.is-active .node-ring{
  stroke:#ff7b50;
  filter:drop-shadow(0 0 7px rgba(255,106,61,.62));
  transform:scale(1.08);
}
.system-svg-v3 .process-link:hover .node-core,
.system-svg-v3 .process-link:focus .node-core,
.system-svg-v3 .node.is-active .node-core{
  fill:#ff9975;
}
.system-svg-v3 .process-link:hover .label-name,
.system-svg-v3 .process-link:focus .label-name{
  fill:#f0ebe3;
}
.system-svg-v3 .process-link-growth .node-ring{
  stroke:#ff7b50;
}
.system-svg-v3 .growth-field{
  opacity:.44;
  transform-box:fill-box;
  transform-origin:center;
  animation:v3-growth 3.8s ease-in-out infinite;
}
.system-svg-v3 .halo{
  fill:none;
  stroke:#ff6a3d;
  opacity:.24;
}
.system-svg-v3 .territory-signals .signal-dash{
  fill:none;
  stroke:rgba(255,106,61,.19);
  stroke-width:1;
  stroke-dasharray:2 7;
}
.system-svg-v3 .territory-signals circle{
  fill:#ff7a52;
  opacity:.52;
}
.system-svg-v3 .traveller{
  fill:#ff8a63;
}
.system-wrap .system-meta{
  top:6%;
  right:2%;
  color:#878178;
}
.system-wrap .system-meta span:first-child{
  color:#b2aba1;
}
.system-wrap .system-words{
  color:#898279;
}
.v3-map-caption{
  position:absolute;
  left:4%;
  bottom:6%;
  z-index:4;
  display:flex;
  align-items:center;
  gap:12px;
  color:#716b63;
  font-size:.54rem;
  letter-spacing:.18em;
  pointer-events:none;
}
.v3-map-caption i{
  width:34px;
  height:1px;
  background:rgba(255,106,61,.6);
}
@keyframes v3-growth{
  0%,100%{opacity:.22;transform:scale(.88)}
  50%{opacity:.54;transform:scale(1.05)}
}
@media(max-width:680px){
  body.mobile-cinematic .system-wrap{
    min-height:84svh;
    height:84svh;
  }
  body.mobile-cinematic .system-svg-v3{
    width:129%;
    transform-origin:51% 50%;
  }
  .system-svg-v3 .territory-names text{font-size:8px}
  .system-svg-v3 .geo-city text{font-size:6.5px}
  .system-svg-v3 .process-link .label-name{font-size:17px}
  .system-svg-v3 .process-link .label-index{font-size:7px}
  .v3-map-caption{
    left:20px;
    bottom:22px;
    max-width:230px;
    font-size:.48rem;
    line-height:1.5;
  }
  body.mobile-cinematic .system-meta{
    top:5%;
    right:20px;
  }
  body.mobile-cinematic .system-words{
    right:20px;
    bottom:6%;
  }
}
@media(prefers-reduced-motion:reduce){
  .system-svg-v3 .growth-field{animation:none!important}
}
/* V3 mobile map refinement */
@media(max-width:680px){
  body.mobile-cinematic .system-wrap{
    min-height:78svh;
    height:78svh;
  }
  body.mobile-cinematic .system-svg-v3{
    width:auto;
    height:84%;
    max-width:none;
    max-height:none;
    transform-origin:50% 50%;
  }
  .system-svg-v3 .process-link .label-name{
    font-size:21px;
    paint-order:stroke;
    stroke:#090909;
    stroke-width:3px;
    stroke-linejoin:round;
  }
  .system-svg-v3 .process-link .label-index{
    font-size:8.5px;
    paint-order:stroke;
    stroke:#090909;
    stroke-width:2px;
  }
  .system-svg-v3 .geo-city text{
    font-size:7.4px;
    fill:rgba(220,214,204,.42);
  }
  .system-svg-v3 .territory-names text{
    font-size:8.5px;
    fill:rgba(220,214,204,.42);
  }
  body.mobile-cinematic .system-meta{
    top:4%;
  }
  body.mobile-cinematic .system-words{
    bottom:4%;
  }
  .v3-map-caption{
    bottom:18px;
    max-width:210px;
  }
}

@media(max-width:680px){
  .system-svg-v3 .process-link .label-name{display:block!important}
}
