Files
org_web/assets/styles/style.css
Zaine bb299b2f98
Some checks failed
Build Org Website / build (push) Has been cancelled
gitea runners
2026-05-06 14:55:10 +01:00

573 lines
10 KiB
CSS
Executable File
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;
}
@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;
}
h1, h2, h3{ color: var(--heading); }
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;
}
.banner-logo{
height: 80px; width: auto;
margin-right: 1.5rem; border-radius: 50%;
}
nav{
display: flex; gap: 1rem;
font-weight: 600; font-size: 1.1rem;
}
#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;
}
#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;
}