/* RC36.1 — conservative visual refinements shared by every layout.
   No hidden content, layout-blocking transitions, new fonts or runtime dependencies. */
:root {
  --ui361-ease: cubic-bezier(.22,.76,.25,1);
  --ui361-focus: #168f7b;
  --ui361-surface-border: rgba(21,88,74,.13);
}

/* Keyboard focus must be obvious independently of hover effects. */
:where(.admin-body,.public-site-body,.auth-body,.portal-shell,.tinta-site-body,.contrib-body)
  :is(a,button,summary,input,textarea,select,[role="button"]):focus-visible {
  outline: 2px solid var(--ui361-focus);
  outline-offset: 3px;
}
/* Focus on fields is visual only: do not translate the control while typing. */
:where(.admin-body,.public-site-body,.auth-body,.portal-shell,.tinta-site-body,.contrib-body)
  :is(input,textarea,select):focus { transform: none; }

/* Small feedback on relevant surfaces without shifting dimensions. */
:where(.admin-body,.public-site-body,.auth-body,.portal-shell,.tinta-site-body,.contrib-body)
  :is(.alert,.flash-message,[role="alert"],[role="status"].toast):not([hidden]) {
  animation: ui361-feedback-in 170ms var(--ui361-ease) both;
}
@keyframes ui361-feedback-in {
  from { opacity: .88; transform: translate3d(0,3px,0); }
  to { opacity: 1; transform: translate3d(0,0,0); }
}

/* Consistent very short interaction feedback. No looping, no ripple overlays. */
:where(.admin-body,.public-site-body,.auth-body,.portal-shell,.tinta-site-body,.contrib-body)
  :is(.button,.btn,.icon-button,.admin-nav a,.hub26-option,.account36-google) {
  transition-duration: 155ms;
  transition-timing-function: var(--ui361-ease);
}
@media (hover:hover) and (pointer:fine) {
  :where(.admin-body,.public-site-body,.portal-shell,.tinta-site-body,.contrib-body)
    :is(.hub26-option,.admin-nav a,.c-top nav a):hover {
    background-color: color-mix(in srgb,var(--brand,#168f7b) 7%,transparent);
  }
  :where(.admin-body,.public-site-body,.portal-shell,.tinta-site-body,.contrib-body)
    :is(.admin-card,.content-card,.service-card,.portal-card,.dashboard-card):hover {
    transition-duration: 180ms;
  }
}

/* A visible loading shimmer must stop on slow, broken or offline media.
   The underlying placeholder remains until the real image loads. */
:where(.public-site-body,.portal-shell,.tinta-site-body,.admin-body)
  :is(.image-shell,.external-news-image,.staff-photo-wrap,.content-card-media,.gallery-media)::after {
  animation-iteration-count: 2;
}

/* Safe area and dense-screen resilience without changing workflows. */
:where(.admin-body,.public-site-body,.auth-body,.portal-shell,.tinta-site-body,.contrib-body)
  :is(.admin-card,.dashboard-card,.portal-card,.content-card,.auth-form-card,.hub26-main) {
  min-width: 0;
}
@media (pointer:coarse) {
  :where(.admin-body,.public-site-body,.auth-body,.portal-shell,.tinta-site-body,.contrib-body)
    :is(.button,.icon-button,.account36-google):hover { transform: none; }
}
@media (prefers-reduced-motion:reduce) {
  :where(.admin-body,.public-site-body,.auth-body,.portal-shell,.tinta-site-body,.contrib-body) * {
    scroll-behavior: auto;
  }
  :where(.admin-body,.public-site-body,.auth-body,.portal-shell,.tinta-site-body,.contrib-body)
    :is(.alert,.flash-message,[role="alert"],[role="status"].toast) {
    animation: none !important;
  }
}
html.reduce-motion :is(.alert,.flash-message,[role="alert"],[role="status"].toast) {
  animation: none !important;
}
