/* DS-02: minimal premium system, accessibility and low-jank motion. */
:root{--ds02-fast:120ms;--ds02-normal:160ms;--ds02-ease:cubic-bezier(.2,.7,.25,1);--ds02-focus:#176b5c}
@view-transition{navigation:auto}
::view-transition-old(root){animation:ds02-page-out 110ms ease both}
::view-transition-new(root){animation:ds02-page-in 150ms ease both}
@keyframes ds02-page-out{to{opacity:.985}}
@keyframes ds02-page-in{from{opacity:.985}to{opacity:1}}
:is(.admin-card,.dashboard-card,.panel-card,.content-card,.document-card,.profile-account-card,.service-card){transition:box-shadow var(--ds02-normal) ease,border-color var(--ds02-normal) ease}
:is(.button,.icon-button,button,a,summary):focus-visible{outline:3px solid var(--ds02-focus);outline-offset:3px}
:where(button,.button,[role="button"],summary){-webkit-tap-highlight-color:transparent;touch-action:manipulation}
:where(.admin-card,.dashboard-card,.panel-card,.content-card,.document-card):focus-within{scroll-margin-block:5rem}
:is(.admin-card,.dashboard-card,.panel-card,.content-card) img{max-width:100%;height:auto}
:where(.document-list,.external-news-grid,.gallery-grid,.admin-table-wrap) .document-card{content-visibility:auto;contain-intrinsic-size:auto 132px}
:where(.table-responsive,.responsive-table){max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}
:where(input,select,textarea){min-width:0;max-width:100%}
.ds02-pagination{display:flex;gap:.45rem;align-items:center;justify-content:center;flex-wrap:wrap;margin:1.25rem 0}
.ds02-pagination a,.ds02-pagination strong{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;border:1px solid #dce5e1;border-radius:11px;padding:.5rem .85rem;text-decoration:none}
.ds02-pagination strong{background:#176b5c;color:white;border-color:#176b5c}
.ds02-pagination a:hover{background:#eef6f3}
.ds02-page-summary{color:#52645f;text-align:center;font-size:.85rem;margin:.5rem 0}
.ds02-form-submitting{opacity:.88}
.ds02-form-submitting button[type=submit]{cursor:progress}
@media (max-width:640px){:where(.admin-card,.dashboard-card,.panel-card){min-width:0}.ds02-pagination{gap:.3rem}}
@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}::view-transition-old(root),::view-transition-new(root){animation:none!important}.ds02-form-submitting{opacity:1}}

.ds02-secondary-catalog{margin:1rem 0 1.5rem;border:1px solid #dce7e1;border-radius:16px;background:#fff}
.ds02-secondary-catalog>summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;min-height:52px;padding:0 1.2rem;font-weight:650;color:#176b5c}
.ds02-secondary-catalog[open]>summary{border-bottom:1px solid #edf1ef}
.ds02-secondary-catalog>.admin-portal-grid{padding:1rem}
@media(max-width:640px){.ds02-secondary-catalog>summary{padding:.8rem 1rem}.ds02-secondary-catalog>.admin-portal-grid{padding:.55rem}}

/* DS-03: unify motion on seven shared layouts, prioritize stable content. */
:root{--motion-fast:130ms;--motion-base:170ms;--motion-slow:240ms;--motion-hero:260ms;--ui-fast:120ms;--ui-normal:160ms}
/* Cross-document View Transitions already perform the page fade. Avoid stacking
   a second 420ms entrance animation on top of it. */
.motion-page-enter{animation:none!important}
/* Long-running shimmer/blur affects low-end mobile rendering and accessibility.
   Keep simple static loading backgrounds until the existing is-loaded hooks fire. */
.image-shell::after,.external-news-image::after,.staff-photo-wrap::after,.content-card-media::after,.gallery-media::after{animation:none!important;opacity:0!important}
/* Prefer compositor-friendly motion; never animate form height or table geometry. */
input:focus,select:focus,textarea:focus{transform:none!important}
.admin-content,.admin-main,.table-responsive,table{transition-property:opacity,background-color,border-color!important}
/* Keyboard focus clarity across portal, public and admin pages. */
:is(a,button,input,select,textarea,summary,[role="button"]):focus-visible{outline:3px solid #176b5c;outline-offset:3px}
/* Hide accidental horizontal spill without masking table scrolling. */
:where(.admin-content,.portal-content,.module-content,main){min-width:0}
@media (hover:none),(pointer:coarse){
  .site-header.is-scrolled,.portal-header.is-scrolled,.tinta-site-header.is-scrolled{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
}
@media (prefers-reduced-motion:reduce){
  @view-transition{navigation:none}
  .motion-page-enter,.motion-ready [data-motion-item],.ken-burns-active{animation:none!important;transition:none!important;opacity:1!important;transform:none!important;filter:none!important}
}
