/* Public editorial rhythm. Brand and typography remain owned by shared tokens. */
.site-skip-link{position:fixed;inset-block-start:12px;inset-inline-start:20px;z-index:100;background:var(--satc-root-brew);color:#fff;padding:12px 22px;border-radius:var(--radius-control);transform:translateY(-160%)}
.site-skip-link:focus{transform:none;color:#fff}
#siteContent{outline:none}
.shared-layout :is(a,button,input,select,textarea):focus-visible{outline:2px solid var(--satc-wild-hillside);outline-offset:5px}
.shared-layout :is(.header,.satc-on-dark) :is(a,button):focus-visible{outline-color:var(--satc-veiling-waterfalls)}
.shared-layout :is(.satc-btn, .satc-control){transition:background-color var(--motion-normal),color var(--motion-normal),transform var(--motion-normal)}
.shared-layout :is(.satc-btn,.satc-control):active{transform:translateY(1px)}
.shared-layout section[id]{scroll-margin-block-start:120px}
.shared-layout .satc-desc{max-width:65ch;text-wrap:pretty}
.shared-layout :is(.project-media,.news-media){overflow:hidden}
.shared-layout :is(.project-media,.news-media) img{transition:transform 650ms cubic-bezier(.2,.65,.3,1)}
@media(hover:hover){.shared-layout :is(.project-card,.news-card):hover img{transform:scale(1.035)}}
.home-v2.home .hero-slider{position:relative}
.home-v2.home .news{padding-block:var(--section-y)}
.home-v2.home .news-grid{gap:32px}
.news-empty{padding:32px;border-inline-start:2px solid var(--satc-veiling-waterfalls);background:var(--satc-paper);color:var(--satc-root-brew)}
@media(prefers-reduced-motion:reduce){
  .shared-layout :is(.project-media,.news-media) img{transition:none}
  .shared-layout :is(.project-card,.news-card):hover img{transform:none}
}
