2026-03-27 16:41:57 +07:00
|
|
|
/* ── highlight.js light theme ─────────────────────────────────── */
|
|
|
|
|
@import 'highlight.js/styles/github.css';
|
|
|
|
|
|
2026-03-25 09:39:51 +07:00
|
|
|
/* ── Reset & base ─────────────────────────────────────────────── */
|
|
|
|
|
*,
|
|
|
|
|
*::before,
|
|
|
|
|
*::after {
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
margin: 0;
|
|
|
|
|
padding: 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
:root {
|
|
|
|
|
--color-primary: #0d6efd;
|
|
|
|
|
--color-primary-dark: #0a58ca;
|
|
|
|
|
--color-bg: #ffffff;
|
|
|
|
|
--color-bg-secondary: #f8f9fa;
|
2026-05-14 16:26:11 +07:00
|
|
|
--color-text: #111111; /* Near black for maximum contrast */
|
|
|
|
|
--color-text-muted: #444444;
|
2026-03-25 09:39:51 +07:00
|
|
|
--color-border: #dee2e6;
|
|
|
|
|
--color-success: #198754;
|
|
|
|
|
--color-danger: #dc3545;
|
|
|
|
|
--color-warning: #ffc107;
|
|
|
|
|
--radius: 8px;
|
|
|
|
|
--shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
|
|
|
--font-mono: 'Fira Code', 'JetBrains Mono', 'Cascadia Code', monospace;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[data-theme='dark'] {
|
|
|
|
|
--color-bg: #1a1a2e;
|
|
|
|
|
--color-bg-secondary: #16213e;
|
|
|
|
|
--color-text: #e0e0e0;
|
|
|
|
|
--color-text-muted: #a0a0a0;
|
|
|
|
|
--color-border: #2a2a4a;
|
|
|
|
|
--shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-27 16:41:57 +07:00
|
|
|
/* ── highlight.js dark theme overrides ───────────────────────── */
|
|
|
|
|
[data-theme='dark'] .hljs {
|
|
|
|
|
background: #16213e;
|
|
|
|
|
color: #c9d1d9;
|
|
|
|
|
}
|
|
|
|
|
[data-theme='dark'] .hljs-keyword,
|
|
|
|
|
[data-theme='dark'] .hljs-selector-tag {
|
|
|
|
|
color: #ff7b72;
|
|
|
|
|
}
|
|
|
|
|
[data-theme='dark'] .hljs-string,
|
|
|
|
|
[data-theme='dark'] .hljs-attr {
|
|
|
|
|
color: #a5d6ff;
|
|
|
|
|
}
|
|
|
|
|
[data-theme='dark'] .hljs-comment,
|
|
|
|
|
[data-theme='dark'] .hljs-quote {
|
|
|
|
|
color: #8b949e;
|
|
|
|
|
}
|
|
|
|
|
[data-theme='dark'] .hljs-number,
|
|
|
|
|
[data-theme='dark'] .hljs-literal {
|
|
|
|
|
color: #79c0ff;
|
|
|
|
|
}
|
|
|
|
|
[data-theme='dark'] .hljs-type,
|
|
|
|
|
[data-theme='dark'] .hljs-built_in {
|
|
|
|
|
color: #ffa657;
|
|
|
|
|
}
|
|
|
|
|
[data-theme='dark'] .hljs-title,
|
|
|
|
|
[data-theme='dark'] .hljs-function {
|
|
|
|
|
color: #d2a8ff;
|
|
|
|
|
}
|
|
|
|
|
[data-theme='dark'] .hljs-meta {
|
|
|
|
|
color: #79c0ff;
|
|
|
|
|
}
|
|
|
|
|
[data-theme='dark'] .hljs-section {
|
|
|
|
|
color: #1f6feb;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
}
|
|
|
|
|
[data-theme='dark'] .hljs-symbol,
|
|
|
|
|
[data-theme='dark'] .hljs-bullet {
|
|
|
|
|
color: #f2cc60;
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-25 09:39:51 +07:00
|
|
|
html {
|
2026-05-14 16:26:11 +07:00
|
|
|
font-family: 'Montserrat', 'Roboto', system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
|
2026-03-25 09:39:51 +07:00
|
|
|
color: var(--color-text);
|
|
|
|
|
background: var(--color-bg);
|
2026-05-14 16:26:11 +07:00
|
|
|
font-size: 16px;
|
|
|
|
|
font-weight: 500; /* Medium weight */
|
|
|
|
|
line-height: 1.5;
|
|
|
|
|
text-align: left;
|
|
|
|
|
-webkit-font-smoothing: auto;
|
|
|
|
|
-moz-osx-font-smoothing: auto;
|
2026-03-25 09:39:51 +07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
body {
|
|
|
|
|
min-height: 100dvh;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
a {
|
|
|
|
|
color: var(--color-primary);
|
|
|
|
|
text-decoration: none;
|
|
|
|
|
}
|
|
|
|
|
a:hover {
|
|
|
|
|
color: var(--color-primary-dark);
|
|
|
|
|
text-decoration: underline;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ── Utilities ────────────────────────────────────────────────── */
|
|
|
|
|
.container {
|
|
|
|
|
width: 100%;
|
|
|
|
|
max-width: 1200px;
|
|
|
|
|
margin-inline: auto;
|
|
|
|
|
padding-inline: 1rem;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.btn {
|
|
|
|
|
display: inline-flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
gap: 0.5rem;
|
|
|
|
|
padding: 0.5rem 1rem;
|
|
|
|
|
border: none;
|
|
|
|
|
border-radius: var(--radius);
|
|
|
|
|
font-size: 0.875rem;
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
transition: background 0.15s, transform 0.1s;
|
|
|
|
|
}
|
|
|
|
|
.btn:active {
|
|
|
|
|
transform: scale(0.97);
|
|
|
|
|
}
|
|
|
|
|
.btn-primary {
|
|
|
|
|
background: var(--color-primary);
|
|
|
|
|
color: #fff;
|
|
|
|
|
}
|
|
|
|
|
.btn-primary:hover {
|
|
|
|
|
background: var(--color-primary-dark);
|
|
|
|
|
}
|
|
|
|
|
.btn-success {
|
|
|
|
|
background: var(--color-success);
|
|
|
|
|
color: #fff;
|
|
|
|
|
}
|
|
|
|
|
.btn-danger {
|
|
|
|
|
background: var(--color-danger);
|
|
|
|
|
color: #fff;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ── Code blocks (markdown rendered) ─────────────────────────── */
|
|
|
|
|
pre code {
|
|
|
|
|
font-family: var(--font-mono);
|
|
|
|
|
font-size: 0.85rem;
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-14 16:26:11 +07:00
|
|
|
/* ── Blockquotes (markdown rendered) ─────────────────────────── */
|
|
|
|
|
blockquote {
|
|
|
|
|
border-left: 4px solid var(--color-primary);
|
|
|
|
|
background: var(--color-bg-secondary);
|
|
|
|
|
padding: 0.5rem 1rem;
|
|
|
|
|
margin-bottom: 1rem;
|
|
|
|
|
border-radius: 0 var(--radius) var(--radius) 0;
|
|
|
|
|
font-style: italic;
|
|
|
|
|
color: var(--color-text-muted);
|
|
|
|
|
}
|
|
|
|
|
blockquote p {
|
|
|
|
|
margin-bottom: 0 !important;
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-27 16:41:57 +07:00
|
|
|
/* ── Responsive images ───────────────────────────────────────── */
|
|
|
|
|
img {
|
|
|
|
|
max-width: 100%;
|
|
|
|
|
height: auto;
|
2026-05-11 07:27:15 +07:00
|
|
|
display: block;
|
|
|
|
|
margin-left: auto;
|
|
|
|
|
margin-right: auto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* ── Markdown Tables ─────────────────────────────────────────── */
|
|
|
|
|
table {
|
|
|
|
|
width: 100%;
|
|
|
|
|
border-collapse: collapse;
|
|
|
|
|
margin-bottom: 1.25rem;
|
|
|
|
|
font-size: 0.85rem;
|
|
|
|
|
border: 1px solid var(--color-border);
|
|
|
|
|
}
|
|
|
|
|
th, td {
|
|
|
|
|
border: 1px solid var(--color-border);
|
|
|
|
|
padding: 8px 12px;
|
|
|
|
|
text-align: left;
|
|
|
|
|
}
|
|
|
|
|
th {
|
|
|
|
|
background: var(--color-bg-secondary);
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
}
|
|
|
|
|
tr:nth-child(even) {
|
|
|
|
|
background: rgba(0, 0, 0, 0.02);
|
2026-03-27 16:41:57 +07:00
|
|
|
}
|
|
|
|
|
|
2026-03-25 09:39:51 +07:00
|
|
|
/* ── Cards ────────────────────────────────────────────────────── */
|
|
|
|
|
.card {
|
|
|
|
|
background: var(--color-bg);
|
|
|
|
|
border: 1px solid var(--color-border);
|
|
|
|
|
border-radius: var(--radius);
|
|
|
|
|
box-shadow: var(--shadow);
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-31 12:08:42 +07:00
|
|
|
/* ── Circuit embeds (rendered from ```circuit markdown fences) ── */
|
|
|
|
|
.circuit-embed {
|
|
|
|
|
margin: 0.75rem 0;
|
|
|
|
|
border: 1px solid var(--color-border);
|
|
|
|
|
border-radius: var(--radius);
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
position: relative;
|
|
|
|
|
background: var(--color-bg-secondary);
|
|
|
|
|
}
|
|
|
|
|
.circuit-embed-wrapper {
|
|
|
|
|
display: block;
|
|
|
|
|
}
|
|
|
|
|
.circuit-embed-loading {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
padding: 2rem;
|
|
|
|
|
color: var(--color-text-muted);
|
|
|
|
|
font-size: 0.85rem;
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-25 09:39:51 +07:00
|
|
|
/* ── Responsive ───────────────────────────────────────────────── */
|
|
|
|
|
@media (max-width: 768px) {
|
|
|
|
|
.container {
|
|
|
|
|
padding-inline: 0.75rem;
|
|
|
|
|
}
|
|
|
|
|
}
|