/* Motion tokens and decorative feedback. See premier-motion.js for references.
   No opacity:0 staging: script/network failure always leaves all content visible. */
:root{--pm-ease:cubic-bezier(.22,.8,.2,1);--pm-quick:170ms;--pm-shift:280ms}
.premier-motion-ready .pm-tabs{position:relative}
.premier-motion-ready .pm-tab-indicator{position:absolute;left:0;bottom:0;height:2px;width:1px;display:block;background:var(--p-accent);border-radius:2px;transform-origin:0 50%;pointer-events:none;z-index:1}
.premier-motion-ready .pm-tab-indicator[hidden]{display:none}
.premier-motion-ready .reader-tabs.pm-tabs>button[aria-selected=true]{border-bottom-color:transparent}
.premier-motion-ready .connection-tabs.pm-tabs>button[aria-selected=true]{border-bottom-color:transparent}
.premier-motion-ready .decision-tabs.pm-tabs>button[aria-selected=true]{border-bottom-color:transparent}
.premier-motion-ready .pm-tabs>.p-navlink[aria-current=page]::after{display:none}
.premier-motion-ready :is(.focus-body,.reader-body,.desk-dialog[open],.command-dialog[open]){animation:none}
@media(prefers-reduced-motion:no-preference){
  .premier-motion-ready :is(.p-button,.p-icon-btn,.text-button,.desktop-app-download,.ai-shell button,.connection-intro-tools>a){transition:background-color var(--pm-quick) ease,border-color var(--pm-quick) ease,color var(--pm-quick) ease,box-shadow var(--pm-quick) ease,scale var(--pm-quick) var(--pm-ease)}
  .premier-motion-ready :is(.p-button,.p-icon-btn,.desktop-app-download,.ai-shell button):active:not(:disabled){scale:.985}
  .premier-motion-ready :is(.studio-stock,.evidence-entry,.discovery-card,.connection){transition:background-color var(--pm-quick) ease,border-color var(--pm-quick) ease,box-shadow var(--pm-shift) var(--pm-ease)}
  .premier-motion-ready :is(.evidence-entry,.studio-full-report,.discovery-teaser,.connection-hub-heading>a) .p-icon:last-child{transition:translate var(--pm-quick) var(--pm-ease)}
  .premier-motion-ready :is(.evidence-entry,.studio-full-report,.discovery-teaser,.connection-hub-heading>a):hover .p-icon:last-child{translate:2px 0}
  .premier-motion-ready :is(.report-section,.connection-help,.role-details,.desktop-manual)>summary .p-icon{transition:rotate var(--pm-shift) var(--pm-ease),transform var(--pm-shift) var(--pm-ease)}
  .premier-motion-ready :is(#roles-form,.desktop-app-form,#connection-form) :is(input,select){transition:border-color var(--pm-quick) ease,background-color var(--pm-quick) ease,box-shadow var(--pm-quick) ease}
  .premier-motion-ready :is(#roles-form,.desktop-app-form,#connection-form) :is(input,select):focus-visible{box-shadow:0 0 0 3px var(--p-accent-soft)}
}
@media(prefers-reduced-motion:reduce){
  .premier-motion-ready :is(.focus-body,.reader-body,.desk-dialog,.command-dialog,.desk-skeleton,.skeleton,.chart-skeleton,.discovery-nav-dot){animation:none!important}
  .premier-motion-ready :is(.p-button,.p-icon-btn,.text-button,.desktop-app-download,.ai-shell button,.studio-stock,.evidence-entry,.discovery-card,.connection,.pm-tab-indicator){transition:none!important;scale:none!important}
  .premier-motion-ready :is(.evidence-entry,.studio-full-report,.discovery-teaser,.connection-hub-heading>a) .p-icon:last-child{translate:none!important;transition:none!important}
}
.premier-motion-reduced .pm-tab-indicator{transition:none!important}

/* The moving contours are decorative: no market values or live-data signals. */
.research-app .desk-welcome{position:relative;isolation:isolate;overflow:hidden;min-height:132px;padding:24px 28px;margin-bottom:20px;border-radius:var(--md-card-radius);background:var(--md-card-bg);gap:20px;border:var(--md-card-border)}
.research-app .desk-welcome>div:not(.pm-welcome-art){position:relative;z-index:1}
.research-app .desk-welcome h1{font-size:clamp(25px,2.25vw,36px);line-height:1.3;letter-spacing:-1.35px}
.research-app .desk-welcome h1 span{color:var(--p-accent);font-weight:550}
.research-app .desk-welcome .welcome-copy{display:block;font-size:12px;color:var(--p-muted);line-height:1.6;margin-top:9px;word-break:keep-all;text-wrap:pretty}
.desk-welcome::before{content:'';position:absolute;width:480px;height:260px;right:5%;top:-80px;pointer-events:none;background:radial-gradient(ellipse,color-mix(in srgb,var(--p-text) 6%,transparent),transparent 68%);z-index:0}
.pm-welcome-art{position:absolute;inset:0 120px 0 auto;width:min(42%,460px);pointer-events:none;z-index:0;opacity:.85;mask-image:linear-gradient(90deg,transparent,#000 24%,#000 78%,transparent)}
.pm-welcome-art svg{display:block;width:100%;height:100%;overflow:visible}
.pm-contours{stroke:var(--p-accent);stroke-width:1;opacity:.2}
.pm-flow{stroke:var(--p-accent);stroke-width:1.6;stroke-linecap:round;stroke-dasharray:12 88;stroke-dashoffset:12;opacity:.65}
.premier-motion-ready .pm-motion-toggle{display:inline-flex;justify-content:center;align-items:center;width:35px;min-width:35px;padding:8px;color:var(--p-muted);flex-shrink:0}
.pm-motion-toggle{display:none}
.pm-motion-toggle[aria-pressed=true]{color:var(--p-accent)}
.pm-motion-symbol{position:relative;display:block;width:16px;height:16px}
.pm-motion-symbol::before,.pm-motion-symbol::after{content:'';position:absolute;top:2px;bottom:2px;width:3px;border-radius:1px;background:currentColor}
.pm-motion-symbol::before{left:3px}.pm-motion-symbol::after{right:3px}
.pm-motion-toggle[aria-pressed=false] .pm-motion-symbol::before{top:2px;left:5px;width:0;height:0;background:none;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:9px solid currentColor;border-radius:0}
.pm-motion-toggle[aria-pressed=false] .pm-motion-symbol::after{display:none}
.premier-motion-ready :is(.studio-stock,.connection,.service-offer){isolation:isolate}
.premier-motion-ready :is(.studio-stock,.connection,.service-offer)::before{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;opacity:0;background:radial-gradient(240px circle at var(--pm-pointer-x,50%) var(--pm-pointer-y,50%),color-mix(in srgb,var(--p-text) 6%,transparent),transparent 72%);transition:opacity .3s ease}
.premier-motion-ready :is(.connection,.service-offer){position:relative}
.premier-motion-ready .auth-layout{position:relative;isolation:isolate}
.premier-motion-ready .auth-layout::before{content:'';position:absolute;left:-10%;top:9%;width:60%;height:60%;pointer-events:none;z-index:-1;background:radial-gradient(ellipse,color-mix(in srgb,var(--p-text) 3%,transparent),transparent 68%)}
@keyframes pm-light-drift{0%,100%{transform:translate3d(-20px,-8px,0) scale(.94)}50%{transform:translate3d(38px,18px,0) scale(1.06)}}
@keyframes pm-contour-drift{0%,100%{transform:translate3d(-8px,6px,0)}50%{transform:translate3d(10px,-6px,0)}}
@keyframes pm-flow-trace{from{stroke-dashoffset:12}to{stroke-dashoffset:-88}}
@keyframes pm-button-light{from{transform:translateX(-140%) skewX(-20deg)}to{transform:translateX(240%) skewX(-20deg)}}
@media(prefers-reduced-motion:no-preference){
  .premier-motion-ready .desk-welcome::before,.premier-motion-ready .auth-layout::before{animation:pm-light-drift 12s ease-in-out infinite}
  .premier-motion-ready .pm-welcome-art svg{animation:pm-contour-drift 10s ease-in-out infinite}
  .premier-motion-ready .pm-flow{animation:pm-flow-trace 6s linear infinite}
  .premier-motion-ready .welcome-actions .primary{position:relative;isolation:isolate;overflow:hidden}
  .premier-motion-ready .welcome-actions .primary::after{content:'';position:absolute;inset:-30% 0;width:45%;background:linear-gradient(90deg,transparent,#ffffff40,transparent);transform:translateX(-140%) skewX(-20deg);pointer-events:none}
  .premier-motion-ready .welcome-actions .primary:hover::after{animation:pm-button-light .8s var(--pm-ease)}
  .premier-motion-ready :is(.studio-stock,.evidence-entry,.discovery-card,.connection){transition:background-color .2s ease,border-color .2s ease,box-shadow .32s var(--pm-ease),transform .32s var(--pm-ease)}
  .premier-motion-ready :is(.p-button,.p-icon-btn,.desktop-app-download){transition:background-color .2s ease,border-color .2s ease,color .2s ease,box-shadow .3s ease,transform .3s var(--pm-ease),scale .17s var(--pm-ease)}
  .premier-motion-ready :is(.p-button,.desktop-app-download):hover:not(:disabled){transform:translateY(-2px);box-shadow:0 7px 18px -10px var(--p-accent)}
  .premier-motion-ready :is(.p-button,.desktop-app-download):active:not(:disabled){transform:translateY(0);scale:.97}
}
@media(hover:hover) and (pointer:fine){
  .premier-motion-ready :is(.studio-stock,.connection,.service-offer):hover::before{opacity:1}
  .premier-motion-ready .studio-stock:hover{background:var(--md-surf-high);transform:none}
  .premier-motion-ready .evidence-entry:hover{transform:translateX(4px);border-color:var(--p-accent)}
}
/* One control pauses both ambient CSS and interaction JS; OS reduction wins. */
:is(.premier-motion-paused,.premier-motion-suspended,.premier-motion-reduced) .desk-welcome::before,
:is(.premier-motion-paused,.premier-motion-suspended,.premier-motion-reduced) .auth-layout::before,
:is(.premier-motion-paused,.premier-motion-suspended,.premier-motion-reduced) .pm-welcome-art svg,
:is(.premier-motion-paused,.premier-motion-suspended,.premier-motion-reduced) .pm-flow{animation-play-state:paused!important}
:is(.premier-motion-paused,.premier-motion-reduced) :is(.studio-stock,.evidence-entry,.p-button,.p-icon-btn,.desktop-app-download){transform:none!important;scale:none!important;transition:none!important}
:is(.premier-motion-paused,.premier-motion-reduced) .welcome-actions .primary::after{animation:none!important}
.premier-motion-paused body.premier-ui *,.premier-motion-paused body.premier-ui *::before,.premier-motion-paused body.premier-ui *::after{animation:none!important;transition:none!important}
.premier-motion-reduced body.premier-ui *,.premier-motion-reduced body.premier-ui *::before,.premier-motion-reduced body.premier-ui *::after{animation:none!important;transition:none!important}
.premier-motion-suspended body.premier-ui *,.premier-motion-suspended body.premier-ui *::before,.premier-motion-suspended body.premier-ui *::after{animation-play-state:paused!important}
.premier-motion-paused :is(.studio-stock,.connection,.service-offer)::before{opacity:0!important}
.premier-motion-paused :is(.evidence-entry,.studio-full-report,.discovery-teaser,.connection-hub-heading>a) .p-icon:last-child{translate:none!important}
@media(prefers-reduced-motion:reduce){
  .premier-motion-ready :is(.studio-stock,.evidence-entry,.p-button,.p-icon-btn,.desktop-app-download){transform:none!important;scale:none!important;transition:none!important}
  .premier-motion-ready :is(.studio-stock,.connection,.service-offer)::before{transition:none}
}
@media(max-width:700px){
  .research-app .desk-welcome{min-height:140px;padding:20px 18px;align-items:flex-start}
  .research-app .desk-welcome h1{font-size:26px;max-width:290px}
  .research-app .desk-welcome .welcome-copy{font-size:11px;max-width:215px}
  .pm-welcome-art{right:-70px;width:75%;opacity:.45}
  .desk-welcome::before{right:-140px;opacity:.8}
  .desk-welcome .welcome-actions{padding-top:22px}
  .premier-motion-ready .pm-motion-toggle{width:32px;min-width:32px;padding:7px}
}

/* The same tactile language continues outside the price chart. All effects are
   decorative and leave final content, focus, values and layout in place. */
.premier-motion-ready :is(.provider-row,.desktop-app-steps li,.membership-guide li,.empty-connection,.compare-empty,.desktop-empty,.decision-signal){transform-origin:50% 50%}
.premier-motion-ready :is(.studio-section-kicker,.p-eyebrow,.thesis-eyebrow,.desktop-app-kicker,.setup-kicker){position:relative}
.premier-motion-ready :is(.provider-button,.empty-browse,.compare-picker button,.atlas-legend button,.desktop-app-steps li,.membership-guide li,.decision-signal){transition:background-color .2s ease,border-color .2s ease,box-shadow .3s var(--pm-ease),translate .3s var(--pm-ease)}
.premier-motion-ready :is(.studio-full-report,.empty-browse,.connection-hub-heading>a,.membership-guide>a,.desktop-card-link){position:relative}
.premier-motion-ready :is(.studio-full-report,.empty-browse,.membership-guide>a,.desktop-card-link)::after{content:'';position:absolute;left:0;right:0;bottom:-3px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .35s var(--pm-ease);pointer-events:none}
.premier-motion-ready :is(.studio-full-report,.empty-browse,.membership-guide>a,.desktop-card-link):hover::after{transform:scaleX(1)}
.premier-motion-ready :is(.empty-mark,.overview-icon,.connect-product-icon,.membership-monogram,.service-offer-mark){transition:color .25s ease,rotate .45s var(--pm-ease),scale .45s var(--pm-ease),box-shadow .35s var(--pm-ease)}
.premier-motion-ready :is(.connection-overview,.connect-stage,.auth-panel,.quota-card){transition:border-color .3s ease,box-shadow .4s var(--pm-ease)}
.premier-motion-ready .auth-panel:focus-within{box-shadow:0 20px 65px -42px var(--p-accent),0 0 0 1px color-mix(in srgb,var(--p-text) 12%,transparent)}
.premier-motion-ready :is(.connection-overview.ready,.desktop-app-connected){border-color:color-mix(in srgb,var(--p-accent) 35%,var(--p-line))}
@keyframes pm-backdrop-in{from{opacity:0}to{opacity:1}}
@keyframes pm-tooltip-in{from{opacity:.25;translate:0 5px}to{opacity:1;translate:0 0}}
@media(prefers-reduced-motion:no-preference){
  .premier-motion-ready :is(.desk-dialog,.command-dialog)[open]::backdrop{animation:pm-backdrop-in .24s ease-out}
  .premier-motion-ready .term-tooltip:not([hidden]){animation:pm-tooltip-in .18s var(--pm-ease)}
  .premier-motion-ready :is(.provider-button,.compare-picker button,.atlas-legend button):active:not(:disabled){translate:0 1px}
}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .premier-motion-ready .provider-button:hover:not(:disabled){translate:3px 0;box-shadow:0 6px 18px -14px var(--p-accent)}
  .premier-motion-ready :is(.desktop-app-steps li,.membership-guide li):hover{translate:3px 0}
  .premier-motion-ready :is(.empty-connection,.desktop-app-intro):hover :is(.empty-mark,.connect-product-icon){rotate:-7deg;scale:1.06}
  .premier-motion-ready :is(.service-offer,.membership-guide):hover :is(.service-offer-mark,.membership-monogram){rotate:-4deg}
  .premier-motion-ready :is(.compare-picker button,.atlas-legend button):hover{border-color:var(--p-accent);box-shadow:0 0 0 3px var(--p-accent-soft)}
}
:is(.premier-motion-paused,.premier-motion-reduced) :is(.provider-button,.empty-browse,.compare-picker button,.atlas-legend button,.desktop-app-steps li,.membership-guide li,.decision-signal){translate:none!important;transition:none!important}
:is(.premier-motion-paused,.premier-motion-reduced) :is(.empty-mark,.overview-icon,.connect-product-icon,.membership-monogram,.service-offer-mark){rotate:none!important;scale:none!important;transition:none!important}
:is(.premier-motion-paused,.premier-motion-reduced) :is(.studio-full-report,.empty-browse,.membership-guide>a,.desktop-card-link)::after{transform:none!important;transition:none!important}
:is(.premier-motion-paused,.premier-motion-reduced) .term-tooltip{animation:none!important}
:is(.premier-motion-paused,.premier-motion-reduced) :is(.desk-dialog,.command-dialog)[open]::backdrop{animation:none!important}
@media(prefers-reduced-motion:reduce){
  .premier-motion-ready :is(.provider-button,.empty-browse,.compare-picker button,.atlas-legend button,.desktop-app-steps li,.membership-guide li,.decision-signal){transition:none!important}
}
