*, *::after, *::before { box-sizing: border-box; } :root { font-size: 16px; --color-text: #b8afaa; --color-bg: #000; --color-link: #968a84; --color-link-hover: #fff; --page-padding: 1rem; --color-highlight-start: #968a84; --color-highlight-end: #968a84; --color-highlight-end-alt: #968a84; } html, body { width: 100vw; overflow-x: hidden; } body { margin: 0; color: var(--color-text); background-color: var(--color-bg); font-family: "parabolica", serif; line-height: 1; font-weight: 300; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background-image: url(../img/noise.png), radial-gradient(ellipse at top, #242937, transparent), radial-gradient(ellipse at bottom, #171340, transparent); background-size: 200px, 100%, 200%; background-attachment: fixed; } /* 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; opacity: 0.4; background: var(--color-link); animation: loaderAnim 0.7s linear infinite alternate forwards; } @keyframes loaderAnim { to { opacity: 1; transform: scale3d(0.7, 0.7, 1); } } a { text-decoration: underline; color: var(--color-link); outline: none; cursor: pointer; } a:hover { text-decoration: none; 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; } a:focus-visible { /* Draw a very noticeable focus style for keyboard-focus on browsers that do support :focus-visible */ outline: 2px solid red; } .unbutton { background: none; border: 0; padding: 0; margin: 0; font: inherit; cursor: pointer; } .unbutton:focus { outline: none; } main { padding: var(--page-padding); position: relative; height: 100%; overflow: hidden; } .frame { opacity: 0.6; font-size: 12px; position: relative; display: grid; width: 100%; grid-row-gap: 1rem; grid-column-gap: 2rem; pointer-events: none; justify-items: start; text-transform: uppercase; font-weight: 400; } .frame--header { grid-template-columns: 100%; grid-template-areas: 'title' 'back' 'archive' 'github' 'tags' 'sponsor'; } .frame--footer { margin-top: 40vh; grid-template-columns: auto auto; justify-content: space-between; } .frame #cdawrap { justify-self: start; } .frame a { pointer-events: auto; } .frame__title { grid-area: title; font-size: inherit; font-weight: 400; margin: 0; } .frame__back { grid-area: back; justify-self: start; } .frame__archive { grid-area: archive; justify-self: start; } .frame__github { grid-area: github; } .intro { display: grid; min-height: 50vh; margin-bottom: 80vh; } .intro h2 { font-size: clamp(2rem, 6vw, 8rem); line-height: 0.8; margin: 0; align-self: end; text-transform: uppercase; font-family: "the-seasons", serif; font-weight: 300; } .intro h2 > span { animation: shine 2s linear forwards; } @keyframes shine { from { filter: brightness(60%) blur(6px); } to { filter: brightness(150%) blur(0px); } } .content { display: grid; min-height: 100vh; font-size: clamp(2rem,7vw,3.25rem); line-height: 1.2; letter-spacing: -0.0225em; } .content__inner { justify-self: start; margin-bottom: 60vh; } .content__inner p { margin: 0; max-width: 900px; text-wrap: balance; } .hx { background: none; color: var(--color-highlight-start); display: inline-block; position: relative; white-space: nowrap; } .hx-3 { --color-highlight-end: #d686c1; } .hx-4 { --color-highlight-end: #49af42; --color-highlight-end-alt: #4252af; } .hx-5 { display: inline-flex; --after-scale: 1; --color-bg-highlight: #6a5ace; --color-highlight-start: #e1def4; } .hx-5::after { content: ''; left: -2.5%; top: 10%; bottom: -7.5%; position: absolute; z-index: -1; width: 105%; transform: scale3D(var(--after-scale),var(--after-scale),var(--after-scale)); background: var(--color-bg-highlight); border-radius: 8px; } .hx-6 { display: inline-flex; --after-width: 0%; --after-width-final: 105%; --color-bg-highlight: #dc764c; --color-highlight-start: #fadabd; } .hx-6::after { content: ''; left: -2.5%; top: 15%; bottom: -10.5%; position: absolute; z-index: -1; width: var(--after-width); background: var(--color-bg-highlight); border-radius: 8px; } .hx-7 { --after-height: 0%; --after-height-final: 100%; --color-bg-highlight: #437745; --color-highlight-start: #d2f2d3; } .hx-7::after { content: ''; left: -2.5%; top: 10%; position: absolute; z-index: -1; width: 105%; height: var(--after-height); background: var(--color-bg-highlight); border-radius: 8px; } .hx-8 { --color-highlight-end: #c3c58c; } .hx-9 { --color-highlight-start: rgb(84 77 73 / 61%); --color-highlight-end: var(--color-text); } .hx-9 .word:first-child { position: absolute; --color-highlight-end: #a86088; color: var(--color-highlight-end); } .hx-10 { --color-highlight-start: var(--color-text); } .hx-10 .word { position: absolute; } .hx-10 .word:last-child { position: relative; } .hx-flip { font-size: clamp(2rem,20vw,22rem); margin: 0; position: relative; } .hx-flip__inner, .hx-flip__placeholder { font-weight: 200; background: none; color: inherit; display: inline-block; } .hx-flip__placeholder, .hx__placeholder { opacity: 0; } .hx-flip__inner { position: absolute; left: 0; top: 0; } .word, .word > .char { display: inline-block; } .hx-12 { --color-highlight-start: rgb(84 77 73 / 61%); --color-highlight-end: #fff; } .hx-12 .word:nth-child(n+2) { position: absolute; top: 0; left: 0; --color-highlight-end: #fff; color: var(--color-highlight-end); } .hx-13 { position: relative; --select-width: 0%; --select-width-final: 103%; --color-highlight-start: var(--color-text); } .hx__select { position: absolute; width: var(--select-width); height: 100%; left: -1%; top: 10%; background: rgb(109 215 230 / 14%); mix-blend-mode: plus-lighter; } .hx__select::before, .hx__select::after { content: ''; position: absolute; top: -0.125em; left: -0.075em; width: 0.155em; height: calc(100% + 0.1275em); background: url(../img/select.svg) no-repeat 0 0; background-size: auto 100%; } .hx__select::after { transform: scaleY(-1); left: auto; right: -0.075em; top: auto; bottom: -0.125em; } @media screen and (min-width: 53em) { body { --page-padding: 2rem 3rem; } .frame--header { grid-template-columns: auto auto auto auto 1fr; grid-template-areas: 'title back archive github tags sponsor'; } .frame #cdawrap { justify-self: end; } .intro { height: calc(100vh - 6rem); } }