*, *::after, *::before { box-sizing: border-box; } :root { font-size: 18px; } body { margin: 0; --color-text: #867a8b; --color-text-alt: #9b7749; --color-link: #6b4e65; --color-link-hover: #9b7749; --color-menu: #e3dce5; --color-menu-hover: #af449a; --color-menu-border: #4c2d4e; color: var(--color-text); background: linear-gradient(to bottom, #2b192c, #1a191c); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-family: acumin-pro-wide, sans-serif; font-weight: 300; --size-menu: 6vh; } /* Page Loader */ .js .loading::before, .js .loading::after { content: ''; position: fixed; z-index: 10000; } .js .loading::before { top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to bottom, #2b192c, #1a191c); } .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; } 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 { background: transparent; } .content a:focus-visible, .frame a:focus-visible { /* Draw a very noticeable focus style for keyboard-focus on browsers that do support :focus-visible */ outline: 2px solid var(--color-link); background: transparent; } /* Line hover */ .hover-line { white-space: nowrap; overflow: hidden; position: relative; } .hover-line::before { content: ''; height: 1px; width: 100%; background: currentColor; position: absolute; top: 92%; transition: transform 0.3s; transform-origin: 0% 50%; } .hover-line:hover::before { transform: scaleX(0); transform-origin: 100% 50%; } .unbutton { background: none; border: 0; padding: 0; margin: 0; font: inherit; } .unbutton:focus { outline: none; } main { width: 100%; min-height: 100vh; display: grid; grid-template-columns: 10vw 10vh 10vw 5vw 32vw 1fr; grid-template-rows: auto 1fr; grid-template-areas: 'side side side frame frame frame' 'content content content content content content'; } .no-js main { grid-template-areas: 'content content content content content content'; } .frame { position: relative; color: var(--color-text-alt); grid-area: frame; padding: 0.75rem 1.5rem; background: #2b192c; } .frame a { pointer-events: auto; } .frame__title { font-size: 1rem; font-weight: 300; margin: 0; justify-self: start; grid-area: title; } .frame__links { grid-area: links; padding: 0; margin: 1rem 0; justify-self: end; } .frame__links a:not(:last-child) { margin-right: 1rem; } .content { grid-area: content; display: grid; place-content: center; padding: 1rem 5vw; } .button-next { cursor: not-allowed; grid-area: content; align-self: center; justify-self: end; width: 70px; height: 140px; display: none; place-items: center; border-radius: 70px 0 0 70px; background: linear-gradient(to bottom, #9b498a, #9b7749); } .color-alt { color: var(--color-text-alt); } .menu { grid-area: 1 / 1 / 2 / 7; display: grid; grid-template-columns: 5vw 5vw 11vh 5vw 1fr; grid-template-rows: auto 1fr; position: relative; pointer-events: none; z-index: 100; border-bottom: 1px solid var(--color-menu-border); } .no-js .menu { display: none; } .menu__bg { transform: translateX(-100%) translateX(20vw) translateX(11vh); grid-area: 1 / 1 / 3 / 6; position: absolute; left: 0; width: 100%; height: 100%; background: linear-gradient(to bottom, #2b192c, #1a191c); border-right: 1px solid var(--color-menu-border); pointer-events: none; } .menu__button { margin: 1.25rem; position: relative; align-self: start; cursor: pointer; pointer-events: auto; grid-area: 1 / 1 / 2 / 3; justify-self: start; } .menu__button path { stroke: var(--color-link); fill: none; } .menu__button:hover path, .menu__button:focus-visible path { stroke: var(--color-menu-hover); } .menu__button-cross { opacity: 0; } .menu__items { grid-area: 2 / 1 / 2 / 6; justify-content: start; display: flex; flex-direction: column; align-items: flex-start; position: relative; pointer-events: none; margin: 1rem; padding-bottom: 1rem; } .menu--open .menu__items { pointer-events: auto; } .menu__item { font-family: space-mono, monospace; font-weight: 400; text-transform: uppercase; font-size: var(--size-menu); line-height: 0.9; color: var(--color-menu); position: relative; cursor: pointer; } .menu__item span { pointer-events: none; } .menu__item .letter-wrap__inner span:first-child, .menu__item .letter-wrap__inner span, .menu__item .letter-wrap span.char { transition: color 0.2s ease; } .menu--open .menu__item:hover .letter-wrap__inner span:first-child, .menu--open .menu__item:hover .letter-wrap__inner span, .menu--open .menu__item:hover .letter-wrap span.char, .menu--open .menu__item:focus .letter-wrap__inner span:first-child, .menu--open .menu__item:focus .letter-wrap__inner span, .menu--open .menu__item:focus .letter-wrap span.char { color: var(--color-menu-hover); } .menu--open .menu__item:focus-visible { outline: 2px solid var(--color-link); background: transparent; } .menu__item.splitting .word { display: flex; } .menu__item.splitting .char { flex: none; display: flex; justify-content: center; transform-origin: 50% 100%; will-change: transform, color; } .menu__item .char { color: var(--color-link); } .letter-wrap, .letter-wrap__inner span, .menu__item.splitting .char { width: calc(var(--size-menu) * 0.6666); display: flex; justify-content: center; will-change: transform, color; } .letter-wrap__inner span:first-child { color: var(--color-link); } .letter-wrap { flex: none; height: calc(var(--size-menu) * 0.8833); overflow: hidden; display: flex; align-items: flex-end; justify-content: center; } .letter-wrap > span:not(.letter-wrap__inner) { opacity: 0; } .letter-wrap__inner { display: flex; flex-direction: column; height: fit-content; } .menu__tagline { display: none; font-family: kudryashev-d-excontrast-sans, sans-serif; font-weight: 300; font-style: normal; font-size: 1.75rem; grid-area: 1 / 4 / 2 / 5; text-transform: none; margin: 12.5vh 0 0 1.5vw; text-align: right; -webkit-writing-mode: vertical-rl; writing-mode: vertical-rl; transform: rotate(180deg); } @media screen and (min-width: 54em) { body { --size-menu: 15vh; } main { height: 100vh; overflow: hidden; grid-template-rows: 100%; grid-template-areas: 'side side side content content content' } .menu { grid-area: 1 / 1 / 2 / 6; grid-template-rows: 100%; border: 0; } .menu__items { grid-area: 1 / 3 / 2 / 6; justify-content: center; margin: 1vh 0 0 0; padding-bottom: 0; } .frame { background: none; grid-area: content; display: grid; align-content: space-between; pointer-events: none; grid-template-columns: 50% 50%; grid-template-rows: auto auto auto; grid-template-areas: '... sponsor' '... arrow' 'title links'; } .frame::after { content: ''; position: absolute; top: 0; left: 0; pointer-events: none; width: 100%; height: 100%; z-index: 10; background: linear-gradient(to bottom, #2b192c, #1a191c); opacity: 0; transition: opacity 1s ease-in-out 0.3s; } .menu--open ~ .frame::after { opacity: 0.8; transition-delay: 0s; pointer-events: auto; } .button-next { display: grid; } .menu__tagline { display: block; } .menu__button { align-self: center; justify-self: center; margin: 0; grid-area: 1 / 1 / 2 / 2; } .content { display: flex; justify-content: center; align-items: center; padding: 0; } .content__column { max-width: 34ch; padding: 0 1.5rem; } .content__column:first-child { margin-top: -10vh; } .content__column:last-child { margin-top: 10vh; } .frame__links { margin: 0; } }