:root{--niche-accent:#8a65ff}
.gallery{padding-top:clamp(56px,7vw,110px)}
.abstract-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(16px,1.7vw,26px);perspective:1400px}
.abstract-grid .logo-card,.abstract-grid .logo-card:nth-child(n){display:block;grid-column:auto;width:100%;aspect-ratio:1;padding:0;overflow:hidden;border:1px solid #ffffff25;border-radius:14px;background:#15131b;box-shadow:0 25px 48px #0007,0 7px 14px #0006,inset 0 1px 0 #ffffff28;cursor:pointer;transform:translateY(0) rotateX(2deg);transition:transform .28s var(--ease),border-color .28s ease,box-shadow .28s ease}
.abstract-grid .logo-card::before{content:"";position:absolute;z-index:2;inset:0;background:linear-gradient(140deg,#ffffff24,transparent 25%,transparent 72%,#00000024);pointer-events:none}.abstract-grid .logo-card::after{height:2px}
.abstract-grid .logo-card img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .45s var(--ease)}
.abstract-grid .logo-card:hover,.abstract-grid .logo-card:focus-visible{transform:translateY(-8px) rotateX(0);border-color:var(--niche-accent);box-shadow:0 36px 70px #000a,0 9px 20px #0007,inset 0 1px 0 #ffffff2e;outline:none}.abstract-grid .logo-card:hover img{transform:scale(1.028)}
.viewer{width:min(94vw,1300px);height:min(92vh,920px);padding:66px 78px 42px;border:1px solid #ffffff29;border-radius:0;background:#09080ddd;color:#fff;box-shadow:0 32px 100px #000c;backdrop-filter:blur(18px)}.viewer::backdrop{background:#030305e8;backdrop-filter:blur(12px)}
.viewer-stage{display:grid;place-items:center;width:100%;height:100%;margin:0;overflow:hidden;border:1px solid #ffffff1f;background:#111016}.viewer-stage img{display:block;max-width:100%;max-height:100%;object-fit:contain}.viewer-close,.viewer-nav{position:absolute;z-index:2;border:1px solid #ffffff2e;border-radius:0;background:#100f14eb;color:#fff;font:700 .6rem/1 "IBM Plex Mono",monospace;text-transform:uppercase;cursor:pointer}.viewer-close{right:18px;top:14px;display:flex;align-items:center;gap:10px;min-height:44px;padding:0 16px}.viewer-close span{font-size:1.1rem}.viewer-nav{top:50%;width:50px;height:54px;font-size:1rem;transform:translateY(-50%)}.viewer-prev{left:14px}.viewer-next{right:14px}.viewer-close:hover,.viewer-nav:hover{border-color:var(--niche-accent);color:var(--niche-accent)}.viewer-count{position:absolute;bottom:16px;left:50%;margin:0;color:#aaa6ae;font:700 .58rem/1 "IBM Plex Mono",monospace;letter-spacing:.12em;transform:translateX(-50%)}
@media(max-width:1080px){.abstract-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.abstract-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.viewer{padding:60px 16px 78px}.viewer-nav{top:auto;bottom:16px;width:calc(50% - 24px);transform:none}.viewer-prev{left:16px}.viewer-next{right:16px}}
@media(max-width:430px){.abstract-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.abstract-grid .logo-card,.abstract-grid .logo-card img{transition:none}}

/* Style collections use the same quiet, non-interactive image grid as every industry. */
.abstract-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.abstract-grid .logo-card,.abstract-grid .logo-card:nth-child(n){margin:0;border-radius:14px;background:transparent;box-shadow:none;cursor:default;transform:none}
.abstract-grid .logo-card::before,.abstract-grid .logo-card::after{display:none}
.abstract-grid .logo-card img{object-fit:cover;filter:grayscale(1) saturate(.15) contrast(1.05);transform:none;transition:filter .3s ease}
.abstract-grid .logo-card:hover,.abstract-grid .logo-card:focus-visible{border-color:#ffffff38;box-shadow:none;transform:none}
.abstract-grid .logo-card:hover img,.abstract-grid .logo-card:focus-visible img{filter:none;transform:none}
@media(max-width:1050px){.abstract-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}}
@media(max-width:760px){.abstract-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}}
@media(max-width:460px){.abstract-grid{grid-template-columns:1fr}}
@media(hover:none){.abstract-grid .logo-card img{filter:none}}
