Files
org_web/assets/styles/style.css
Zaine Arch 11fbf2f331
All checks were successful
Build Org Website / build (push) Successful in 42s
retro
2026-05-07 00:12:39 +01:00

722 lines
14 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
:root{
--gutter: 2rem;
--margin: 420px;
--body-pad: 1rem;
--content: clamp(
var(--content-min),
calc(100vi - 2*var(--body-pad) - 2*(var(--margin) + var(--gutter))),
var(--content-max)
);
--content-min: 60ch;
--content-max: 880px;
--bleed: 48px;
--fullwidth-cap: 860px;
--bg: #faf9f6;
--fg: #000000;
--link: #1a0dab;
--heading: #004c99;
--code-bg: #f0f0f0;
--active-toc: #cacaca;
--note-color: #555;
--note-bg: transparent;
--border: #d7d7d7;
--chip-bg: #f0f0f0;
--chip-fg: #444;
--muted: #666;
--font-body: 'DM Sans', system-ui, sans-serif;
--kb-bg-completed: #e6f4ea;
--kb-bg-manager-review: #fff4e5;
--kb-bg-in-progress: #e8f0fe;
--kb-bg-not-started: #f1f3f5;
--kb-bg-comments: #fdecea;
--kb-column-border: rgba(0,0,0,0.06);
--kb-card-bg: #ffffff;
--kb-card-text: #1f2933;
}
:root[data-theme="dark"]{
--bg: #0f1115;
--fg: #e6e6e6;
--link: #8ab4ff;
--heading: #9ecbff;
--code-bg: #1a1d24;
--note-color: #c2c7cf;
--note-bg: transparent;
--border: #2a2f3a;
--chip-bg: #1f2330;
--chip-fg: #cfd3da;
--muted: #a9b0bb;
--active-toc: #313131;
--kb-bg-completed: #1e3a2b;
--kb-bg-manager-review: #3a2f1e;
--kb-bg-in-progress: #1f2a44;
--kb-bg-not-started: #2a2d31;
--kb-bg-comments: #3b1f24;
--kb-column-border: rgba(255,255,255,0.08);
--kb-card-bg: #16181c;
--kb-card-text: #e5e7eb;
}
:root[data-mode="retro"]{
--bg: #fff9df;
--fg: #241f18;
--link: #275db3;
--heading: #8a2f24;
--code-bg: #efe1b8;
--active-toc: #e2d09d;
--note-color: #554a37;
--border: #29251c;
--chip-bg: #f3e9c6;
--chip-fg: #241f18;
--muted: #5c513d;
}
:root[data-theme="dark"][data-mode="retro"]{
--bg: #101611;
--fg: #d9f7d7;
--link: #7cc7ff;
--heading: #71d08f;
--code-bg: #18251f;
--active-toc: #244531;
--note-color: #a9c9ad;
--border: #71d08f;
--chip-bg: #18251f;
--chip-fg: #d9f7d7;
--muted: #a9c9ad;
}
@font-face {
font-family: 'Times';
src: url('../fonts/times.ttf') format('truetype');
}
@font-face {
font-family: 'Noto';
src: url('../fonts/NotoSans-Regular.ttf') format('truetype');
}
html, body{
background-color: var(--bg);
color: var(--fg);
font-size: 16px;
transition: background-color .3s, color .3s;
margin: 0;
font-family: 'Noto', system-ui, sans-serif;
}
:root[data-mode="retro"] body{
font-family: 'Times', 'Courier New', monospace;
background-image:
repeating-linear-gradient(
0deg,
color-mix(in oklab, var(--fg) 4%, transparent) 0,
color-mix(in oklab, var(--fg) 4%, transparent) 1px,
transparent 1px,
transparent 14px
);
}
h1, h2, h3{ color: var(--heading); }
:root[data-mode="retro"] h1,
:root[data-mode="retro"] h2,
:root[data-mode="retro"] h3{
text-shadow: 1px 1px 0 color-mix(in oklab, var(--heading) 22%, transparent);
}
a {
color: var(--link);
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.banner-header{
display: flex;
align-items: center;
justify-content: flex-start;
flex-wrap: wrap;
padding: .5rem 1rem;
border-radius: 6px;
}
:root[data-mode="retro"] .banner-header{
border: 2px solid var(--border);
border-radius: 0;
background: color-mix(in oklab, var(--bg) 92%, var(--fg) 8%);
box-shadow: 5px 5px 0 color-mix(in oklab, var(--border) 72%, transparent);
}
.banner-logo{
height: 80px; width: auto;
margin-right: 1.5rem; border-radius: 50%;
}
:root[data-mode="retro"] .banner-logo{
border-radius: 0;
image-rendering: pixelated;
filter: saturate(0.85) contrast(1.2);
}
nav{
display: flex; gap: 1rem;
font-weight: 600; font-size: 1.1rem;
}
.db-mode-toggle {
display: inline-flex;
align-items: center;
gap: 0.55rem;
min-height: 36px;
padding: 0.35rem 0.65rem;
color: var(--fg);
background: color-mix(in oklab, var(--bg) 92%, var(--fg) 8%);
border: 1px solid var(--border);
border-radius: 999px;
cursor: pointer;
font: inherit;
font-size: 0.78rem;
font-weight: 850;
letter-spacing: 0.06em;
text-transform: uppercase;
}
.db-mode-toggle:hover,
.db-mode-toggle:focus-visible {
border-color: var(--link);
outline: 0;
box-shadow: 0 0 0 3px color-mix(in oklab, var(--link) 18%, transparent);
}
.db-mode-toggle__track {
position: relative;
width: 38px;
height: 20px;
background: color-mix(in oklab, var(--fg) 12%, transparent);
border: 1px solid var(--border);
border-radius: 999px;
}
.db-mode-toggle__knob {
position: absolute;
top: 3px;
left: 3px;
width: 12px;
height: 12px;
background: var(--fg);
border-radius: 999px;
transition: transform 0.18s ease;
}
:root[data-mode="retro"] .db-mode-toggle {
border-width: 2px;
border-radius: 0;
box-shadow: 4px 4px 0 color-mix(in oklab, var(--border) 72%, transparent);
}
:root[data-mode="retro"] .db-mode-toggle__track,
:root[data-mode="retro"] .db-mode-toggle__knob {
border-radius: 0;
}
:root[data-mode="retro"] .db-mode-toggle__knob {
transform: translateX(18px);
}
#preamble.status{
max-width: var(--content);
margin-left: auto;
margin-right: auto;
padding-left: var(--body-pad);
padding-right: var(--body-pad);
box-sizing: content-box;
}
#preamble .banner-header,
#preamble #updated{
max-width: 100%;
}
footer{
color: var(--fg);
padding: 1rem; margin-top: 2rem;
border-radius: 6px; text-align: center;
font-size: .9rem; font-style: italic;
}
:root[data-mode="retro"] footer,
:root[data-mode="retro"] pre,
:root[data-mode="retro"] table,
:root[data-mode="retro"] blockquote,
:root[data-mode="retro"] .epigraph blockquote {
border: 2px solid var(--border);
border-radius: 0;
background-color: color-mix(in oklab, var(--bg) 92%, var(--fg) 8%);
box-shadow: 4px 4px 0 color-mix(in oklab, var(--border) 64%, transparent);
}
:root[data-mode="retro"] code,
:root[data-mode="retro"] kbd,
:root[data-mode="retro"] .post-tag,
:root[data-mode="retro"] .tag {
border: 1px solid var(--border);
border-radius: 0;
background: var(--chip-bg);
color: var(--chip-fg);
}
:root[data-mode="retro"] input,
:root[data-mode="retro"] textarea,
:root[data-mode="retro"] button {
border-radius: 0;
}
#content.content{
max-width: var(--content);
margin-left: auto !important;
margin-right: auto !important;
padding-left: var(--body-pad);
padding-right: var(--body-pad);
box-sizing: content-box;
position: relative;
}
#content .figure,
#content img:not(.fullwidth){
max-width: 100%;
height: auto;
}
ul, ol {
margin: 1rem 0 1.5rem 1.5rem;
padding: 0;
line-height: 1.5;
}
ul {
list-style: none;
}
ul li {
position: relative;
padding-left: 1.2em;
}
ul li::before {
content: "•";
position: absolute;
left: 0;
top: 0;
color: var(--heading);
font-weight: bold;
}
ol {
counter-reset: list-counter;
list-style: none;
}
ol li {
counter-increment: list-counter;
position: relative;
padding-left: 1.8em;
}
ol li::before {
content: counter(list-counter) ".";
position: absolute;
left: 0;
top: 0;
color: var(--heading);
font-weight: bold;
}
li {
margin-bottom: 8px;
display: flow-root;
}
li::after {
content: none;
}
li ul,
li ol {
margin-top: 0.5rem;
margin-bottom: 0.5rem;
}
li ul li::before {
content: "";
font-weight: normal;
color: var(--note-color);
}
li ol li::before {
font-weight: normal;
color: var(--note-color);
}
.epigraph {
margin: 2rem auto;
max-width: 80%;
font-style: italic;
}
.epigraph blockquote {
margin: 0;
padding: 1rem 1.5rem;
border-left: 4px solid var(--heading);
background-color: rgba(0, 0, 0, 0.02);
color: var(--fg);
line-height: 1.6;
}
.epigraph blockquote footer {
margin-top: 0.75rem;
font-style: normal;
font-size: 0.9em;
color: var(--note-color);
text-align: right;
}
.epigraph blockquote cite {
font-style: italic;
font-weight: 500;
color: var(--link);
}
.epigraph blockquote::before,
.epigraph blockquote::after {
content: none;
}
.epigraph blockquote{
border-left-color: var(--heading);
background-color: color-mix(in oklab, var(--bg) 94%, var(--fg) 6%);
color: var(--fg);
}
.epigraph blockquote footer{ color: var(--muted); }
.hidden { display: none !important; }
.bp-x{ right:72px; }
.bp-next,.bp-prev{ right:8px; }
.bp-prev{ left:8px; }
.bp-wrap{ transition: opacity .18s ease; }
.bp-wrap.bp-fadeout{ opacity: 0; }
.bp-controls{
padding-top: env(safe-area-inset-top, 0);
padding-right: calc(env(safe-area-inset-right, 0) + 8px);
}
body.no-sidenotes {
--body-pad: 0;
--margin: 0;
--gutter: 0;
--content-min: 80ch;
--content-max: 1200px;
--content: clamp(
var(--content-min),
100vi,
var(--content-max)
);
}
/* =========================
NOTES BOARD
========================= */
#notes-wall {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
gap: 1.5rem;
margin: 2.5rem 0;
align-items: start;
}
/* =========================
NOTE CARD
========================= */
.note {
position: relative;
padding: 1rem 1rem 0.9rem;
background: --code-bg;
border-radius: 8px;
box-shadow:
0 2px 6px rgba(0, 0, 0, 0.08),
0 12px 24px rgba(0, 0, 0, 0.06);
transform: rotate(var(--note-tilt, 0deg));
transition:
transform 0.15s ease,
box-shadow 0.15s ease;
}
/* subtle randomness */
.note:nth-child(3n) { --note-tilt: -0.6deg; }
.note:nth-child(4n) { --note-tilt: 0.4deg; }
.note:nth-child(5n) { --note-tilt: -0.3deg; }
.note:hover {
transform: rotate(0deg) translateY(-4px);
box-shadow:
0 6px 14px rgba(0, 0, 0, 0.12),
0 18px 36px rgba(0, 0, 0, 0.10);
}
/* =========================
PIN
========================= */
.note::before {
content: "";
position: absolute;
top: 0.6rem;
left: 50%;
width: 10px;
height: 10px;
background: #c33;
border-radius: 50%;
transform: translateX(-50%);
box-shadow:
0 1px 2px rgba(0, 0, 0, 0.3);
opacity: 0.85;
}
/* =========================
META
========================= */
.note-meta {
display: flex;
justify-content: space-between;
align-items: baseline;
font-size: 0.7rem;
margin-bottom: 0.5rem;
color: #555;
}
.note-author {
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.note-meta time {
font-variant-numeric: tabular-nums;
opacity: 0.7;
}
/* =========================
CONTENT
========================= */
.note-content {
font-size: 0.95rem;
line-height: 1.45;
white-space: pre-wrap;
color: --fg;
}
/* =========================
MOBILE TWEAKS
========================= */
@media (max-width: 600px) {
#notes-wall {
grid-template-columns: 1fr;
}
.note {
transform: none;
}
.note::before {
left: 0.75rem;
transform: none;
}
}
/* =========================
NOTES FORM
========================= */
#notes-form-wrapper {
margin-top: 3rem;
display: flex;
justify-content: center;
}
#notes-form {
width: 100%;
max-width: 420px;
background: --bg;
padding: 1.25rem 1.25rem 1.1rem;
border-radius: 10px;
box-shadow:
0 2px 6px rgba(0, 0, 0, 0.08),
0 14px 30px rgba(0, 0, 0, 0.06);
position: relative;
}
/* pin */
#notes-form::before {
content: "";
position: absolute;
top: 0.6rem;
left: 50%;
width: 12px;
height: 12px;
background: #c33;
border-radius: 50%;
transform: translateX(-50%);
box-shadow:
0 1px 2px rgba(0, 0, 0, 0.35);
}
/* =========================
LABELS
========================= */
#notes-form label {
display: block;
font-size: 0.7rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: #666;
margin-bottom: 0.25rem;
}
/* =========================
INPUTS
========================= */
#notes-form input,
#notes-form textarea {
width: 100%;
border: none;
background: transparent;
font-family: inherit;
font-size: 0.95rem;
line-height: 1.45;
padding: 0.3rem 0;
margin-bottom: 0.9rem;
border-bottom: 1px solid #ddd;
}
#notes-form textarea {
resize: vertical;
min-height: 4.5rem;
}
/* focus state */
#notes-form input:focus,
#notes-form textarea:focus {
outline: none;
border-bottom-color: #999;
}
/* placeholder */
#notes-form ::placeholder {
color: #aaa;
}
/* =========================
SUBMIT BUTTON
========================= */
#notes-form button {
margin-top: 0.5rem;
padding: 0.35rem 0.9rem;
font-family: inherit;
font-size: 0.8rem;
letter-spacing: 0.06em;
text-transform: uppercase;
border-radius: 999px;
border: none;
background: #222;
color: #fff;
cursor: pointer;
float: right;
}
#notes-form button:hover {
background: #000;
}
#notes-form button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
/* =========================
MOBILE
========================= */
@media (max-width: 600px) {
#notes-form {
max-width: 100%;
}
}
/* Mermaid container for zooming and panning */
.mermaid-container {
overflow: auto; /* allow scrolling */
width: 100%;
max-height: 800px; /* adjust to your page */
border: 1px solid #ccc; /* optional, visual boundary */
position: relative;
}
/* Make SVG scale properly */
.mermaid-container .mermaid svg {
transform-origin: top left; /* needed for scaling */
transition: transform 0.2s ease; /* smooth zoom */
width: 100%;
height: auto;
}
/* Zoom buttons */
.mermaid-zoom-controls {
position: absolute;
top: 5px;
right: 5px;
z-index: 10;
}
.mermaid-zoom-controls button {
padding: 5px 10px;
margin-left: 5px;
background: #007bff;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
.mermaid-zoom-controls button:hover {
background: #0056b3;
}