/* Existing geometry changes state; its final composition never changes. */
.group-section-morph{display:none;pointer-events:none}
@media screen and (min-width:1100px) and (prefers-reduced-motion:no-preference){
  .group-motion .group-section-morph{display:block;fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
  .group-motion .group-morph-source{visibility:hidden}
  .group-inner.group-motion .group-inner-territory{transform-box:view-box;transform-origin:0 0}
}
/* ── Page transitions ─────────────────────────────────────────────
   The header holds still. The next page arrives through the brand's one
   curve: a circle that opens from the link you clicked, its rim a 1px gold
   line, and settles once it has passed the viewport. Untraced arrivals
   (back/forward, a typed URL) get a quiet crossfade instead.
   Cross-document View Transitions; no JS on the navigation path. */
@property --pt-r{syntax:'<length>';inherits:true;initial-value:0px}
@view-transition{navigation:auto}
.group-pt-veil{position:fixed;inset:0;z-index:61;pointer-events:none;background:transparent}
@media screen and (prefers-reduced-motion:no-preference){
  .hdr{view-transition-name:group-header}
  .group-home main,.group-inner main{view-transition-name:group-content}
  .group-pt-veil{view-transition-name:group-veil}
  ::view-transition-old(root),::view-transition-new(root){animation:none}
  ::view-transition-group(group-header){animation:none}
  ::view-transition-old(group-header){display:none}
  ::view-transition-new(group-header){animation:none}
  /* quiet default */
  ::view-transition-old(group-content){animation:group-page-out 380ms ease-out both}
  ::view-transition-new(group-content){animation:group-page-in 760ms cubic-bezier(.22,1,.36,1) both}
  /* the circle */
  html.group-pt-iris::view-transition{animation:group-iris 1.15s linear both}
  html.group-pt-iris::view-transition-image-pair(group-content){isolation:auto}
  html.group-pt-iris::view-transition-old(group-content){animation:none;mix-blend-mode:normal}
  html.group-pt-iris::view-transition-new(group-content){animation:none;mix-blend-mode:normal;
    background:var(--cream);clip-path:circle(var(--pt-r) at var(--pt-cx) var(--pt-cy))}
  html.group-pt-iris::view-transition-group(group-veil){animation:none}
  html.group-pt-iris::view-transition-new(group-veil){animation:none;background:var(--gold);opacity:.72;
    -webkit-mask-image:radial-gradient(circle at var(--pt-x) var(--pt-y),transparent calc(var(--pt-r) - 1.4px),#000 calc(var(--pt-r) - .6px),#000 calc(var(--pt-r) + .6px),transparent calc(var(--pt-r) + 1.4px));
    mask-image:radial-gradient(circle at var(--pt-x) var(--pt-y),transparent calc(var(--pt-r) - 1.4px),#000 calc(var(--pt-r) - .6px),#000 calc(var(--pt-r) + .6px),transparent calc(var(--pt-r) + 1.4px))}
}
@keyframes group-page-out{to{opacity:0;transform:translateY(-10px)}}
@keyframes group-page-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
/* Team → biography: the existing portrait frame and its identity carry across.
   No layout changes; the browser interpolates the two measured rectangles. */
@media screen and (min-width:1100px) and (prefers-reduced-motion:no-preference){
  html.group-pt-person .bio [data-rise]{opacity:1!important;transform:none!important;translate:none!important;animation:none!important;transition:none!important}
  html.group-pt-person::view-transition-group(group-person-portrait),
  html.group-pt-person::view-transition-group(group-person-name),
  html.group-pt-person::view-transition-group(group-person-role){
    animation-duration:900ms;animation-timing-function:cubic-bezier(.22,1,.36,1);z-index:2}
  html.group-pt-person::view-transition-group(group-header){z-index:3}
  html.group-pt-person::view-transition-old(group-content){animation:group-person-out 280ms ease-out both}
  html.group-pt-person::view-transition-new(group-content){animation:group-person-in 550ms 160ms ease-out both}
  html.group-pt-person::view-transition-old(group-person-portrait),
  html.group-pt-person::view-transition-new(group-person-portrait){height:100%;width:100%;object-fit:cover;object-position:center top;mix-blend-mode:normal;animation-duration:900ms}
  html.group-pt-person::view-transition-old(group-person-name),
  html.group-pt-person::view-transition-old(group-person-role){animation:group-person-out 220ms ease-out both}
  html.group-pt-person::view-transition-new(group-person-name),
  html.group-pt-person::view-transition-new(group-person-role){animation:group-person-in 500ms 100ms ease-out both}
}
@keyframes group-person-out{to{opacity:0}}
@keyframes group-person-in{from{opacity:0}to{opacity:1}}
/* anticipation: the circle is first a period at the link, then it opens */
@keyframes group-iris{
  0%{--pt-r:0px;animation-timing-function:cubic-bezier(.22,1,.36,1)}
  7%{--pt-r:6px;animation-timing-function:linear}
  15%{--pt-r:6px;animation-timing-function:cubic-bezier(.7,0,.2,1)}
  100%{--pt-r:var(--pt-rmax)}
}
@media(prefers-reduced-motion:reduce),print{
  .group-section-morph{display:none!important}
  .group-morph-source{visibility:visible!important}
  .group-inner-territory{transform:none!important}
  ::view-transition-old(*),::view-transition-new(*){animation:none!important}
  .group-pt-veil{display:none!important}
}
