/* Motion is progressive enhancement: no hidden content or delayed navigation.
   Every duration, easing and dialog offset in the workspace comes from these tokens — change the feel here, once.
   Two families: things arriving (enter) and things leaving (exit) are short and plain (opacity + a small shift); page-level
   motion (document navigations, reveals) is a little longer. Background refreshes never animate: app.js only cross-fades
   a user's route change and revealRoute() only runs when the route key changes. */
:root{
 --da-ease:cubic-bezier(.22,1,.36,1);
 --da-motion-fast:160ms;   /* hover, press, colour and border changes */
 --da-motion-exit:150ms;   /* anything leaving: the old paint, a closing dialog */
 --da-motion-enter:200ms;  /* anything arriving: the new paint, dialogs, sheets, the palette */
 --da-motion-page:320ms;   /* document-to-document navigations */
 --da-motion-reveal:320ms; /* a view's or section's content settling in (doseagent-motion.js reveal/revealRoute) */
 --da-motion-stagger:28ms;
 --da-motion-scene:900ms;
 --da-orb-cycle:12000ms;
 --da-lift:240ms;          /* card lift on hover */
 --da-dialog-shift:translateY(8px) scale(.985);/* where a dialog or sheet enters from and exits to */
}
@view-transition{navigation:auto}
::view-transition-old(root){animation:da-page-out var(--da-motion-fast) ease-out both}
::view-transition-new(root){animation:da-page-in var(--da-motion-page) var(--da-ease) both}
::view-transition-group(*){animation-duration:var(--da-motion-page);animation-timing-function:var(--da-ease)}
::view-transition{pointer-events:none}
/* In-app view switches (public/app.js transition()): a plain opacity cross-fade between the old and the new paint —
   every pill page, the Agent desk (#/desk) and property tabs alike. */
:root[data-da-crossfade] ::view-transition-old(root){animation:da-fade-out var(--da-motion-exit) ease-out both}
:root[data-da-crossfade] ::view-transition-new(root){animation:da-fade-in var(--da-motion-enter) ease-in both}
:root[data-da-crossfade] ::view-transition-group(root){animation-duration:var(--da-motion-enter)}
@keyframes da-fade-out{to{opacity:0}}
@keyframes da-fade-in{from{opacity:0}}
@keyframes da-page-out{to{opacity:0;transform:translateY(-7px)}}
@keyframes da-page-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes da-panel-in{from{opacity:0;transform:var(--da-dialog-shift)}to{opacity:1;transform:none}}
/* Dialogs and sheets — the workspace dialog (#modal: Settings, People, every form), the Cmd+K palette, the assistant,
   Settings → Team's invite/deactivate sheets, the People confirmation, the cover picker — enter and leave the same way.
   Native close/focus/cancel semantics stay synchronous. Modern browsers keep the top-layer drawing alive during the exit;
   older browsers get the enter animation and close instantly. */
