/* CUSTOMIZATION */ :root, html[data-theme="light"] { --primary-color: #000000; --secondary-color: grey; --contrast-color: #ffffff; --accent-color: rgb(255, 166, 0); --primary-background: #ffffff; --secondary-background: #c9c9c9; --green: rgba(81, 179, 0, 0.486); --red: rgba(177, 20, 20, 0.473); --yellow: rgb(226, 230, 29); --bright: rgb(245, 240, 240); --medium: rgb(124, 124, 124); --dark: rgb(30, 30, 30); --shadow: rgba(0, 0, 0, 0.1); --skeletonLoading-dark: hsl(200, 20%, 70%); --skeletonLoading-bright: hsl(200, 20%, 95%); --border-radius: 0.25rem; } @media (prefers-color-scheme: dark) { :root, html[data-theme="dark"] { --primary-color: #ffffff; --secondary-color: grey; --contrast-color: #000000; --accent-color: rgb(255, 166, 0); --primary-background: #000000; --secondary-background: #424242; --green: rgba(81, 179, 0, 0.486); --red: rgba(177, 20, 20, 0.473); --yellow: rgb(226, 230, 29); --bright: rgb(245, 240, 240); --medium: rgb(124, 124, 124); --dark: rgb(30, 30, 30); --shadow: rgba(0, 0, 0, 0.1); --skeletonLoading-dark: hsl(200, 20%, 70%); --skeletonLoading-bright: hsl(200, 20%, 95%); --border-radius: 0.25rem; } } /* TYPOGRAPHY */ /* INFO */ /* headings: line height: 1.1-1.3x; letter spacing: -0.5-2% */ /* body text: line height: 1.3-1.5; width: 50-75 characters; size: 18px; text block width: 600px */ /* HEADINGS */ h1, h2, h3, h4, h5, h6 { overflow-wrap: break-word; margin: 0 0 0.25em 0; } a.h1-a, a.h2-a, a.h3-a, a.h4-a, a.h5-a, a.h6-a { display: block; width: fit-content; font-weight: bold; } h1, a.h1-a { font-size: 225%; line-height: 1.1; letter-spacing: -1px; } h2, a.h2-a { font-size: 200%; line-height: 1.125; letter-spacing: -0.5px; } h3, a.h3-a { font-size: 175%; line-height: 1.15; } h4, a.h4-a { font-size: 150%; line-height: 1.2; } h5, a.h5-a { font-size: 125%; line-height: 1.25; } h6, a.h6-a { font-size: 100%; line-height: 1.3; } /* TEXT */ p { max-width: 600px; margin: 1.25em 0; overflow-wrap: break-word; word-wrap: break-word; word-break: break-all; } p.text-lead { color: var(--secondary-color); margin: 0; } /* LISTS */ ul, ol { list-style-position: inside; } ul { list-style-type: square; } ul[role='list'], ol[role='list'] { list-style: none; } /* LINKS */ a { text-decoration: none; overflow-wrap: break-word; } a:not([class]) { text-decoration-skip-ink: auto; color: var(--accent-color); } a:not([class]):hover { text-decoration: underline; } a.h1-a::before, a.h2-a::before, a.h3-a::before, a.h4-a::before, a.h5-a::before, a.h6-a::before { content: '# '; color: var(--accent-color); } a[href="#"] { color: var(--accent-color); text-decoration: underline; } /* ARTCILE */ article { padding: 0 0.5rem 0.5rem 0.5rem; width: min(65ch, 100% - 4rem); margin-inline: auto; } /* Quote */ blockquote { font-style: italic; border-left: 10px solid var(--secondary-background); margin: 1.5em 5px; padding: 0.5em 10px; } blockquote p { display: inline; } /* Code */ pre, code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; background: var(--secondary-background); border-radius: 5px; } pre { overflow-x: auto; padding: 1em; margin: 1.5em 5px; white-space: pre-wrap; } pre.code-oneliner { white-space: nowrap !important; } code { padding: 0.25em 5px; } /* KBD */ kbd { border-radius: 5px; background: var(--secondary-background); color: var(--accent-color); padding: 0.25em 5px; } /* OTHER */ mark { color: #000; } /* INTERACTIVE */ /* INPUT */ input, button, textarea, select { font: inherit; line-height: inherit; color: inherit; } input:focus, input:active, textarea:focus, textarea:active, select:focus, select:active { border-color: var(--accent-color); border-radius: 0; outline: none; } [type=text], [type=email], [type=url], [type=password], [type=number], [type=date], [type=datetime-local], [type=month], [type=search], [type=tel], [type=time], [type=week], [multiple], [list], textarea, select { -webkit-appearance: none; -moz-appearance: none; appearance: none; border-color: var(--primary-color); border-width: 1px; border-radius: 0; padding: 0.5rem 0.75rem; font-size: 1rem; line-height: 1.5rem; max-width: 100%; } textarea { resize: vertical; } fieldset { padding: 1rem; } /* BUTTON */ button, [role="button"], input[type="submit"], input[type="button"], input[type="reset"] { all: unset; cursor: pointer; transition: 0.3s; padding: 0.125rem 0.25rem; border: 1px solid var(--primary-color); background-color: var(--secondary-background); } button:active, [role="button"]:hover, input[type="submit"]:active, input[type="button"]:active, input[type="reset"]:active { scale: 0.95; } button:hover, [role="button"]:hover, input[type="submit"]:hover, input[type="button"]:hover, input[type="reset"]:hover { border-color: var(--accent-color); opacity: 0.9; } /* OTHER */ details p { height: 0; transition: 0.3s; } details[open] p { height: max-content; } /* DATA */ .overflow-x-auto { overflow-x: auto; } table { width: 100%; text-align: center; border-collapse: collapse; } table caption { font-size: 5rem; } table colgroup col[span="1"] { color: var(--contrast-color); } table colgroup col[span="2"] { color: var(--secondary-color); } table thead tr th, table tbody tr td { color: #fff; background-color: rgba(0, 0, 0, 0.2); border: 1px solid white; padding: 0.5rem; } table thead tr th { font-weight: bold; } table tbody tr td { background-color: rgba(0, 0, 0, 0.1); } /* LAYOUT */ .container, .container-fluid, .container-2xl, .container-xl, .container-lg, .container-md, .container-sm { --jcss-gutter-x: 1.5rem; --jcss-gutter-y: 0; width: 100%; padding-right: calc(var(--jcss-gutter-x) * 0.5); padding-left: calc(var(--jcss-gutter-x) * 0.5); margin-right: auto; margin-left: auto; } @media (min-width: 576px) { .container-sm, .container { max-width: 540px; } } @media (min-width: 768px) { .container-md, .container-sm, .container { max-width: 720px; } } @media (min-width: 992px) { .container-lg, .container-md, .container-sm, .container { max-width: 960px; } } @media (min-width: 1200px) { .container-xl, .container-lg, .container-md, .container-sm, .container { max-width: 1140px; } } @media (min-width: 1400px) { .container-2xl, .container-xl, .container-lg, .container-md, .container-sm, .container { max-width: 1320px; } } :root { --jcss-breakpoint-xs: 0; --jcss-breakpoint-sm: 576px; --jcss-breakpoint-md: 768px; --jcss-breakpoint-lg: 992px; --jcss-breakpoint-xl: 1200px; --jcss-breakpoint-2xl: 1400px; } .row { --jcss-gutter-x: 1.5rem; --jcss-gutter-y: 0; display: flex; flex-wrap: wrap; margin-top: calc(-1 * var(--jcss-gutter-y)); margin-right: calc(-0.5 * var(--jcss-gutter-x)); margin-left: calc(-0.5 * var(--jcss-gutter-x)); } .row > * { box-sizing: border-box; flex-shrink: 0; width: 100%; max-width: 100%; padding-right: calc(var(--jcss-gutter-x) * 0.5); padding-left: calc(var(--jcss-gutter-x) * 0.5); margin-top: var(--jcss-gutter-y); } .col { flex: 1 0 0%; } .col-auto { flex: 0 0 auto; width: auto; } .col-1 { flex: 0 0 auto; width: 8.33333333%; } .col-2 { flex: 0 0 auto; width: 16.66666667%; } .col-3 { flex: 0 0 auto; width: 25%; } .col-4 { flex: 0 0 auto; width: 33.33333333%; } .col-5 { flex: 0 0 auto; width: 41.66666667%; } .col-6 { flex: 0 0 auto; width: 50%; } .col-7 { flex: 0 0 auto; width: 58.33333333%; } .col-8 { flex: 0 0 auto; width: 66.66666667%; } .col-9 { flex: 0 0 auto; width: 75%; } .col-10 { flex: 0 0 auto; width: 83.33333333%; } .col-11 { flex: 0 0 auto; width: 91.66666667%; } .col-12 { flex: 0 0 auto; width: 100%; } @media (min-width: 576px) { .col-sm { flex: 1 0 0%; } .col-sm-auto { flex: 0 0 auto; width: auto; } .col-sm-1 { flex: 0 0 auto; width: 8.33333333%; } .col-sm-2 { flex: 0 0 auto; width: 16.66666667%; } .col-sm-3 { flex: 0 0 auto; width: 25%; } .col-sm-4 { flex: 0 0 auto; width: 33.33333333%; } .col-sm-5 { flex: 0 0 auto; width: 41.66666667%; } .col-sm-6 { flex: 0 0 auto; width: 50%; } .col-sm-7 { flex: 0 0 auto; width: 58.33333333%; } .col-sm-8 { flex: 0 0 auto; width: 66.66666667%; } .col-sm-9 { flex: 0 0 auto; width: 75%; } .col-sm-10 { flex: 0 0 auto; width: 83.33333333%; } .col-sm-11 { flex: 0 0 auto; width: 91.66666667%; } .col-sm-12 { flex: 0 0 auto; width: 100%; } } @media (min-width: 768px) { .col-md { flex: 1 0 0%; } .col-md-auto { flex: 0 0 auto; width: auto; } .col-md-1 { flex: 0 0 auto; width: 8.33333333%; } .col-md-2 { flex: 0 0 auto; width: 16.66666667%; } .col-md-3 { flex: 0 0 auto; width: 25%; } .col-md-4 { flex: 0 0 auto; width: 33.33333333%; } .col-md-5 { flex: 0 0 auto; width: 41.66666667%; } .col-md-6 { flex: 0 0 auto; width: 50%; } .col-md-7 { flex: 0 0 auto; width: 58.33333333%; } .col-md-8 { flex: 0 0 auto; width: 66.66666667%; } .col-md-9 { flex: 0 0 auto; width: 75%; } .col-md-10 { flex: 0 0 auto; width: 83.33333333%; } .col-md-11 { flex: 0 0 auto; width: 91.66666667%; } .col-md-12 { flex: 0 0 auto; width: 100%; } } @media (min-width: 992px) { .col-lg { flex: 1 0 0%; } .col-lg-auto { flex: 0 0 auto; width: auto; } .col-lg-1 { flex: 0 0 auto; width: 8.33333333%; } .col-lg-2 { flex: 0 0 auto; width: 16.66666667%; } .col-lg-3 { flex: 0 0 auto; width: 25%; } .col-lg-4 { flex: 0 0 auto; width: 33.33333333%; } .col-lg-5 { flex: 0 0 auto; width: 41.66666667%; } .col-lg-6 { flex: 0 0 auto; width: 50%; } .col-lg-7 { flex: 0 0 auto; width: 58.33333333%; } .col-lg-8 { flex: 0 0 auto; width: 66.66666667%; } .col-lg-9 { flex: 0 0 auto; width: 75%; } .col-lg-10 { flex: 0 0 auto; width: 83.33333333%; } .col-lg-11 { flex: 0 0 auto; width: 91.66666667%; } .col-lg-12 { flex: 0 0 auto; width: 100%; } } @media (min-width: 1200px) { .col-xl { flex: 1 0 0%; } .col-xl-auto { flex: 0 0 auto; width: auto; } .col-xl-1 { flex: 0 0 auto; width: 8.33333333%; } .col-xl-2 { flex: 0 0 auto; width: 16.66666667%; } .col-xl-3 { flex: 0 0 auto; width: 25%; } .col-xl-4 { flex: 0 0 auto; width: 33.33333333%; } .col-xl-5 { flex: 0 0 auto; width: 41.66666667%; } .col-xl-6 { flex: 0 0 auto; width: 50%; } .col-xl-7 { flex: 0 0 auto; width: 58.33333333%; } .col-xl-8 { flex: 0 0 auto; width: 66.66666667%; } .col-xl-9 { flex: 0 0 auto; width: 75%; } .col-xl-10 { flex: 0 0 auto; width: 83.33333333%; } .col-xl-11 { flex: 0 0 auto; width: 91.66666667%; } .col-xl-12 { flex: 0 0 auto; width: 100%; } } @media (min-width: 1400px) { .col-2xl { flex: 1 0 0%; } .col-2xl-auto { flex: 0 0 auto; width: auto; } .col-2xl-1 { flex: 0 0 auto; width: 8.33333333%; } .col-2xl-2 { flex: 0 0 auto; width: 16.66666667%; } .col-2xl-3 { flex: 0 0 auto; width: 25%; } .col-2xl-4 { flex: 0 0 auto; width: 33.33333333%; } .col-2xl-5 { flex: 0 0 auto; width: 41.66666667%; } .col-2xl-6 { flex: 0 0 auto; width: 50%; } .col-2xl-7 { flex: 0 0 auto; width: 58.33333333%; } .col-2xl-8 { flex: 0 0 auto; width: 66.66666667%; } .col-2xl-9 { flex: 0 0 auto; width: 75%; } .col-2xl-10 { flex: 0 0 auto; width: 83.33333333%; } .col-2xl-11 { flex: 0 0 auto; width: 91.66666667%; } .col-2xl-12 { flex: 0 0 auto; width: 100%; } } /* EXPERIMENTAL */ /* ASIDE */ /* SIDEBAR */ /* Inspiration: https://every-layout.dev/layouts/sidebar/ */ body[data-layout="sidebar"] { display: flex; flex-wrap: wrap; } body[data-layout="sidebar"] aside { position: relative; /* ↓ The width when the sidebar _is_ a sidebar */ flex-basis: 20rem; flex-grow: 1; } body[data-layout="sidebar"] aside ul { z-index: 999; top: 0; padding: 1rem; position: sticky; background-color: var(--secondary-background); list-style-type: none; display: flex; flex-direction: column; flex-wrap: wrap; gap: 0.25rem; padding: 0.5rem; margin: 0rem; border-bottom-right-radius: var(--border-radius) } body[data-layout="sidebar"] aside ul li { background-color: var(--primary-background); border-radius: var(--border-radius); padding: 0.25rem; list-style: none; } body[data-layout="sidebar"] aside ul li input[type="radio"] { display: none; } body[data-layout="sidebar"] aside ul li label, body[data-layout="sidebar"] aside ul li a { cursor: pointer; transition: 0.3s; } body[data-layout="sidebar"] aside ul li label:hover, body[data-layout="sidebar"] aside ul li a:hover { padding-left: 1rem; } body[data-layout="sidebar"] aside ul li input[type="radio"]:checked+label { padding-left: 0rem; color: var(--accent-color); text-decoration: underline; } body[data-layout="sidebar"] aside ul li input[type="radio"]:checked+label::before { content: ""; display: inline-block; width: 0.5rem; height: 0.5rem; background-color: var(--accent-color); margin-right: 0.5rem; } body[data-layout="sidebar"] aside ul li input[type="radio"]+label { color: var(--primary-color); text-decoration: none; } body[data-layout="sidebar"] main { /* ↓ Grow from nothing */ flex-basis: 0; flex-grow: 999; /* ↓ Wrap when the elements are of equal width */ min-inline-size: 50%; } /* CSS RESETS & DEFAULT STYLES */ html { color-scheme: dark light; -webkit-text-size-adjust: 100%; } html:focus-within { scroll-behavior: smooth; } body { min-height: 100vh; text-rendering: optimizeSpeed; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; font-size: 18px; line-height: 1.5; margin: 0; padding: 0; } *, *::before, *::after { box-sizing: border-box; } *::before, *::after { font: inherit; margin: 0; padding: 0; } img, picture, svg, video { display: block; max-width: 100%; } input, textarea, button, select { font: inherit; } *, *::before, *::after { color: var(--primary-color); box-sizing: border-box; } @media (prefers-reduced-motion: reduce) { html:focus-within { scroll-behavior: auto; } *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } } /* Elements */ /* DATA */ img, picture, svg, canvas, map, video, audio { display: block; max-width: 100%; } .iframe-box, .object-box, .embed-box { position: relative; width: 100%; height: 0; padding-bottom: 56.25%; /* 16:9 aspect ratio */ } .iframe-box iframe, .object-box object, .embed-box embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } /* Table */ table { border-collapse: collapse; border-spacing: 0; } /* -- HEADER -- */ header { z-index: 999; top: 0; padding: 1rem; position: sticky; background-color: var(--primary-background); border-bottom: 2px solid var(--accent-color); } header nav ul { display: flex; flex-wrap: wrap; gap: 1rem; padding: 0; margin: 0; } header nav ul li { list-style: none; } /* -- MAIN -- */ main, section, div { position: relative; } article { padding: 1em 2.5em; } body:has(footer) main { min-height: 100vh; min-height: 100dvh; } body:has(footer) main article { min-height: 100vh; min-height: 100dvh; } .bordered { border: 2px solid var(--accent-color); padding: 1rem; margin: 1rem 0; } .indicator { position: absolute; top: 0; right: 0; font-weight: bold; padding: 0.25em; color: var(--contrast-color); background-color: var(--accent-color); max-height: 100%; } /* -- FOOTER -- */ footer { padding: 1rem; background-color: var(--primary-background); border-top: 2px solid var(--accent-color); }