Files
kennethreitz.org/static/custom.css
T

2228 lines
47 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
kennethreitz.org
The Programmer's Dream Design™
Principles: Clarity, Function, Elegance, Performance
Aesthetic: Developer-focused, Monospace-rich, Clean Surfaces, Focused Reading
*/
/* Base styles */
:root {
/* Programmer-friendly color palette - Inspired by modern code editors */
--color-primary: 79, 94, 113; /* Dark slate */
--color-primary-light: 238, 242, 246; /* Off-white blue */
--color-primary-dark: 52, 63, 79; /* Deep slate */
--color-accent: 91, 142, 219; /* Blue accent */
--color-accent-light: 224, 235, 255; /* Light blue */
--color-accent-dark: 44, 82, 130; /* Deep blue */
--color-success: 56, 142, 60; /* Terminal green */
--color-error: 211, 47, 47; /* Error red */
--color-warning: 245, 124, 0; /* Warning orange */
--color-info: 2, 136, 209; /* Info blue */
/* Text and backgrounds */
--color-text: 27, 27, 29; /* Almost black */
--color-text-light: 237, 240, 245; /* Off-white */
--color-text-secondary: 92, 97, 102; /* Secondary text */
--color-background: 252, 252, 252; /* White */
--color-background-dark: 16, 16, 22; /* Deep space */
--color-background-code: 244, 246, 250; /* Code background - light mode */
--color-background-code-dark: 31, 36, 48; /* Code background - dark mode */
/* Links */
--color-link: 56, 132, 182; /* Link blue */
--color-link-hover: 38, 107, 146; /* Hover blue */
--color-link-light: 101, 178, 230; /* Light mode link */
/* Borders and UI */
--color-border: 222, 226, 230; /* Light border */
--color-border-dark: 48, 52, 62; /* Dark border */
/* Syntax highlighting - VS Code inspired */
--color-syntax-keyword: 198, 120, 221; /* Purple - for keywords */
--color-syntax-function: 104, 157, 207; /* Blue - for functions */
--color-syntax-string: 152, 195, 121; /* Green - for strings */
--color-syntax-number: 209, 154, 102; /* Orange - for numbers */
--color-syntax-comment: 108, 117, 126; /* Gray - for comments */
--color-syntax-class: 75, 175, 218; /* Blue - for classes */
--color-syntax-operator: 224, 108, 117; /* Pink - for operators */
--color-syntax-decorator: 240, 147, 43; /* Orange - for decorators */
--color-syntax-regex: 209, 154, 102; /* Orange - for regex */
--color-syntax-constant: 86, 156, 214; /* Blue - for constants */
/* UI Accent Colors */
--color-selection: 200, 210, 250; /* Selection color */
--color-indent-guide: 240, 240, 240; /* Indent guide for light mode */
--color-indent-guide-dark: 60, 70, 80; /* Indent guide for dark mode */
/* Transitions */
--transition-default: all 0.2s ease; /* Default transition */
--transition-slow: all 0.3s ease; /* Slower transition */
/* Shadows */
--shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.05); /* Small shadow */
--shadow-md: 0 4px 8px rgba(0, 0, 0, 0.1); /* Medium shadow */
--shadow-lg: 0 10px 25px rgba(0, 0, 0, 0.15); /* Large shadow */
}
/* Base elements */
html {
font-size: 16px;
scroll-behavior: smooth;
}
/* Text selection styling */
::selection {
background-color: rgba(var(--color-selection), 0.4);
color: currentColor;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
color: rgb(var(--color-text));
background-color: rgb(var(--color-background));
min-height: 100vh;
display: flex;
flex-direction: column;
line-height: 1.6;
letter-spacing: -0.01em;
}
/* Code selection */
pre ::selection {
background-color: rgba(var(--color-primary), 0.25);
}
@media (prefers-color-scheme: dark) {
pre ::selection {
background-color: rgba(var(--color-accent), 0.25);
}
}
@media (prefers-color-scheme: dark) {
body {
color: rgb(var(--color-text-light));
background-color: rgb(var(--color-background-dark));
}
}
/* Typography */
h1, h2, h3, h4, h5, h6 {
color: rgb(var(--color-text));
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
font-weight: 600;
line-height: 1.2;
margin-top: 2.5rem;
margin-bottom: 1rem;
letter-spacing: -0.03em;
}
@media (prefers-color-scheme: dark) {
h1, h2, h3, h4, h5, h6 {
color: rgb(var(--color-text-light));
}
}
h1 {
font-size: 2.8rem;
letter-spacing: -0.03em;
line-height: 1.1;
}
h2 {
font-size: 2rem;
padding-bottom: 0.5rem;
border-bottom: 1px solid rgb(var(--color-border) / 0.5);
}
@media (prefers-color-scheme: dark) {
h2 {
border-bottom-color: rgb(var(--color-border-dark) / 0.5);
}
}
h3 {
font-size: 1.6rem;
}
h4 {
font-size: 1.3rem;
}
p {
margin-bottom: 1.5rem;
max-width: 70ch;
}
/* Links - code editor style */
a {
color: rgb(var(--color-link));
text-decoration: none;
border-bottom: 1px solid rgba(var(--color-link), 0.3);
padding-bottom: 1px;
transition: var(--transition-default);
position: relative;
}
a:hover {
color: rgb(var(--color-link-hover));
border-bottom-color: rgba(var(--color-link-hover), 0.7);
background-color: rgba(var(--color-link), 0.05);
}
a::after {
content: '';
position: absolute;
bottom: -2px;
left: 0;
width: 100%;
height: 2px;
background-color: rgb(var(--color-link-hover));
opacity: 0;
transform: scaleX(0.7);
transform-origin: center;
transition: transform 0.3s ease, opacity 0.3s ease;
}
a:hover::after {
opacity: 0.7;
transform: scaleX(1);
}
/* External links with subtle indicator */
a[href^="http"]::after {
content: '↗';
display: inline-block;
margin-left: 2px;
font-size: 0.8em;
transform: translateY(-2px);
opacity: 0.6;
transition: var(--transition-default);
}
a[href^="http"]:hover::after {
opacity: 1;
transform: translateY(-2px) translateX(1px);
}
@media (prefers-color-scheme: dark) {
a {
color: rgb(var(--color-link-light));
border-bottom-color: rgba(var(--color-link-light), 0.3);
}
a:hover {
color: rgb(var(--color-link-light));
border-bottom-color: rgba(var(--color-link-light), 0.7);
background-color: rgba(var(--color-link-light), 0.05);
}
a::after {
background-color: rgb(var(--color-link-light));
}
}
/* Layout classes */
.container {
width: 100%;
max-width: 1140px;
margin: 0 auto;
padding: 0 1rem;
}
.content-narrow {
max-width: 760px;
margin: 0 auto;
padding: 0 1rem;
}
/* Header - IDE Tab Style */
header {
border-bottom: 1px solid rgb(var(--color-border) / 0.8);
background-color: rgb(var(--color-background-code));
position: sticky;
top: 0;
z-index: 100;
transition: box-shadow 0.3s ease;
backdrop-filter: blur(8px);
height: 35px;
}
@media (prefers-color-scheme: dark) {
header {
border-bottom-color: rgb(var(--color-border-dark) / 0.8);
background-color: rgb(var(--color-background-code-dark));
}
}
header.scrolled {
box-shadow: var(--shadow-sm);
}
header .container {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: nowrap;
height: 35px;
padding: 0;
}
.site-title {
font-size: 0.9rem;
font-weight: 500;
margin: 0;
letter-spacing: -0.01em;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
background-color: rgb(var(--color-primary));
color: white;
padding: 0 1rem;
height: 35px;
display: flex;
align-items: center;
min-width: 180px;
position: relative;
}
.site-title::before {
content: "";
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: linear-gradient(to right, rgba(255, 255, 255, 0.1), transparent);
opacity: 0.5;
}
.site-title a {
text-decoration: none;
color: white;
transition: var(--transition-default);
position: relative;
display: inline-block;
border-bottom: none;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
letter-spacing: -0.02em;
}
.site-title a:hover {
color: rgba(255, 255, 255, 0.9);
background-color: transparent;
}
.site-title a::before {
content: '~/';
opacity: 0.7;
margin-right: 0.3rem;
font-size: 0.85em;
}
.site-title a::after {
display: none;
}
@media (prefers-color-scheme: dark) {
.site-title {
background-color: rgb(var(--color-primary-dark));
}
.site-title a {
color: rgb(var(--color-text-light));
}
}
nav {
height: 35px;
overflow-x: auto;
scrollbar-width: none; /* Firefox */
-ms-overflow-style: none; /* IE/Edge */
flex: 1;
}
nav::-webkit-scrollbar {
display: none; /* Chrome/Safari/Opera */
}
nav ul {
display: flex;
list-style: none;
margin: 0;
padding: 0;
height: 100%;
}
nav li {
height: 100%;
position: relative;
}
nav li a {
text-decoration: none;
color: rgb(var(--color-text-secondary));
font-size: 0.8rem;
padding: 0 1.2rem;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
font-weight: 400;
display: flex;
align-items: center;
height: 100%;
border-right: 1px solid rgb(var(--color-border) / 0.5);
border-bottom: none;
position: relative;
background-color: rgba(var(--color-background-code), 0.8);
transition: var(--transition-default);
}
nav li a::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background-color: transparent;
transition: var(--transition-default);
}
nav li a.active,
nav li a:hover {
background-color: rgb(var(--color-background));
color: rgb(var(--color-text));
}
nav li a.active {
font-weight: 500;
border-bottom: none;
}
nav li a.active::before {
background-color: rgb(var(--color-accent));
}
nav li a:hover::before {
background-color: rgba(var(--color-accent), 0.5);
}
/* "Close tab" X icon for active tabs - VS Code style */
nav li a.active::after {
content: '×';
display: inline-block;
margin-left: 0.5rem;
font-size: 1.2rem;
line-height: 0.7;
opacity: 0;
transition: var(--transition-default);
}
nav li a.active:hover::after {
opacity: 0.5;
}
/* Add subtle icons for different sections */
nav li a[href="/software"]::before {
height: 3px;
background-color: rgba(var(--color-syntax-function), 0.7);
}
nav li a[href="/essays"]::before {
height: 3px;
background-color: rgba(var(--color-syntax-string), 0.7);
}
nav li a[href="/talks"]::before {
height: 3px;
background-color: rgba(var(--color-syntax-keyword), 0.7);
}
nav li a[href="/music"]::before {
height: 3px;
background-color: rgba(var(--color-syntax-number), 0.7);
}
nav li a[href="/poetry"]::before {
height: 3px;
background-color: rgba(var(--color-syntax-decorator), 0.7);
}
nav li a[href="/artificial-intelligence"]::before {
height: 3px;
background-color: rgba(var(--color-accent), 0.7);
}
nav li a[href="/contact"]::before {
height: 3px;
background-color: rgba(var(--color-syntax-class), 0.7);
}
@media (prefers-color-scheme: dark) {
nav li a {
color: rgba(var(--color-text-light), 0.6);
background-color: rgba(var(--color-background-code-dark), 0.8);
border-right-color: rgb(var(--color-border-dark) / 0.5);
}
nav li a.active,
nav li a:hover {
background-color: rgb(var(--color-background-dark));
color: rgb(var(--color-text-light));
}
}
/* Main Content Area */
main {
padding: 2rem 0;
flex: 1;
}
/* Directory list */
.directory-list {
list-style: none;
padding: 0;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 1rem;
margin: 1.5rem 0;
}
.directory-item {
margin-bottom: 0.5rem;
transition: all 0.3s ease;
border-radius: 6px;
border: 1px solid rgb(var(--color-border));
background-color: white;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
overflow: hidden;
position: relative;
}
.directory-item::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 4px;
height: 100%;
background-color: rgb(var(--color-primary));
opacity: 0;
transition: opacity 0.3s ease;
}
.directory-item:hover {
transform: translateY(-4px);
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.08);
}
.directory-item:hover::before {
opacity: 1;
}
.directory-item a {
display: flex;
align-items: center;
padding: 1rem;
text-decoration: none;
color: rgb(var(--color-text));
border-radius: 6px;
position: relative;
overflow: hidden;
height: 100%;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
font-size: 0.95rem;
}
.directory-item a:hover {
color: rgb(var(--color-primary));
background-color: rgba(var(--color-primary-light), 0.3);
}
@media (prefers-color-scheme: dark) {
.directory-item {
background-color: rgb(24, 24, 24);
border-color: rgb(var(--color-border-dark));
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
.directory-item a {
color: rgb(var(--color-text-light));
}
.directory-item:hover {
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.25);
}
.directory-item a:hover {
background-color: rgba(var(--color-primary-dark), 0.3);
}
}
/* Footer - IDE Status Bar Style */
footer {
margin-top: auto;
padding: 1rem 0;
background-color: rgb(var(--color-background-code));
border-top: 1px solid rgb(var(--color-border));
font-family: 'JetBrains Mono', 'Fira Code', monospace;
font-size: 0.8rem;
}
footer .container {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 1rem;
}
/* Footer links like VS Code status bar items */
footer a {
color: rgb(var(--color-text-secondary));
text-decoration: none;
transition: var(--transition-default);
position: relative;
padding: 0.3rem 0.6rem;
border-radius: 3px;
display: flex;
align-items: center;
font-size: 0.8rem;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
border: none !important;
background: none !important;
}
footer a:hover {
background-color: rgba(var(--color-primary), 0.1) !important;
color: rgb(var(--color-text));
}
footer a:hover::after {
display: none;
}
/* Status bar section style */
.footer-links {
display: flex;
gap: 0.5rem;
}
/* Quotes panel - like an output panel in VS Code */
#kenneth-quote {
font-style: italic;
position: relative;
cursor: pointer;
display: inline-block;
padding: 0.5rem 1rem;
transition: var(--transition-default);
font-family: 'JetBrains Mono', 'Fira Code', monospace;
font-size: 0.85rem;
color: rgb(var(--color-text-secondary));
background-color: rgba(var(--color-background), 0.5);
border-radius: 3px;
border: 1px solid rgba(var(--color-border), 0.3);
max-width: 600px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.5;
}
#kenneth-quote::before {
content: "// ";
opacity: 0.7;
color: rgb(var(--color-syntax-comment));
}
#kenneth-quote:hover {
color: rgb(var(--color-text));
background-color: rgba(var(--color-background), 0.8);
}
/* Audio panel with IDE toolbar style */
#elevenlabs-audionative-widget {
border-radius: 4px;
overflow: hidden;
border: 1px solid rgba(var(--color-border), 0.3);
box-shadow: var(--shadow-sm);
}
@media (prefers-color-scheme: dark) {
footer {
background-color: rgb(var(--color-background-code-dark));
border-top-color: rgb(var(--color-border-dark));
}
footer a {
color: rgba(var(--color-text-light), 0.7);
}
footer a:hover {
background-color: rgba(var(--color-accent), 0.1) !important;
color: rgb(var(--color-text-light));
}
#kenneth-quote {
color: rgba(var(--color-text-light), 0.8);
background-color: rgba(var(--color-background-dark), 0.5);
border-color: rgba(var(--color-border-dark), 0.3);
}
#kenneth-quote:hover {
color: rgb(var(--color-text-light));
background-color: rgba(var(--color-background-dark), 0.8);
}
#elevenlabs-audionative-widget {
border-color: rgba(var(--color-border-dark), 0.3);
}
}
/* Animation effects */
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-in {
animation: fadeIn 0.6s ease forwards;
}
/* Cards */
.card {
background-color: white;
border-radius: 6px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.04);
overflow: hidden;
transition: transform 0.3s ease, box-shadow 0.3s ease;
height: 100%;
display: flex;
flex-direction: column;
position: relative;
border: 1px solid rgb(var(--color-border));
}
.card::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 4px;
background: linear-gradient(to right, rgb(var(--color-primary)), rgb(var(--color-primary-light)));
opacity: 0;
transition: opacity 0.3s ease;
}
.card:hover {
transform: translateY(-6px);
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.08);
}
.card:hover::before {
opacity: 1;
}
.card-content {
padding: 1.5rem;
flex-grow: 1;
display: flex;
flex-direction: column;
}
.card-title {
font-size: 1.4rem;
font-weight: 600;
margin-top: 0;
margin-bottom: 0.5rem;
color: rgb(var(--color-text));
}
.card-image {
aspect-ratio: 16 / 9;
overflow: hidden;
background-color: rgb(var(--color-primary-light));
}
.card-image img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.6s ease;
}
.card:hover .card-image img {
transform: scale(1.05);
}
.card-description {
margin-bottom: 1rem;
flex-grow: 1;
font-size: 0.95rem;
color: rgb(var(--color-text));
}
.card-link {
display: inline-flex;
align-items: center;
margin-top: auto;
font-weight: 500;
text-decoration: none;
color: rgb(var(--color-primary));
font-size: 0.95rem;
}
.card-link:after {
content: "→";
margin-left: 0.5rem;
transition: transform 0.2s ease;
}
.card-link:hover:after {
transform: translateX(4px);
}
@media (prefers-color-scheme: dark) {
.card {
background-color: rgb(30, 30, 30);
border-color: rgb(var(--color-border-dark));
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
}
.card-title,
.card-description {
color: rgb(var(--color-text-light));
}
}
/* Hero section */
.home-hero {
padding: 6rem 0;
margin-bottom: 4rem;
text-align: center;
background-color: rgb(var(--color-primary-light) / 0.5);
position: relative;
overflow: hidden;
border-radius: 6px;
}
.home-hero::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: radial-gradient(circle at center, rgb(var(--color-primary-light)) 0%, rgb(var(--color-background)) 100%);
opacity: 0.5;
z-index: 0;
}
.hero-content {
position: relative;
z-index: 1;
}
.home-hero h1 {
font-size: 3.5rem;
margin-top: 0;
margin-bottom: 1rem;
position: relative;
display: inline-block;
}
.home-hero h1::after {
content: '';
position: absolute;
bottom: -10px;
left: 50%;
transform: translateX(-50%);
width: 80px;
height: 4px;
background: linear-gradient(to right, rgb(var(--color-primary)), rgb(var(--color-primary-light)));
}
.home-hero p {
font-size: 1.3rem;
max-width: 600px;
margin: 2rem auto 1.5rem;
color: rgb(var(--color-text) / 0.8);
}
@media (prefers-color-scheme: dark) {
.home-hero {
background-color: rgba(var(--color-primary-dark), 0.2);
}
.home-hero::before {
background: radial-gradient(circle at center, rgba(var(--color-primary-dark), 0.3) 0%, rgb(var(--color-background-dark)) 100%);
}
.home-hero p {
color: rgb(var(--color-text-light) / 0.8);
}
}
/* Buttons */
.button {
display: inline-block;
padding: 0.75rem 1.5rem;
background-color: rgb(var(--color-primary));
color: white;
border: none;
border-radius: 6px;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
font-size: 1rem;
cursor: pointer;
text-decoration: none;
transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
box-shadow: var(--shadow-sm);
}
.button:hover {
background-color: rgb(var(--color-primary-dark));
color: white;
transform: translateY(-2px);
box-shadow: var(--shadow-md);
}
.button-outline {
background-color: transparent;
color: rgb(var(--color-primary));
border: 2px solid rgb(var(--color-primary));
}
.button-outline:hover {
background-color: rgb(var(--color-primary-light));
color: rgb(var(--color-primary-dark));
}
/* Homepage call-to-action button */
.help-button {
display: inline-block;
margin-top: 2rem;
padding: 0.8rem 1.6rem;
background-color: rgb(var(--color-accent));
color: white;
border: none;
border-radius: 6px;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
font-size: 1rem;
font-weight: 500;
cursor: pointer;
text-decoration: none;
box-shadow: var(--shadow-md);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.help-button::before {
content: "";
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
transition: left 1s ease;
}
.help-button:hover {
transform: translateY(-3px);
box-shadow: var(--shadow-lg);
background-color: rgb(var(--color-accent-dark));
}
.help-button:hover::before {
left: 100%;
}
@media (prefers-color-scheme: dark) {
.help-button {
background-color: rgb(var(--color-accent));
color: rgb(255, 255, 255);
}
.help-button:hover {
background-color: rgb(var(--color-accent-dark));
}
}
/* Quote section */
.quote-section {
margin: 4rem 0;
text-align: center;
padding: 3rem 2rem;
background-color: rgb(var(--color-primary-light) / 0.5);
border-radius: 6px;
position: relative;
}
.quote-text {
font-size: 1.6rem;
line-height: 1.5;
color: rgb(var(--color-text));
font-style: italic;
max-width: 800px;
margin: 0 auto;
position: relative;
}
.quote-text::before,
.quote-text::after {
font-size: 3rem;
color: rgb(var(--color-primary));
opacity: 0.3;
font-family: Georgia, serif;
position: absolute;
}
.quote-text::before {
content: '"';
left: -2rem;
top: -1rem;
}
.quote-text::after {
content: '"';
right: -2rem;
bottom: -2rem;
}
.quote-author {
margin-top: 1.5rem;
font-size: 1.1rem;
color: rgb(var(--color-primary-dark));
}
@media (prefers-color-scheme: dark) {
.quote-section {
background-color: rgba(var(--color-primary-dark), 0.2);
}
.quote-text {
color: rgb(var(--color-text-light));
}
.quote-author {
color: rgb(var(--color-primary-light));
}
}
/* Content prose */
.prose {
color: rgb(var(--color-text));
max-width: 70ch;
}
.prose a {
color: rgb(var(--color-link));
text-decoration: underline;
}
.prose a:hover {
color: rgb(var(--color-link-hover));
}
.prose h1, .prose h2, .prose h3, .prose h4 {
color: rgb(var(--color-text));
margin-top: 2em;
margin-bottom: 1em;
}
.prose h2 {
font-size: 1.8em;
}
.prose h3 {
font-size: 1.5em;
}
.prose p {
margin-bottom: 1.5em;
line-height: 1.8;
}
.prose img {
max-width: 100%;
height: auto;
margin: 2em auto;
display: block;
border-radius: 6px;
}
.prose blockquote {
margin: 2em 0;
padding: 1em 1.5em;
border-left: 4px solid rgb(var(--color-primary));
background-color: rgb(var(--color-primary-light) / 0.5);
font-style: italic;
border-radius: 0 6px 6px 0;
position: relative;
}
.prose blockquote::before {
content: '"';
position: absolute;
top: -15px;
left: 10px;
font-size: 3rem;
color: rgb(var(--color-primary));
opacity: 0.2;
font-family: Georgia, serif;
}
.prose pre {
background-color: rgb(var(--color-background-code));
padding: 1.5em;
border-radius: 8px;
overflow-x: auto;
margin: 1.8em 0;
border-left: 3px solid rgb(var(--color-primary));
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
font-size: 0.92em;
line-height: 1.6;
position: relative;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}
.prose pre::before {
content: attr(data-language);
position: absolute;
top: 0;
right: 12px;
font-size: 0.75em;
color: rgb(var(--color-syntax-comment));
padding: 0.3em 0.6em;
border-radius: 0 0 4px 4px;
background-color: rgba(var(--color-primary), 0.1);
text-transform: uppercase;
font-weight: 600;
letter-spacing: 0.05em;
}
.prose code {
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
font-size: 0.9em;
background-color: rgb(var(--color-background-code));
padding: 0.2em 0.4em;
border-radius: 3px;
letter-spacing: -0.01em;
border: 1px solid rgba(var(--color-border), 0.3);
}
.prose pre > code {
background-color: transparent;
padding: 0;
border: none;
color: inherit;
display: block;
}
/* Syntax highlighting */
.token.comment {
color: rgb(var(--color-syntax-comment));
font-style: italic;
}
.token.string {
color: rgb(var(--color-syntax-string));
}
.token.number {
color: rgb(var(--color-syntax-number));
}
.token.keyword, .token.operator {
color: rgb(var(--color-syntax-keyword));
font-weight: 500;
}
.token.function {
color: rgb(var(--color-syntax-function));
font-weight: 600;
}
/* Line numbers */
.prose pre.line-numbers {
counter-reset: line;
padding-left: 3.5em;
}
.prose pre.line-numbers > code {
position: relative;
white-space: inherit;
}
.prose pre.line-numbers > code > span {
display: block;
position: relative;
}
.prose pre.line-numbers > code > span:before {
content: counter(line);
counter-increment: line;
position: absolute;
left: -3em;
width: 2.5em;
text-align: right;
color: rgb(var(--color-syntax-comment));
padding-right: 0.5em;
border-right: 1px solid rgba(var(--color-border), 0.3);
user-select: none;
}
.prose ul, .prose ol {
margin: 1.5em 0;
padding-left: 2em;
}
.prose li {
margin-bottom: 0.5em;
}
.prose table {
width: 100%;
margin: 2em 0;
border-collapse: collapse;
}
.prose th {
background-color: rgb(var(--color-primary-light));
color: rgb(var(--color-primary-dark));
font-weight: 600;
text-align: left;
padding: 0.8em;
border: 1px solid rgb(var(--color-border));
}
.prose td {
padding: 0.8em;
border: 1px solid rgb(var(--color-border));
}
.prose tr:nth-child(even) {
background-color: rgb(var(--color-primary-light) / 0.1);
}
@media (prefers-color-scheme: dark) {
.prose {
color: rgb(var(--color-text-light));
}
.prose h1, .prose h2, .prose h3, .prose h4 {
color: rgb(var(--color-text-light));
}
.prose a {
color: rgb(var(--color-link-light));
}
.prose a:hover {
color: rgb(var(--color-link-light) / 0.8);
}
.prose blockquote {
background-color: rgba(var(--color-primary-dark), 0.2);
}
.prose pre {
background-color: rgb(var(--color-background-code-dark));
color: rgb(var(--color-text-light));
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
border-left-color: rgb(var(--color-accent));
}
.prose pre::before {
background-color: rgba(var(--color-accent), 0.15);
color: rgba(var(--color-text-light), 0.7);
}
.prose code {
background-color: rgb(var(--color-background-code-dark));
color: rgb(var(--color-text-light));
border-color: rgba(var(--color-border-dark), 0.3);
}
.prose th {
background-color: rgba(var(--color-primary-dark), 0.2);
color: rgb(var(--color-primary-light));
border-color: rgb(var(--color-border-dark));
}
.prose td {
border-color: rgb(var(--color-border-dark));
}
.prose tr:nth-child(even) {
background-color: rgba(var(--color-primary-dark), 0.1);
}
/* Dark mode syntax highlighting */
.token.comment {
color: rgba(var(--color-syntax-comment), 0.8);
}
.token.string {
color: rgb(var(--color-syntax-string));
}
.token.number {
color: rgb(var(--color-syntax-number));
}
.token.keyword, .token.operator {
color: rgb(var(--color-syntax-keyword));
}
.token.function {
color: rgb(var(--color-syntax-function));
}
.prose pre.line-numbers > code > span:before {
color: rgba(var(--color-syntax-comment), 0.6);
border-right-color: rgba(var(--color-border-dark), 0.3);
}
}
/* Terminal-like elements */
.terminal {
background-color: rgb(30, 30, 30);
border-radius: 6px;
padding: 1.2rem;
color: rgb(230, 230, 230);
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', monospace;
font-size: 0.9rem;
position: relative;
margin: 2rem 0;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
overflow-x: auto;
}
.terminal::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
height: 24px;
background: linear-gradient(to right, rgb(255, 95, 86), rgb(255, 95, 86) 8px, transparent 8px, transparent 16px, rgb(255, 189, 46), rgb(255, 189, 46) 8px, transparent 24px, transparent 32px, rgb(39, 201, 63), rgb(39, 201, 63) 8px, transparent 40px);
background-position: 10px center;
background-repeat: no-repeat;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 6px 6px 0 0;
}
.terminal-content {
margin-top: 15px;
line-height: 1.5;
}
.command-line::before {
content: "$ ";
color: rgb(var(--color-accent));
font-weight: bold;
user-select: none;
}
.command-output {
color: rgb(200, 200, 200);
margin-left: 1rem;
padding-left: 0.5rem;
border-left: 2px solid rgba(var(--color-accent), 0.3);
margin-bottom: 1rem;
}
/* Terminal loader animation */
.terminal-loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(10, 10, 15, 0.95);
z-index: 9999;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
transition: opacity 0.5s ease;
}
.terminal-loader.fade-out {
opacity: 0;
}
.terminal-header {
background-color: rgb(40, 44, 52);
width: 600px;
max-width: 90%;
padding: 8px 16px;
border-radius: 8px 8px 0 0;
border: 1px solid rgba(255, 255, 255, 0.1);
border-bottom: none;
}
.terminal-title {
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', monospace;
color: rgba(255, 255, 255, 0.8);
font-size: 0.8rem;
}
.terminal-loader .terminal-content {
background-color: rgb(30, 30, 30);
width: 600px;
max-width: 90%;
padding: 1rem;
border-radius: 0 0 8px 8px;
border: 1px solid rgba(255, 255, 255, 0.1);
max-height: 60vh;
overflow-y: auto;
margin-top: 0;
}
.terminal-loader .command-line,
.terminal-loader .command-output {
margin: 0.5rem 0;
line-height: 1.5;
}
.terminal-loader .command-line {
color: rgb(230, 230, 230);
position: relative;
padding-left: 1.5rem;
}
.terminal-loader .command-line::before {
content: ">";
position: absolute;
left: 0;
color: rgb(var(--color-accent));
}
.terminal-loader .command-output {
color: rgb(180, 180, 180);
padding-left: 1.5rem;
margin-bottom: 1rem;
}
.terminal-loader .command-output.success {
color: rgb(var(--color-success));
font-weight: 500;
}
/* DevTools inspired elements */
.dev-inspect {
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', monospace;
font-size: 0.9rem;
background-color: rgb(var(--color-background-code));
border-radius: 6px;
padding: 1rem;
border: 1px solid rgb(var(--color-border));
margin: 1.5rem 0;
}
.dev-inspect .property {
display: flex;
margin-bottom: 0.5rem;
}
.dev-inspect .key {
color: rgb(var(--color-syntax-keyword));
margin-right: 0.5rem;
flex-basis: 120px;
}
.dev-inspect .value {
color: rgb(var(--color-syntax-string));
}
.dev-inspect .number {
color: rgb(var(--color-syntax-number));
}
.dev-inspect .function {
color: rgb(var(--color-syntax-function));
}
.dev-inspect-dark {
background-color: rgb(var(--color-background-code-dark));
border-color: rgb(var(--color-border-dark));
}
/* VS Code-inspired Code Editor Design */
.code-editor-wrapper {
margin: 2rem 0;
border-radius: 6px;
overflow: hidden;
box-shadow: var(--shadow-md);
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Menlo, Monaco, Consolas, monospace;
}
.code-editor-info {
background-color: rgb(var(--color-background-code));
border: 1px solid rgb(var(--color-border));
border-bottom: none;
border-radius: 6px 6px 0 0;
padding: 0;
display: flex;
justify-content: space-between;
font-size: 0.75rem;
}
.editor-tabs {
display: flex;
align-items: center;
}
.editor-tab {
padding: 0.4rem 1rem;
background-color: rgb(var(--color-background));
border-right: 1px solid rgb(var(--color-border));
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 0.75rem;
color: rgb(var(--color-text));
}
.editor-tab.active {
background-color: rgb(var(--color-background));
border-bottom: 2px solid rgb(var(--color-accent));
}
.close-icon {
margin-left: 0.5rem;
font-size: 1rem;
opacity: 0.5;
cursor: pointer;
}
.close-icon:hover {
opacity: 1;
}
.prose pre {
position: relative;
margin: 0 !important;
border-radius: 0 0 6px 6px !important;
border: 1px solid rgb(var(--color-border));
border-top: none;
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Menlo, Monaco, Consolas, monospace;
font-size: 0.85rem;
line-height: 1.5;
}
/* Line numbers styling */
.line-numbers .line-numbers-rows {
border-right: 1px solid rgba(var(--color-border), 0.3) !important;
padding-right: 0.8em !important;
width: 2.5em !important;
}
.line-numbers-rows > span:before {
color: rgba(var(--color-text-secondary), 0.5) !important;
padding-right: 0.8em !important;
}
/* Copy button for code blocks */
.copy-code-button {
position: absolute;
top: 0.5rem;
right: 0.5rem;
padding: 0.4rem 0.7rem;
font-size: 0.8rem;
background-color: rgba(var(--color-primary), 0.1);
color: rgb(var(--color-primary));
border: 1px solid rgba(var(--color-border), 0.3);
border-radius: 4px;
cursor: pointer;
opacity: 0;
transition: opacity 0.3s ease, transform 0.2s ease, background-color 0.2s ease;
display: flex;
align-items: center;
gap: 0.3rem;
z-index: 10;
}
.copy-code-button svg {
width: 14px;
height: 14px;
}
.prose pre:hover .copy-code-button {
opacity: 1;
}
.copy-code-button:hover {
background-color: rgba(var(--color-primary), 0.2);
transform: translateY(-1px);
}
.copy-code-button:active {
transform: translateY(0);
}
/* Custom token colors to match VSCode */
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none !important;
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Menlo, Monaco, Consolas, monospace !important;
font-size: 0.85rem !important;
}
@media (prefers-color-scheme: dark) {
.code-editor-info {
background-color: rgb(var(--color-background-code-dark));
border-color: rgb(var(--color-border-dark));
}
.editor-tab {
background-color: rgb(30, 30, 30);
border-color: rgb(var(--color-border-dark));
color: rgb(var(--color-text-light));
}
.editor-tab.active {
background-color: rgb(var(--color-background-dark));
}
.prose pre {
border-color: rgb(var(--color-border-dark));
}
.line-numbers .line-numbers-rows {
border-right-color: rgba(var(--color-border-dark), 0.3) !important;
}
.line-numbers-rows > span:before {
color: rgba(var(--color-text-secondary), 0.3) !important;
}
.copy-code-button {
background-color: rgba(var(--color-accent), 0.1);
color: rgb(var(--color-accent-light));
border-color: rgba(var(--color-border-dark), 0.3);
}
.copy-code-button:hover {
background-color: rgba(var(--color-accent), 0.2);
}
}
/* VS Code Explorer Panel */
.explorer-fab {
position: fixed;
bottom: 2rem;
right: 2rem;
width: 50px;
height: 50px;
border-radius: 50%;
background-color: rgb(var(--color-primary));
color: white;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
box-shadow: var(--shadow-md);
z-index: 50;
transition: var(--transition-default);
}
.explorer-fab:hover {
transform: translateY(-3px);
box-shadow: var(--shadow-lg);
background-color: rgb(var(--color-primary-dark));
}
.explorer-fab:active {
transform: translateY(-1px);
}
.explorer-fab .shortcut-hint {
position: absolute;
bottom: -25px;
left: 50%;
transform: translateX(-50%);
background-color: rgb(var(--color-background-code));
color: rgb(var(--color-text-secondary));
padding: 3px 6px;
border-radius: 4px;
font-size: 0.7rem;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
white-space: nowrap;
opacity: 0;
transition: opacity 0.2s ease;
border: 1px solid rgb(var(--color-border));
box-shadow: var(--shadow-sm);
}
.explorer-fab:hover .shortcut-hint {
opacity: 1;
}
.explorer-panel {
position: fixed;
top: 0;
right: -300px;
width: 300px;
height: 100vh;
background-color: rgb(var(--color-background-code));
border-left: 1px solid rgb(var(--color-border));
z-index: 60;
transition: right 0.3s ease;
display: flex;
flex-direction: column;
box-shadow: -5px 0 15px rgba(0, 0, 0, 0.1);
}
.explorer-panel.show {
right: 0;
}
.explorer-header {
height: 35px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 1rem;
background-color: rgb(var(--color-background-code));
border-bottom: 1px solid rgb(var(--color-border));
}
.explorer-header h3 {
font-size: 0.8rem;
font-weight: 500;
margin: 0;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
color: rgb(var(--color-text-secondary));
letter-spacing: 0.05em;
}
.explorer-header button {
background: none;
border: none;
font-size: 1.5rem;
line-height: 1;
color: rgb(var(--color-text-secondary));
cursor: pointer;
padding: 0;
margin: 0;
}
.explorer-body {
flex: 1;
overflow-y: auto;
padding: 1rem 0;
}
.explorer-section {
margin-bottom: 1.5rem;
}
.explorer-section-header {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0 1rem;
margin-bottom: 0.5rem;
cursor: pointer;
}
.explorer-section-header span {
font-size: 0.7rem;
font-weight: 500;
color: rgb(var(--color-text-secondary));
font-family: 'JetBrains Mono', 'Fira Code', monospace;
letter-spacing: 0.05em;
}
.explorer-section-header svg {
color: rgb(var(--color-text-secondary));
}
.explorer-section-content {
padding: 0.25rem 0;
}
.explorer-item {
display: block;
padding: 0.4rem 2rem;
font-size: 0.8rem;
color: rgb(var(--color-text));
font-family: 'JetBrains Mono', 'Fira Code', monospace;
text-decoration: none;
border: none;
transition: var(--transition-default);
position: relative;
}
.explorer-item:hover {
background-color: rgba(var(--color-primary), 0.05);
color: rgb(var(--color-primary));
}
.explorer-item.external::after {
content: "↗";
position: absolute;
right: 1rem;
opacity: 0.5;
font-size: 0.7rem;
}
@media (prefers-color-scheme: dark) {
.explorer-fab {
background-color: rgb(var(--color-primary-dark));
}
.explorer-fab:hover {
background-color: rgb(var(--color-primary));
}
.explorer-fab .shortcut-hint {
background-color: rgb(var(--color-background-code-dark));
color: rgb(var(--color-text-light) / 0.7);
border-color: rgb(var(--color-border-dark));
}
.explorer-panel {
background-color: rgb(var(--color-background-code-dark));
border-color: rgb(var(--color-border-dark));
}
.explorer-header {
background-color: rgb(var(--color-background-code-dark));
border-color: rgb(var(--color-border-dark));
}
.explorer-header h3 {
color: rgb(var(--color-text-light));
}
.explorer-header button {
color: rgb(var(--color-text-light));
}
.explorer-section-header span {
color: rgb(var(--color-text-light) / 0.7);
}
.explorer-section-header svg {
color: rgb(var(--color-text-light) / 0.7);
}
.explorer-item {
color: rgb(var(--color-text-light));
}
.explorer-item:hover {
background-color: rgba(var(--color-primary-dark), 0.2);
color: rgb(var(--color-accent-light));
}
}
/* Special styling for contact page */
.contact-info-item {
display: flex;
align-items: center;
margin-bottom: 0.8rem;
}
.contact-info-item code {
font-family: 'JetBrains Mono', 'Fira Code', monospace;
font-size: 0.9em;
background-color: rgb(var(--color-background-code));
color: rgb(var(--color-accent));
padding: 0.4em 0.8em;
border-radius: 4px;
border: 1px solid rgba(var(--color-border), 0.3);
box-shadow: var(--shadow-sm);
transition: all 0.2s ease;
}
.contact-info-item code:hover {
transform: translateY(-1px);
box-shadow: var(--shadow-md);
}
@media (prefers-color-scheme: dark) {
.contact-info-item code {
background-color: rgb(var(--color-background-code-dark));
color: rgb(var(--color-accent-light));
border-color: rgba(var(--color-border-dark), 0.3);
}
}
/* Command Palette */
.command-palette {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(0.95);
width: 600px;
max-width: 90vw;
max-height: 400px;
background-color: rgb(var(--color-background-code));
border-radius: 6px;
border: 1px solid rgb(var(--color-border));
box-shadow: var(--shadow-lg);
z-index: 1000;
opacity: 0;
pointer-events: none;
transition: opacity 0.2s ease, transform 0.2s ease;
overflow: hidden;
display: flex;
flex-direction: column;
}
.command-palette.show {
opacity: 1;
pointer-events: all;
transform: translate(-50%, -50%) scale(1);
}
.command-palette-header {
padding: 10px 15px;
border-bottom: 1px solid rgb(var(--color-border));
display: flex;
align-items: center;
}
.command-palette-search {
flex: 1;
background: none;
border: none;
outline: none;
color: rgb(var(--color-text));
font-family: 'JetBrains Mono', 'Fira Code', monospace;
font-size: 0.9rem;
}
.command-palette-search::placeholder {
color: rgb(var(--color-text-secondary) / 0.6);
}
.command-palette-results {
max-height: 350px;
overflow-y: auto;
padding: 5px 0;
}
.command-palette-item {
padding: 8px 15px;
display: flex;
align-items: center;
gap: 10px;
cursor: pointer;
transition: background-color 0.2s ease;
}
.command-palette-item:hover,
.command-palette-item.selected {
background-color: rgba(var(--color-primary), 0.1);
}
.command-palette-icon {
color: rgb(var(--color-text-secondary));
width: 16px;
flex-shrink: 0;
}
.command-palette-label {
flex: 1;
font-size: 0.9rem;
color: rgb(var(--color-text));
}
.command-palette-shortcut {
display: flex;
gap: 4px;
}
.command-palette-key {
font-size: 0.75rem;
color: rgb(var(--color-text-secondary));
background-color: rgba(var(--color-background), 0.8);
border: 1px solid rgb(var(--color-border));
border-radius: 3px;
padding: 1px 5px;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
}
/* Keyboard Shortcuts Panel */
.shortcuts-panel {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(0.95);
width: 700px;
max-width: 90vw;
max-height: 80vh;
background-color: rgb(var(--color-background));
border-radius: 6px;
border: 1px solid rgb(var(--color-border));
box-shadow: var(--shadow-lg);
z-index: 1000;
opacity: 0;
pointer-events: none;
transition: opacity 0.3s ease, transform 0.3s ease;
overflow: hidden;
display: flex;
flex-direction: column;
}
.shortcuts-panel.show {
opacity: 1;
pointer-events: all;
transform: translate(-50%, -50%) scale(1);
}
.shortcuts-header {
padding: 15px;
border-bottom: 1px solid rgb(var(--color-border));
display: flex;
align-items: center;
justify-content: space-between;
}
.shortcuts-title {
font-size: 1rem;
font-weight: 600;
margin: 0;
color: rgb(var(--color-text));
}
.shortcuts-close {
background: none;
border: none;
outline: none;
cursor: pointer;
font-size: 1.5rem;
line-height: 1;
color: rgb(var(--color-text-secondary));
}
.shortcuts-content {
padding: 20px;
overflow-y: auto;
max-height: calc(80vh - 60px);
}
.shortcuts-section {
margin-bottom: 25px;
}
.shortcuts-section-title {
font-size: 0.9rem;
font-weight: 600;
margin-bottom: 10px;
color: rgb(var(--color-primary));
border-bottom: 1px solid rgba(var(--color-border), 0.3);
padding-bottom: 5px;
}
.shortcuts-list {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 10px;
}
.shortcut-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 10px;
border-radius: 4px;
transition: background-color 0.2s ease;
}
.shortcut-item:hover {
background-color: rgba(var(--color-primary), 0.05);
}
.shortcut-label {
font-size: 0.85rem;
color: rgb(var(--color-text));
}
.shortcut-combo {
display: flex;
gap: 4px;
}
.shortcut-key {
font-size: 0.75rem;
color: rgb(var(--color-text-secondary));
background-color: rgb(var(--color-background-code));
border: 1px solid rgb(var(--color-border));
border-radius: 3px;
padding: 2px 6px;
font-family: 'JetBrains Mono', 'Fira Code', monospace;
min-width: 20px;
text-align: center;
}
.shortcuts-overlay {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.5);
z-index: 999;
opacity: 0;
pointer-events: none;
transition: opacity 0.3s ease;
}
.shortcuts-overlay.show {
opacity: 1;
pointer-events: all;
}
@media (prefers-color-scheme: dark) {
.command-palette {
background-color: rgb(var(--color-background-code-dark));
border-color: rgb(var(--color-border-dark));
}
.command-palette-header {
border-color: rgb(var(--color-border-dark));
}
.command-palette-search {
color: rgb(var(--color-text-light));
}
.command-palette-search::placeholder {
color: rgb(var(--color-text-light) / 0.5);
}
.command-palette-item:hover,
.command-palette-item.selected {
background-color: rgba(var(--color-primary-dark), 0.3);
}
.command-palette-icon {
color: rgb(var(--color-text-light) / 0.7);
}
.command-palette-label {
color: rgb(var(--color-text-light));
}
.command-palette-key {
color: rgb(var(--color-text-light) / 0.7);
background-color: rgb(40, 44, 52);
border-color: rgb(var(--color-border-dark));
}
.shortcuts-panel {
background-color: rgb(var(--color-background-dark));
border-color: rgb(var(--color-border-dark));
}
.shortcuts-header {
border-color: rgb(var(--color-border-dark));
}
.shortcuts-title {
color: rgb(var(--color-text-light));
}
.shortcuts-close {
color: rgb(var(--color-text-light) / 0.7);
}
.shortcuts-section-title {
color: rgb(var(--color-accent-light));
border-color: rgba(var(--color-border-dark), 0.3);
}
.shortcut-item:hover {
background-color: rgba(var(--color-primary-dark), 0.2);
}
.shortcut-label {
color: rgb(var(--color-text-light));
}
.shortcut-key {
color: rgb(var(--color-text-light) / 0.8);
background-color: rgb(var(--color-background-code-dark));
border-color: rgb(var(--color-border-dark));
}
}
/* Responsive adjustments */
@media (max-width: 768px) {
html {
font-size: 16px;
}
h1 {
font-size: 2.2rem;
}
h2 {
font-size: 1.6rem;
}
h3 {
font-size: 1.3rem;
}
header .container {
flex-direction: column;
align-items: flex-start;
gap: 1rem;
height: auto;
padding: 1rem;
}
nav ul {
flex-wrap: wrap;
gap: 0.5rem;
}
.directory-list {
grid-template-columns: 1fr;
}
.home-hero {
padding: 3rem 0;
}
.home-hero h1 {
font-size: 2.2rem;
}
.home-hero p {
font-size: 1.1rem;
}
footer .container {
flex-direction: column;
align-items: center;
text-align: center;
}
.card-grid {
grid-template-columns: 1fr;
}
.quote-text {
font-size: 1.3rem;
}
.quote-text::before,
.quote-text::after {
font-size: 2rem;
}
.quote-text::before {
left: -1rem;
}
.quote-text::after {
right: -1rem;
}
}