Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions _includes/head-custom.html → _includes/head_custom.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,6 @@

<!-- Favicon -->
<link rel="icon" href="{{ '/assets/images/favicon.svg' | relative_url }}" type="image/svg+xml">

<!-- Modern UI overrides -->
<link rel="stylesheet" href="{{ '/assets/css/custom.css' | relative_url }}">
6 changes: 6 additions & 0 deletions _sass/color_schemes/disttopic-dark.scss
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ $ctp-base: #1e1e2e;
$ctp-mantle: #181825;
$ctp-crust: #11111b;

// Typography
$body-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, "Helvetica Neue", Arial, sans-serif;
$mono-font-family: "SF Mono", ui-monospace, "Cascadia Code", SFMono-Regular, Menlo, Consolas, monospace;
$root-font-size: 16px;
Copy link

Copilot AI Mar 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just the Docs has deprecated $root-font-size and may remove it in a future release, so overriding it here risks becoming a no-op or breaking builds on theme upgrades. Consider removing this override (or switching to the currently recommended typography sizing variables/mechanism in Just the Docs).

Suggested change
$root-font-size: 16px;

Copilot uses AI. Check for mistakes.
$body-line-height: 1.75;

// just-the-docs color scheme override
$body-background-color: $ctp-base;
$sidebar-color: $ctp-mantle;
Expand Down
304 changes: 304 additions & 0 deletions assets/css/custom.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,304 @@
/* ================================================================
DistTopic — Modern UI Overrides
Applied on top of Just the Docs (theme: just-the-docs)
Color palette: Catppuccin Mocha
================================================================ */

/* ── CSS Custom Properties ──────────────────────────────────────── */
:root {
--dt-font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI Variable",
"Segoe UI", system-ui, "Helvetica Neue", Arial, sans-serif;
--dt-font-mono: "SF Mono", ui-monospace, "Cascadia Code", "Fira Code",
SFMono-Regular, Menlo, Consolas, monospace;

/* Catppuccin Mocha */
--ctp-base: #1e1e2e;
--ctp-mantle: #181825;
--ctp-crust: #11111b;
--ctp-surface0: #313244;
--ctp-surface1: #45475a;
--ctp-surface2: #585b70;
--ctp-overlay0: #6c7086;
--ctp-overlay1: #7f849c;
--ctp-text: #cdd6f4;
--ctp-subtext0: #a6adc8;
--ctp-subtext1: #bac2de;
--ctp-blue: #89b4fa;
--ctp-lavender: #b4befe;
--ctp-mauve: #cba6f7;
--ctp-green: #a6e3a1;
--ctp-teal: #94e2d5;
--ctp-sky: #89dceb;
--ctp-peach: #fab387;
--ctp-red: #f38ba8;
--ctp-yellow: #f9e2af;
}

/* ── Base ─────────────────────────────────────────────────────── */
html { scroll-behavior: smooth; }
Copy link

Copilot AI Mar 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

scroll-behavior: smooth should respect users who prefer reduced motion; otherwise it can cause motion sickness / violates common a11y guidance. Consider applying smooth scrolling only under @media (prefers-reduced-motion: no-preference) (and leaving default behavior otherwise).

Copilot uses AI. Check for mistakes.

body {
font-family: var(--dt-font-sans);
font-size: 16px;
line-height: 1.75;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}

/* ── Typography ──────────────────────────────────────────────── */
h1, h2, h3, h4, h5, h6 {
font-family: var(--dt-font-sans);
font-weight: 700;
letter-spacing: -0.025em;
line-height: 1.3;
}

/* Hero gradient heading (fs-9 on homepage) */
.fs-9 {
font-size: clamp(2rem, 5vw, 3.25rem) !important;
font-weight: 800 !important;
letter-spacing: -0.04em !important;
line-height: 1.1 !important;
background: linear-gradient(
135deg,
var(--ctp-lavender) 0%,
var(--ctp-blue) 50%,
var(--ctp-teal) 100%
);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 0.25rem !important;
}

Comment on lines +63 to +74
Copy link

Copilot AI Mar 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The gradient heading style sets -webkit-text-fill-color: transparent without a non-gradient fallback. In browsers/contexts that don’t support background-clip text (or in forced-colors/high-contrast modes), this can render the heading unreadable. Add an explicit fallback color and gate the gradient/transparent fill behind a feature query (and/or provide a forced-colors override).

