/* A slow pulse follows each existing card colour; completion and focus stay neutral. */
.goal-category-card{--athena-shimmer-color:var(--goal-category-color)}
.goal-detail[style*="--goal-card-color"]{--athena-shimmer-color:var(--goal-card-color)}
.task-item[style*="--task-card-color"]{--athena-shimmer-color:var(--task-card-color)}
.expense-category-card{--athena-shimmer-color:currentColor}
.budget-row:not(.budget-unplanned){--athena-shimmer-color:var(--budget-accent)}
.stat:has(.icon-blue){--athena-shimmer-color:#7bd3ff}.stat:has(.icon-green){--athena-shimmer-color:#65ecad}.stat:has(.icon-pink){--athena-shimmer-color:#ff7fa4}.stat:has(.icon-purple){--athena-shimmer-color:#a98cff}.stat:has(.icon-amber){--athena-shimmer-color:#ffbd62}
.achievement-card,.achievement{--athena-shimmer-color:#83bfff}.achievement-card:has([data-kind=streak]),.achievement:has([data-kind=streak]){--athena-shimmer-color:#ffdc75}.achievement-card:has([data-kind=distance]),.achievement:has([data-kind=distance]){--athena-shimmer-color:#82f1cb}.achievement-card:has([data-kind=challenges],[data-kind=wins]),.achievement:has([data-kind=challenges],[data-kind=wins]){--athena-shimmer-color:#ffabcf}
.quick.run{--athena-shimmer-color:#65ecad}.quick.program{--athena-shimmer-color:#83bfff}.world-clock-zone{--athena-shimmer-color:var(--zone-color)}
:is(.goal-category-card,.goal-detail[style*="--goal-card-color"],.task-item[style*="--task-card-color"],.expense-category-card,.budget-row:not(.budget-unplanned),.stat:has(.icon-blue,.icon-green,.icon-pink,.icon-purple,.icon-amber),.achievement-card,.achievement,.quick.run,.quick.program,.world-clock-zone):not(.is-done):not(.done):not(:focus-visible){outline:1px solid transparent;outline-offset:1px;animation:athena-color-shimmer 5.8s ease-in-out infinite}
:is(.goal-category-card,.achievement-card,.world-clock-zone):nth-child(3n){animation-delay:-1.9s}:is(.goal-category-card,.achievement-card,.world-clock-zone):nth-child(3n+1){animation-delay:-3.7s}
@keyframes athena-color-shimmer{0%,100%{outline-color:color-mix(in srgb,var(--athena-shimmer-color) 8%,transparent)}50%{outline-color:color-mix(in srgb,var(--athena-shimmer-color) 38%,transparent)}}
@media(prefers-reduced-motion:reduce){:is(.goal-category-card,.goal-detail[style*="--goal-card-color"],.task-item[style*="--task-card-color"],.expense-category-card,.budget-row,.stat,.achievement-card,.achievement,.quick,.world-clock-zone):not(:focus-visible){animation:none!important;outline-color:transparent}}

:is(.achievement-card,.achievement).locked{--athena-shimmer-color:#999!important;filter:grayscale(1)!important;outline-color:#96969655!important;border-color:#96969666!important;box-shadow:0 0 12px #99999913!important;animation:athena-locked-shimmer 5.8s ease-in-out infinite!important}
:is(.achievement-card,.achievement).locked :is(.achievement-card-icon,.achievement-icon,.achievement-badge-art){filter:grayscale(1)!important;color:#aaa!important}
@keyframes athena-locked-shimmer{0%,100%{outline-color:#99999933;box-shadow:0 0 6px #9999990a}50%{outline-color:#b1b1b166;box-shadow:0 0 14px #99999920}}
@media(prefers-reduced-motion:reduce){:is(.achievement-card,.achievement).locked{animation:none!important}}

/* Quiet fallback blocks have no animated outline; focus styles remain available. */
.athena-quiet-block:not(:focus-visible):not(:focus-within){outline:0;outline-offset:0}

@media(prefers-reduced-motion:reduce){.athena-quiet-block{animation:none!important;outline-color:transparent}}

/* Keep the mobile planning and finance content on stable paint surfaces. */
@media(max-width:800px),(pointer:coarse){
  :is([data-page-view="planning"],[data-page-view="finance"]) .athena-quiet-block:not(:focus-visible):not(:focus-within),
  :host(#financeIntegratedHost) .athena-quiet-block:not(:focus-visible):not(:focus-within){animation:none!important;outline-color:transparent}
}

/* Calendar stays still while reading dates, scrolling and changing records. */
[data-page-view="calendar"].page.active{animation:none}
[data-page-view="calendar"] .athena-quiet-block:not(:focus-visible):not(:focus-within){animation:none!important;outline-color:transparent}
