mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-03 15:43:11 +08:00
840 lines
20 KiB
CSS
840 lines
20 KiB
CSS
/**
|
|
* VitePress Custom Styles
|
|
* Overrides and extensions for default VitePress theme
|
|
* Design System: ui-ux-pro-max — flat design, developer-focused, documentation-optimized
|
|
*/
|
|
|
|
/* ============================================
|
|
* Global Theme Variables
|
|
* ============================================ */
|
|
:root {
|
|
--vp-c-brand: var(--vp-c-primary);
|
|
--vp-c-brand-light: var(--vp-c-primary-300);
|
|
--vp-c-brand-lighter: var(--vp-c-primary-200);
|
|
--vp-c-brand-dark: var(--vp-c-primary-700);
|
|
--vp-c-brand-darker: var(--vp-c-primary-800);
|
|
|
|
--vp-home-hero-name-color: var(--vp-c-primary);
|
|
--vp-home-hero-name-background: linear-gradient(120deg, var(--vp-c-primary-500) 30%, var(--vp-c-secondary-500));
|
|
|
|
--vp-button-brand-bg: var(--vp-c-primary);
|
|
--vp-button-brand-hover-bg: var(--vp-c-primary-600);
|
|
--vp-button-brand-active-bg: var(--vp-c-primary-700);
|
|
|
|
--vp-custom-block-tip-bg: var(--vp-c-primary-50);
|
|
--vp-custom-block-tip-border: var(--vp-c-primary-200);
|
|
--vp-custom-block-tip-text: var(--vp-c-primary-700);
|
|
|
|
--vp-custom-block-warning-bg: var(--vp-c-accent-50);
|
|
--vp-custom-block-warning-border: var(--vp-c-accent-200);
|
|
--vp-custom-block-warning-text: var(--vp-c-accent-700);
|
|
|
|
--vp-custom-block-danger-bg: #fef2f2;
|
|
--vp-custom-block-danger-border: #fecaca;
|
|
--vp-custom-block-danger-text: #b91c1c;
|
|
|
|
/* Layout Width - Wider content area (using rem for zoom responsiveness) */
|
|
--vp-layout-max-width: 100rem; /* 1600px / 16 */
|
|
--vp-content-width: 57.5rem; /* 920px / 16 */
|
|
--vp-sidebar-width: 17.5rem; /* 280px / 16 */
|
|
--vp-toc-width: 12.5rem; /* 200px / 16 */
|
|
|
|
/* Prose width for optimal readability */
|
|
--vp-prose-width: 51.25rem; /* 820px / 16 */
|
|
}
|
|
|
|
.dark {
|
|
--vp-custom-block-tip-bg: rgba(59, 130, 246, 0.1);
|
|
--vp-custom-block-tip-border: rgba(59, 130, 246, 0.3);
|
|
--vp-custom-block-tip-text: var(--vp-c-primary-300);
|
|
|
|
--vp-custom-block-warning-bg: rgba(217, 119, 6, 0.1);
|
|
--vp-custom-block-warning-border: rgba(217, 119, 6, 0.3);
|
|
--vp-custom-block-warning-text: var(--vp-c-accent-300);
|
|
|
|
--vp-custom-block-danger-bg: rgba(185, 28, 28, 0.1);
|
|
--vp-custom-block-danger-border: rgba(185, 28, 28, 0.3);
|
|
--vp-custom-block-danger-text: #fca5a5;
|
|
}
|
|
|
|
/* ============================================
|
|
* Layout Container Adjustments
|
|
* Use CSS variables in :root to control layout widths
|
|
* Do not override VitePress layout calculations with !important
|
|
* ============================================ */
|
|
|
|
/* Adjust sidebar and content layout */
|
|
/* NOTE: Removed duplicate padding-left - VitePress already handles sidebar layout */
|
|
/* .VPDoc, .VPDoc[data-v-343c73d6] { padding-left: var(--vp-sidebar-width) !important; } */
|
|
|
|
/* Right side outline (TOC) adjustments */
|
|
.VPDocOutline {
|
|
padding-left: 24px;
|
|
}
|
|
|
|
.VPDocOutline .outline-link {
|
|
font-size: 13px;
|
|
line-height: 1.6;
|
|
padding: 4px 8px;
|
|
}
|
|
|
|
/* ============================================
|
|
* Navigation Bar Border
|
|
* ============================================ */
|
|
.VPNav {
|
|
border-bottom: 1px solid var(--vp-c-divider);
|
|
}
|
|
|
|
/* ============================================
|
|
* Desktop Layout Adjustments
|
|
* Grid-based layout is defined in mobile.css @media (min-width: 1024px)
|
|
* ============================================ */
|
|
|
|
/* ============================================
|
|
* Home Page Override
|
|
* ============================================ */
|
|
|
|
/* Use :has() to detect home page (contains .pro-home) */
|
|
.VPContent:has(.pro-home) {
|
|
padding: 0 !important;
|
|
margin: 0 !important;
|
|
max-width: 100vw !important;
|
|
}
|
|
|
|
.Layout:has(.pro-home) {
|
|
max-width: 100vw !important;
|
|
}
|
|
|
|
/* Ensure VPNav doesn't cause overflow */
|
|
.Layout:has(.pro-home) .VPNav {
|
|
max-width: 100vw;
|
|
}
|
|
|
|
/* Home page navbar - reduce title left margin since no sidebar */
|
|
.Layout:has(.pro-home) .VPNavBar .content-body,
|
|
.Layout:has(.pro-home) .VPNavBar .title {
|
|
padding-left: 0 !important;
|
|
}
|
|
|
|
/* Ensure VPFooter doesn't cause overflow */
|
|
.Layout:has(.pro-home) .VPFooter {
|
|
max-width: 100vw;
|
|
padding-left: 1rem;
|
|
padding-right: 1rem;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* ProfessionalHome component full width */
|
|
.pro-home {
|
|
max-width: 100% !important;
|
|
padding: 0 !important;
|
|
margin: 0 !important;
|
|
width: 100% !important;
|
|
box-sizing: border-box !important;
|
|
}
|
|
|
|
/* Ensure all sections extend to full width */
|
|
.pro-home .hero-section,
|
|
.pro-home .features-section,
|
|
.pro-home .pipeline-section,
|
|
.pro-home .json-section,
|
|
.pro-home .quickstart-section,
|
|
.pro-home .cta-section {
|
|
width: 100% !important;
|
|
margin: 0 !important;
|
|
padding-left: 0 !important;
|
|
padding-right: 0 !important;
|
|
box-sizing: border-box !important;
|
|
max-width: 100vw !important;
|
|
}
|
|
|
|
.VPHomeHero {
|
|
padding: 80px 0;
|
|
background: linear-gradient(180deg, var(--vp-c-bg-soft) 0%, var(--vp-c-bg) 100%);
|
|
}
|
|
|
|
/* ============================================
|
|
* Documentation Content Typography
|
|
* Optimized for readability (65-75 chars per line)
|
|
* ============================================ */
|
|
.vp-doc {
|
|
font-family: var(--vp-font-family-base);
|
|
line-height: var(--vp-line-height-relaxed);
|
|
color: var(--vp-c-text-1);
|
|
}
|
|
|
|
/* Heading hierarchy with clear visual distinction */
|
|
.vp-doc h1 {
|
|
font-family: var(--vp-font-family-heading);
|
|
font-size: var(--vp-font-size-4xl);
|
|
font-weight: 800;
|
|
letter-spacing: -0.025em;
|
|
line-height: var(--vp-line-height-tight);
|
|
margin-bottom: var(--vp-spacing-8);
|
|
color: var(--vp-c-text-1);
|
|
}
|
|
|
|
.vp-doc h2 {
|
|
font-family: var(--vp-font-family-heading);
|
|
font-size: var(--vp-font-size-2xl);
|
|
font-weight: 700;
|
|
letter-spacing: -0.01em;
|
|
line-height: var(--vp-line-height-tight);
|
|
margin-top: var(--vp-spacing-12);
|
|
padding-top: var(--vp-spacing-8);
|
|
border-top: 1px solid var(--vp-c-divider);
|
|
color: var(--vp-c-text-1);
|
|
}
|
|
|
|
.vp-doc h2:first-of-type {
|
|
margin-top: var(--vp-spacing-6);
|
|
border-top: none;
|
|
}
|
|
|
|
.vp-doc h3 {
|
|
font-family: var(--vp-font-family-heading);
|
|
font-size: var(--vp-font-size-xl);
|
|
font-weight: 600;
|
|
line-height: var(--vp-line-height-snug);
|
|
margin-top: var(--vp-spacing-10);
|
|
color: var(--vp-c-text-1);
|
|
}
|
|
|
|
.vp-doc h4 {
|
|
font-family: var(--vp-font-family-heading);
|
|
font-size: var(--vp-font-size-lg);
|
|
font-weight: 600;
|
|
line-height: var(--vp-line-height-snug);
|
|
margin-top: var(--vp-spacing-8);
|
|
color: var(--vp-c-text-2);
|
|
}
|
|
|
|
.vp-doc h5 {
|
|
font-size: var(--vp-font-size-base);
|
|
font-weight: 600;
|
|
line-height: var(--vp-line-height-snug);
|
|
margin-top: var(--vp-spacing-6);
|
|
color: var(--vp-c-text-2);
|
|
}
|
|
|
|
.vp-doc h6 {
|
|
font-size: var(--vp-font-size-sm);
|
|
font-weight: 600;
|
|
line-height: var(--vp-line-height-snug);
|
|
margin-top: var(--vp-spacing-4);
|
|
color: var(--vp-c-text-3);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
/* Body text with optimal line height */
|
|
.vp-doc p {
|
|
font-size: var(--vp-font-size-base);
|
|
line-height: var(--vp-line-height-relaxed);
|
|
margin: var(--vp-spacing-5) 0;
|
|
max-width: var(--vp-prose-width);
|
|
}
|
|
|
|
/* Lists with proper spacing */
|
|
.vp-doc ul,
|
|
.vp-doc ol {
|
|
font-size: var(--vp-font-size-base);
|
|
line-height: var(--vp-line-height-relaxed);
|
|
margin: var(--vp-spacing-5) 0;
|
|
padding-left: var(--vp-spacing-6);
|
|
max-width: var(--vp-prose-width);
|
|
}
|
|
|
|
.vp-doc li {
|
|
line-height: var(--vp-line-height-relaxed);
|
|
margin: var(--vp-spacing-2) 0;
|
|
}
|
|
|
|
.vp-doc li + li {
|
|
margin-top: var(--vp-spacing-2);
|
|
}
|
|
|
|
/* Nested lists */
|
|
.vp-doc ul ul,
|
|
.vp-doc ol ol,
|
|
.vp-doc ul ol,
|
|
.vp-doc ol ul {
|
|
margin: var(--vp-spacing-2) 0;
|
|
}
|
|
|
|
/* Better spacing for code blocks in lists */
|
|
.vp-doc li > code {
|
|
margin: 0 2px;
|
|
}
|
|
|
|
/* Blockquotes */
|
|
.vp-doc blockquote {
|
|
margin: var(--vp-spacing-6) 0;
|
|
padding: var(--vp-spacing-4) var(--vp-spacing-6);
|
|
border-left: 4px solid var(--vp-c-primary);
|
|
background: var(--vp-c-bg-soft);
|
|
border-radius: 0 var(--vp-radius-lg) var(--vp-radius-lg) 0;
|
|
color: var(--vp-c-text-2);
|
|
font-style: italic;
|
|
}
|
|
|
|
.vp-doc blockquote p {
|
|
margin: var(--vp-spacing-2) 0;
|
|
}
|
|
|
|
/* Strong and emphasis */
|
|
.vp-doc strong {
|
|
font-weight: 600;
|
|
color: var(--vp-c-text-1);
|
|
}
|
|
|
|
.vp-doc em {
|
|
font-style: italic;
|
|
}
|
|
|
|
/* ============================================
|
|
* Command Reference Specific Styles
|
|
* ============================================ */
|
|
.vp-doc h3[id^="ccw"],
|
|
.vp-doc h3[id^="workflow"],
|
|
.vp-doc h3[id^="issue"],
|
|
.vp-doc h3[id^="cli"],
|
|
.vp-doc h3[id^="memory"] {
|
|
scroll-margin-top: 80px;
|
|
position: relative;
|
|
}
|
|
|
|
/* Add subtle separator between command sections */
|
|
.vp-doc hr {
|
|
border: none;
|
|
border-top: 1px solid var(--vp-c-divider);
|
|
margin: 3rem 0;
|
|
}
|
|
|
|
/* ============================================
|
|
* Custom Container Blocks
|
|
* Flat design with left accent border
|
|
* ============================================ */
|
|
.custom-container {
|
|
margin: var(--vp-spacing-6) 0;
|
|
padding: var(--vp-spacing-4) var(--vp-spacing-5);
|
|
border-radius: var(--vp-radius-xl);
|
|
border-left: 4px solid;
|
|
background: var(--vp-c-bg-soft);
|
|
box-shadow: var(--vp-shadow-xs);
|
|
}
|
|
|
|
.custom-container.info {
|
|
background: var(--vp-c-bg-soft);
|
|
border-color: var(--vp-c-primary);
|
|
}
|
|
|
|
.custom-container.success {
|
|
background: var(--vp-c-secondary-50);
|
|
border-color: var(--vp-c-secondary);
|
|
}
|
|
|
|
.dark .custom-container.success {
|
|
background: rgba(16, 185, 129, 0.08);
|
|
}
|
|
|
|
.custom-container.tip {
|
|
border-radius: var(--vp-radius-xl);
|
|
background: rgba(59, 130, 246, 0.05);
|
|
}
|
|
|
|
.custom-container.warning {
|
|
border-radius: var(--vp-radius-xl);
|
|
background: rgba(245, 158, 11, 0.05);
|
|
}
|
|
|
|
.custom-container.danger {
|
|
border-radius: var(--vp-radius-xl);
|
|
background: rgba(239, 68, 68, 0.05);
|
|
}
|
|
|
|
/* Custom container titles */
|
|
.custom-container .custom-container-title {
|
|
font-family: var(--vp-font-family-heading);
|
|
font-weight: 600;
|
|
font-size: var(--vp-font-size-sm);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
margin-bottom: var(--vp-spacing-2);
|
|
}
|
|
|
|
/* VitePress default custom blocks */
|
|
.vp-doc .tip,
|
|
.vp-doc .warning,
|
|
.vp-doc .danger,
|
|
.vp-doc .info {
|
|
border-radius: var(--vp-radius-xl);
|
|
margin: var(--vp-spacing-6) 0;
|
|
padding: var(--vp-spacing-4) var(--vp-spacing-5);
|
|
box-shadow: var(--vp-shadow-xs);
|
|
}
|
|
|
|
.vp-doc .tip {
|
|
background: rgba(59, 130, 246, 0.05);
|
|
border-color: var(--vp-c-primary);
|
|
}
|
|
|
|
.vp-doc .warning {
|
|
background: rgba(245, 158, 11, 0.05);
|
|
border-color: var(--vp-c-accent);
|
|
}
|
|
|
|
.vp-doc .danger {
|
|
background: rgba(239, 68, 68, 0.05);
|
|
border-color: #ef4444;
|
|
}
|
|
|
|
.vp-doc .info {
|
|
background: var(--vp-c-bg-soft);
|
|
border-color: var(--vp-c-primary);
|
|
}
|
|
|
|
/* ============================================
|
|
* Code Block Improvements
|
|
* Clean, flat design with subtle borders
|
|
* ============================================ */
|
|
.vp-code-group {
|
|
margin: var(--vp-spacing-6) 0;
|
|
border-radius: var(--vp-radius-xl);
|
|
overflow: hidden;
|
|
border: 1px solid var(--vp-c-divider);
|
|
box-shadow: var(--vp-shadow-sm);
|
|
}
|
|
|
|
.vp-code-group .tabs {
|
|
background: var(--vp-c-bg-soft);
|
|
border-bottom: 1px solid var(--vp-c-divider);
|
|
padding: 0 var(--vp-spacing-2);
|
|
}
|
|
|
|
.vp-code-group div[class*='language-'] {
|
|
margin: 0;
|
|
border-radius: 0;
|
|
border: none;
|
|
}
|
|
|
|
div[class*='language-'] {
|
|
border-radius: var(--vp-radius-xl);
|
|
margin: var(--vp-spacing-6) 0;
|
|
border: 1px solid var(--vp-c-divider);
|
|
background: var(--vp-c-bg-soft) !important;
|
|
box-shadow: var(--vp-shadow-sm);
|
|
}
|
|
|
|
div[class*='language-'] pre {
|
|
line-height: var(--vp-line-height-relaxed);
|
|
padding: var(--vp-spacing-5) var(--vp-spacing-6);
|
|
}
|
|
|
|
div[class*='language-'] code {
|
|
font-family: var(--vp-font-family-mono);
|
|
font-size: var(--vp-font-size-sm);
|
|
font-weight: 400;
|
|
letter-spacing: -0.01em;
|
|
}
|
|
|
|
/* Code block header with language label */
|
|
div[class*='language-'] > span.lang {
|
|
font-size: var(--vp-font-size-xs);
|
|
font-weight: 500;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
color: var(--vp-c-text-3);
|
|
padding: var(--vp-spacing-2) var(--vp-spacing-4);
|
|
background: var(--vp-c-bg-soft);
|
|
border-radius: var(--vp-radius-md);
|
|
}
|
|
|
|
/* Inline code - subtle styling */
|
|
.vp-doc :not(pre) > code {
|
|
font-family: var(--vp-font-family-mono);
|
|
border-radius: var(--vp-radius-md);
|
|
padding: 2px 6px;
|
|
font-size: 0.875em;
|
|
font-weight: 500;
|
|
background: var(--vp-c-bg-soft);
|
|
border: 1px solid var(--vp-c-divider);
|
|
color: var(--vp-c-primary);
|
|
}
|
|
|
|
/* Copy button styling */
|
|
.vp-code-group .vp-copy,
|
|
div[class*='language-'] .vp-copy {
|
|
border-radius: var(--vp-radius-md);
|
|
transition: all var(--vp-transition-color);
|
|
}
|
|
|
|
.vp-code-group .vp-copy:hover,
|
|
div[class*='language-'] .vp-copy:hover {
|
|
background: var(--vp-c-bg-mute);
|
|
}
|
|
|
|
/* ============================================
|
|
* Table Styling
|
|
* Clean, flat design with subtle borders
|
|
* ============================================ */
|
|
.vp-doc table {
|
|
border-collapse: collapse;
|
|
width: 100%;
|
|
margin: var(--vp-spacing-6) 0;
|
|
}
|
|
|
|
.vp-doc table th,
|
|
.vp-doc table td {
|
|
padding: var(--vp-spacing-3) var(--vp-spacing-4);
|
|
border: 1px solid var(--vp-c-divider);
|
|
text-align: left;
|
|
font-size: var(--vp-font-size-sm);
|
|
line-height: var(--vp-line-height-normal);
|
|
}
|
|
|
|
.vp-doc table th {
|
|
background: var(--vp-c-bg-soft);
|
|
font-family: var(--vp-font-family-heading);
|
|
font-weight: 600;
|
|
font-size: var(--vp-font-size-xs);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
color: var(--vp-c-text-2);
|
|
border-bottom-width: 2px;
|
|
}
|
|
|
|
.vp-doc table td {
|
|
color: var(--vp-c-text-1);
|
|
vertical-align: top;
|
|
}
|
|
|
|
.vp-doc table tr:hover {
|
|
background: var(--vp-c-bg-soft);
|
|
}
|
|
|
|
.vp-doc table tr:hover td {
|
|
color: var(--vp-c-text-1);
|
|
}
|
|
|
|
/* Responsive tables */
|
|
@media (max-width: 767px) {
|
|
.vp-doc table {
|
|
display: block;
|
|
overflow-x: auto;
|
|
-webkit-overflow-scrolling: touch;
|
|
}
|
|
|
|
.vp-doc table th,
|
|
.vp-doc table td {
|
|
padding: var(--vp-spacing-2) var(--vp-spacing-3);
|
|
font-size: var(--vp-font-size-xs);
|
|
white-space: nowrap;
|
|
}
|
|
}
|
|
|
|
/* ============================================
|
|
* Sidebar Polish
|
|
* Clean, organized navigation
|
|
* ============================================ */
|
|
.VPSidebar {
|
|
background: var(--vp-c-bg);
|
|
border-right: 1px solid var(--vp-c-divider);
|
|
}
|
|
|
|
.VPSidebar .group + .group {
|
|
margin-top: var(--vp-spacing-4);
|
|
padding-top: var(--vp-spacing-4);
|
|
border-top: 1px solid var(--vp-c-divider);
|
|
}
|
|
|
|
/* Sidebar item styling */
|
|
.VPSidebar .VPSidebarItem .text {
|
|
font-size: var(--vp-font-size-sm);
|
|
line-height: var(--vp-line-height-normal);
|
|
transition: color var(--vp-transition-color);
|
|
}
|
|
|
|
.VPSidebar .VPSidebarItem .link:hover .text {
|
|
color: var(--vp-c-primary);
|
|
}
|
|
|
|
.VPSidebar .VPSidebarItem.is-active .link .text {
|
|
color: var(--vp-c-primary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* Sidebar group titles */
|
|
.VPSidebar .VPSidebarGroup .title {
|
|
font-family: var(--vp-font-family-heading);
|
|
font-size: var(--vp-font-size-xs);
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
color: var(--vp-c-text-3);
|
|
padding: var(--vp-spacing-2) var(--vp-spacing-4);
|
|
}
|
|
|
|
/* Sidebar numbering and indentation */
|
|
/* Initialize counter on the sidebar container */
|
|
.VPSidebar .VPSidebarGroup,
|
|
.VPSidebar nav {
|
|
counter-reset: sidebar-item;
|
|
}
|
|
|
|
/* Increment counter for level-1 items only */
|
|
.VPSidebar .VPSidebarItem.level-1 {
|
|
counter-increment: sidebar-item;
|
|
}
|
|
|
|
/* Add numbers to sidebar items */
|
|
.VPSidebar .VPSidebarItem.level-1 .link::before {
|
|
content: counter(sidebar-item) ". ";
|
|
color: var(--vp-c-text-3);
|
|
font-weight: 500;
|
|
margin-right: 8px;
|
|
}
|
|
|
|
/* Indentation for different levels */
|
|
.VPSidebar .VPSidebarItem.level-1 {
|
|
padding-left: 16px;
|
|
}
|
|
|
|
.VPSidebar .VPSidebarItem.level-2 {
|
|
padding-left: 32px;
|
|
}
|
|
|
|
.VPSidebar .VPSidebarItem.level-3 {
|
|
padding-left: 48px;
|
|
}
|
|
|
|
/* ============================================
|
|
* Navigation Polish
|
|
* ============================================ */
|
|
.VPNav {
|
|
background: var(--vp-c-bg);
|
|
border-bottom: 1px solid var(--vp-c-divider);
|
|
box-shadow: var(--vp-shadow-xs);
|
|
}
|
|
|
|
.VPNavBar .title {
|
|
font-family: var(--vp-font-family-heading);
|
|
font-weight: 700;
|
|
font-size: var(--vp-font-size-lg);
|
|
color: var(--vp-c-text-1);
|
|
}
|
|
|
|
.VPNavBarMenu .VPNavBarMenuLink {
|
|
font-family: var(--vp-font-family-heading);
|
|
font-weight: 500;
|
|
font-size: var(--vp-font-size-sm);
|
|
transition: color var(--vp-transition-color);
|
|
}
|
|
|
|
.VPNavBarMenu .VPNavBarMenuLink:hover {
|
|
color: var(--vp-c-primary);
|
|
}
|
|
|
|
.VPNavBarMenu .VPNavBarMenuLink.active {
|
|
color: var(--vp-c-primary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* ============================================
|
|
* Scrollbar Styling
|
|
* Subtle, flat design
|
|
* ============================================ */
|
|
::-webkit-scrollbar {
|
|
width: 8px;
|
|
height: 8px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: var(--vp-c-surface-2);
|
|
border-radius: var(--vp-radius-full);
|
|
border: 2px solid transparent;
|
|
background-clip: padding-box;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: var(--vp-c-surface-3);
|
|
border: 2px solid transparent;
|
|
background-clip: padding-box;
|
|
}
|
|
|
|
/* Firefox scrollbar */
|
|
* {
|
|
scrollbar-width: thin;
|
|
scrollbar-color: var(--vp-c-surface-2) transparent;
|
|
}
|
|
|
|
/* ============================================
|
|
* TOC (Table of Contents) Polish
|
|
* Sticky positioning handled by grid layout in mobile.css
|
|
* ============================================ */
|
|
.VPDocOutline {
|
|
padding-left: 24px;
|
|
}
|
|
|
|
.VPDocOutline .outline-link {
|
|
font-family: var(--vp-font-family-base);
|
|
font-size: var(--vp-font-size-sm);
|
|
line-height: var(--vp-line-height-normal);
|
|
padding: var(--vp-spacing-1) var(--vp-spacing-2);
|
|
color: var(--vp-c-text-3);
|
|
transition: color var(--vp-transition-color);
|
|
border-radius: var(--vp-radius-md);
|
|
}
|
|
|
|
.VPDocOutline .outline-link:hover {
|
|
color: var(--vp-c-primary);
|
|
background: var(--vp-c-bg-soft);
|
|
}
|
|
|
|
/* Match VitePress actual DOM structure: <li><a class="outline-link active">...</a></li> */
|
|
/* Override VitePress scoped styles with higher specificity */
|
|
.VPDocAside .VPDocAsideOutline .outline-link.active {
|
|
color: var(--vp-c-brand) !important;
|
|
font-weight: 600 !important;
|
|
background: var(--vp-c-bg-soft) !important;
|
|
padding: 4px 8px !important;
|
|
border-radius: 4px !important;
|
|
transition: all 0.25s !important;
|
|
}
|
|
|
|
.VPDocOutline .outline-marker {
|
|
width: 3px;
|
|
background: var(--vp-c-brand);
|
|
border-radius: var(--vp-radius-full);
|
|
}
|
|
|
|
/* ============================================
|
|
* Link Improvements
|
|
* Clean, accessible link styling
|
|
* ============================================ */
|
|
a {
|
|
text-decoration: none;
|
|
color: var(--vp-c-primary);
|
|
transition: color var(--vp-transition-color);
|
|
cursor: pointer;
|
|
}
|
|
|
|
a:hover {
|
|
text-decoration: underline;
|
|
color: var(--vp-c-primary-600);
|
|
}
|
|
|
|
a:visited {
|
|
color: var(--vp-c-primary-700);
|
|
}
|
|
|
|
.dark a:visited {
|
|
color: var(--vp-c-primary-300);
|
|
}
|
|
|
|
/* External link indicator */
|
|
.vp-doc a[target="_blank"]::after {
|
|
content: " ↗";
|
|
font-size: 0.75em;
|
|
opacity: 0.7;
|
|
}
|
|
|
|
/* ============================================
|
|
* Button Improvements
|
|
* ============================================ */
|
|
.VPButton {
|
|
font-family: var(--vp-font-family-heading);
|
|
font-weight: 600;
|
|
font-size: var(--vp-font-size-sm);
|
|
padding: var(--vp-spacing-2-5) var(--vp-spacing-5);
|
|
border-radius: var(--vp-radius-lg);
|
|
transition: all var(--vp-transition-color);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.VPButton.brand {
|
|
background: var(--vp-c-primary);
|
|
color: white;
|
|
border: none;
|
|
}
|
|
|
|
.VPButton.brand:hover {
|
|
background: var(--vp-c-primary-600);
|
|
transform: translateY(-1px);
|
|
box-shadow: var(--vp-shadow-md);
|
|
}
|
|
|
|
.VPButton.alt {
|
|
background: var(--vp-c-bg-soft);
|
|
color: var(--vp-c-text-1);
|
|
border: 1px solid var(--vp-c-divider);
|
|
}
|
|
|
|
.VPButton.alt:hover {
|
|
background: var(--vp-c-bg-mute);
|
|
border-color: var(--vp-c-primary);
|
|
}
|
|
|
|
/* ============================================
|
|
* Focus States — Accessibility
|
|
* Clear visible focus for keyboard navigation
|
|
* ============================================ */
|
|
:focus-visible {
|
|
outline: 2px solid var(--vp-c-primary);
|
|
outline-offset: 2px;
|
|
border-radius: var(--vp-radius-md);
|
|
}
|
|
|
|
/* Skip focus outline for mouse users */
|
|
:focus:not(:focus-visible) {
|
|
outline: none;
|
|
}
|
|
|
|
/* Better focus for interactive elements */
|
|
a:focus-visible,
|
|
button:focus-visible,
|
|
input:focus-visible,
|
|
select:focus-visible,
|
|
textarea:focus-visible {
|
|
outline: 2px solid var(--vp-c-primary);
|
|
outline-offset: 2px;
|
|
box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.15);
|
|
}
|
|
|
|
/* ============================================
|
|
* Skip Link — Accessibility
|
|
* ============================================ */
|
|
.skip-link {
|
|
position: absolute;
|
|
top: -100px;
|
|
left: 0;
|
|
background: var(--vp-c-bg);
|
|
padding: 8px 16px;
|
|
z-index: 9999;
|
|
transition: top 0.3s;
|
|
}
|
|
|
|
.skip-link:focus {
|
|
top: 0;
|
|
}
|
|
|
|
/* ============================================
|
|
* Print Styles
|
|
* ============================================ */
|
|
@media print {
|
|
.VPNav,
|
|
.VPSidebar,
|
|
.skip-link {
|
|
display: none;
|
|
}
|
|
|
|
.VPContent {
|
|
margin: 0 !important;
|
|
padding: 0 !important;
|
|
}
|
|
}
|