:root { --primer-color-accent: 255, 255, 0; --color-accent: yellow; --hue-accent: 0deg; --padding: 20px; --running-size: 80px; } /* # Cornerstones */ * { margin: 0; box-sizing: border-box; font-family: "Roboto Mono", sans-serif; color: inherit; } ::-webkit-scrollbar { display: none; } body { display: grid; justify-items: center; grid-template-rows: var(--running-size) 1fr; overscroll-behavior: none; background-color: black; color: white; overflow-x: hidden; min-height: 100svh; } body.search-dialog-open { overflow: hidden; } a { display: contents; color: inherit; text-decoration: none; } /* # Components */ :is(h1, h2, h3, p, li) > a { --underline-tickness: 3px; display: initial; text-decoration: underline; text-decoration-thickness: var(--underline-tickness); text-underline-offset: var(--underline-tickness); text-decoration-color: var(--color-accent); } /* ## Buttons */ button { font-size: inherit; padding: calc(var(--padding) / 2) var(--padding); color: white; border: solid 2px white; border-radius: 6px; background-color: transparent; cursor: pointer; } button.solid { color: black; border-color: var(--color-accent); background-color: var(--color-accent); } a > button::after { content: " ➜"; } a[target="_blank"] > button::after, :is(h1, h2, h3, p, li) > a[target="_blank"]::after { content: " ⮥"; color: var(--color-accent); white-space: nowrap; } a > button.solid:not(:hover)::after { color: black; } /* ## Header */ header { --border-style: solid 1px rgba(255, 255, 255, .2); position: sticky; top: 0; width: 100%; height: var(--running-size); border-bottom: var(--border-style); display: grid; align-items: stretch; justify-items: end; grid-template-columns: 1fr var(--running-size); background-color: rgba(0, 0, 0, .8); z-index: 100; -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); } header nav { display: flex; align-items: center; padding: var(--padding); } header .logo { width: calc(var(--running-size) - 1px); height: calc(var(--running-size) - 1px); display: grid; align-items: center; justify-items: center; border-left: var(--border-style); } header .logo path.stroke { fill: var(--color-accent); } header searchbox { display: none; } /* ## Main */ main { transition: 400ms transform; position: relative; padding: calc(var(--padding) * 1.5); width: 100%; max-width: 1000px; } main > * { transition: 100ms opacity; opacity: 1; } main.loading > * { opacity: 0; } /* ## Search */ /* ### Box */ searchbox { display: grid; width: 100%; border-left: var(--border-style); grid-template-columns: 25px 1fr; align-items: center; padding: var(--padding); gap: var(--padding); fill: var(--color-accent); font-size: 14px; color: rgba(255, 255, 255, .5); cursor: pointer; } /* ### Dialog */ body.search-dialog-open main { transform: scale(.94); } dialog.search { transition: 200ms height cubic-bezier(.41,0,.34,.99); margin: auto; width: 100%; max-width: 1000px; height: calc(var(--running-size) + (var(--padding) * 5)); max-height: 1000px; border-color: transparent; background-color: transparent; overflow: visible; outline: none; } dialog.search.active { height: 70vh; } dialog.search search { transition: 400ms transform, 200ms opacity; width: 100%; height: 100%; display: grid; grid-template-rows: var(--running-size) 1fr; gap: calc(var(--padding) * 2); transform: scale(1.1); overflow: hidden; background-color: rgba(255, 255, 255, .05); -webkit-backdrop-filter: blur(20px); backdrop-filter: brightness(.3) blur(20px); border-radius: 12px; box-shadow: 0 10px 30px 10px black; opacity: 0; } body.search-dialog-open dialog.search search { transform: scale(1); padding: calc(var(--padding) * 1.5); opacity: 1; } search input { transition: 200ms background-color, 200ms box-shadow, 200ms color; border-radius: 6px; border: none; outline: none; color: black; font-size: 18px; padding: var(--padding) calc(var(--padding) * 1.5); background-color: rgba(255, 255, 255, .05); box-shadow: 0 5px 70px 10px rgba(0, 0, 0, .3); color: white; } search input:focus { background-color: rgba(255, 255, 255, .9); box-shadow: 0 10px 30px 10px black; color: black; } /* ### Search results */ dialog.search search search-results { overflow-y: auto; } dialog.search search search-results > svg { margin: auto; width: 150px; fill: rgba(255, 255, 255, .05); } /* # Feature queries */ @media (hover: hover) { :is(h1, h2, h3, p, li) > a:hover { text-underline-offset: 1px; text-decoration-thickness: calc(var(--underline-tickness) * 2); color: var(--color-accent); } /* # Components */ button { transition: 200ms background-color, 200ms border-color, 200ms color; } button:hover { border-color: rgba(255, 255, 255, .2); background-color: rgba(255, 255, 255, .1); } button.solid:hover { color: var(--color-accent); border-color: rgba(var(--primer-color-accent), .2); background-color: rgba(var(--primer-color-accent), .2); box-shadow: 0 -10px 20px 10px rgba(var(--primer-color-accent), .05); } /* ## Header */ header .logo:hover path.solid { fill: var(--color-accent); } searchbox { transition: 200ms background-color; } searchbox:hover { background-color: rgba(255, 255, 255, .07); } } /* # Size queries */ @media (min-width: 700px) { header { grid-template-columns: 1fr 250px var(--running-size); } header nav { justify-self: start; margin: 0 calc(var(--padding) / 2); } /* # Menu */ /* < Move the search box to the header */ header searchbox { display: grid; } menu searchbox { display: none; } /* /> */ }