/* V20: picture wrappers must preserve existing image layout */
.portrait picture,.about-image picture,.bio-opening picture,.photo-gallery picture,.contact-person picture,.intro picture{display:block;width:100%;}
.portrait picture img,.about-image picture img,.bio-opening picture img,.photo-gallery picture img,.contact-person picture img,.intro picture img{max-width:100%;height:auto;}
/* Preserve original absolute hero portrait cropping after wrapping in picture. */
.photo-portrait>picture{position:absolute;inset:0;width:100%;height:100%;display:block;}
.photo-portrait>picture>img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover;object-position:center 25%;}
.photo-gallery picture>img{width:100%;height:300px;object-fit:cover;}
.about-image picture>img{width:100%;height:410px;object-fit:cover;object-position:center 28%;}
/* V24: keyboard visibility and reduced-motion support, no default visual redesign. */
.menu-btn:focus-visible,.links a:focus-visible,.theme-toggle:focus-visible,.bio-jump a:focus-visible,.bio-wrap .project-tile:focus-visible{outline:3px solid #eeb85f;outline-offset:3px;}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.tile,.network-card,.bio-wrap .project-tile{transition:none}.tile:hover,.network-card:hover,.bio-wrap .project-tile:hover{transform:none}}
