/* Functional motion only: no staggered cards, hover scaling or artificial delays. */
:root { --fio-motion-fast: 140ms; --fio-motion-enter: 180ms; --fio-motion-ease: cubic-bezier(.2,.7,.2,1); }
.fio-feedback[hidden] { display: none !important; }
.fio-feedback { padding: 18px 20px; margin: 0 0 18px; border: 1px solid var(--line,#ddd); border-radius: 16px; background: var(--card,#fff); color: var(--text,#211714); font-family: inherit; font-size: 14px; font-weight: 500; line-height: 1.6; }
.fio-feedback p { margin: 0; overflow-wrap: anywhere; }
.fio-feedback.is-error { border-inline-start: 3px solid #b43546; }
.fio-retry { margin-top: 12px; padding: 10px 15px; min-height: 44px; border: 1px solid currentColor; border-radius: 10px; font: inherit; font-weight: 650; color: inherit; background: transparent; cursor: pointer; }
.fio-skeleton-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; margin-top: 16px; }
.fio-skeleton { display: block; height: 82px; border-radius: 12px; background: var(--line,#e5e7eb); }
.main[data-initial-loading="true"] > .section { display: none; }
.main[data-initial-loading="true"] #newAppointmentBtn { visibility: hidden; }
button[aria-busy="true"] { cursor: wait; }
button[aria-busy="true"]::before { content: ''; display: inline-block; flex: 0 0 auto; width: .85em; height: .85em; margin-inline-end: .4em; vertical-align: -.05em; border: 2px solid currentColor; border-inline-end-color: transparent; border-radius: 50%; }
#refreshButton[aria-busy="true"] > span { display: none; }
#refreshButton[aria-busy="true"]::before { margin: 0; }
.btn:disabled,.button:disabled,.primary-button:disabled,.fio-retry:disabled { cursor: not-allowed; opacity: .65; }
.btn:hover,.nav button:hover,.appointment:hover { transform: none; }
:is(.btn,.button,.primary-button,.secondary-button,.fio-retry,.nav button,.slot-button) { transition-property: background-color,border-color,box-shadow,color,opacity; transition-duration: var(--fio-motion-fast); }
:is(button,a,input,select,textarea):focus-visible { outline: 2px solid var(--brand,#75321f); outline-offset: 3px; }
.main > .section.active,.dash-view.active,.choice-panel,.message-row,.auth-card,.wizard-step:not([hidden]),.alert.show { animation: fio-enter var(--fio-motion-enter) var(--fio-motion-ease); }
.wf-dialog[open],.modal-backdrop.show .modal,.subscription-modal:not([hidden]) .subscription-dialog { animation: fio-enter 160ms var(--fio-motion-ease); }
.toast { transition-duration: var(--fio-motion-fast); }
@keyframes fio-enter { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
@keyframes fio-busy { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: no-preference) {
  button[aria-busy="true"]::before { animation: fio-busy 900ms linear infinite; }
}
@media (max-width:600px) {
  .fio-feedback { padding: 16px; }
  .fio-skeleton-grid { gap: 8px; }
  .fio-skeleton { height: 64px; }
}
@media (prefers-reduced-motion: reduce) {
  /* Includes pre-existing animations in themes, customer chat and previews. */
  *,*::before,*::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
