/* Match the interactive surface to the visible tunnel silhouette. */
.home-field .home-tile{width:min(calc((100% - 96px)/7),calc((100svh - 113px)/6 - 12px));clip-path:url(#project-tunnel)}
.home-field .home-tile .thumb{width:100%;height:100%}
.empty-tunnel{pointer-events:none}
.empty-tunnel .thumb{transition:none}
.home-field .home-tile.awaiting-entrance{visibility:hidden;pointer-events:none}
.home-field.home-entering .home-tile{transition:none!important;pointer-events:none}
.hover-study .thumb,.hover-study img{background:transparent}
.hover-study img{object-fit:contain!important;object-position:center!important}
.project-link .thumb{isolation:isolate}
.project-link .thumb:after{content:'';position:absolute;inset:0;pointer-events:none;background:var(--project-color,#101010);mix-blend-mode:multiply;opacity:0;transition:opacity .4s}
.project-link:focus-visible .thumb img{filter:grayscale(1);transform:none}
.project-link:focus-visible .thumb:after{opacity:.75}
@media(hover:hover) and (pointer:fine){
 .project-link:hover .thumb img{filter:grayscale(1);transform:none}
 .project-link:hover .thumb:after{opacity:.75}
}
header nav a:before,header nav a+a:before{content:none!important}
@media(max-width:800px){
 .home-field .home-tile{width:min(calc((100% - 48px)/4),calc((100svh - 113px)/7 - 10px))}
 header.menu-open nav{gap:18px}
}
@media(prefers-reduced-motion:reduce){.empty-tunnel .thumb,.project-link .thumb:after{transition:none}}

/* Frosted-glass entrance action centered above the bottom edge. */
.entry-title{inset:auto 0 0;flex-direction:row;align-items:center;justify-content:center;padding:0 16px max(64px,calc(env(safe-area-inset-bottom) + 40px));transform-origin:center bottom;gap:0;z-index:2;color:#fff;mix-blend-mode:normal;pointer-events:none}
.entry-title #enter{pointer-events:auto;display:flex;align-items:center;justify-content:center;min-width:174px;min-height:48px;padding:0 23px;margin:0;border:1px solid #ffffff65;border-radius:30px;background:#1d1d1d45;color:#fff;font-size:12px;font-weight:400;line-height:1.3;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);transition:background .25s,border-color .25s}
.entry-title #enter:hover{background:#1d1d1d88;border-color:#ffffffb0;text-decoration:none}
.entry-title #enter:focus-visible{outline:2px solid #fff;outline-offset:5px}
.entry-title #enter:disabled{cursor:default}
@media(prefers-reduced-motion:reduce){.entry-title #enter{transition:none}}

/* Bring the EAI emblem closer within its album tunnel, including hover/focus. */
.project-link .thumb img[src="assets/eai/cover-v1.webp"],
.project-link:hover .thumb img[src="assets/eai/cover-v1.webp"],
.project-link:focus-visible .thumb img[src="assets/eai/cover-v1.webp"]{transform:scale(1.25);transform-origin:center}

/* Home entrance uses an upward masked reveal at full opacity. */
.home-title{overflow:hidden;line-height:1.2;padding:.04em 0}
.home-title-track{display:block}
.home-field.home-entering .home-tile .thumb{transition:none!important}

/* Route changes use a solid moving cover, never a dissolve. */
#page-wipe{opacity:1;transform:translateY(100%)}

/* Reserve the complete name while the visible letters type in place. */
.hover-name-measure{display:block;visibility:hidden}
.hover-name-display{position:absolute;inset:0;text-align:center}
.hover-name-display .type-caret{font-size:.8em;vertical-align:.05em}
@media(prefers-reduced-motion:reduce){.hover-name-display .type-caret{display:none}}

/* Touch gestures on the intro always scroll; desktop mouse dragging remains available. */
@media(max-width:800px),(pointer:coarse){#entry .shape-hit{pointer-events:none;touch-action:pan-y;cursor:default}}

.hover-project-name{white-space:nowrap;max-width:none}
.hover-name-measure{padding-inline:.5em}
