My agentic slop goes here. Not intended for anyone else!

more

+8 -19
arod-web/arod-sidenotes.js
···
--content-width: 40rem;
--sidenote-width: 18rem;
--gap: 2.5rem;
-
--bg: #fffffc;
-
--text: #1a1a1a;
-
--text-muted: #666;
-
--accent: #090c8d;
-
--sidenote-bg: #fafafa;
-
--border: #e0e0e0;
+
--bg: var(--color-bg-primary, #fffffc);
+
--text: var(--color-text-primary, #1a1a1a);
+
--text-muted: var(--color-text-muted, #666);
+
--accent: var(--color-accent, #090c8d);
+
--sidenote-bg: var(--color-bg-secondary, #fafafa);
+
--border: var(--color-border, #e0e0e0);
display: block;
position: relative;
max-width: calc(var(--content-width) + var(--gap) + var(--sidenote-width));
margin: 0 auto;
padding: 0 1rem;
-
}
-
-
@media (prefers-color-scheme: dark) {
-
:host {
-
--bg: #1a1a1a;
-
--text: #e0e0e0;
-
--text-muted: #999;
-
--accent: #4db8ff;
-
--sidenote-bg: #252525;
-
--border: #444;
-
}
}
.content {
···
}
.sidenote-content pre {
-
background: var(--sidenote-bg);
+
background: var(--color-code-block-bg, rgba(0, 0, 0, 0.03));
padding: 0.5rem;
border-radius: 4px;
overflow-x: auto;
···
}
::slotted(pre) {
-
background: rgba(0, 0, 0, 0.05);
+
background: var(--color-code-block-bg, rgba(0, 0, 0, 0.03));
padding: 0.5rem;
border-radius: 4px;
overflow-x: auto;
+119 -34
arod-web/arod-theme.js
···
constructor() {
super();
this.attachShadow({ mode: 'open' });
-
this.themes = ['light', 'dark', 'system'];
+
this.themes = ['system', 'light', 'dark', 'high-contrast', 'colorblind', 'sepia'];
this.currentTheme = 'system';
}
···
<style>
:host {
display: inline-block;
+
position: relative;
}
.theme-toggle {
···
/* Hover rotation effect */
.theme-toggle:hover .theme-icon svg.entering {
transform: rotate(20deg) scale(1);
+
}
+
+
/* Tooltip */
+
.tooltip {
+
position: absolute;
+
top: calc(100% + 8px);
+
left: 50%;
+
transform: translateX(-50%) scale(0.8);
+
background: #333;
+
color: white;
+
padding: 0.25rem 0.5rem;
+
border-radius: 4px;
+
font-size: 0.75rem;
+
white-space: nowrap;
+
pointer-events: none;
+
opacity: 0;
+
transition: opacity 0.2s ease, transform 0.2s ease;
+
z-index: 1000;
+
}
+
+
.tooltip::after {
+
content: '';
+
position: absolute;
+
bottom: 100%;
+
left: 50%;
+
transform: translateX(-50%);
+
width: 0;
+
height: 0;
+
border-left: 4px solid transparent;
+
border-right: 4px solid transparent;
+
border-bottom: 4px solid #333;
+
}
+
+
.theme-toggle:hover .tooltip {
+
opacity: 1;
+
transform: translateX(-50%) scale(1);
}
/* Dark mode overrides when active */
···
<button class="theme-toggle" aria-label="Toggle theme">
<span class="theme-icon"></span>
+
<span class="tooltip"></span>
</button>
`;
}
···
}
cycleTheme() {
-
const themes = ['system', 'light', 'dark'];
-
const currentIndex = themes.indexOf(this.currentTheme);
-
const nextIndex = (currentIndex + 1) % themes.length;
-
const nextTheme = themes[nextIndex];
+
const currentIndex = this.themes.indexOf(this.currentTheme);
+
const nextIndex = (currentIndex + 1) % this.themes.length;
+
const nextTheme = this.themes[nextIndex];
this.setTheme(nextTheme);
}
···
updateUI() {
const icon = this.shadowRoot.querySelector('.theme-icon');
const toggle = this.shadowRoot.querySelector('.theme-toggle');
+
const tooltip = this.shadowRoot.querySelector('.tooltip');
// Clear existing icon with animation
const existingIcons = icon.querySelectorAll('svg');
···
setTimeout(() => {
let iconSvg;
let ariaLabel;
+
let themeName;
-
if (this.currentTheme === 'system') {
-
// Hybrid icon for system mode - half sun, half moon
-
iconSvg = `<svg class="entering" fill="none" stroke="currentColor" viewBox="0 0 24 24">
-
<defs>
-
<clipPath id="halfClip">
-
<rect x="0" y="0" width="12" height="24"/>
-
</clipPath>
-
</defs>
-
<!-- Half sun (left side) -->
-
<g clip-path="url(#halfClip)">
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707"></path>
-
<circle cx="12" cy="12" r="4" stroke-width="2"/>
-
</g>
-
<!-- Half moon (right side) -->
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 12c0-2.21 1.79-4 4-4 .35 0 .69.04 1.01.13A7 7 0 1112 19c0-.34.03-.67.08-1 2.21 0 4-1.79 4-4z" opacity="0.8"></path>
-
</svg>`;
-
ariaLabel = 'Toggle theme (System)';
-
} else if (this.currentTheme === 'light') {
-
// Sun icon for light mode
-
iconSvg = `<svg class="entering" fill="none" stroke="currentColor" viewBox="0 0 24 24">
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"></path>
-
</svg>`;
-
ariaLabel = 'Toggle theme (Light)';
-
} else {
-
// Moon icon for dark mode
-
iconSvg = `<svg class="entering" fill="none" stroke="currentColor" viewBox="0 0 24 24">
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"></path>
-
</svg>`;
-
ariaLabel = 'Toggle theme (Dark)';
+
switch (this.currentTheme) {
+
case 'system':
+
// Hybrid icon for system mode
+
iconSvg = `<svg class="entering" fill="none" stroke="currentColor" viewBox="0 0 24 24">
+
<defs>
+
<clipPath id="halfClip">
+
<rect x="0" y="0" width="12" height="24"/>
+
</clipPath>
+
</defs>
+
<!-- Half sun (left side) -->
+
<g clip-path="url(#halfClip)">
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707"></path>
+
<circle cx="12" cy="12" r="4" stroke-width="2"/>
+
</g>
+
<!-- Half moon (right side) -->
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 12c0-2.21 1.79-4 4-4 .35 0 .69.04 1.01.13A7 7 0 1112 19c0-.34.03-.67.08-1 2.21 0 4-1.79 4-4z" opacity="0.8"></path>
+
</svg>`;
+
ariaLabel = 'Toggle theme (System)';
+
themeName = 'System';
+
break;
+
+
case 'light':
+
// Sun icon for light mode
+
iconSvg = `<svg class="entering" fill="none" stroke="currentColor" viewBox="0 0 24 24">
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"></path>
+
</svg>`;
+
ariaLabel = 'Toggle theme (Light)';
+
themeName = 'Light';
+
break;
+
+
case 'dark':
+
// Moon icon for dark mode
+
iconSvg = `<svg class="entering" fill="none" stroke="currentColor" viewBox="0 0 24 24">
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"></path>
+
</svg>`;
+
ariaLabel = 'Toggle theme (Dark)';
+
themeName = 'Dark';
+
break;
+
+
case 'high-contrast':
+
// Eye icon for high contrast
+
iconSvg = `<svg class="entering" fill="none" stroke="currentColor" viewBox="0 0 24 24">
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
+
</svg>`;
+
ariaLabel = 'Toggle theme (High Contrast)';
+
themeName = 'High Contrast';
+
break;
+
+
case 'colorblind':
+
// Palette icon for colorblind mode
+
iconSvg = `<svg class="entering" fill="none" stroke="currentColor" viewBox="0 0 24 24">
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01"></path>
+
</svg>`;
+
ariaLabel = 'Toggle theme (Colorblind)';
+
themeName = 'Colorblind';
+
break;
+
+
case 'sepia':
+
// Book icon for sepia/reading mode
+
iconSvg = `<svg class="entering" fill="none" stroke="currentColor" viewBox="0 0 24 24">
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path>
+
</svg>`;
+
ariaLabel = 'Toggle theme (Sepia)';
+
themeName = 'Sepia';
+
break;
+
+
default:
+
// Default to system icon
+
iconSvg = `<svg class="entering" fill="none" stroke="currentColor" viewBox="0 0 24 24">
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path>
+
</svg>`;
+
ariaLabel = 'Toggle theme';
+
themeName = 'System';
}
icon.innerHTML = iconSvg;
toggle.setAttribute('aria-label', ariaLabel);
+
tooltip.textContent = themeName;
}, 150);
}
+294
arod-web/arod-themes.css
···
+
/**
+
* Arod Theming System
+
* Semantic CSS variables for comprehensive theming support
+
*/
+
+
:root {
+
/* Typography */
+
--font-family-base: system-ui, -apple-system, sans-serif;
+
--font-family-mono: 'SF Mono', Consolas, monospace;
+
--font-size-base: 0.9em;
+
--font-size-small: 0.85em;
+
--font-size-tiny: 0.75em;
+
--line-height-base: 1.45;
+
+
/* Spacing */
+
--spacing-xs: 0.25rem;
+
--spacing-sm: 0.5rem;
+
--spacing-md: 1rem;
+
--spacing-lg: 1.5rem;
+
--spacing-xl: 2rem;
+
+
/* Border radius */
+
--radius-sm: 3px;
+
--radius-md: 4px;
+
--radius-lg: 8px;
+
--radius-full: 50%;
+
+
/* Transitions */
+
--transition-fast: 0.2s ease;
+
--transition-medium: 0.3s ease;
+
--transition-slow: 0.5s ease;
+
}
+
+
/* Light Theme (Default) */
+
[data-theme="light"] {
+
/* Primary colors */
+
--color-bg-primary: #fffffc;
+
--color-bg-secondary: #fafafa;
+
--color-bg-tertiary: #f5f5f5;
+
+
/* Text colors */
+
--color-text-primary: #1a1a1a;
+
--color-text-secondary: #666;
+
--color-text-muted: #999;
+
--color-text-inverse: #ffffff;
+
+
/* Interactive colors */
+
--color-link: #090c8d;
+
--color-link-hover: #0066cc;
+
--color-accent: #090c8d;
+
--color-accent-hover: #0066cc;
+
+
/* UI colors */
+
--color-border: #e0e0e0;
+
--color-border-light: #f0f0f0;
+
--color-border-dark: #ccc;
+
+
/* Code block colors */
+
--color-code-bg: rgba(0, 0, 0, 0.05);
+
--color-code-block-bg: rgba(0, 0, 0, 0.03);
+
--color-code-text: inherit;
+
+
/* Sidenote colors */
+
--color-sidenote-bg: #fafafa;
+
--color-sidenote-border: #e0e0e0;
+
--color-sidenote-text: #666;
+
--color-sidenote-number: #090c8d;
+
--color-sidenote-highlight-bg: #090c8d;
+
--color-sidenote-highlight-text: #ffffff;
+
--color-sidenote-ref-bg: rgba(9, 12, 141, 0.08);
+
--color-sidenote-ref-border: rgba(9, 12, 141, 0.2);
+
+
/* State colors */
+
--color-hover-bg: rgba(9, 12, 141, 0.05);
+
--color-active-bg: rgba(9, 12, 141, 0.1);
+
--color-selected-bg: rgba(9, 12, 141, 0.15);
+
+
/* Shadow */
+
--shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.05);
+
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1);
+
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.15);
+
}
+
+
/* Dark Theme */
+
[data-theme="dark"] {
+
/* Primary colors */
+
--color-bg-primary: #1a1a1a;
+
--color-bg-secondary: #252525;
+
--color-bg-tertiary: #2a2a2a;
+
+
/* Text colors */
+
--color-text-primary: #e0e0e0;
+
--color-text-secondary: #999;
+
--color-text-muted: #777;
+
--color-text-inverse: #1a1a1a;
+
+
/* Interactive colors */
+
--color-link: #4db8ff;
+
--color-link-hover: #66c7ff;
+
--color-accent: #4db8ff;
+
--color-accent-hover: #66c7ff;
+
+
/* UI colors */
+
--color-border: #444;
+
--color-border-light: #333;
+
--color-border-dark: #555;
+
+
/* Code block colors */
+
--color-code-bg: rgba(255, 255, 255, 0.04);
+
--color-code-block-bg: #0d0d0d;
+
--color-code-text: inherit;
+
+
/* Sidenote colors */
+
--color-sidenote-bg: #1f1f1f;
+
--color-sidenote-border: #333;
+
--color-sidenote-text: #999;
+
--color-sidenote-number: #4db8ff;
+
--color-sidenote-highlight-bg: #4db8ff;
+
--color-sidenote-highlight-text: #1a1a1a;
+
--color-sidenote-ref-bg: rgba(77, 184, 255, 0.1);
+
--color-sidenote-ref-border: rgba(77, 184, 255, 0.3);
+
+
/* State colors */
+
--color-hover-bg: rgba(77, 184, 255, 0.1);
+
--color-active-bg: rgba(77, 184, 255, 0.2);
+
--color-selected-bg: rgba(77, 184, 255, 0.3);
+
+
/* Shadow */
+
--shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.2);
+
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.3);
+
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.4);
+
}
+
+
/* High Contrast Theme */
+
[data-theme="high-contrast"] {
+
/* Primary colors */
+
--color-bg-primary: #ffffff;
+
--color-bg-secondary: #f0f0f0;
+
--color-bg-tertiary: #e0e0e0;
+
+
/* Text colors */
+
--color-text-primary: #000000;
+
--color-text-secondary: #333333;
+
--color-text-muted: #555555;
+
--color-text-inverse: #ffffff;
+
+
/* Interactive colors */
+
--color-link: #0000ff;
+
--color-link-hover: #000080;
+
--color-accent: #0000ff;
+
--color-accent-hover: #000080;
+
+
/* UI colors */
+
--color-border: #000000;
+
--color-border-light: #333333;
+
--color-border-dark: #000000;
+
+
/* Code block colors */
+
--color-code-bg: #f0f0f0;
+
--color-code-block-bg: #e0e0e0;
+
--color-code-text: #000000;
+
+
/* Sidenote colors */
+
--color-sidenote-bg: #f0f0f0;
+
--color-sidenote-border: #000000;
+
--color-sidenote-text: #000000;
+
--color-sidenote-number: #0000ff;
+
--color-sidenote-highlight-bg: #000000;
+
--color-sidenote-highlight-text: #ffffff;
+
--color-sidenote-ref-bg: #e0e0e0;
+
--color-sidenote-ref-border: #000000;
+
+
/* State colors */
+
--color-hover-bg: #e0e0e0;
+
--color-active-bg: #d0d0d0;
+
--color-selected-bg: #c0c0c0;
+
+
/* Shadow */
+
--shadow-sm: 0 0 0 1px #000000;
+
--shadow-md: 0 0 0 2px #000000;
+
--shadow-lg: 0 0 0 3px #000000;
+
}
+
+
/* Colorblind-friendly Theme (Deuteranopia/Protanopia optimized) */
+
[data-theme="colorblind"] {
+
/* Primary colors */
+
--color-bg-primary: #fffffc;
+
--color-bg-secondary: #fafafa;
+
--color-bg-tertiary: #f5f5f5;
+
+
/* Text colors */
+
--color-text-primary: #1a1a1a;
+
--color-text-secondary: #666;
+
--color-text-muted: #999;
+
--color-text-inverse: #ffffff;
+
+
/* Interactive colors (Blue-Orange contrast) */
+
--color-link: #0066cc;
+
--color-link-hover: #0052a3;
+
--color-accent: #ff8800;
+
--color-accent-hover: #ff6600;
+
+
/* UI colors */
+
--color-border: #e0e0e0;
+
--color-border-light: #f0f0f0;
+
--color-border-dark: #ccc;
+
+
/* Code block colors */
+
--color-code-bg: rgba(0, 102, 204, 0.08);
+
--color-code-block-bg: rgba(0, 102, 204, 0.05);
+
--color-code-text: inherit;
+
+
/* Sidenote colors */
+
--color-sidenote-bg: #f8f9fc;
+
--color-sidenote-border: #0066cc;
+
--color-sidenote-text: #666;
+
--color-sidenote-number: #ff8800;
+
--color-sidenote-highlight-bg: #ff8800;
+
--color-sidenote-highlight-text: #ffffff;
+
--color-sidenote-ref-bg: rgba(255, 136, 0, 0.1);
+
--color-sidenote-ref-border: rgba(255, 136, 0, 0.4);
+
+
/* State colors */
+
--color-hover-bg: rgba(0, 102, 204, 0.1);
+
--color-active-bg: rgba(0, 102, 204, 0.2);
+
--color-selected-bg: rgba(255, 136, 0, 0.2);
+
+
/* Shadow */
+
--shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.05);
+
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1);
+
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.15);
+
}
+
+
/* Sepia Theme (Reading comfort) */
+
[data-theme="sepia"] {
+
/* Primary colors */
+
--color-bg-primary: #f4f1e8;
+
--color-bg-secondary: #ebe6d6;
+
--color-bg-tertiary: #e0dac8;
+
+
/* Text colors */
+
--color-text-primary: #3a3328;
+
--color-text-secondary: #5a5345;
+
--color-text-muted: #7a7365;
+
--color-text-inverse: #f4f1e8;
+
+
/* Interactive colors */
+
--color-link: #704214;
+
--color-link-hover: #5a3310;
+
--color-accent: #8b4513;
+
--color-accent-hover: #704214;
+
+
/* UI colors */
+
--color-border: #d0c8b8;
+
--color-border-light: #e0d8c8;
+
--color-border-dark: #c0b8a8;
+
+
/* Code block colors */
+
--color-code-bg: rgba(139, 69, 19, 0.08);
+
--color-code-block-bg: rgba(139, 69, 19, 0.05);
+
--color-code-text: inherit;
+
+
/* Sidenote colors */
+
--color-sidenote-bg: #ebe6d6;
+
--color-sidenote-border: #c0b8a8;
+
--color-sidenote-text: #5a5345;
+
--color-sidenote-number: #8b4513;
+
--color-sidenote-highlight-bg: #8b4513;
+
--color-sidenote-highlight-text: #f4f1e8;
+
--color-sidenote-ref-bg: rgba(139, 69, 19, 0.1);
+
--color-sidenote-ref-border: rgba(139, 69, 19, 0.3);
+
+
/* State colors */
+
--color-hover-bg: rgba(139, 69, 19, 0.1);
+
--color-active-bg: rgba(139, 69, 19, 0.15);
+
--color-selected-bg: rgba(139, 69, 19, 0.2);
+
+
/* Shadow */
+
--shadow-sm: 0 2px 4px rgba(58, 51, 40, 0.1);
+
--shadow-md: 0 4px 12px rgba(58, 51, 40, 0.15);
+
--shadow-lg: 0 8px 24px rgba(58, 51, 40, 0.2);
+
}
+
+
/* Apply system preference when theme is set to system */
+
[data-theme="system"] {
+
/* Will inherit from either light or dark based on JS logic */
+
}
+
+
/* Ensure smooth transitions when changing themes */
+
* {
+
transition: background-color var(--transition-medium),
+
color var(--transition-medium),
+
border-color var(--transition-medium);
+
}
+30 -55
arod-web/example.html
···
<title>Arod Web Components - Full Example</title>
<!-- Import all Arod components -->
+
<link rel="stylesheet" href="arod-themes.css">
<script src="arod-menu.js"></script>
<script src="arod-search.js"></script>
<script src="arod-theme.js"></script>
<script src="arod-sidenotes.js"></script>
<style>
-
/* Base styles that match anil.recoil.org */
-
:root {
-
--bg: #fffffc;
-
--text: #1a1a1a;
-
--text-muted: #666;
-
--accent: #01261b;
-
--link: #090c8d;
-
--border: #e0e0e0;
-
--secondary: #666;
-
}
-
-
[data-theme="dark"] {
-
--bg: #1a1a1a;
-
--text: #e0e0e0;
-
--text-muted: #999;
-
--accent: #4db8ff;
-
--link: #4db8ff;
-
--border: #444;
-
--secondary: #999;
-
}
+
/* Base styles using semantic variables */
* {
margin: 0;
···
}
body {
-
font-family: system-ui, -apple-system, sans-serif;
-
line-height: 1.45;
-
color: var(--text);
-
background: var(--bg);
-
transition: background 0.3s ease, color 0.3s ease;
+
font-family: var(--font-family-base);
+
line-height: var(--line-height-base);
+
color: var(--color-text-primary);
+
background: var(--color-bg-primary);
+
transition: background var(--transition-medium), color var(--transition-medium);
}
/* Main content area */
···
}
p {
-
font-size: 0.9em;
+
font-size: var(--font-size-base);
margin-top: 0.2em;
-
margin-bottom: 0.5em;
+
margin-bottom: var(--spacing-sm);
text-align: justify;
}
code {
-
font-family: 'SF Mono', Consolas, monospace;
-
font-size: 0.85em;
+
font-family: var(--font-family-mono);
+
font-size: var(--font-size-small);
padding: 0.2em 0.4em;
-
background: rgba(0, 0, 0, 0.05);
-
border-radius: 3px;
-
}
-
-
[data-theme="dark"] code {
-
background: rgba(255, 255, 255, 0.1);
+
background: var(--color-code-bg);
+
color: var(--color-code-text);
+
border-radius: var(--radius-sm);
}
pre {
-
padding: 1rem;
-
margin: 1.5rem 0;
-
background: rgba(0, 0, 0, 0.03);
-
border: 1px solid var(--border);
-
border-radius: 4px;
+
padding: var(--spacing-md);
+
margin: var(--spacing-lg) 0;
+
background: var(--color-code-block-bg);
+
border: 1px solid var(--color-border);
+
border-radius: var(--radius-md);
overflow-x: auto;
-
}
-
-
[data-theme="dark"] pre {
-
background: rgba(255, 255, 255, 0.05);
-
border-color: #444;
}
pre code {
···
blockquote {
position: relative;
-
padding: 0.5rem 1rem;
+
padding: var(--spacing-sm) var(--spacing-md);
padding-top: 0;
-
margin: 0.5rem 0;
-
border-left: 4px solid #cdc;
+
margin: var(--spacing-sm) 0;
+
border-left: 4px solid var(--color-border);
font-style: italic;
padding-bottom: 0.1em;
-
color: var(--text-muted);
+
color: var(--color-text-muted);
}
.hero {
text-align: center;
-
padding: 2rem 0;
-
background: linear-gradient(135deg, rgba(1,38,27,0.05) 0%, rgba(1,38,27,0.02) 100%);
-
border-radius: 8px;
-
margin: 1rem 0;
+
padding: var(--spacing-xl) 0;
+
background: var(--color-bg-secondary);
+
border-radius: var(--radius-lg);
+
margin: var(--spacing-md) 0;
+
border: 1px solid var(--color-border-light);
}
.hero h1 {
···
}
.hero p {
-
font-size: 0.9em;
-
color: var(--text-muted);
+
font-size: var(--font-size-base);
+
color: var(--color-text-secondary);
text-align: center;
}
</style>