/* Siegel Financial v507 — finite motion and cleaner responsive handoffs. */

/* Budget: one deliberate pass, once per page load. */
.budget-building-flow.is-playing .budget-building-flow-track::after{
  animation:budget-building-line-charge 2.9s cubic-bezier(.22,1,.36,1) 1 both;
}
.budget-building-flow.is-playing .budget-building-flow-track::before{
  animation:budget-building-particle 2.18s cubic-bezier(.22,1,.36,1) .18s 1 both;
}
.budget-building-flow.is-playing .budget-building-flow-track i{
  display:none!important;
  animation:none!important;
}
.budget-building-flow.is-playing .budget-building-flow-track b,
.budget-building-flow.is-playing .budget-building-flow-label.destination{
  animation-duration:2.9s;
  animation-iteration-count:1;
}

/* Net Worth: the longer-view bridge is the entry anchor, with the chart
   immediately following so both context and motion share the first viewport. */
.networth-page .nw-projection-bridge{
  scroll-margin-top:clamp(72px,10vh,108px);
}
@media(max-width:620px){
  .networth-page .nw-projection-bridge{
    margin-bottom:9px;
  }
}

/* Projection: the moving value converges on the permanent retirement callout.
   The inner group can scale without overriding its SVG positioning transform. */
.projection-playback-label-content{
  transform-box:fill-box;
  transform-origin:center;
  will-change:opacity,transform;
}
.projection-chart-shell.is-absorbing-projection .projection-annotations{
  opacity:1;
  transition-duration:.34s;
  transition-timing-function:cubic-bezier(.2,.75,.2,1);
}
.projection-retirement-callout.projection-is-receiving{
  transform-box:fill-box;
  transform-origin:center;
  animation:projection-retirement-receive .42s cubic-bezier(.18,.82,.2,1) both;
}
.projection-retirement-callout.projection-is-receiving rect{
  stroke-width:1.45;
  filter:drop-shadow(0 0 8px rgba(240,210,124,.33));
}
.projection-retirement-callout.projection-is-receiving .projection-endpoint{
  filter:drop-shadow(0 0 7px rgba(242,212,127,.82));
}
@keyframes projection-retirement-receive{
  0%{filter:brightness(.94);transform:scale(.992)}
  62%{filter:brightness(1.16);transform:scale(1.012)}
  100%{filter:none;transform:none}
}

/* The supporting category values should inform, not compete with the projected
   net-worth answer. Keep both categories side by side even on narrow phones. */
.projection-page-wrap #projection-age-mix{
  gap:clamp(20px,3vw,38px);
}
.projection-page-wrap #projection-age-mix > span{
  gap:4px;
}
.projection-page-wrap #projection-age-mix small{
  font-size:8.7px;
  letter-spacing:.085em;
}
.projection-page-wrap #projection-age-mix b{
  font-size:clamp(19px,1.75vw,23px);
  letter-spacing:-.018em;
}
@media(max-width:700px){
  .projection-page-wrap #projection-age-mix{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
  }
  .projection-page-wrap #projection-age-mix small{
    font-size:8.1px;
    line-height:1.25;
  }
  .projection-page-wrap #projection-age-mix b{
    font-size:clamp(17px,5.3vw,20px);
  }
}
@media(max-width:350px){
  .projection-page-wrap #projection-age-mix{
    gap:7px;
  }
  .projection-page-wrap #projection-age-mix small{
    font-size:7.5px;
    letter-spacing:.065em;
  }
  .projection-page-wrap #projection-age-mix b{
    font-size:clamp(15.5px,5vw,17px);
  }
}

@media(prefers-reduced-motion:reduce){
  .budget-building-flow.is-playing .budget-building-flow-track::after,
  .budget-building-flow.is-playing .budget-building-flow-track::before,
  .budget-building-flow.is-playing .budget-building-flow-track b,
  .budget-building-flow.is-playing .budget-building-flow-label.destination,
  .projection-retirement-callout.projection-is-receiving{
    animation:none!important;
  }
  .projection-playback-label-content,
  .projection-chart-shell .projection-annotations{
    transition:none!important;
  }
}
