html body { color: var(--text-color); font-family: var(--font-mono); letter-spacing: -.05rem; word-spacing: -.125rem; background: var(--background-color); scrollbar-width: thin; scrollbar-color: var(--accent-color) var(--gray-light); } html { font-size: 100%; -webkit-text-size-adjust: none; } body { font-size: var(--font-size-base); line-height: 2; } ::-moz-selection { color: var(--color-lightest); background: var(--accent-color); } ::selection { color: var(--color-lightest); background: var(--accent-color); } ::-webkit-scrollbar { width: var(--sizing-xs); height: var(--sizing-xs); } a:focus, a:focus-within { outline: 2px dashed var(--accent-color); text-decoration: none; } body::-webkit-scrollbar { width: var(--sizing-md); height: var(--sizing-md); } ::-webkit-scrollbar-thumb { background: var(--accent-color); } ::-webkit-scrollbar-track { background-color: var(--gray-light); } ::-webkit-scrollbar-button { background-color: var(--accent-color); } p { margin: var(--sizing-base) 0; & a { text-decoration: underline; text-decoration-line: underline; text-decoration-style: dashed; text-underline-offset: var(--sizing-xs); } } blockquote { font-size: var(--font-size-lg); word-break: break-word; color: var(--gray-dark); padding-left: var(--sizing-lg); border-left: var(--sizing-xs) solid var(--gray-dark); margin: var(--sizing-base) 0; } code { padding: var(--sizing-xs); color: var(--text-color-inverted); background-color: var(--background-color-inverted); } /* social icons */ :is(body, html, nav) a { &.at > svg { stroke: var(--brand-proton); } &.brand-github > svg { stroke: var(--brand-github); } &.brand-npm > svg { stroke: var(--brand-npm); } &.brand-mastodon > svg { stroke: var(--brand-mastodon); } &.article > svg { stroke: var(--posts); } &.books > svg { stroke: var(--books); } &.brain > svg { stroke: var(--brand-listenbrainz); } &.clock-hour-3 > svg { stroke: var(--now); } &.coffee > svg { stroke: var(--brand-buy-me-a-coffee); } &.device-tv > svg { stroke: var(--tv); } &.favorite > svg { stroke: var(--favorite); } &.headphones > svg { stroke: var(--music); } &.heart-handshake > svg { stroke: var(--webrings); } &.info-circle > svg { stroke: var(--about); } &.json > svg { stroke: var(--json); } &.link > svg { stroke: var(--links); } &.mail-plus > svg { stroke: var(--newsletter); } &.rss > svg { stroke: var(--brand-rss); } &.search > svg { stroke: var(--search); } } :is(body, html, nav .search) svg { stroke: var(--text-color); } :is(h1, h2, h3, h4, h5, h6) svg { margin-right: var(--sizing-xs); stroke-width: var(--stroke-width-bold); } strong, blockquote { font-weight: var(--font-weight-bold); } em, blockquote { font-style: italic; } svg { width: var(--sizing-svg-base); height: var(--sizing-svg-base); stroke-width: var(--stroke-width-default); } /* links */ a { color: var(--accent-color); text-decoration: none; & svg { stroke: var(--accent-color); } &.linked-header { display: flex; & svg { stroke: var(--accent-color); } } &.back-link-header { display: inline-flex; flex-direction: row; align-items: center; & + .page-header, & + .music-chart { margin-top: var(--sizing-base); } } } a:hover, a:focus, a:active, :is(.main-title, footer nav.sub-pages) a:hover, :is(.main-title, footer nav.sub-pages) a:focus, :is(.main-title, footer nav.sub-pages) a:active { color: var(--accent-color-hover); transition-property: color; transition-timing-function: var(--transition-ease-in-out); transition-duration: var(--transition-duration-default); } :is( a:has(svg):hover, a:has(svg):active, a:has(svg):focus, button:has(svg):hover, button:has(svg):active, button:has(svg):focus ) svg { stroke: var(--accent-color-hover); } /* headers */ h1, h2, h3, h4, h5, h6 { font-weight: var(--font-weight-bold); line-height: 1.5; margin: var(--sizing-base) 0; } h1 { font-size: var(--font-size-2xl); } h2 { font-size: var(--font-size-xl); } h3 { font-size: var(--font-size-lg); } h4 { font-size: var(--font-size-base); } h5 { font-size: var(--font-size-md); } h6 { font-size: var(--font-size-sm); } .section-header-wrapper { justify-content: space-between; margin: var(--sizing-xl) 0 var(--sizing-lg); & .section-header { margin: 0; } } .section-header { margin: var(--sizing-xl) 0 var(--sizing-lg); &.no-top-margin { margin: 0 0 var(--sizing-lg); } &.posts { margin: 0 0 var(--sizing-lg); } } /* dividers */ hr { height: 1px; background-color: var(--gray-light); border: 0; margin: var(--sizing-base) 0; } /* tables */ table { display: block; overflow-x: auto; width: 100%; border: 1px solid var(--gray-light); white-space: nowrap; } table, th, td { border-collapse: collapse; width: 100%; } :is(th, td):not(:last-child) { border-right: 1px solid var(--gray-light); } th, tr:not(:last-child) { border-bottom: 1px solid var(--gray-light); } th, td { padding: var(--sizing-sm); min-width: max-content; word-break: break-word; width: 100%; } td { min-width: calc(var(--sizing-3xl) * 2); } th { font-weight: var(--font-weight-bold); background-color: var(--gray-lighter); text-align: left; } /* header */ .main-title { width: 100%; padding-top: var(--sizing-3xl); display: flex; flex-direction: row; align-items: center; justify-content: space-between; & h1 { font-weight: var(--font-weight-extrabold); margin: 0; padding: 0; & a { text-decoration: none; } } } /* nav */ a svg, button svg { transform: rotate(0deg); transition-property: transform; transition-timing-function: var(--transition-ease-in-out); transition-duration: var(--transition-duration-default); } :is(a:hover, a:active, a:focus) svg, a svg:hover, a svg:active, a svg:focus, button:hover svg, button svg:hover { transform: rotate(8deg); } a svg:hover, a svg:active, a svg:focus { stroke: var(--accent-color-hover); } a.link-icon { display: inline-flex; align-items: center; gap: var(--sizing-xs); & svg { stroke: var(--accent-color); } &:hover svg, &:active svg, &:focus svg { transform: rotate(0deg); stroke: var(--accent-color-hover); } } .menu-primary .active, .menu-primary .active svg, nav .active, nav .active svg { cursor: not-allowed; } .menu-primary .active, nav .active { color: var(--accent-color); } .menu-primary .active svg, nav .active svg { stroke: var(--accent-color-hover); } /* layout */ .default-wrapper { padding-top: var(--sizing-2xl); & .posts-wrapper article:last-of-type, & .article-widget-wrapper:last-of-type { border-bottom: none; } } .main-wrapper { min-height: 100vh; display: flex; flex-direction: column; } main { flex: 1 1 0%; width: 80%; margin-left: auto; margin-right: auto; } .home-status, article { margin-bottom: var(--sizing-base); border-bottom: 1px solid var(--gray-light); } .home-status p:first-child { margin-top: 0; } .article-widget-wrapper { border-bottom: 1px solid var(--gray-light); margin-bottom: var(--sizing-base); & article { border-bottom: none; } } footer { & .explainer { margin: var(--sizing-3xl) 0 var(--sizing-lg); } & nav { &.social { gap: var(--sizing-sm); margin-bottom: var(--sizing-lg); width: 100%; & svg { margin-top: 0; } & a { display: flex; } } &.sub-pages { font-size: var(--font-size-sm); padding-bottom: var(--sizing-3xl); & span:not(.active) { margin-left: var(--sizing-sm); margin-right: var(--sizing-sm); } } } } :is(.main-title, footer nav.sub-pages) a { color: var(--text-color); } /* articles */ article { & h2 { margin: 0 0 var(--sizing-lg); transition-property: color; } & h3 { margin: 0; display: inline-block; } & a h2:hover, & a h2:focus, & a h2:active { color: var(--accent-color-hover); transition-timing-function: var(--transition-ease-in-out); transition-duration: var(--transition-duration-default); } & [rel="author"], & time { color: var(--gray-dark); font-size: var(--font-size-sm); margin-right: var(--sizing-xs); } & .time-wrapper { gap: var(--sizing-xs); & > svg { width: var(--sizing-lg); height: var(--sizing-lg); stroke: var(--gray-dark); } } & [rel="author"] { margin-bottom: var(--sizing-xs); } } /* icons */ .icon-center-vertical > svg { display: inline; vertical-align: middle; } /* lists */ ul, ol { list-style-position: inside; margin: var(--sizing-base) 0; padding-left: var(--sizing-base); } li { margin-top: var(--sizing-lg); margin-bottom: var(--sizing-lg); } .link-list { margin: 0; & li { margin-top: var(--sizing-sm); margin-bottom: var(--sizing-sm); &:last-child { margin-bottom: 0; } } } /* images */ .image-banner { border: var(--border-default); height: auto; width: 100%; display: block; } /* pages */ .page-header { margin-top: 0; } /* utilities */ .highlight-text { color: var(--color-lightest); background-color: var(--accent-color); padding: var(--sizing-xs); } .hidden { display: none !important; } .text-centered { text-align: center !important; } .text-small { font-size: var(--font-size-sm) !important; } .flex-centered { display: flex; flex-direction: row; align-items: center; } .justify-centered { justify-content: center; } .flex-wrap { flex-wrap: wrap; } @media screen and (min-width: 768px) { h1 { font-size: var(--font-size-3xl); } h2 { font-size: var(--font-size-2xl); } h3 { font-size: var(--font-size-xl); } h4 { font-size: var(--font-size-lg); } h5 { font-size: var(--font-size-base); } h6 { font-size: var(--font-size-md); } main { max-width: 768px; } footer nav.social { gap: var(--sizing-md); } }