Suggested change
background: linear-gradient(
135deg,
var(--ctp-lavender) 0%,
var(--ctp-blue) 50%,
var(--ctp-teal) 100%
);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 0.25rem !important;
}
margin-bottom: 0.25rem !important;
/* Fallback solid color for environments without background-clip text */
color: var(--ctp-text) !important;
}
/* Apply gradient text only when background-clip:text is supported */
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
.fs-9 {
background: linear-gradient(
135deg,
var(--ctp-lavender) 0%,
var(--ctp-blue) 50%,
var(--ctp-teal) 100%
);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
}
}
/* Ensure readability in high-contrast / forced-colors modes */
@media (forced-colors: active) {
.fs-9 {
background: none;
-webkit-text-fill-color: currentColor;
}
}

Copilot uses AI. Check for mistakes.
.fs-6.fw-300 {
font-size: 1.15rem !important;
font-weight: 400 !important;
color: var(--ctp-subtext1) !important;
line-height: 1.6 !important;
margin-top: 0.75rem !important;
margin-bottom: 1.5rem !important;
}

/* ── Links ────────────────────────────────────────────────────── */
a {
transition: color 0.15s ease, opacity 0.15s ease;
text-decoration-thickness: 1px;
text-underline-offset: 3px;
}
.main-content a:hover { opacity: 0.8; }

/* ── Code & Monospace ─────────────────────────────────────────── */
code, pre, kbd, samp {
font-family: var(--dt-font-mono) !important;
font-size: 0.875em;
}

/* Code blocks — rounded card look */
div.highlighter-rouge,
figure.highlight {
border-radius: 10px !important;
border: 1px solid var(--ctp-surface1) !important;
overflow: hidden;
margin: 1.25rem 0 !important;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.25);
}

pre.highlight {
padding: 1.25rem 1.5rem !important;
border-radius: 0 !important;
border: none !important;
margin: 0 !important;
line-height: 1.6;
}

/* Inline code */
p code.highlighter-rouge,
li code.highlighter-rouge,
td code.highlighter-rouge,
h1 code, h2 code, h3 code {
border-radius: 5px !important;
padding: 0.15em 0.45em !important;
font-size: 0.82em !important;
border: 1px solid var(--ctp-surface1) !important;
}

/* ── Tables ───────────────────────────────────────────────────── */
.main-content table {
border-radius: 10px;
overflow: hidden;
border: 1px solid var(--ctp-surface1) !important;
border-collapse: separate !important;
border-spacing: 0 !important;
width: 100%;
margin: 1.5rem 0;
font-size: 0.9rem;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
}

.main-content th {
background: var(--ctp-mantle) !important;
font-weight: 700;
font-size: 0.73rem !important;
text-transform: uppercase !important;
letter-spacing: 0.07em !important;
padding: 0.75rem 1.1rem !important;
color: var(--ctp-subtext1) !important;
border-bottom: 1px solid var(--ctp-surface1) !important;
}

.main-content td {
padding: 0.7rem 1.1rem !important;
border-bottom: 1px solid var(--ctp-surface0) !important;
vertical-align: middle;
}

.main-content tr:last-child td { border-bottom: none !important; }

.main-content tbody tr {
transition: background-color 0.1s ease;
}
.main-content tbody tr:hover td {
background: rgba(137, 180, 250, 0.05) !important;
}

/* ── Buttons ──────────────────────────────────────────────────── */
.btn {
border-radius: 8px !important;
font-family: var(--dt-font-sans) !important;
font-weight: 600 !important;
font-size: 0.875rem !important;
letter-spacing: 0.01em;
padding: 0.5rem 1.1rem !important;
transition: all 0.15s ease !important;
}

.btn-primary {
background: linear-gradient(
135deg,
var(--ctp-mauve) 0%,
var(--ctp-blue) 100%
) !important;
border-color: transparent !important;
color: var(--ctp-crust) !important;
}

.btn-primary:hover {
transform: translateY(-2px) !important;
box-shadow: 0 6px 20px rgba(137, 180, 250, 0.35) !important;
opacity: 1 !important;
}

.btn:not(.btn-primary):hover {
border-color: var(--ctp-blue) !important;
color: var(--ctp-blue) !important;
transform: translateY(-1px) !important;
}

