/* Shared appearance and motion contract for all portal sections. */
html:root {
  --motion-fast: 160ms;
  --motion-normal: 220ms;
  --motion-enter: 320ms;
  --motion-ease: cubic-bezier(.2,.8,.2,1);
  --motion: var(--motion-normal) var(--motion-ease);
  --portal-font: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
}
html:root[data-theme="light"] { --subtle: #686d74; --muted: #60666d; }
html body { font-family:var(--portal-font); }
body :is(button,input,select,textarea) { font-family:inherit; }
body :is(.dropdown-menu,.select-menu,.system-select-menu,.date-popover-pro,.time-popover-pro) {
  color:var(--text); background-color:var(--surface-raised);
  animation-duration:var(--motion-fast); animation-timing-function:var(--motion-ease);
}
body :is(.reveal,.capture-stage,.notice-banner,.toast,.app-dialog[open] .dialog-card) {
  animation-duration:var(--motion-enter); animation-timing-function:var(--motion-ease);
}
body.summary-motion-pro :is(.metric-icon,.activity-icon,.bi-mini-mix,.bi-occupancy-track,.calendar-grid>*,.bi-day-panel>*) {
  animation-duration:var(--motion-enter); animation-timing-function:var(--motion-ease);
}
body :is(.primary-action,.secondary-action,.icon-button,.rail-action,.rail-link,.profile-trigger,
  .schneider-switch,.date-trigger-pro,.time-trigger-pro,.system-select-trigger,.calendar-day,
  .bi-tabs button,.summary-subtabs button) { transition-duration:var(--motion-normal); }
html[data-theme] body .bi-tabs button[aria-pressed="true"],html[data-theme] body .bi-tabs button[aria-pressed="true"]:hover { color:var(--accent-ink); }
body :is(input,textarea)::placeholder { color:var(--subtle); opacity:1; }
body textarea:focus-visible,body summary:focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
body .login-access { transition:background-color var(--motion),color var(--motion); }
body .login-theme { transition:color var(--motion),background-color var(--motion),border-color var(--motion); }
/* Motion preference also clears stagger delays; content remains immediately available. */
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after {
    animation-delay:0ms!important; animation-duration:.01ms!important;
    animation-iteration-count:1!important; transition-delay:0ms!important;
    transition-duration:.01ms!important; scroll-behavior:auto!important;
  }
}
