/* Standalone application-map prototype v2 integrated without geometry changes. */
.application-map-wrap-v1{
  position:relative;
  width:100%;
  height:620px;
  overflow:hidden;
}
.application-map-v1{
  --map-bg:#0a2119;
  --map-ink:#f1f4f2;
  --map-muted:#73877d;
  --map-route:#486456;
  --map-accent:#d3ea68;
  width:1440px;
  height:620px;
  position:absolute;
  left:50%;
  top:0;
  margin-left:-720px;
  overflow:hidden;
  background:radial-gradient(ellipse at 52% 47%,rgba(112,151,100,.07) 0%,rgba(17,49,36,.03) 45%,rgba(10,33,25,0) 73%);
  color:var(--map-ink);
  transform-origin:top center;
}
.application-map-v1 *{box-sizing:border-box}
.application-map-v1__eyebrow{
  position:absolute;
  top:48px;
  font:500 11px/1 ui-monospace,SFMono-Regular,Menlo,monospace;
  letter-spacing:.24em;
  color:#82988d;
}
.application-map-v1__eyebrow--left{left:86px}
.application-map-v1__eyebrow--right{left:1086px}
.application-map-v1__left-list,.application-map-v1__right-list{
  position:absolute;
  top:94px;
  height:456px;
  display:grid;
  grid-template-rows:repeat(4,114px);
}
.application-map-v1__left-list{left:86px;width:300px}
.application-map-v1__right-list{left:1086px;width:280px}
.application-map-v1__source,.application-map-v1__dest{
  position:relative;
  display:flex;
  align-items:center;
  min-height:114px;
}
.application-map-v1__source{
  justify-content:flex-end;
  padding:0 28px 0 0;
  text-align:left;
  border:0;
  background:none;
  color:inherit;
  font:inherit;
  width:100%;
  cursor:pointer;
}
.application-map-v1__source-copy{
  width:250px;
  opacity:.50;
  transition:opacity .42s ease,transform .42s cubic-bezier(.2,.75,.2,1);
}
.application-map-v1__source.is-active .application-map-v1__source-copy{opacity:1;transform:translateX(2px)}
.application-map-v1__num{
  display:block;
  margin-bottom:9px;
  font:500 10px/1 ui-monospace,SFMono-Regular,Menlo,monospace;
  letter-spacing:.10em;
  color:#74897e;
}
.application-map-v1__source strong{
  display:block;
  font-size:21px;
  line-height:1.04;
  letter-spacing:-.035em;
  font-weight:640;
  color:#d8dfdb;
}
.application-map-v1__source-node,.application-map-v1__dest-node{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:9px;
  height:9px;
  border-radius:50%;
  background:#52695d;
  opacity:.74;
  transition:background .42s ease,opacity .42s ease,box-shadow .42s ease,transform .42s cubic-bezier(.2,.75,.2,1);
}
.application-map-v1__source-node{right:-4px}
.application-map-v1__dest-node{left:-4px}
.application-map-v1__source.is-active .application-map-v1__source-node,
.application-map-v1__dest.is-active .application-map-v1__dest-node{
  background:var(--map-accent);
  opacity:1;
  box-shadow:0 0 0 12px rgba(211,234,104,.045),0 0 17px rgba(211,234,104,.16);
}
.application-map-v1__dest{
  padding-left:28px;
  color:inherit;
  text-decoration:none;
  cursor:pointer;
}
.application-map-v1__dest-copy{
  opacity:.50;
  transition:opacity .42s ease,transform .42s cubic-bezier(.2,.75,.2,1);
}
.application-map-v1__dest.is-active .application-map-v1__dest-copy{opacity:1;transform:translateX(2px)}
.application-map-v1__dest strong{
  display:block;
  font-size:20px;
  line-height:1.05;
  letter-spacing:-.034em;
  font-weight:650;
  color:#eff3f0;
}
.application-map-v1__dest small{
  display:block;
  margin-top:8px;
  font-size:12px;
  line-height:1.2;
  color:#81958a;
}
.application-map-v1__routes{
  position:absolute;
  left:386px;
  top:94px;
  width:700px;
  height:456px;
  overflow:visible;
}
.application-map-v1__route{
  fill:none;
  stroke:var(--map-route);
  stroke-width:1.15;
  stroke-linecap:round;
  opacity:.20;
  vector-effect:non-scaling-stroke;
  transition:opacity .5s ease,stroke-width .5s ease,stroke .5s ease,filter .5s ease;
}
.application-map-v1__route.active{
  stroke:url(#applicationMapActiveRouteV1);
  stroke-width:2.05;
  opacity:.98;
  filter:url(#applicationMapSoftGlowV1);
}
.application-map-v1__note{
  position:absolute;
  right:80px;
  bottom:34px;
  color:#667d71;
  font:500 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace;
  letter-spacing:.11em;
}
.application-map-v1[data-paused="true"] .application-map-v1__note:after{content:" · PAUSED"}
@media(prefers-reduced-motion:reduce){
  .application-map-v1__route.route-drawing{animation:none!important}
  .application-map-v1__source-copy,.application-map-v1__dest-copy,.application-map-v1__source-node,.application-map-v1__dest-node,.application-map-v1__route{transition:none!important}
}

/* integration safety */
.application-map-wrap-v1,.application-map-v1{overflow:visible!important}


/* Motion v6: explicit storytelling phases + visible ambient breathing. */
.application-map-v1{
  isolation:isolate;
}
.application-map-v1::before{
  content:"";
  position:absolute;
  z-index:0;
  left:25%;
  right:9%;
  top:11%;
  bottom:8%;
  pointer-events:none;
  background:radial-gradient(ellipse at 52% 48%,rgba(140,181,111,.15) 0%,rgba(71,118,80,.075) 40%,rgba(10,33,25,0) 73%);
  filter:blur(26px);
  transform-origin:52% 48%;
  animation:applicationMapAmbientBreathV6 8.8s ease-in-out infinite;
}
.application-map-v1__eyebrow,
.application-map-v1__left-list,
.application-map-v1__routes,
.application-map-v1__right-list,
.application-map-v1__note{z-index:2}

.application-map-v1__route.route-drawing{
  animation:applicationMapRouteTravelV6 1040ms linear both;
}
.application-map-v1__source-node::after,
.application-map-v1__dest-node::after{
  content:"";
  position:absolute;
  left:50%;top:50%;
  width:100%;height:100%;
  border-radius:50%;
  background:rgba(211,234,104,.22);
  transform:translate(-50%,-50%) scale(1);
  opacity:0;
  pointer-events:none;
}
.application-map-v1__source.is-pulsing .application-map-v1__source-node::after{
  animation:applicationMapSourceBloomV6 900ms cubic-bezier(.18,.72,.2,1) both;
}
.application-map-v1__dest.is-arriving .application-map-v1__dest-node::after{
  animation:applicationMapDestBloomV6 520ms cubic-bezier(.2,.7,.2,1) both;
}
.application-map-v1[data-phase="hold"] .application-map-v1__source.is-active .application-map-v1__source-node,
.application-map-v1[data-phase="hold"] .application-map-v1__dest.is-active .application-map-v1__dest-node{
  animation:applicationMapNodeBreathV6 3.2s ease-in-out infinite;
}
.application-map-v1.is-story-fading .application-map-v1__source-copy,
.application-map-v1.is-story-fading .application-map-v1__dest-copy,
.application-map-v1.is-story-fading .application-map-v1__source-node,
.application-map-v1.is-story-fading .application-map-v1__dest-node,
.application-map-v1.is-story-fading .application-map-v1__route.active{
  opacity:.25!important;
  transition:opacity .52s ease!important;
}
.application-map-v1.is-hard-reset .application-map-v1__source-copy,
.application-map-v1.is-hard-reset .application-map-v1__dest-copy,
.application-map-v1.is-hard-reset .application-map-v1__source-node,
.application-map-v1.is-hard-reset .application-map-v1__dest-node,
.application-map-v1.is-hard-reset .application-map-v1__route{
  transition:none!important;
  animation:none!important;
}

@keyframes applicationMapAmbientBreathV6{
  0%,100%{opacity:.48;transform:scale(.975) translate3d(-.7%,.2%,0)}
  50%{opacity:1;transform:scale(1.035) translate3d(.8%,-.6%,0)}
}
@keyframes applicationMapRouteTravelV6{
  0%{stroke-dashoffset:var(--route-length);opacity:.12;filter:none}
  18%{opacity:.72}
  100%{stroke-dashoffset:0;opacity:.98;filter:url(#applicationMapSoftGlowV1)}
}
@keyframes applicationMapSourceBloomV6{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.8)}
  25%{opacity:.48}
  100%{opacity:0;transform:translate(-50%,-50%) scale(5)}
}
@keyframes applicationMapDestBloomV6{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.85)}
  25%{opacity:.46}
  100%{opacity:0;transform:translate(-50%,-50%) scale(4.4)}
}
@keyframes applicationMapNodeBreathV6{
  0%,100%{box-shadow:0 0 0 10px rgba(211,234,104,.035),0 0 15px rgba(211,234,104,.13)}
  50%{box-shadow:0 0 0 14px rgba(211,234,104,.06),0 0 23px rgba(211,234,104,.21)}
}

