287 lines
5.7 KiB
CSS
287 lines
5.7 KiB
CSS
|
|
@tailwind base;
|
||
|
|
@tailwind components;
|
||
|
|
@tailwind utilities;
|
||
|
|
@keyframes marquee {
|
||
|
|
0% { transform: translateX(100%); }
|
||
|
|
100% { transform: translateX(-100%); }
|
||
|
|
}
|
||
|
|
|
||
|
|
.currently {
|
||
|
|
float: right;
|
||
|
|
height: 190px;
|
||
|
|
width: 190px;
|
||
|
|
overflow: scroll;
|
||
|
|
position: absolute;}
|
||
|
|
.webring {
|
||
|
|
margin: 0 auto;
|
||
|
|
width: 400px;
|
||
|
|
height: 220px;
|
||
|
|
border: 1px #000 solid;
|
||
|
|
overflow: scroll;
|
||
|
|
}
|
||
|
|
/* Blog post typography styles */
|
||
|
|
.prose {
|
||
|
|
@apply max-w-none text-gray-900 dark:text-gray-100;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose p {
|
||
|
|
@apply mb-6 leading-relaxed;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose h1 {
|
||
|
|
@apply text-3xl font-bold mb-6 mt-8 text-gray-900 dark:text-gray-100;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose h2 {
|
||
|
|
@apply text-2xl font-bold mb-4 mt-8 text-gray-900 dark:text-gray-100;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose h3 {
|
||
|
|
@apply text-xl font-semibold mb-3 mt-6 text-gray-900 dark:text-gray-100;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose h4 {
|
||
|
|
@apply text-lg font-semibold mb-2 mt-4 text-gray-900 dark:text-gray-100;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose h5 {
|
||
|
|
@apply text-base font-semibold mb-2 mt-4 text-gray-900 dark:text-gray-100;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose h6 {
|
||
|
|
@apply text-sm font-semibold mb-2 mt-4 text-gray-900 dark:text-gray-100;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose ul {
|
||
|
|
@apply mb-6 pl-6;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose ol {
|
||
|
|
@apply mb-6 pl-6;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose li {
|
||
|
|
@apply mb-2;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose ul li {
|
||
|
|
@apply list-disc;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose ol li {
|
||
|
|
@apply list-decimal;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose blockquote {
|
||
|
|
@apply border-l-4 border-purple-500 pl-6 py-2 mb-6 italic text-gray-700 dark:text-gray-300 bg-gray-50 dark:bg-gray-800/50;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose code {
|
||
|
|
@apply bg-gray-100 dark:bg-gray-800 px-2 py-1 rounded text-sm font-mono text-purple-700 dark:text-purple-300;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose pre {
|
||
|
|
@apply bg-gray-100 text-gray-900 dark:bg-gray-900 dark:text-gray-100 p-4 rounded-lg mb-6 overflow-x-auto;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose pre code {
|
||
|
|
@apply bg-transparent p-0;
|
||
|
|
color: inherit;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Ensure HLJS themes don't override background/text inside prose blocks */
|
||
|
|
.prose pre code.hljs,
|
||
|
|
.prose code.hljs,
|
||
|
|
.prose pre .hljs {
|
||
|
|
background: transparent !important;
|
||
|
|
color: inherit;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Mobile hamburger animation */
|
||
|
|
#hamburger .bar-1,
|
||
|
|
#hamburger .bar-3 { transition: transform 200ms ease; }
|
||
|
|
#hamburger .bar-2 { transition: opacity 150ms ease; }
|
||
|
|
#hamburger.open .bar-1 { transform: translateY(6px) rotate(45deg); }
|
||
|
|
#hamburger.open .bar-2 { opacity: 0; }
|
||
|
|
#hamburger.open .bar-3 { transform: translateY(-6px) rotate(-45deg); }
|
||
|
|
|
||
|
|
/* Wrap long links in blog posts to prevent overflow */
|
||
|
|
.prose a {
|
||
|
|
overflow-wrap: anywhere;
|
||
|
|
word-break: break-word;
|
||
|
|
white-space: normal;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
.prose img {
|
||
|
|
@apply rounded-lg mb-6 shadow-md;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose table {
|
||
|
|
@apply w-full mb-6 border-collapse;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose th {
|
||
|
|
@apply bg-gray-100 dark:bg-gray-800 px-4 py-2 text-left font-semibold border border-gray-300 dark:border-gray-600;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose td {
|
||
|
|
@apply px-4 py-2 border border-gray-300 dark:border-gray-600;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose hr {
|
||
|
|
@apply my-8 border-gray-300 dark:border-gray-600;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose strong {
|
||
|
|
@apply font-bold text-gray-900 dark:text-gray-100;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose em {
|
||
|
|
@apply italic;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose del {
|
||
|
|
@apply line-through text-gray-500 dark:text-gray-400;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Header anchors */
|
||
|
|
.prose .header-anchor {
|
||
|
|
@apply text-purple-500 hover:text-purple-700 dark:text-purple-400 dark:hover:text-purple-200 no-underline ml-2 opacity-0 transition-opacity;
|
||
|
|
}
|
||
|
|
|
||
|
|
.prose h1:hover .header-anchor,
|
||
|
|
.prose h2:hover .header-anchor,
|
||
|
|
.prose h3:hover .header-anchor,
|
||
|
|
.prose h4:hover .header-anchor {
|
||
|
|
@apply opacity-100;
|
||
|
|
}
|
||
|
|
|
||
|
|
:root {
|
||
|
|
--bg: #dcfcf4;
|
||
|
|
--text: #1a1625;
|
||
|
|
--surface: #f7f2fa;
|
||
|
|
--accent: #ffd1f0;
|
||
|
|
--accent-light:#ffd1f0;
|
||
|
|
--border: hotpink;
|
||
|
|
}
|
||
|
|
|
||
|
|
.dark {
|
||
|
|
--bg: #0f0a1a;
|
||
|
|
--text: #f1e8ff;
|
||
|
|
--surface: #1a0f2e;
|
||
|
|
--accent: #a855f7;
|
||
|
|
--accent-light: #c084fc;
|
||
|
|
--border: #4c1d95;
|
||
|
|
}
|
||
|
|
|
||
|
|
#progress-bar {
|
||
|
|
position: fixed;
|
||
|
|
top: 0;
|
||
|
|
left: 0;
|
||
|
|
height: 3px;
|
||
|
|
background: linear-gradient(90deg, #7c3aed, #ec4899, #f59e0b);
|
||
|
|
z-index: 9999;
|
||
|
|
transition: width 0.3s ease;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Nav items - no hover effects to prevent jitter */
|
||
|
|
.nav-item {
|
||
|
|
color: inherit;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Remove hover transform that could cause layout shifts */
|
||
|
|
|
||
|
|
/* Subtle animations */
|
||
|
|
@keyframes float {
|
||
|
|
0%, 100% { transform: translateY(0px); }
|
||
|
|
50% { transform: translateY(-3px); }
|
||
|
|
}
|
||
|
|
|
||
|
|
.float-animation {
|
||
|
|
animation: float 3s ease-in-out infinite;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* System fonts toggle */
|
||
|
|
.system-fonts {
|
||
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||
|
|
}
|
||
|
|
|
||
|
|
html {
|
||
|
|
scroll-behavior: smooth;
|
||
|
|
overflow-y: scroll;
|
||
|
|
width: 100vw;
|
||
|
|
box-sizing: border-box;
|
||
|
|
}
|
||
|
|
|
||
|
|
body {
|
||
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||
|
|
line-height: 1.6;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Base accessibility improvements */
|
||
|
|
@layer base {
|
||
|
|
a {
|
||
|
|
cursor: pointer;
|
||
|
|
text-decoration: none;
|
||
|
|
}
|
||
|
|
a:focus-visible {
|
||
|
|
outline: 2px solid #7c3aed; /* purple accent focus ring */
|
||
|
|
outline-offset: 2px;
|
||
|
|
border-radius: 2px;
|
||
|
|
}
|
||
|
|
/* Global link hover/active behavior (non-prose, non-nav links) */
|
||
|
|
a:hover {
|
||
|
|
text-decoration: underline;
|
||
|
|
text-underline-offset: 2px;
|
||
|
|
}
|
||
|
|
a:active {
|
||
|
|
text-decoration-thickness: 2px;
|
||
|
|
}
|
||
|
|
a:hover:not(.nav-item) {
|
||
|
|
color: var(--accent);
|
||
|
|
transition: color 150ms ease-in-out;
|
||
|
|
}
|
||
|
|
.dark a:hover:not(.nav-item) {
|
||
|
|
color: var(--accent-light);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Prose improvements */
|
||
|
|
@layer components {
|
||
|
|
.prose {
|
||
|
|
color: var(--text);
|
||
|
|
}
|
||
|
|
.prose h1, .prose h2, .prose h3, .prose h4, .prose h5, .prose h6 {
|
||
|
|
color: var(--text);
|
||
|
|
}
|
||
|
|
.prose a {
|
||
|
|
color: #2563eb; /* readable blue on light */
|
||
|
|
text-decoration: underline;
|
||
|
|
text-underline-offset: 2px;
|
||
|
|
text-decoration-thickness: 1.5px;
|
||
|
|
transition: color 150ms ease-in-out; /* color-only to avoid layout shift */
|
||
|
|
}
|
||
|
|
.prose a:hover {
|
||
|
|
color: #1d4ed8;
|
||
|
|
}
|
||
|
|
.prose a:active {
|
||
|
|
text-decoration-thickness: 2px;
|
||
|
|
}
|
||
|
|
.prose a:focus-visible {
|
||
|
|
outline: 2px solid #7c3aed;
|
||
|
|
outline-offset: 2px;
|
||
|
|
border-radius: 2px;
|
||
|
|
}
|
||
|
|
.dark .prose a {
|
||
|
|
color: #60a5fa;
|
||
|
|
}
|
||
|
|
.dark .prose a:hover {
|
||
|
|
color: #93c5fd;
|
||
|
|
}
|
||
|
|
.dark .prose a:focus-visible {
|
||
|
|
outline-color: #a855f7;
|
||
|
|
}
|
||
|
|
}
|