*, *::after, *::before { box-sizing: border-box; } :root { font-size: 16px; --color-text: #000; --color-bg: hsl(22deg 25% 73%); --color-text-alt: hsl(1deg 69% 50%); --color-link: #000; --color-link-hover: #000; /* Column/item variables */ --ratio: 1.3; /* image ratio */ --grid-item-width: 32vw; /* image width */ --justify: space-between; /* spread columns or center */ --gap: 2.5vw; /* column gap and margin for items */ --rotation: 0deg; /* section rotation */ --radius: 0px; /* image border radius */ --offset: -30vh; /* offset of even columns */ /* content section */ --radius-small: 4px; /* border radius of small images */ } body { margin: 0; text-transform: uppercase; color: var(--color-text); background-color: var(--color-bg); font-family: acumin-pro, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .demo-2 { --color-bg: #df6a26; --color-text-alt: #eaa750; --ratio: 1; --grid-item-width: 23vw; --radius: 8px; } .demo-3 { --color-bg: #ede9e6; --color-text-alt: hsl(10deg 69% 50%); --ratio: 1.1; --grid-item-width: 17vw; --radius: 12px; --justify: center; --gap: 2.5vw; } .demo-4 { --color-text: #fff; --color-link: #fff; --color-link-hover: #aaa; --color-bg: #0f0e0e; --color-text-alt: hsl(10deg 69% 50%); --ratio: 1; --grid-item-width: 25vw; --radius: 4px; --justify: center; --gap: 2.5vw; --rotation: -45deg; --offset: 20vh; } .demo-5 { --color-bg: hsl(1deg 15% 83%); --color-text-alt: hsl(10deg 69% 50%); --ratio: 0.8; --grid-item-width: 30vw; --radius: 0; --justify: center; --gap: 1.5vw; --offset: 0; } /* Page Loader */ .js .loading::before, .js .loading::after { content: ''; position: fixed; z-index: 1000; } .js .loading::before { top: 0; left: 0; width: 100%; height: 100%; background: var(--color-bg); } .js .loading::after { top: 50%; left: 50%; width: 60px; height: 60px; margin: -30px 0 0 -30px; border-radius: 50%; opacity: 0.4; background: var(--color-link); animation: loaderAnim 0.7s linear infinite alternate forwards; } @keyframes loaderAnim { to { opacity: 1; transform: scale3d(0.5,0.5,1); } } a { text-decoration: none; color: var(--color-link); outline: none; cursor: pointer; } a:hover { color: var(--color-link-hover); outline: none; } /* Better focus styles from https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible */ a:focus { /* Provide a fallback style for browsers that don't support :focus-visible */ outline: none; background: lightgrey; } a:focus:not(:focus-visible) { /* Remove the focus indicator on mouse-focus for browsers that do support :focus-visible */ background: transparent; } a:focus-visible { /* Draw a very noticeable focus style for keyboard-focus on browsers that do support :focus-visible */ outline: 2px solid red; background: transparent; } .unbutton { background: none; border: 0; padding: 0; margin: 0; font: inherit; cursor: pointer; } .unbutton:focus { outline: none; } .frame { width: 100%; line-height: 1.2; font-size: 1rem; color: var(--color-title); padding: 1rem; display: grid; grid-template-columns: auto auto; grid-template-areas: 'title prev' 'nav nav' 'sponsor sponsor'; grid-gap: 1rem; z-index: 100; position: absolute; } .frame a:not(.frame__title-back), .row + p a { white-space: nowrap; overflow: hidden; position: relative; } .frame a:not(.frame__title-back)::before, .row + p a::before { content: ''; height: 1px; width: 100%; background: currentColor; position: absolute; top: 90%; transition: transform 0.3s; transform-origin: 0% 50%; } .frame a:not(.frame__title-back):hover::before, .row + p a:hover::before { transform: scaleX(0); transform-origin: 100% 50%; } .frame__title { grid-area: title; display: flex; white-space: nowrap; } .frame__title-main { font-size: 1rem; margin: 0; font-weight: normal; } .frame__title-back { position: relative; display: flex; align-items: flex-end; } .frame__title-back span { display: none; } .frame__title-back svg { fill: currentColor; } .frame__prev { justify-self: end; grid-area: prev; } .frame__demos { grid-area: nav; display: flex; flex-wrap: wrap; justify-self: stretch; justify-content: space-between; } .frame__demos-title { font-weight: 400; margin: 0; font-size: 1rem; width: 100%; color: var(--color-text-alt); } .frame__demos-item { grid-row: 2; } .section { line-height: 1; position: static; top: 0; z-index: 4; width: 100%; min-height: 100vh; background: var(--color-bg); } .section--intro { margin-bottom: 250vh; height: 100vh; display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: center; padding: 8rem 0 2rem; cursor: default; } .section__title { font-family: kudryashev-d-excontrast-sans, sans-serif; font-weight: 300; font-size: clamp(2rem,17vw,12.5rem); margin: 5vh 0 6vh; line-height: 0.9; text-transform: none; -moz-font-feature-settings: "swsh"; -webkit-font-feature-settings: "swsh"; font-feature-settings: "swsh"; } .section__title--medium { font-size: clamp(1.5rem,12vw,9rem); } .section__text { margin: 0; max-width: 400px; } .section__text--alt { margin-top: auto; color: var(--color-text-alt); } .section__arrow { transform: translateY(3px) rotate(135deg); fill: currentColor; } .section--columns { position: fixed; left: 0; top: 0; right: 0; bottom: 0; z-index: -1; width: 100%; height: 100vh; } .columns { width: 100%; position: relative; display: flex; justify-content: var(--justify); gap: var(--gap); height: 100%; transform: rotate(var(--rotation)); align-items: center; will-change: transform, opacity; } .column-wrap { position: relative; z-index: 1; display: flex; flex-direction: column; padding: 5vh 0 15vh; will-change: transform; } .column-wrap:nth-child(even) { margin-top: var(--offset); } .column { position: relative; display: block; will-change: transform; } .column__item { --grid-item-height: calc(var(--grid-item-width) * var(--ratio)); width: var(--grid-item-width); height: var(--grid-item-height); position: relative; overflow: hidden; border-radius: var(--radius); cursor: pointer; margin: 0 0 var(--gap) 0; z-index: 1; will-change: transform, filter; } .column__item-img { width: 100%; height: 100%; background-size: cover; background-position: 50% 50%; will-change: transform; } .section--showcase { display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: center; padding: 8rem 5vw 10vh; cursor: default; } .section__header { display: flex; border-bottom: 1px solid #000; width: 100%; align-items: center; justify-content: space-around; padding: 4vh 8vw; margin-bottom: 4rem; } .section__year { color: var(--color-text-alt); } .row { text-align: left; width: 100%; } .row__header { width: 100%; display: grid; grid-template-columns: 4ch 1fr; grid-template-rows: auto auto; grid-gap: 2rem; justify-content: start; padding: 6rem 0 3rem; } .row__header span:last-child { grid-column: 1 / span 2; } .row__content { display: grid; width: 100%; grid-auto-flow: column; grid-gap: 1rem; justify-content: start; } .row__content-imgwrap { overflow: hidden; position: relative; border-radius: var(--radius-small); } .row__content-img { aspect-ratio: 2; height: 100px; background-size: cover; background-position: 50% 50%; } .row__content-imgwrap:nth-child(even) .row__content-img{ aspect-ratio: 1; } .row__content-imgwrap:nth-child(4n) .row__content-img{ aspect-ratio: 1.5; } .row__content-imgwrap:last-child { justify-content: end; } .row__content-imgwrap:last-child .row__content-img { aspect-ratio: 2.75; } .row + p { margin-top: 40vh; } @media screen and (min-width: 53em) { .frame { grid-template-columns: 15% 15% 1fr 15% 15%; grid-template-rows: auto; padding: 2rem 3rem; grid-template-areas: 'title prev nav sponsor sponsor'; justify-content: start; grid-gap: 2rem; align-items: center; justify-items: start; } .frame__prev { justify-self: start; } .frame__demos { text-align: center; justify-self: center; } .section, .row { font-size: 1.45rem; } .row__header { display: grid; grid-template-columns: 4ch auto 1fr; grid-template-rows: auto; } .row__header span:last-child { justify-self: end; grid-column: revert; } }