:root{--ease-out:cubic-bezier(.22,1,.36,1);--ease-spring:cubic-bezier(.2,.8,.2,1.15)}
/* Pointer feedback is independent of entrance transforms. */
a,button{transition:color .22s ease,background-color .25s ease,border-color .25s ease,box-shadow .3s ease}
.wordmark{transform-origin:left center;transition:width .35s var(--ease-out),filter .3s ease,translate .3s var(--ease-out)}
.wordmark:hover{translate:0 -2px;filter:saturate(1.2)}
.wordmark:active{translate:0 0;scale:.985}
.masthead{transition:padding .35s var(--ease-out)}
.site-header{transition:box-shadow .35s ease,background-color .35s ease}
.site-header.is-scrolled{box-shadow:0 9px 28px #1820140c}
.wordmark img{transform-origin:left center;transition:transform .35s var(--ease-out)}
@media(min-width:801px){.site-header.is-scrolled .wordmark img{transform:scale(.94)}}
.nav-links a::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease-out)}
.nav-links a.active::after,.nav-links a:hover::after,.nav-links a:focus-visible::after{transform:scaleX(1)}
.topic-strip>a{transition:color .22s ease,translate .3s var(--ease-out)}
.topic-strip>a:hover{translate:0 -2px}
.news-card,.rubric-tile{transition:translate .45s var(--ease-out),box-shadow .45s ease,background-color .3s ease}
@media(hover:hover) and (pointer:fine){
 .news-card:hover{translate:0 -6px;box-shadow:0 18px 40px #1c271010}
 .rubric-tile:hover{translate:0 -5px;box-shadow:0 18px 38px #1c271016}
 .news-card:hover .card-image img{transform:scale(1.065)}
 .news-card:hover .card-arrow{background:var(--signal);color:white}
 .news-card:hover .card-arrow svg{transform:translate(2px,-2px)}
 .feed-item:hover .feed-image img{transform:scale(1.09)}
 .feed-item:hover .feed-copy h3{color:var(--red)}
 .latest li:hover{translate:4px 0}
 .article-cover:hover>img{transform:scale(1.015)}
}
.card-image img,.lead-photo>img,.feed-image img,.city-feature-image>img,.event-image img,.article-cover>img{transition:transform 1.05s var(--ease-out),filter .65s ease}
.lead-photo:hover>img{transform:scale(1.045);filter:saturate(1.08)}
.card-arrow svg,.big-arrow svg,.text-link svg,.solid-button svg,.outline-button svg,.latest-all svg,.back-link svg,.source-link svg,.article-source a svg{transition:transform .4s var(--ease-out)}
.lead-photo:hover .big-arrow svg{transform:translate(3px,-3px)}
.text-link:hover svg,.latest-all:hover svg{transform:translateX(4px)}
.solid-button:hover svg,.outline-button:hover svg,.source-link:hover svg,.article-source a:hover svg{transform:translate(3px,-3px)}
.back-link:hover svg{transform:rotate(180deg) translateX(4px)}
.city-feature-image:hover>img{transform:scale(1.055);filter:saturate(1.08)}
.event-image{overflow:hidden}.event-image:hover img{transform:scale(1.06);filter:saturate(1.05)}
.article-cover{overflow:hidden}.article-cover>img{transform-origin:center}
.latest li{transition:translate .35s var(--ease-out),border-color .3s ease}
.feed-copy h3{transition:color .25s ease}
.solid-button,.outline-button,.load-more,.filter,.search-button,.save-button,.saved-link,.menu-toggle,.article-tools>button,dialog [data-close]{transition:translate .3s var(--ease-out),scale .2s var(--ease-out),color .22s ease,background-color .25s ease,border-color .25s ease,box-shadow .3s ease}
.solid-button:hover,.outline-button:hover,.load-more:hover{translate:0 -3px;box-shadow:0 9px 20px #17201013}
.filter:hover,.article-tools>button:hover,dialog [data-close]:hover{translate:0 -2px}
.save-button:hover,.search-button:hover,.saved-link:hover,.menu-toggle:hover{scale:1.1}
.solid-button:active,.outline-button:active,.load-more:active,.filter:active,.article-tools>button:active,dialog [data-close]:active{translate:0 0;scale:.96}
.save-button:active,.search-button:active,.saved-link:active,.menu-toggle:active{scale:.88}
.filter.active{box-shadow:0 4px 12px #17201012}
.footer-links a,.footer-links button{width:max-content;max-width:100%;position:relative;transition:color .25s ease,translate .3s var(--ease-out)}
.footer-links a:hover,.footer-links button:hover{translate:4px 0}
.footer-symbol{transition:opacity .4s ease,rotate .65s var(--ease-out),scale .65s var(--ease-out)}
.footer-symbol:hover{opacity:1;rotate:-6deg;scale:1.07}
.reading-progress>span{transition:width .12s linear}
.source-symbol{transition:transform .4s var(--ease-out)}
.article-source:hover .source-symbol{transform:translate(3px,-3px)}
.search-field{transition:border-color .25s ease,box-shadow .25s ease}
.search-field:focus-within{border-color:var(--red);box-shadow:0 5px 0 -3px #ed30241a}
.search-result{transition:padding-left .3s var(--ease-out),background-color .25s ease}
.search-result:hover{padding-left:9px}
.rubric-tile>div>svg{transition:transform .4s var(--ease-out)}
.rubric-tile:hover>div>svg{transform:translate(3px,-3px)}
/* Native dialogs retain their top-layer position throughout the closing transition. */
dialog{opacity:0;transform:translateY(18px) scale(.985);transition:opacity .24s ease,transform .35s var(--ease-out),display .35s allow-discrete,overlay .35s allow-discrete}
dialog[open]{opacity:1;transform:translateY(0) scale(1)}
dialog::backdrop{opacity:0;transition:opacity .3s ease,display .3s allow-discrete,overlay .3s allow-discrete}
dialog[open]::backdrop{opacity:1}
@starting-style{dialog[open]{opacity:0;transform:translateY(18px) scale(.985)}dialog[open]::backdrop{opacity:0}}
@keyframes menu-reveal{from{opacity:0;transform:translateY(-10px);clip-path:inset(0 0 15% 0)}to{opacity:1;transform:none;clip-path:inset(0)}}
@media(max-width:600px){.js-ready .navigation.is-open{animation:menu-reveal .35s var(--ease-out) both}}
.ripple-target{position:relative;overflow:hidden;isolation:isolate}
.click-wave{position:absolute;pointer-events:none;border-radius:50%;background:currentColor;opacity:0;z-index:-1;transform:translate(-50%,-50%)}
@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto!important}
 *,*::before,*::after{animation:none!important;transition:none!important}
 .news-card:hover,.rubric-tile:hover,.latest li:hover,.wordmark:hover,.solid-button:hover,.outline-button:hover,.load-more:hover,.filter:hover,.footer-links a:hover,.footer-links button:hover,.search-result:hover{translate:none!important}
 .wordmark:active,.save-button:hover,.search-button:hover,.saved-link:hover,.menu-toggle:hover,.save-button:active,.search-button:active,.saved-link:active,.menu-toggle:active,.footer-symbol:hover{scale:1!important;rotate:none!important}
 .card-image img,.lead-photo>img,.feed-image img,.city-feature-image>img,.event-image img,.article-cover>img{transform:none!important}
 .wordmark img{transform:none!important}
}
