Update default styles and templates

Remove hero section styles
Add CSS reset and variables
Improve typography and layout
Update base template with CSS versioning
Restructure list templates with semantic HTML
Add proper container classes
Improve code organization and readability
This commit is contained in:
Ruben 2026-02-10 22:25:44 +01:00
parent ca6d87b885
commit fde5cc4d0e
7 changed files with 171 additions and 345 deletions

View file

@ -1,8 +1,11 @@
/* RESET */
* { box-sizing: border-box; margin-bottom: 0 }
/* VARIABLES */
:root {
--color-text: oklch(20% 0 0);
--color-background: oklch(98% 0 0);
--color-accent: oklch(50% 0.15 250);
--color-accent-light: oklch(95% 0.05 250);
--color-border: oklch(85% 0 0);
--color-muted: oklch(50% 0 0);
@ -11,17 +14,13 @@
--space-m: 2rem;
--space-l: 4rem;
--size-content: 65ch;
--size-constrained: 42rem;
--size-wide: 90rem;
}
* {
box-sizing: border-box;
--size-content: 42rem;
}
/* GLOBAL */
html {
font-family: system-ui, sans-serif;
font-size: clamp(16px, 2.3vw, 20px);
line-height: 1.6;
color: var(--color-text);
background: var(--color-background);
@ -30,139 +29,99 @@ html {
body {
margin: 0;
display: grid;
grid-template-columns:
[full-start] minmax(var(--space-s), 1fr)
[content-start] minmax(0, var(--size-constrained))
[content-end] minmax(var(--space-s), 1fr)
[full-end];
grid-template-rows: auto 1fr auto;
min-height: 100vh;
}
/* CONTENT CENTERING */
.contain, :where(main > article, main > section, main > div) {
display: grid;
grid-template-columns: minmax(var(--space-s), 1fr) minmax(0, var(--size-content)) minmax(var(--space-s), 1fr);
& > * { grid-column: 2 }
}
/* TYPOGRAPHY */
h1, h2, h3, h4, h5, h6 {
line-height: 1.2;
margin-block: 1.5em 0.5em;
font-weight: 400;
line-height: 1.3;
margin-top: 1.3em;
text-wrap: pretty;
}
h1 { font-size: 2.3rem }
h4 { font-weight: 700 }
h1 { font-size: clamp(2rem, 5vw, 3rem); }
h2 { font-size: clamp(1.5rem, 4vw, 2rem); }
h3 { font-size: clamp(1.25rem, 3vw, 1.5rem); }
p, ul, ol, dl {
max-width: var(--size-content);
margin-block: 1em;
}
p, ul, ol, dl { margin-block: 1em }
a {
color: var(--color-accent);
text-underline-offset: 0.2em;
&:hover {
text-decoration: none;
}
text-decoration: none;
&:hover { text-decoration: underline }
}
header, main, footer {
grid-column: content;
}
img { max-width: 100%; height: auto; display: block }
/* HEADER */
header {
border-block-end: 1px solid var(--color-border);
padding-block: var(--space-s);
display: flex;
flex-wrap: wrap;
gap: var(--space-s);
align-items: center;
border-bottom: 1px solid var(--color-border);
& > div {
display: flex;
flex-wrap: wrap;
gap: var(--space-s);
align-items: center;
padding-block: var(--space-s);
}
& nav {
display: flex;
gap: var(--space-s);
flex-wrap: wrap;
align-items: center;
&:first-child {
flex: 1;
}
&:first-child { flex: 1 }
& a {
text-decoration: none;
&:hover {
text-decoration: underline;
}
&[aria-current] {
font-weight: bold;
}
&:hover { text-decoration: underline }
&[aria-current] { font-weight: bold }
}
}
& .language-switcher {
margin-inline-start: auto;
}
}
main {
padding-block: var(--space-m);
}
/* MAIN */
main { padding-block: var(--space-m) }
/* FOOTER */
footer {
border-block-start: 1px solid var(--color-border);
border-top: 1px solid var(--color-border);
padding-block: var(--space-s);
font-size: 0.875rem;
color: var(--color-muted);
& nav {
display: flex;
gap: var(--space-s);
margin-block-end: var(--space-xs);
}
& p {
margin: 0;
}
}
img {
max-width: 100%;
height: auto;
display: block;
& p { margin: 0 }
}
/* CODE */
code {
background: var(--color-accent-light);
background: oklch(95% 0.02 250);
padding: 0.125em 0.25em;
border-radius: 0.25em;
font-size: 0.9em;
}
pre {
background: var(--color-accent-light);
background: oklch(95% 0.02 250);
padding: var(--space-s);
border-radius: 0.5em;
overflow-x: auto;
& code {
background: none;
padding: 0;
}
& code { background: none; padding: 0 }
}
table {
border-collapse: collapse;
width: 100%;
margin-block: var(--space-s);
}
th, td {
padding: var(--space-xs);
text-align: start;
border-block-end: 1px solid var(--color-border);
}
th {
font-weight: bold;
}
/* TABLES */
table { border-collapse: collapse; width: 100%; margin-block: var(--space-s) }
th, td { padding: var(--space-xs); text-align: start; border-bottom: 1px solid var(--color-border) }
th { font-weight: bold }
/* BLOCKQUOTES */
blockquote {
margin-inline: 0;
padding-inline-start: var(--space-s);
@ -170,9 +129,41 @@ blockquote {
color: var(--color-muted);
}
article {
& time {
color: var(--color-muted);
font-size: 0.875rem;
}
/* ARTICLE */
article time { color: var(--color-muted); font-size: 0.875rem }
/* LIST VIEWS */
.list-item {
margin-bottom: var(--space-m);
& img { margin-bottom: var(--space-xs) }
& h2 { margin-top: 0 }
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr));
gap: var(--space-m);
}
.card {
border: 1px solid var(--color-border);
border-radius: 0.5rem;
padding: var(--space-s);
& img { margin-bottom: var(--space-xs); border-radius: 0.25rem }
& h3 { margin-top: 0 }
}
.compact-list {
list-style: none;
padding: 0;
& li { border-bottom: 1px solid var(--color-border); padding-block: var(--space-xs) }
& a {
display: flex;
justify-content: space-between;
align-items: baseline;
gap: var(--space-s);
&:hover strong { text-decoration: underline }
}
& time { white-space: nowrap; font-size: 0.875rem }
& p { margin-top: var(--space-xs); color: var(--color-muted); font-size: 0.9rem }
}