/* Stable scrollbar metrics in every interaction state.
   Chromium's standard non-auto scrollbar properties override WebKit styling.
   Never switch between those two rendering paths on hover or focus. */
*{scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent}
@supports selector(::-webkit-scrollbar){
  *,*:hover,*:focus-within{scrollbar-width:auto;scrollbar-color:auto}
  *::-webkit-scrollbar{width:5px;height:5px}
  *::-webkit-scrollbar-track,*::-webkit-scrollbar-corner{background:transparent}
  *::-webkit-scrollbar-button{display:none;width:0;height:0}
  *::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border:0;border-radius:6px}
  *::-webkit-scrollbar-thumb:hover{background:var(--scroll-hover)}
  *::-webkit-scrollbar-thumb:active{background:var(--scroll-active)}
}
@media(forced-colors:active){
  *,*:hover,*:focus-within{scrollbar-width:auto;scrollbar-color:auto}
  *::-webkit-scrollbar-thumb{background:ButtonText!important}
}

/* Motion stays local to the control or overlay; no layout or full-page snapshots. */
dialog::backdrop{animation:scrim-in 150ms ease-out both;backdrop-filter:none}
.scrim-exit{backdrop-filter:none}
.toast{animation:toast-in 150ms cubic-bezier(.2,.8,.2,1) both}
.progress-track i,.goal-progress-bar i{transition:none}
.btn:not(:disabled):active,.icon-btn:not(:disabled):active{transform:none}
.focus-card .timer-ring [data-timer-ring]{transition:stroke 150ms ease}
@media(prefers-reduced-motion:reduce){dialog::backdrop,.toast{animation:none!important}}
