diff --git a/docs/overrides/404.html b/docs/overrides/404.html new file mode 100644 index 0000000..b9f9bd4 --- /dev/null +++ b/docs/overrides/404.html @@ -0,0 +1,19 @@ +{% extends "main.html" %} + +{% block content %} +
+

404

+

+ Page not found +

+

+ The page you're looking for doesn't exist or has been moved. +

+ + Back to Home + + + Browse Skills + +
+{% endblock %} diff --git a/docs/overrides/main.html b/docs/overrides/main.html index af94de2..452d690 100644 --- a/docs/overrides/main.html +++ b/docs/overrides/main.html @@ -9,4 +9,55 @@ gtag('js', new Date()); gtag('config', 'G-VHRY2VKY9K'); + +{% if page and page.meta %} + + + + + + + + + + + + +{% endif %} + + + + {% endblock %} diff --git a/docs/overrides/partials/announce.html b/docs/overrides/partials/announce.html new file mode 100644 index 0000000..b67089e --- /dev/null +++ b/docs/overrides/partials/announce.html @@ -0,0 +1,3 @@ + + v2.1.2 — 173 skills across 9 domains. Landing page generator now outputs Next.js TSX + Tailwind CSS! + diff --git a/docs/skills/index.md b/docs/skills/index.md index ed1131c..9bca0a8 100644 --- a/docs/skills/index.md +++ b/docs/skills/index.md @@ -5,57 +5,6 @@ hide: - edit --- - -
# Skills Library diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 4406ac4..c927408 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -1,9 +1,297 @@ /* ============================================ - Claude Code Skills — Custom Theme - Minimal overrides on Material's native grid + Claude Code Skills — GitHub Primer Theme + MkDocs Material custom properties override ============================================ */ -/* --- Hero Section --- */ +/* =========================================== + A. Light Mode — GitHub Primer Light + =========================================== */ +[data-md-color-scheme="default"] { + --md-primary-fg-color: #0969da; + --md-primary-fg-color--light: #218bff; + --md-primary-fg-color--dark: #0550ae; + --md-primary-bg-color: #ffffff; + --md-primary-bg-color--light: #f6f8fa; + --md-accent-fg-color: #0969da; + --md-accent-fg-color--transparent: rgba(9, 105, 218, 0.1); + + --md-default-fg-color: #1f2328; + --md-default-fg-color--light: #656d76; + --md-default-fg-color--lighter: #8b949e; + --md-default-fg-color--lightest: rgba(31, 35, 40, 0.12); + --md-default-bg-color: #ffffff; + --md-default-bg-color--light: #f6f8fa; + --md-default-bg-color--lighter: #f6f8fa; + --md-default-bg-color--lightest: #eaeef2; + + --md-code-fg-color: #1f2328; + --md-code-bg-color: #f6f8fa; + --md-code-hl-color: rgba(9, 105, 218, 0.1); + + --md-typeset-color: #1f2328; + --md-typeset-a-color: #0969da; + + --md-footer-fg-color: #f0f6fc; + --md-footer-fg-color--light: rgba(240, 246, 252, 0.7); + --md-footer-fg-color--lighter: rgba(240, 246, 252, 0.4); + --md-footer-bg-color: #24292f; + --md-footer-bg-color--dark: #1c2128; +} + +/* =========================================== + B. Dark Mode — GitHub Primer Dark + =========================================== */ +[data-md-color-scheme="slate"] { + --md-hue: 210; + --md-primary-fg-color: #1f6feb; + --md-primary-fg-color--light: #388bfd; + --md-primary-fg-color--dark: #1158c7; + --md-primary-bg-color: #0d1117; + --md-primary-bg-color--light: #161b22; + --md-accent-fg-color: #58a6ff; + --md-accent-fg-color--transparent: rgba(31, 111, 235, 0.15); + + --md-default-fg-color: #f0f6fc; + --md-default-fg-color--light: #c9d1d9; + --md-default-fg-color--lighter: #8b949e; + --md-default-fg-color--lightest: rgba(240, 246, 252, 0.1); + --md-default-bg-color: #0d1117; + --md-default-bg-color--light: #161b22; + --md-default-bg-color--lighter: #161b22; + --md-default-bg-color--lightest: #21262d; + + --md-code-fg-color: #c9d1d9; + --md-code-bg-color: #161b22; + --md-code-hl-color: rgba(31, 111, 235, 0.15); + + --md-typeset-color: #f0f6fc; + --md-typeset-a-color: #58a6ff; + + --md-footer-fg-color: #f0f6fc; + --md-footer-fg-color--light: rgba(240, 246, 252, 0.7); + --md-footer-fg-color--lighter: rgba(240, 246, 252, 0.4); + --md-footer-bg-color: #010409; + --md-footer-bg-color--dark: #010409; +} + +/* =========================================== + C. Header & Navigation Bar + =========================================== */ +.md-header { + border-bottom: 1px solid var(--md-default-fg-color--lightest); + box-shadow: none; +} + +[data-md-color-scheme="default"] .md-header { + background-color: #ffffff; + color: #1f2328; +} + +[data-md-color-scheme="slate"] .md-header { + background-color: #161b22; +} + +/* Header title color fix */ +[data-md-color-scheme="default"] .md-header .md-header__title { + color: #1f2328; +} + +/* Header icons */ +[data-md-color-scheme="default"] .md-header .md-icon { + color: #656d76; +} + +/* Tab bar */ +.md-tabs { + border-bottom: 1px solid var(--md-default-fg-color--lightest); +} + +[data-md-color-scheme="default"] .md-tabs { + background-color: #ffffff; +} + +[data-md-color-scheme="slate"] .md-tabs { + background-color: #0d1117; +} + +.md-tabs__link { + font-weight: 500; + font-size: 0.8rem; + opacity: 0.7; + transition: opacity 0.15s ease; +} + +.md-tabs__link:hover, +.md-tabs__link--active { + opacity: 1; +} + +/* =========================================== + D. Sidebar Navigation + =========================================== */ +.md-nav { + font-size: 0.78rem; + line-height: 1.5; +} + +.md-nav__item { + padding: 0; +} + +.md-nav__link { + padding: 0.35rem 0.75rem; + border-radius: 6px; + margin: 1px 4px; + font-weight: 400; + transition: background-color 0.15s ease; +} + +.md-nav__link:hover { + background-color: var(--md-accent-fg-color--transparent); +} + +.md-nav__link--active, +.md-nav__item .md-nav__link--active { + font-weight: 600; + color: var(--md-accent-fg-color); + background-color: var(--md-accent-fg-color--transparent); +} + +/* Section labels in sidebar */ +.md-nav__item--nested > .md-nav__link { + font-weight: 600; + font-size: 0.72rem; + letter-spacing: 0.03em; + opacity: 0.8; +} + +/* Sidebar scrollbar */ +.md-sidebar__scrollwrap::-webkit-scrollbar { + width: 4px; +} + +.md-sidebar__scrollwrap::-webkit-scrollbar-thumb { + background-color: var(--md-default-fg-color--lightest); + border-radius: 4px; +} + +/* =========================================== + E. Buttons — GitHub-style + =========================================== */ +.md-typeset .md-button--primary { + background-color: var(--md-primary-fg-color); + color: #ffffff !important; + border: 1px solid var(--md-primary-fg-color); + border-radius: 6px; + padding: 0.5rem 1.25rem; + font-weight: 500; + font-size: 0.82rem; + transition: background-color 0.15s ease, border-color 0.15s ease; + box-shadow: none; +} + +.md-typeset .md-button--primary:hover { + background-color: var(--md-primary-fg-color--dark); + border-color: var(--md-primary-fg-color--dark); + color: #ffffff !important; +} + +/* Outline / secondary button */ +.md-typeset .md-button:not(.md-button--primary) { + color: var(--md-primary-fg-color); + border: 1px solid var(--md-default-fg-color--lightest); + border-radius: 6px; + padding: 0.5rem 1.25rem; + font-weight: 500; + font-size: 0.82rem; + background-color: transparent; + transition: background-color 0.15s ease, border-color 0.15s ease; + box-shadow: none; +} + +.md-typeset .md-button:not(.md-button--primary):hover { + background-color: var(--md-accent-fg-color--transparent); + border-color: var(--md-primary-fg-color); +} + +/* =========================================== + F. Grid Cards + =========================================== */ +.md-typeset .grid.cards > ul > li, +.md-typeset .grid.cards > ol > li, +.md-typeset .grid > .card { + border: 1px solid var(--md-default-fg-color--lightest); + border-radius: 6px; + box-shadow: none; + transition: border-color 0.15s ease, box-shadow 0.15s ease; +} + +.md-typeset .grid.cards > ul > li:hover, +.md-typeset .grid.cards > ol > li:hover, +.md-typeset .grid > .card:hover { + border-color: var(--md-default-fg-color--lighter); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); +} + +[data-md-color-scheme="slate"] .md-typeset .grid.cards > ul > li:hover, +[data-md-color-scheme="slate"] .md-typeset .grid.cards > ol > li:hover { + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); +} + +/* =========================================== + G. Code Blocks + =========================================== */ +.md-typeset code { + border-radius: 6px; + border: 1px solid var(--md-default-fg-color--lightest); + padding: 0.1em 0.35em; + font-size: 0.85em; +} + +.md-typeset pre { + border-radius: 6px; + border: 1px solid var(--md-default-fg-color--lightest); +} + +.md-typeset pre > code { + border: none; + padding: 0; +} + +/* =========================================== + H. Tables + =========================================== */ +.md-typeset table:not([class]) { + border: 1px solid var(--md-default-fg-color--lightest); + border-radius: 6px; + border-collapse: separate; + border-spacing: 0; + overflow: hidden; +} + +.md-typeset table:not([class]) th { + background-color: var(--md-default-bg-color--light); + font-weight: 600; + font-size: 0.78rem; + border-bottom: 1px solid var(--md-default-fg-color--lightest); +} + +.md-typeset table:not([class]) td { + border-top: 1px solid var(--md-default-fg-color--lightest); +} + +/* =========================================== + I. Admonitions + =========================================== */ +.md-typeset .admonition, +.md-typeset details { + border-radius: 6px; + box-shadow: none; +} + +/* =========================================== + J. Hero Section + =========================================== */ .hero { text-align: center; padding: 2.5rem 1rem 1rem; @@ -17,14 +305,14 @@ letter-spacing: -0.03em; line-height: 1.15; margin-bottom: 0.75rem !important; - background: linear-gradient(135deg, #a78bfa 0%, #e879f9 50%, #f59e0b 100%); + background: linear-gradient(135deg, #58a6ff 0%, #1f6feb 50%, #388bfd 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } [data-md-color-scheme="default"] .hero h1 { - background: linear-gradient(135deg, #7c3aed 0%, #c026d3 50%, #d97706 100%); + background: linear-gradient(135deg, #0550ae 0%, #0969da 50%, #218bff 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; @@ -47,28 +335,56 @@ margin: 0.25rem; } -/* --- Tighter grid card spacing --- */ -.md-typeset .grid.cards > ul > li, -.md-typeset .grid.cards > ol > li, -.md-typeset .grid > .card { - border-radius: 10px; +/* Skills page hero */ +.skills-hero { + text-align: center; + padding: 2rem 1rem 0.5rem; + max-width: 700px; + margin: 0 auto; } -/* --- Section dividers --- */ -.md-typeset hr { - border-color: var(--md-default-fg-color--lightest); +.skills-hero h1 { + font-size: 2.2rem !important; + font-weight: 800 !important; + letter-spacing: -0.03em; + line-height: 1.15; + margin-bottom: 0.5rem !important; + background: linear-gradient(135deg, #58a6ff 0%, #1f6feb 50%, #388bfd 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; } -/* --- Code block polish --- */ -.md-typeset code { - border-radius: 6px; +[data-md-color-scheme="default"] .skills-hero h1 { + background: linear-gradient(135deg, #0550ae 0%, #0969da 50%, #218bff 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; } -.md-typeset pre { - border-radius: 8px; +.skills-hero-sub { + font-size: 1.05rem; + opacity: 0.6; + max-width: 520px; + margin: 0 auto 1.5rem; } -/* --- Typography --- */ +/* Skill count badge */ +.skill-count { + display: inline-block; + background: var(--md-primary-fg-color); + color: #ffffff; + font-size: 0.7rem; + font-weight: 700; + padding: 0.15rem 0.5rem; + border-radius: 999px; + vertical-align: middle; + margin-left: 0.35rem; +} + +/* =========================================== + K. Typography + =========================================== */ .md-typeset { font-size: 0.82rem; line-height: 1.7; @@ -79,7 +395,37 @@ letter-spacing: -0.01em; } -/* --- Mobile --- */ +/* =========================================== + L. Section Dividers + =========================================== */ +.md-typeset hr { + border-color: var(--md-default-fg-color--lightest); +} + +/* =========================================== + M. Search Dialog + =========================================== */ +[data-md-color-scheme="default"] .md-search__form { + background-color: #f6f8fa; + border: 1px solid var(--md-default-fg-color--lightest); +} + +/* =========================================== + N. Announcement Bar + =========================================== */ +.md-banner { + background-color: var(--md-primary-fg-color); + color: #ffffff; + font-size: 0.78rem; +} + +.md-banner a { + color: #ffffff; +} + +/* =========================================== + O. Mobile Responsive + =========================================== */ @media (max-width: 768px) { .hero h1 { font-size: 1.8rem !important; @@ -88,4 +434,8 @@ .hero-subtitle { font-size: 0.95rem; } + + .skills-hero h1 { + font-size: 1.8rem !important; + } } diff --git a/mkdocs.yml b/mkdocs.yml index fd653b9..ae2d8b1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -11,20 +11,18 @@ theme: name: material custom_dir: docs/overrides palette: - - media: "(prefers-color-scheme)" - scheme: slate - primary: deep purple - accent: deep purple - toggle: - icon: material/brightness-4 - name: Switch to light mode - - media: "(prefers-color-scheme: light)" - scheme: default - primary: deep purple - accent: deep purple + - scheme: default + primary: custom + accent: custom toggle: icon: material/brightness-7 name: Switch to dark mode + - scheme: slate + primary: custom + accent: custom + toggle: + icon: material/brightness-4 + name: Switch to light mode font: text: Inter code: JetBrains Mono