/* Main portfolio: one quiet, consistent interaction vocabulary. */
body:not(.spatial-page){--ease-out:cubic-bezier(.2,.7,.2,1)}
body:not(.spatial-page) :is(.pill-link,.text-link,.arrow-circle,.brand-mark,.back-to-top,.lab-controls button,.filters button){transition:background-color .2s,color .2s,border-color .2s,box-shadow .25s,transform .25s var(--ease-out)}
body:not(.spatial-page) :is(a,button,summary):focus-visible{outline:2px solid var(--green);outline-offset:5px}
body:not(.spatial-page) .project-card .visual{overflow:hidden;transition:box-shadow .35s var(--ease-out),background-color .3s}
body:not(.spatial-page) .project-card .visual img{transition:transform .55s var(--ease-out);transform-origin:50% 50%}
body:not(.spatial-page) .project-card h3{transition:color .2s}
body:not(.spatial-page) .project-card:focus-visible .arrow-circle{background:var(--ink);border-color:var(--ink);color:var(--paper);transform:translate(2px,-2px)}
body:not(.spatial-page) .text-link span[aria-hidden],body:not(.spatial-page) .pill-link span[aria-hidden]{transition:transform .25s var(--ease-out)}
body:not(.spatial-page) .header-shell{transition:box-shadow .3s,border-color .3s;border-bottom:1px solid transparent}
body:not(.spatial-page).has-scrolled .header-shell{box-shadow:0 5px 20px #1c292408;border-bottom-color:var(--line)}
body:not(.spatial-page) .site-header nav a{transition:color .2s}
body:not(.spatial-page) .site-header nav a[aria-current=location]{color:var(--green)}
body:not(.spatial-page) .site-header nav a[aria-current=location]::after{width:100%}
body:not(.spatial-page) .section-nav a{transition:background-color .2s,color .2s,border-color .2s}
body:not(.spatial-page) :is(.more-quotes,.supporting-media,.mobile-toc)>summary{transition:background-color .2s,color .2s;border-radius:5px}
body:not(.spatial-page) .next-project{transition:color .2s,border-color .2s}
body:not(.spatial-page) .image-button{overflow:hidden}
body:not(.spatial-page) .image-button img{transition:transform .45s var(--ease-out),filter .3s}
body:not(.spatial-page) .play-control{transition:transform .25s var(--ease-out),background-color .2s,color .2s,box-shadow .25s}
body:not(.spatial-page) .zoom-hint{transition:opacity .2s,transform .25s}
body:not(.spatial-page) :is(.image-button,[data-player]):focus-visible .play-control{background:var(--green);color:white;box-shadow:0 0 0 7px #ffffff30}
body:not(.spatial-page) .image-button:focus-visible .zoom-hint{opacity:1}
@media(hover:hover) and (pointer:fine){
 body:not(.spatial-page) .project-card:hover .visual{box-shadow:0 10px 24px -16px #1c29245c}
 body:not(.spatial-page) .project-card:hover .visual img{transform:scale(1.025)}
 body:not(.spatial-page) .project-card:hover h3{color:var(--green)}
 body:not(.spatial-page) .project-card:hover .arrow-circle,body:not(.spatial-page) .next-project:hover .arrow-circle{background:var(--ink);border-color:var(--ink);color:var(--paper);transform:translate(2px,-2px)}
 body:not(.spatial-page) .text-link:hover{color:var(--green)}
 body:not(.spatial-page) .text-link:hover span[aria-hidden],body:not(.spatial-page) .pill-link:hover span[aria-hidden]{transform:translate(2px,-2px)}
 body:not(.spatial-page) .brand:hover .brand-mark{background:var(--ink);color:var(--paper);border-color:var(--ink)}
 body:not(.spatial-page) .site-header nav a:hover{color:var(--green)}
 body:not(.spatial-page) .section-nav a:hover{background:#e8ede3;color:var(--green)}
 body:not(.spatial-page) :is(.more-quotes,.supporting-media,.mobile-toc)>summary:hover{background:#e5ebdf;color:var(--green)}
 body:not(.spatial-page) .back-to-top:hover{background:var(--ink);border-color:var(--ink);color:var(--paper);transform:translateY(-3px)}
 body:not(.spatial-page) .image-button:hover img{transform:scale(1.012)}
 body:not(.spatial-page) [data-player]:hover .play-control{background:var(--green);color:white;transform:scale(1.07);box-shadow:0 0 0 7px #ffffff30}
 body:not(.spatial-page) .filters button:hover:not([aria-pressed=true]){background:#e5ebdf;border-color:#aab8a6}
}
body:not(.spatial-page) :is(.pill-link,.lab-controls button,.filters button,.back-to-top):active:not(:disabled){transform:scale(.96);box-shadow:none}
body:not(.spatial-page) .project-card:active .arrow-circle{transform:scale(.92)}
body:not(.spatial-page) [data-player]:active .play-control{transform:scale(.94)}
body:not(.spatial-page) .lab-controls button:disabled{transform:none;box-shadow:none}
@media(prefers-reduced-motion:reduce){body:not(.spatial-page) *,body:not(.spatial-page) *::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}body:not(.spatial-page) .project-card:hover .visual img,body:not(.spatial-page) .image-button:hover img{transform:none}}
