/* Presentation-only gallery; the six working mini-sites keep their own systems. */
.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:52px 26px}
.gallery-card{min-width:0}
.gallery-open{display:block;width:100%;position:relative;padding:0;border:0;border-radius:20px;overflow:hidden;background:#141517;aspect-ratio:3/2;cursor:zoom-in;isolation:isolate}
.gallery-open>img{display:block;width:100%;height:100%;object-fit:contain;transform:scale(1);filter:brightness(1) blur(0);transition:transform 780ms cubic-bezier(.22,1,.36,1),filter 620ms ease}
/* Text rises while the complete underline settles downward, with a slight stagger. */
.gallery-hover{position:absolute;inset:0;display:grid;place-items:center;background:#0d191d55;color:white;opacity:0;transition:opacity 480ms cubic-bezier(.25,.1,.25,1);font-weight:350;letter-spacing:-.025em;text-shadow:0 1px 12px #0007;pointer-events:none}
.gallery-focus{position:relative;display:flex;align-items:center;gap:16px;width:max-content;max-width:calc(100% - 40px)}
.gallery-wording{position:relative;flex:none}
.gallery-invite{display:block;white-space:nowrap;font-size:26px;font-weight:350;line-height:1.25;letter-spacing:-.035em;opacity:0;transform:translateY(6px);transition:transform 620ms cubic-bezier(.25,.1,.25,1),opacity 560ms cubic-bezier(.25,.1,.25,1)}
.gallery-underline{position:absolute;left:0;right:0;bottom:-12px;height:1px;background:#ffffffb3;opacity:0;transform:translateY(-4px);transition:transform 580ms cubic-bezier(.25,.1,.25,1),opacity 560ms cubic-bezier(.25,.1,.25,1)}
.gallery-eyes{display:block;flex:none;width:64px;height:36px;opacity:0;transform:translateY(6px);transition:opacity 560ms cubic-bezier(.25,.1,.25,1),transform 580ms cubic-bezier(.25,.1,.25,1)}
.gallery-eyes svg{display:block;width:100%;height:100%;overflow:visible}
.gallery-eyes path{stroke:currentColor;stroke-width:1.4;stroke-linejoin:round}
.gallery-eyes circle{fill:currentColor}
.gallery-eye-life{transform-box:fill-box;transform-origin:center;animation:gallery-eye-life 3000ms cubic-bezier(.45,0,.25,1) 0ms infinite both;animation-play-state:paused}
.gallery-gaze{animation:gallery-gaze 3000ms cubic-bezier(.45,0,.25,1) 0ms infinite both;animation-play-state:paused}
.gallery-blink{transform-box:fill-box;transform-origin:center;animation:gallery-blink 3000ms ease 0ms infinite both;animation-play-state:paused}
.gallery-eye-right{animation-name:gallery-right-blink;transform-box:view-box;transform-origin:48px 18px}
/* Only the lower lid lifts; the pupil keeps its round shape between blinks. */
.gallery-lid{animation:gallery-lower-lid 3000ms cubic-bezier(.45,0,.55,1) 0ms infinite both;animation-play-state:paused}
.gallery-open:is(:hover,:focus-visible) .gallery-invite{opacity:1;transform:translateY(0);transition-delay:20ms}
.gallery-open:is(:hover,:focus-visible) .gallery-underline{opacity:1;transform:translateY(0);transition-delay:100ms}
.gallery-open:is(:hover,:focus-visible) .gallery-eyes{opacity:1;transform:translateY(0);transition-delay:180ms}
.gallery-open:is(:hover,:focus-visible) :is(.gallery-gaze,.gallery-blink,.gallery-eye-life,.gallery-lid){animation-play-state:running}
@keyframes gallery-eye-life{0%,90%,100%{transform:translateY(0) rotate(0) scale(1)}25%,34%{transform:translateY(-1px) rotate(-3deg) scale(1.06)}48%,58%{transform:translateY(-1px) rotate(2deg) scale(1.1)}72%{transform:translateY(0) rotate(0) scale(1)}}
@keyframes gallery-gaze{0%,90%,100%{transform:translate(0,0)}25%,34%{transform:translate(-3px,-.5px)}48%,60%{transform:translate(3px,0)}76%{transform:translate(0,0)}}
@keyframes gallery-blink{0%,42%,61%,72%,79%,100%{transform:scaleY(1)}48%,54%{transform:scaleY(1.08)}75%{transform:scaleY(.08)}}
@keyframes gallery-right-blink{0%,73%,81%,100%{transform:scaleY(1)}77%{transform:scaleY(.08)}}
@keyframes gallery-lower-lid{0%,34%,63%,100%{d:path("M36 18C42 7 54 7 60 18C54 29 42 29 36 18Z")}45%,54%{d:path("M36 18C42 7 54 7 60 18C54 25 42 25 36 18Z")}}
.gallery-open:hover>img,.gallery-open:focus-visible>img{transform:scale(1.025);filter:brightness(.63) blur(1px)}
.gallery-open:hover .gallery-hover,.gallery-open:focus-visible .gallery-hover{opacity:1}
.gallery-open:focus-visible{outline:2px solid #dce6ed;outline-offset:5px}
.gallery-caption{padding:23px 2px 0}.gallery-caption .eyebrow{font-size:9px;color:#a5afb6;margin-bottom:10px}
.gallery-caption h3{font-size:clamp(20px,1.6vw,28px);font-weight:430;letter-spacing:-.035em;line-height:1.16;margin:0 0 12px}
.gallery-caption>p:last-child{font-size:14px;line-height:1.7;color:#aeb5ba;max-width:430px;margin:0}
.gallery-next{display:flex;align-items:center;justify-content:space-between;gap:50px;margin-top:48px;padding-top:26px;border-top:1px solid #ffffff20}
.gallery-next>p{font-size:13px;color:#929ca5;line-height:1.7;max-width:690px;margin:0}.gallery-next>a{white-space:nowrap;flex:none}
.gallery-dialog{--surface-ease:cubic-bezier(.4,0,.2,1);background:#191c1ef7;max-width:1640px}
.gallery-dialog .concept-toolbar{padding:22px 30px 18px}
.gallery-dialog .concept-toolbar h2{font-size:24px}
.gallery-image-stage{flex:1;min-height:0;display:flex;justify-content:center;align-items:center;padding:0 30px;overflow:hidden}
.gallery-image-stage>img{display:block;width:100%;height:100%;object-fit:contain;min-height:0;border-radius:4px}
.gallery-dialog-footer{flex:none;display:flex;align-items:center;justify-content:space-between;gap:36px;padding:20px 30px 25px}
.gallery-dialog-footer p{margin:0 0 5px;font-size:14px;line-height:1.6;color:#d5d9dc;max-width:780px}
.gallery-dialog-footer small{font-size:11px;color:#929da6;line-height:1.5}
.gallery-try{flex:none;white-space:nowrap;cursor:pointer;background:transparent;padding:10px 0 12px}
.gallery-try:hover #gallery-try-label{transform:none}
html.reduced .gallery-open>img,html.reduced .gallery-hover,html.reduced .gallery-invite,html.reduced .gallery-underline,html.reduced .gallery-eyes{transition:none}
html.reduced .gallery-open:hover>img,html.reduced .gallery-open:focus-visible>img{transform:none}
@media(prefers-reduced-motion:reduce){.gallery-open>img,.gallery-hover,.gallery-invite,.gallery-underline,.gallery-eyes{transition:none}.gallery-open:hover>img,.gallery-open:focus-visible>img{transform:none}}

html.reduced :is(.gallery-gaze,.gallery-blink,.gallery-eye-life,.gallery-lid){animation:none}
@media(prefers-reduced-motion:reduce){.gallery-gaze,.gallery-blink,.gallery-eye-life,.gallery-lid{animation:none}}