/* ── Navigation ───────────────────────────────────────────────── */
.nav-list .nav-list-item .nav-list-link {
border-radius: 6px !important;
font-size: 0.875rem;
transition: background-color 0.1s ease, color 0.1s ease;
padding: 0.3rem 0.6rem !important;
}

/* ── Sidebar ──────────────────────────────────────────────────── */
.side-bar {
border-right: 1px solid var(--ctp-surface0) !important;
}

.site-title {
font-weight: 800 !important;
font-size: 1.05rem !important;
letter-spacing: -0.025em !important;
}

/* ── Main content ─────────────────────────────────────────────── */
.main-content h1 { margin-top: 0; }

.main-content h2 {
padding-top: 1.5rem;
border-top: 1px solid var(--ctp-surface0);
margin-top: 2.5rem;
}

/* ── HR ───────────────────────────────────────────────────────── */
.main-content hr {
border: none !important;
border-top: 1px solid var(--ctp-surface1) !important;
margin: 2.5rem 0 !important;
}

/* ── Blockquotes / Callouts ───────────────────────────────────── */
.main-content blockquote {
border-radius: 8px;
border-left: 3px solid var(--ctp-blue);
background: rgba(137, 180, 250, 0.07);
padding: 0.9rem 1.25rem;
margin: 1.5rem 0;
color: var(--ctp-subtext1);
}

/* just-the-docs callout modifiers */
.main-content blockquote.note { border-left-color: var(--ctp-blue); background: rgba(137,180,250,0.07); }
.main-content blockquote.warning { border-left-color: var(--ctp-yellow); background: rgba(249,226,175,0.07); }
.main-content blockquote.important{ border-left-color: var(--ctp-mauve); background: rgba(203,166,247,0.07); }

/* ── Labels ───────────────────────────────────────────────────── */
.label, .label-green, .label-yellow, .label-red, .label-blue, .label-purple {
border-radius: 5px !important;
font-size: 0.7rem !important;
font-weight: 700 !important;
letter-spacing: 0.06em !important;
padding: 0.2em 0.6em !important;
text-transform: uppercase !important;
}

/* ── Search ───────────────────────────────────────────────────── */
.search-input {
border-radius: 8px !important;
font-family: var(--dt-font-sans) !important;
font-size: 0.9rem;
transition: border-color 0.15s ease, box-shadow 0.15s ease !important;
}

.search-input:focus {
border-color: var(--ctp-blue) !important;
box-shadow: 0 0 0 3px rgba(137, 180, 250, 0.15) !important;
outline: none !important;
}

Comment on lines +267 to +272
Copy link

Copilot AI Mar 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing the focus outline (outline: none) can make keyboard focus hard to see, especially in forced-colors mode where box-shadow may be suppressed. Prefer styling :focus-visible and keep an outline (or add a forced-colors specific outline) so focus indication remains reliably visible.

Suggested change
.search-input:focus {
border-color: var(--ctp-blue) !important;
box-shadow: 0 0 0 3px rgba(137, 180, 250, 0.15) !important;
outline: none !important;
}
.search-input:focus-visible {
border-color: var(--ctp-blue) !important;
box-shadow: 0 0 0 3px rgba(137, 180, 250, 0.15) !important;
}
@media (forced-colors: active) {
.search-input:focus-visible {
outline: 2px solid Highlight !important;
outline-offset: 2px;
box-shadow: none !important;
}
}

Copilot uses AI. Check for mistakes.
/* ── Breadcrumbs ──────────────────────────────────────────────── */
.breadcrumb-nav-list-item {
font-size: 0.8rem !important;
}

/* ── Footer ───────────────────────────────────────────────────── */
.site-footer {
border-top: 1px solid var(--ctp-surface0) !important;
font-size: 0.825rem !important;
color: var(--ctp-overlay1) !important;
}

.site-footer a {
color: var(--ctp-blue) !important;
}

/* ── Top nav bar ──────────────────────────────────────────────── */
.main-header {
border-bottom: 1px solid var(--ctp-surface0) !important;
box-shadow: 0 1px 0 var(--ctp-surface0) !important;
}

/* ── Badges/images ────────────────────────────────────────────── */
.main-content img {
border-radius: 4px;
}

/* ── Page content spacing ─────────────────────────────────────── */
.main-content {
font-size: 1rem;
padding-top: 1.5rem;
}
Loading