@media(prefers-reduced-motion:reduce){
  .application-map-v1::before,
  .application-map-v1__route.route-drawing,
  .application-map-v1__source.is-pulsing .application-map-v1__source-node::after,
  .application-map-v1__dest.is-arriving .application-map-v1__dest-node::after,
  .application-map-v1[data-phase="hold"] .application-map-v1__source.is-active .application-map-v1__source-node,
  .application-map-v1[data-phase="hold"] .application-map-v1__dest.is-active .application-map-v1__dest-node{animation:none!important}
}


/* Motion v8: continuous handoff. Old state fades while new state enters; no neutral reset frame. */
.application-map-v1__source.is-leaving .application-map-v1__source-copy,
.application-map-v1__dest.is-leaving .application-map-v1__dest-copy{
  opacity:.28!important;
  transform:none!important;
  transition:opacity .76s ease,transform .76s ease!important;
}
.application-map-v1__source.is-leaving .application-map-v1__source-node,
.application-map-v1__dest.is-leaving .application-map-v1__dest-node{
  background:#52695d!important;
  opacity:.52!important;
  box-shadow:none!important;
  transition:background .76s ease,opacity .76s ease,box-shadow .76s ease!important;
}
.application-map-v1__route.is-leaving{
  opacity:.13!important;
  stroke-width:1.15!important;
  filter:none!important;
  transition:opacity .76s ease,stroke-width .76s ease,filter .76s ease!important;
}
.application-map-v1[data-phase="arrival"] .application-map-v1__dest.is-active .application-map-v1__dest-copy{
  transition:opacity .30s ease-out,transform .30s ease-out!important;
}
.application-map-v1[data-phase="arrival"] .application-map-v1__dest.is-active .application-map-v1__dest-node{
  transition:background .30s ease-out,opacity .30s ease-out,box-shadow .30s ease-out!important;
}

