.discipline-row:focus-within:before{opacity:1;transform:none}.discipline:focus-visible h2,.discipline:focus-visible .discipline-link{transform:translateX(3px)}
.nav-links>a[aria-current=page]:after,.nav-dropdown>summary.is-active:after{transform:scaleX(1);height:2px}
body,.tint,.blue-tint,.intro,.media,.portfolio-cover,.header,.footer,.home-playground,.context-controls button{transition:background-color 220ms ease,color 220ms ease,border-color 220ms ease}
.gallery .tile:hover{transform:none}.tile>.portfolio-cover .cover-phone,.tile>.portfolio-cover .cover-detail{animation:none!important;translate:none}
.tile>.portfolio-cover .cover-desktop,.tile>.portfolio-cover .cover-phone,.tile>.portfolio-cover .cover-detail{transition:transform 260ms cubic-bezier(.22,1,.36,1)}
@media(hover:hover) and (pointer:fine){.gallery .tile:hover .cover-desktop{transform:translate(-3px,-3px)}.gallery .tile:hover .cover-phone,.gallery .tile:hover .cover-detail{transform:translate(3px,3px)}}
.gallery .tile:focus-visible .cover-desktop{transform:translate(-3px,-3px)}.gallery .tile:focus-visible .cover-phone,.gallery .tile:focus-visible .cover-detail{transform:translate(3px,3px)}
.project-outline{position:sticky;top:0;z-index:25;background:var(--bg);border-block:1px solid var(--border);padding:12px var(--gutter)}.outline-links{display:flex;gap:8px 24px;max-width:1280px;margin:auto;overflow-x:auto;scrollbar-width:thin}.outline-links a{white-space:nowrap;min-height:36px;display:flex;align-items:center;font-size:12px;color:var(--muted);border-bottom:2px solid transparent;transition:color 180ms,border-color 180ms}.outline-links a[aria-current=location]{color:var(--blue);border-color:var(--blue)}.outline-toggle{display:none}.outline-section{scroll-margin-top:95px}
.context-media{height:auto;max-height:none;min-height:0}.context-media.is-live{height:clamp(440px,70vh,720px)}.context-media>.context-screenshot{height:auto;max-height:none;overflow:visible}.context-media>.context-frame{height:100%}.context-screenshot img{height:auto;width:100%}
.copy-email{font:inherit;font-size:12px;color:var(--blue);background:transparent;border:1px solid var(--border);border-radius:6px;min-height:36px;padding:7px 10px;cursor:pointer}.copy-email:hover{background:var(--section-blue)}.copy-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(max-width:700px){.project-outline{padding:8px var(--gutter)}.outline-toggle{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:40px;padding:0;background:none;border:0;color:var(--text);font-size:13px}.outline-toggle:after{content:'+';font-size:20px;color:var(--blue)}.outline-toggle[aria-expanded=true]:after{content:'−'}.outline-links{display:none;max-height:45vh;overflow:auto}.project-outline.expanded .outline-links{display:grid;gap:0;padding-bottom:8px}.outline-links a{min-height:42px}.outline-section{scroll-margin-top:76px}.context-media.is-live{height:500px;max-height:72vh;min-height:350px}.footer-links{align-items:center}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important}.gallery .tile:hover .cover-desktop,.gallery .tile:hover .cover-phone,.gallery .tile:hover .cover-detail,.gallery .tile:focus-visible .cover-desktop,.gallery .tile:focus-visible .cover-phone,.gallery .tile:focus-visible .cover-detail{transform:none}}
.about-portrait{width:100%;max-width:440px;align-self:start;margin:0;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--section-blue)}.about-portrait img{display:block;width:100%;height:auto}@media(max-width:700px){.about-portrait{max-width:360px}}

/* Consistent feedback across project grids and navigation. */
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 .gallery .tile:hover,.home-grid .tile:hover{transform:translateY(-5px)}
 .tile:hover img{transform:scale(1.012)}
 .tile h3::after{content:' ↗';display:inline-block;opacity:0;transform:translate(-6px,3px);transition:opacity .22s,transform .3s var(--ease-out);color:var(--blue)}
 .tile:hover h3::after,.tile:focus-visible h3::after{opacity:1;transform:none}
 .category-links a{transition:background .2s,transform .25s var(--ease-out)}
 .category-links a:hover{transform:translateY(-3px)}
 .theme-toggle:hover svg{transform:rotate(18deg)}
 .theme-toggle svg{transition:transform .3s var(--ease-out)}
 .cta .button:hover{transform:translateY(-3px);box-shadow:0 10px 24px -12px rgba(var(--field-blue),.45)}
}
.tile h3::after{pointer-events:none}
.tile:focus-visible h3{color:var(--blue)}
html{scrollbar-gutter:stable}
@media(prefers-reduced-motion:reduce){
 ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
}

/* Native scroll, without trailing motion or scroll-triggered reveals. */
html{scroll-behavior:auto}
.reading-progress{display:none}
.intro::before,.home-name{animation:none}
