// Black & white theme — variable overrides must come before @use "minima" $brand-color: #555555; $brand-color-light: #aaaaaa; $brand-color-dark: #000000; $site-title-color: #000000; $text-color: #111111; $background-color: #f5f5f0; $code-background-color: #e8e8e8; $border-color-01: #000000; $border-color-02: #333333; $border-color-03: #666666; $link-base-color: #000000; $link-visited-color: #000000; $link-hover-color: #000000; @use "minima"; // ─── Base ──────────────────────────────────────────────────────────────────── body { font-family: Georgia, "Times New Roman", serif; background-color: #f5f5f0; min-height: 100vh; display: flex; flex-direction: column; } html { background-color: #f5f5f0; } .page-content { flex: 1; } a { text-decoration: none; color: #000; &:visited { color: #000; } } // ─── Masthead ──────────────────────────────────────────────────────────────── .site-header { border-top: 5px solid #000; border-bottom: 3px double #000; background-color: #fff; text-align: center; padding: 12px 0; .wrapper { display: flex; flex-direction: column; align-items: center; } } .site-title { font-size: 2.8rem; font-weight: 900; font-family: Georgia, serif; letter-spacing: 0.08em; text-transform: uppercase; display: block; text-align: center; &, &:visited { color: #000; } } .site-nav { text-align: center; line-height: normal; margin-top: 10px; .trigger { display: flex; align-items: center; gap: 8px; } .page-link { font-family: Georgia, serif; font-size: 0.85rem; letter-spacing: 0.1em; text-transform: uppercase; color: #000; margin: 0 -0.1em 0 0; } .page-link:not(:last-child) { margin-right: -0.1em; } .nav-pip { color: #999; @media screen and (max-width: 600px) { display: none; } } } // ─── Front page grid ───────────────────────────────────────────────────────── .newspaper-front { max-width: 1248px; margin: 28px auto; padding: 0 16px; display: flex; flex-direction: column; gap: 20px; } .section-rule { border: none; border-top: 2px solid #000; margin: 0; } .front-top { display: grid; grid-template-columns: 3fr 2fr; gap: 20px; align-items: stretch; } .front-bottom { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; &--1 { grid-template-columns: 1fr; } &--2 { grid-template-columns: repeat(2, 1fr); } &--3 { grid-template-columns: repeat(3, 1fr); } } // ─── Shared block style (the rounded-rectangle boxes) ──────────────────────── .front-block { background: #fff; border: 2px solid #000; border-radius: 14px; padding: 24px 22px; display: block; color: #000; transition: background 0.15s; overflow: hidden; &:hover { background: #f0f0eb; } } // ─── Headline block ─────────────────────────────────────────────────────────── .headline-block { display: flex; flex-direction: column; .headline-media { margin: -24px -22px 16px; overflow: hidden; border-radius: 12px 12px 0 0; background: #e8e8e2; img { display: block; width: 100%; aspect-ratio: 16 / 7; object-fit: cover; object-position: center; } } .headline-content { display: flex; flex-direction: column; flex: 1; } .block-headline { font-size: 2rem; font-weight: 900; line-height: 1.2; margin: 0 0 12px; text-transform: uppercase; letter-spacing: 0.02em; } .block-rule { border: none; border-top: 2px solid #000; margin: 0 0 14px; } .block-excerpts { flex: 1; min-height: 0; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 6; line-clamp: 6; overflow: hidden; text-overflow: ellipsis; } .block-excerpt { font-size: 1rem; line-height: 1.6; color: #222; margin: 0 0 1.2em 0; } } // ─── Opinion block ──────────────────────────────────────────────────────────── .opinion-block { display: flex; flex-direction: column; .section-label { font-size: 0.75rem; font-family: Georgia, serif; letter-spacing: 0.18em; text-transform: uppercase; color: #555; margin-bottom: 6px; } .block-rule { border: none; border-top: 2px solid #000; margin: 0 0 14px; } } .opinion-item { display: block; color: #000; padding: 4px 0; .opinion-title { font-size: 1rem; font-weight: bold; margin: 0 0 5px; line-height: 1.3; } .opinion-excerpt { font-size: 0.85rem; color: #444; margin: 0; line-height: 1.5; } .reading-time { margin-top: 5px; } } .opinion-divider { border: none; border-top: 1px solid #000; margin: 12px 0; } // ─── Bottom story blocks ────────────────────────────────────────────────────── .story-block { .story-block-title { font-size: 0.95rem; font-weight: bold; margin: 0 0 8px; line-height: 1.3; } .story-block-excerpt { font-size: 0.82rem; color: #444; margin: 0; line-height: 1.5; } } .reading-time { display: block; font-size: 0.72rem; color: #888; margin-top: 6px; letter-spacing: 0.04em; text-transform: uppercase; font-family: Georgia, serif; } // ─── Changelog block ────────────────────────────────────────────────────────── .front-changelog { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; .changelog-block { &:hover { background: #fff; } .section-label { font-size: 0.75rem; font-family: Georgia, serif; letter-spacing: 0.18em; text-transform: uppercase; color: #555; margin-bottom: 6px; } .block-rule { border: none; border-top: 2px solid #000; margin: 0 0 14px; } } } .changelog-item { display: flex; flex-direction: column; gap: 3px; padding: 4px 0; .changelog-change { font-size: 1rem; font-weight: bold; line-height: 1.3; } .changelog-change-link { color: inherit; text-decoration: none; &:visited { color: inherit; } &:hover { text-decoration: underline; } } .changelog-meta { font-size: 0.82rem; color: #555; letter-spacing: 0.04em; } } .changelog-divider { border: none; border-top: 1px solid #000; margin: 12px 0; } // ─── Essays block ──────────────────────────────────────────────────────────── .front-essays { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; &--1 { grid-template-columns: 1fr; } &--2 { grid-template-columns: repeat(2, 1fr); } &--3 { grid-template-columns: repeat(3, 1fr); } @media screen and (max-width: 700px) { grid-template-columns: 1fr; &--1, &--2, &--3 { grid-template-columns: 1fr; } } } .essay-block { &:hover { background: #fff; } } // ─── Acknowledgements block ────────────────────────────────────────────────── .acknowledgements-block { &:hover { background: #fff; } .section-label { font-size: 0.75rem; font-family: Georgia, serif; letter-spacing: 0.18em; text-transform: uppercase; color: #555; margin-bottom: 6px; } .block-rule { border: none; border-top: 2px solid #000; margin: 0 0 14px; } } .acknowledgements-grid { column-count: 2; column-gap: 20px; margin-bottom: 14px; .acknowledgement-name { display: block; font-size: 1rem; font-weight: bold; line-height: 1.4; } } .acknowledgements-full-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px 20px; .acknowledgement-name { font-size: 1.05rem; line-height: 1.75; } } // ─── Story (article) page ───────────────────────────────────────────────────── .story-page { max-width: 680px; margin: 32px auto; padding: 0 16px; .story-header { margin-bottom: 24px; } .story-title { font-size: 2.2rem; font-weight: 900; line-height: 1.2; margin: 0 0 10px; } .story-meta { font-size: 0.82rem; font-family: Georgia, serif; letter-spacing: 0.06em; text-transform: uppercase; color: #555; margin-bottom: 14px; .story-category { float: right; } } .story-rule { border: none; border-top: 2px solid #000; margin: 0; } .story-body { font-size: 1.05rem; line-height: 1.75; color: #111; p { margin-bottom: 1.2em; a { text-decoration: underline; } } ul, ol { margin-top: 1.2em; margin-bottom: 1.2em; } li > ul, li > ol { margin-top: 0; margin-bottom: 0; } blockquote { margin: 0 0 1.2em; padding: 0.2em 0 0.2em 1.2em; border-left: 3px solid #000; color: #333; font-style: italic; p, ul, ol { margin-bottom: 0.8em; &:last-child { margin-bottom: 0; } } } } .story-footer { margin-top: 40px; padding-top: 16px; border-top: 1px solid #000; font-size: 0.85rem; letter-spacing: 0.05em; text-transform: uppercase; a { color: #000; text-decoration: underline; } } } // ─── Footer ─────────────────────────────────────────────────────────────────── .site-footer { border-top: 3px double #000; background-color: #fff; color: #555; font-size: 0.8rem; text-align: center; } .theme-toggle { border: 0; background: none; padding: 0; cursor: pointer; } .js-only { display: none; } html.js .js-only { display: inline; } html.dark-mode { filter: invert(1) hue-rotate(180deg); background-color: #000; img, svg, video { filter: invert(1) hue-rotate(180deg); } .site-title img { filter: none; } } @media (prefers-color-scheme: dark) { html:not(.light-mode):not(.dark-mode) { filter: invert(1) hue-rotate(180deg); background-color: #000; img, svg, video { filter: invert(1) hue-rotate(180deg); } .site-title img { filter: none; } } } // ─── Archive pages ──────────────────────────────────────────────────────────── .archive-page { max-width: 1248px; margin: 28px auto; padding: 0 16px; .section-label { font-size: 0.75rem; font-family: Georgia, serif; letter-spacing: 0.18em; text-transform: uppercase; color: #555; margin-bottom: 8px; } .section-rule { margin-bottom: 20px; } } .archive-list { > * + * { margin-top: 16px; } } // ─── Archive links ──────────────────────────────────────────────────────────── .archive-link { display: block; font-size: 0.78rem; font-family: Georgia, serif; letter-spacing: 0.1em; text-transform: uppercase; color: #555; margin-top: 4px; &:visited { color: #555; } &:hover { color: #000; } } .news-archive-link { display: block; font-size: 0.78rem; font-family: Georgia, serif; letter-spacing: 0.1em; text-transform: uppercase; color: #555; text-align: right; &:visited { color: #555; } &:hover { color: #000; } } // ─── Responsive ─────────────────────────────────────────────────────────────── @media (max-width: 700px) { .front-top { grid-template-columns: 1fr; } .front-bottom, .front-bottom--3 { grid-template-columns: repeat(2, 1fr); } .front-changelog { grid-template-columns: 1fr; } .site-title { font-size: 1.8rem; } } $slack-link-fg: #1264a3; $slack-link-bg: rgba(18, 100, 163, 0.1); $slack-link-bg-hover: rgba(18, 100, 163, 0.2); .slack_user { color: $slack-link-fg; background: $slack-link-bg; border-radius: 3px; padding: 0 3px; white-space: nowrap; &:visited { color: $slack-link-fg; } &:hover { background: $slack-link-bg-hover; color: $slack-link-fg; } } .slack_channel { color: $slack-link-fg; background: $slack-link-bg; border-radius: 3px; padding: 0 3px; white-space: nowrap; &:visited { color: $slack-link-fg; } &:hover { background: $slack-link-bg-hover; color: $slack-link-fg; } }