*, *::after, *::before { box-sizing: border-box; } :root { font-size: 12px; --color-text: #9b9b9b; --color-bg: #eaeeed; --color-link: #9b9b9b; --color-link-hover: #000000; --color-desc: #9b9b9b; --page-padding: 1.5rem; } /* The slider drives the gallery, so the document itself never scrolls */ html, body { height: 100%; overflow: hidden; } body { margin: 0; color: var(--color-text); background-color: var(--color-bg); font-family: "host-grotesk", sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; scrollbar-width: none; -ms-overflow-style: none; overscroll-behavior: none; touch-action: none; } @media (scripting: enabled) { .loading { &::before, &::after { content: ""; position: fixed; z-index: 10000; } &::before { top: 0; left: 0; width: 100%; height: 100%; background: var(--color-bg); } &::after { top: 50%; left: 50%; width: 100px; height: 1px; margin: 0 0 0 -50px; background: var(--color-link); animation: loaderAnim 1.5s ease-in-out infinite alternate forwards; } } } @keyframes loaderAnim { 0% { transform: scaleX(0); transform-origin: 0% 50%; } 50% { transform: scaleX(1); transform-origin: 0% 50%; } 50.1% { transform: scaleX(1); transform-origin: 100% 50%; } 100% { transform: scaleX(0); transform-origin: 100% 50%; } } a { text-decoration: none; color: var(--color-link); outline: none; cursor: pointer; &:hover { text-decoration: underline; color: var(--color-link-hover); } &:focus { outline: none; background: lightgrey; &:not(:focus-visible) { background: transparent; } &:focus-visible { outline: 2px solid red; background: transparent; } } } .frame { padding: var(--page-padding); display: grid; z-index: 100; position: relative; gap: 1rem; pointer-events: none; justify-items: start; grid-template-columns: 100%; grid-template-areas: "title" "links" "tags" "sponsor"; #cdawrap { justify-self: start; grid-area: sponsor; } a, button { pointer-events: auto; } .frame__title { grid-area: title; font-size: inherit; font-weight: inherit; margin: 0; } .frame__tags { grid-area: tags; display: flex; flex-wrap: wrap; gap: 1rem; } .frame__links { display: flex; flex-wrap: wrap; gap: 1rem; } .frame__links { grid-area: links; } @media screen and (min-width: 53em) { height: 100%; position: fixed; top: 0; left: 0; width: 100%; grid-template-columns: auto auto 1fr; grid-template-rows: auto auto; align-content: space-between; grid-template-areas: "title ... links" "tags tags sponsor"; .frame__tags { align-self: end; } .frame__links, #cdawrap { justify-self: end; text-align: right; max-width: 300px; } } } /* Gallery */ .gallery { display: flex; flex-direction: column; align-items: center; gap: 12vh; width: 100%; padding-top: 14vh; } .gallery__slide { flex-shrink: 0; transform: translateX(var(--stagger, 0vw)); cursor: pointer; outline: none; padding: 0; } .gallery__slide:nth-child(1) { --stagger: -24vw; --img-w: 290px; } .gallery__slide:nth-child(2) { --stagger: 14vw; --img-w: 330px; } .gallery__slide:nth-child(3) { --stagger: -18vw; --img-w: 270px; } .gallery__slide:nth-child(4) { --stagger: 22vw; --img-w: 450px; } .gallery__slide:nth-child(5) { --stagger: -26vw; --img-w: 300px; } .gallery__slide:nth-child(6) { --stagger: 28vw; --img-w: 150px; } .gallery__slide:nth-child(7) { --stagger: -20vw; --img-w: 230px; } .gallery__slide:nth-child(8) { --stagger: 8vw; --img-w: 460px; } .gallery__slide:nth-child(9) { --stagger: -12vw; --img-w: 270px; } .gallery__slide:nth-child(10) { --stagger: 15vw; --img-w: 250px; } .gallery__slide:nth-child(11) { --stagger: -24vw; --img-w: 390px; } .gallery__slide:nth-child(12) { --stagger: 26vw; --img-w: 160px; } .gallery__slide:nth-child(13) { --stagger: -16vw; --img-w: 210px; } .gallery__slide:nth-child(14) { --stagger: 24vw; --img-w: 280px; } .gallery__slide:nth-child(15) { --stagger: -28vw; --img-w: 175px; } .gallery__slide:nth-child(16) { --stagger: 18vw; --img-w: 240px; } .gallery__slide:nth-child(17) { --stagger: -10vw; --img-w: 310px; } .gallery__slide figcaption { display: block; margin-top: 0.5rem; color: var(--color-desc); } .gallery__img-wrapper { position: relative; margin: 0; width: var(--img-w, 200px); height: auto; aspect-ratio: 0.8; overflow: hidden; pointer-events: none; user-select: none; img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; transform: scale(1.2); } } /** * Content: Fixed popup overlay */ .content { display: none; position: fixed; inset: 0; z-index: 1000; } /** * Content: Clicked image lands here */ .content__preview-img { position: fixed; margin: 0; top: 0; left: 0; height: 100vh; aspect-ratio: 0.8; overflow: hidden; img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.2); } } .content__group-list { display: flex; flex-direction: column; min-height: 100vh; padding-inline: calc(80vh + 1.5vw) var(--page-padding); padding-block: var(--page-padding); } .content__back { font-weight: inherit; font-size: inherit; align-self: flex-start; border: none; background: none; color: #111; cursor: pointer; padding: 0; line-height: inherit; } .content__group { display: none; } .content__group.active { display: block; } .content__title { justify-self: end; font-family: "ivyora-display", serif; font-weight: 400; font-size: clamp(2.5rem, 10vw, 6rem); line-height: 1; margin-bottom: 3rem; margin-top: 40vh; color: #141414; } .content__title:focus { outline: none; } .content__description { justify-self: end; margin-right: 10vw; max-width: 50ch; font-size: clamp(1rem, 2.5vw, 1.5rem); }