/* Motion v11: route draw lifecycle fix.
   Once route-drawing is removed, active paths are ordinary solid SVG strokes.
   Dash values are also settled explicitly in JS; this rule is a rendering guard. */
.application-map-v1__route.active:not(.route-drawing){
  stroke-dasharray:none!important;
  stroke-dashoffset:0!important;
}

/* Motion v12: route-synchronized destination response.
   Each form is activated by its own incoming route, not a global arrival timer. */

/* Motion v14: perceptual synchronization.
   Route travel is linear so time corresponds to visible progress.
   A destination begins its 300 ms response exactly 300 ms before its own route
   lands, reaching full emphasis at line arrival. */


/* Motion v15: shared destination handoff.
   A form used by consecutive applications no longer stays visually frozen.
   It dips modestly, then the incoming route re-triggers its normal arrival. */
.application-map-v1__dest.is-active.is-shared-handoff{
  opacity:.72!important;
  transform:scale(.992)!important;
  transition:opacity .20s ease-out,transform .20s ease-out!important;
}
.application-map-v1__dest.is-active.is-shared-handoff .application-map-v1__dest-node{
  opacity:.72!important;
  transform:scale(.90)!important;
  box-shadow:
    0 0 0 6px rgba(198,225,95,.025),
    0 0 9px rgba(198,225,95,.07)!important;
  transition:
    opacity .20s ease-out,
    transform .20s ease-out,
    box-shadow .20s ease-out!important;
}
.application-map-v1__dest.is-active.is-shared-handoff strong{
  opacity:.76!important;
  transition:opacity .20s ease-out!important;
}
.application-map-v1__dest.is-active.is-shared-handoff small{
  opacity:.68!important;
  transition:opacity .20s ease-out!important;
}
