soapbox/soapbox/themes/green/static/style.css
Ole-Morten Duesund f0fcb875c5 Tagger på innlegg med tagg-sider
Kommaseparert tagg-felt i editoren, lagret som liste i frontmatter
(dedup case-ufølsomt). /tag/<slug>/ lister alle innlegg med taggen,
også gjesters; /tag/ lister alle tagger med antall. Tagger vises som
piller på innlegg og i lister, som <category> i feeden og i sitemap.
«tag» er reservert som slug/brukernavn.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JcEy43fNYpwg6K6oTKakWR
2026-08-26 15:42:36 +02:00

110 lines
4.5 KiB
CSS

/* Tema: "grønt er skjønt".
Alle farger er CSS-variabler; et nytt tema kan nøye seg med å overstyre :root.
Kontrast: tekst/bakgrunn ≥ 7:1 (AAA), lenker ≥ 4.5:1 på begge skjemaer.
--on-accent er tekstfargen oppå --accent og byttes i mørk modus, der
aksenten er lys. */
:root {
--bg: #f4f8f3;
--fg: #1c2a1e;
--muted: #4d6350;
--accent: #1f6b3a;
--accent-strong: #154d29;
--on-accent: #ffffff;
--surface: #ffffff;
--border: #c9dccb;
--code-bg: #e6efe6;
--max-width: 40rem;
}
@media (prefers-color-scheme: dark) {
:root {
--bg: #101a12;
--fg: #e4ede4;
--muted: #a7bda9;
--accent: #7fd39a;
--accent-strong: #a9e6bb;
--on-accent: #0f1f13;
--surface: #182619;
--border: #2f4532;
--code-bg: #1e2f20;
}
}
@media (prefers-reduced-motion: reduce) {
* { transition: none !important; animation: none !important; }
}
* { box-sizing: border-box; }
html { font-size: 100%; }
body {
margin: 0;
background: var(--bg);
color: var(--fg);
font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
font-size: 1.0625rem;
line-height: 1.65;
}
.skip {
position: absolute; left: -999px; top: 0;
background: var(--accent); color: var(--on-accent); padding: .5rem 1rem;
}
.skip:focus { left: 0; z-index: 10; }
.visually-hidden {
position: absolute; width: 1px; height: 1px; overflow: hidden;
clip: rect(0 0 0 0); white-space: nowrap;
}
.site-header, main, .site-footer {
max-width: var(--max-width);
margin: 0 auto;
padding: 1rem;
}
.site-header { border-bottom: 3px solid var(--accent); padding-top: 1.5rem; }
.site-title {
display: inline-flex; align-items: center; gap: .6rem;
font-size: 1.5rem; font-weight: 700; letter-spacing: -.01em;
text-decoration: none; color: var(--accent-strong);
}
.site-title::before {
content: ""; width: 2rem; height: 2rem; flex: none;
background: url("favicon.svg") center / contain no-repeat;
}
.site-description { margin: .25rem 0 0; color: var(--muted); }
main { padding-top: 1.5rem; }
a { color: var(--accent); }
a:hover { color: var(--accent-strong); }
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible {
outline: 3px solid var(--accent); outline-offset: 2px;
}
h1 { font-size: 2.1rem; line-height: 1.15; letter-spacing: -.015em; margin: .5rem 0 .35rem; }
h2 { font-size: 1.4rem; line-height: 1.25; margin: 2rem 0 .5rem; }
.meta { color: var(--muted); font-size: .9rem; margin: 0 0 1.5rem; font-variant-numeric: tabular-nums; }
.summary { padding: 1.25rem 0; border-bottom: 1px solid var(--border); }
.summary h2 { margin: 0 0 .25rem; }
.summary h2 a { color: var(--accent-strong); text-decoration: none; }
.summary h2 a:hover { text-decoration: underline; }
.summary .meta { margin: 0; }
.summary .excerpt { margin: .5rem 0 0; color: var(--fg); }
.body p, .body ul, .body ol { margin: 0 0 1.1rem; }
.tags { list-style: none; padding: 0; margin: .75rem 0 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.tags a {
display: inline-block; padding: .2rem .6rem; border: 1px solid var(--border); border-radius: 999px;
background: var(--surface); text-decoration: none; font-size: .85rem; min-height: 32px; line-height: 1.6;
}
.tags a:hover, .tags a:focus-visible { border-color: var(--accent); }
.tag-cloud { margin-top: 1rem; } .tag-cloud a { font-size: 1rem; }
.signature { margin: 1.5rem 0 0; color: var(--muted); font-style: italic; }
.body img { max-width: 100%; height: auto; display: block; margin: 1.5rem 0; border-radius: 4px; }
.body pre { background: var(--code-bg); padding: 1rem; overflow-x: auto; border-radius: 4px; }
.body code { background: var(--code-bg); padding: .1em .3em; border-radius: 3px; font-size: .95em; overflow-wrap: anywhere; }
.body pre code { background: none; padding: 0; }
.body blockquote {
margin: 1rem 0; padding: .25rem 1rem; border-left: 4px solid var(--accent); color: var(--muted);
}
.body table { border-collapse: collapse; width: 100%; display: block; overflow-x: auto; }
.body th, .body td { border: 1px solid var(--border); padding: .4rem .6rem; text-align: left; }
.site-footer {
border-top: 1px solid var(--border); color: var(--muted); font-size: .9rem;
margin-top: 3rem; padding-top: 1.25rem;
display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem 1rem;
}
.site-footer nav a { text-decoration: none; display: inline-block; padding: .5rem 0; }
.site-footer nav a:hover { text-decoration: underline; }
.site-footer nav a + a::before { content: "·"; margin: 0 .5rem; color: var(--border); }
.colophon { margin: 0; padding: .5rem 0; }