:is(.ap-dialog,.cover-picker,.wh-source,.preview-source,dialog[data-da-motion],#modal,.cmdk,.sheet-dialog,.cp-dialog){transform-origin:50% 85%}
:is(.ap-dialog,.cover-picker,.wh-source,.preview-source,dialog[data-da-motion],#modal,.cmdk,.sheet-dialog,.cp-dialog)[open]{animation:da-panel-in var(--da-motion-enter) var(--da-ease) both}
@supports (transition-behavior:allow-discrete) and (overlay:auto){
 :is(.ap-dialog,.cover-picker,.wh-source,.preview-source,dialog[data-da-motion],#modal,.cmdk,.sheet-dialog,.cp-dialog){opacity:0;transform:var(--da-dialog-shift);transition:opacity var(--da-motion-exit) ease,transform var(--da-motion-exit) ease,display var(--da-motion-exit) allow-discrete,overlay var(--da-motion-exit) allow-discrete}
 :is(.ap-dialog,.cover-picker,.wh-source,.preview-source,dialog[data-da-motion],#modal,.cmdk,.sheet-dialog,.cp-dialog)[open]{opacity:1;transform:none;animation:none;transition:opacity var(--da-motion-enter) ease,transform var(--da-motion-enter) var(--da-ease),display var(--da-motion-enter) allow-discrete,overlay var(--da-motion-enter) allow-discrete}
 :is(.ap-dialog,.cover-picker,.wh-source,.preview-source,dialog[data-da-motion],#modal,.cmdk,.sheet-dialog,.cp-dialog)::backdrop{opacity:0;transition:opacity var(--da-motion-exit) ease,display var(--da-motion-exit) allow-discrete,overlay var(--da-motion-exit) allow-discrete}
 :is(.ap-dialog,.cover-picker,.wh-source,.preview-source,dialog[data-da-motion],#modal,.cmdk,.sheet-dialog,.cp-dialog)[open]::backdrop{opacity:1;transition:opacity var(--da-motion-enter) ease,display var(--da-motion-enter) allow-discrete,overlay var(--da-motion-enter) allow-discrete}
 @starting-style{
  :is(.ap-dialog,.cover-picker,.wh-source,.preview-source,dialog[data-da-motion],#modal,.cmdk,.sheet-dialog,.cp-dialog)[open]{opacity:0;transform:var(--da-dialog-shift)}
  :is(.ap-dialog,.cover-picker,.wh-source,.preview-source,dialog[data-da-motion],#modal,.cmdk,.sheet-dialog,.cp-dialog)[open]::backdrop{opacity:0}
 }
}
.wh-card,.preview-card,.bento,.ops-stat{transition:translate var(--da-lift) var(--da-ease),box-shadow var(--da-lift) ease,border-color var(--da-motion-fast) ease}
.ap-chip,.ap-chips button,.nav-pill,.tab,.settings-tab,.wh-header nav a,.ap-send,.cover-picker-photo,.cover-picker footer button{transition:background-color var(--da-motion-fast) ease,border-color var(--da-motion-fast) ease,box-shadow var(--da-motion-fast) ease,color var(--da-motion-fast) ease,translate var(--da-motion-fast) ease}
@media(hover:hover) and (pointer:fine){
 .wh-card:hover,.preview-card:hover{translate:0 -3px;box-shadow:0 14px 32px #49321b0a}
 .ap-chips button:hover,.cover-picker footer button:not(:disabled):hover{translate:0 -1px}
}
.ap-chips button:active,.ap-send:active{translate:0 1px}
.ap-history:not([hidden]){animation:da-page-in var(--da-motion-enter) var(--da-ease) both}
.ap-evidence[open]>*:not(summary){animation:da-page-in var(--da-motion-enter) var(--da-ease) both}
.wh-cover-image{animation:da-page-in var(--da-motion-page) var(--da-ease) both}
.wh-header nav a{padding:10px 19px;border-radius:100px;color:#7a7167;text-decoration:none}
.wh-header nav a.selected{background:#2e2b26;color:white}

@media(prefers-reduced-motion:reduce){
 /* Token level (AUDIT-2 M1): every duration is zero, so any rule reading a token is still, not just the ones listed below. */
 :root{--da-motion-fast:0ms;--da-motion-exit:0ms;--da-motion-enter:0ms;--da-motion-page:0ms;--da-motion-reveal:0ms;--da-motion-stagger:0ms;--da-motion-scene:0ms;--da-orb-cycle:0ms;--da-lift:0ms}
 @view-transition{navigation:none}
 ::view-transition-old(root),::view-transition-new(root),::view-transition-group(*){animation:none!important}
 :is(.ap-dialog,.cover-picker,.wh-source,.preview-source,dialog[data-da-motion],#modal,.cmdk,.sheet-dialog,.cp-dialog),:is(.ap-dialog,.cover-picker,.wh-source,.preview-source,dialog[data-da-motion],#modal,.cmdk,.sheet-dialog,.cp-dialog)::backdrop,.ap-history,.ap-evidence[open]>*:not(summary),.wh-cover-image{animation:none!important;transition:none!important;transform:none!important}
 .wh-card,.preview-card,.bento,.ops-stat,.ap-chips button,.nav-pill,.tab,.settings-tab,.wh-header nav a,.ap-send,.cover-picker-photo,.cover-picker footer button{transition:none!important;translate:none!important}
}

/* Sheets use their existing hidden state; focus restoration and routing never wait for an animation. */
@supports (transition-behavior:allow-discrete){
 .cg-sheet,.cg-view-scrim,.cg-scrim{transition:opacity var(--da-motion-exit) ease,translate var(--da-motion-exit) var(--da-ease),display var(--da-motion-exit) allow-discrete}
 .cg-sheet:not([hidden]),.cg-view-scrim:not([hidden]),.cg-scrim:not([hidden]){opacity:1;translate:0 0;animation:none}
 .cg-sheet[hidden]{opacity:0;translate:0 12px}.cg-view-scrim[hidden],.cg-scrim[hidden]{opacity:0}
 @starting-style{.cg-sheet:not([hidden]){opacity:0;translate:0 12px}.cg-view-scrim:not([hidden]),.cg-scrim:not([hidden]){opacity:0}}
}
.ps-row,.rc-type,.rc-row,.settings-tab,.cg-quick-row,.cg-thread,.pr-index-row{transition:background-color var(--da-motion-fast),border-color var(--da-motion-fast),box-shadow var(--da-motion-fast)}
.ps-chev,.pr-index-row>svg{transition:translate var(--da-motion-fast) var(--da-ease)}
@media(hover:hover) and (pointer:fine){.ps-row:hover .ps-chev,.pr-index-row:hover>svg{translate:2px 0}}
@media(prefers-reduced-motion:reduce){.cg-sheet,.cg-view-scrim,.cg-scrim,.ps-row,.rc-type,.rc-row,.settings-tab,.cg-quick-row,.cg-thread,.pr-index-row,.ps-chev,.pr-index-row>svg{animation:none!important;transition:none!important;translate:none!important}}

.cg-home .cg-sheet{animation:none}
