/* Small, purposeful feedback. Content stays visible if scripting is unavailable. */
.ke-page-progress{position:fixed;inset:0 0 auto;height:3px;z-index:10000;pointer-events:none;opacity:0;visibility:hidden;overflow:hidden;background:#c6a56624;transition:opacity .16s ease}
.ke-page-progress.is-active{opacity:1;visibility:visible}
.ke-page-progress>span{display:block;height:100%;width:34%;background:linear-gradient(90deg,#a78244,#e5c98f,#a78244);transform:translateX(-110%)}
.ke-page-progress.is-active>span{animation:ke-loading-sweep 1.15s ease-in-out infinite}
.ke-submit-busy::after,form[aria-busy="true"] button[type="submit"]::after,form[aria-busy="true"] [data-login-submit]::after,.upload-form[aria-busy="true"] button:not([type])::after{content:"";display:inline-block;flex:0 0 13px;width:13px;height:13px;box-sizing:border-box;margin-inline-start:7px;vertical-align:middle;border:2px solid currentColor;border-right-color:transparent;border-radius:50%!important;animation:ke-loading-spin .75s linear infinite}
.ke-form-submitting{cursor:progress}.ke-submit-busy{cursor:progress!important}
.ke-image-pending{position:relative;isolation:isolate}
.ke-image-pending::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(100deg,transparent 15%,#ffffff22 50%,transparent 85%);background-size:200% 100%;animation:ke-image-shimmer 1.3s ease-in-out infinite}
@keyframes ke-loading-sweep{0%{transform:translateX(-110%)}100%{transform:translateX(400%)}}
@keyframes ke-loading-spin{to{transform:rotate(360deg)}}
@keyframes ke-image-shimmer{from{background-position:180% 0}to{background-position:-80% 0}}
@keyframes ke-panel-in{from{opacity:.35;translate:0 -6px}to{opacity:1;translate:0 0}}
@keyframes ke-feedback-in{from{opacity:.3}to{opacity:1}}
@keyframes ke-theme-icon-in{from{opacity:.4;rotate:-20deg;scale:.85}to{opacity:1;rotate:0deg;scale:1}}
@media(prefers-reduced-motion:no-preference){
  .ke-site .notice:not([hidden]),.main .notice:not([hidden]),.toast:not([hidden]){animation:ke-feedback-in .2s ease-out}
  .ke-theme-changing body,.ke-theme-changing :is(.kec-header,.kec-navbar,.kec-navigation,.kec-submenu,.keh-section,.keh-shortcuts,.keh-service-card,.keh-post,.keh-since,.kei-page,.kei-masthead,.kei-panel,.kei-contact-option,.main-shell,.topbar,.card,.stat,.dashboard-welcome,.login-panel,.login-card,input,select,textarea){transition:background-color .22s ease,color .22s ease,border-color .22s ease!important}
  .ke-theme-changing .ke-theme-toggle svg{animation:ke-theme-icon-in .22s ease-out}
  .ke-site :is(.keh-button,.kei-button,.kec-header-cta,.ke-theme-toggle),.main .button{transition-property:background,color,border-color,box-shadow,transform,scale;transition-duration:.18s}
  .ke-site :is(.keh-button,.kei-button,.kec-header-cta,.ke-theme-toggle):active,.main .button:active{scale:.98}
  .media-item details[open]>form,.upload-panel[open]>form{animation:ke-feedback-in .18s ease-out}
}
@media(max-width:960px) and (prefers-reduced-motion:no-preference){.ke-site .kec-header.kec-menu-open .kec-navigation{animation:ke-panel-in .2s ease-out}}
@media(prefers-reduced-motion:reduce){
  .ke-page-progress,.ke-submit-busy::after,form[aria-busy="true"] button[type="submit"]::after,form[aria-busy="true"] [data-login-submit]::after,.upload-form[aria-busy="true"] button:not([type])::after,.ke-image-pending::after{animation:none!important;transition:none!important}
  .ke-page-progress>span,.ke-page-progress.is-active>span{width:100%;transform:none;animation:none;opacity:.7}
  .ke-site *,.ke-site *::before,.ke-site *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .ke-image-pending::after{background:#c6a5660d}
}
