@import "tailwindcss"; :root { --background: #f4f7fb; --foreground: #0c1929; --muted: #5b6b7c; --accent: #0d9488; --accent-secondary: #ea580c; --accent-tertiary: #0284c7; --surface: rgba(255, 255, 255, 0.78); --surface-solid: #ffffff; --border: rgba(13, 148, 136, 0.14); --gradient-1: #0d9488; --gradient-2: #f59e0b; --gradient-3: #0284c7; --glow-sm: 0 8px 32px rgba(13, 148, 136, 0.2); --glow-lg: 0 24px 64px rgba(234, 88, 12, 0.18); --mesh-1: rgba(13, 148, 136, 0.32); --mesh-2: rgba(245, 158, 11, 0.26); --mesh-3: rgba(2, 132, 199, 0.22); --prose: #334155; --card-shadow: 0 4px 24px rgba(12, 25, 41, 0.07); --callout-bg: rgba(13, 148, 136, 0.08); --callout-border: rgba(13, 148, 136, 0.22); --read-max: 42rem; --header-h: 4.25rem; } .dark { --background: #060d18; --foreground: #e8eef4; --muted: #8fa3b8; --accent: #2dd4bf; --accent-secondary: #fb923c; --accent-tertiary: #38bdf8; --surface: rgba(12, 25, 41, 0.72); --surface-solid: #0c1929; --border: rgba(45, 212, 191, 0.14); --gradient-1: #14b8a6; --gradient-2: #fb923c; --gradient-3: #38bdf8; --glow-sm: 0 8px 32px rgba(20, 184, 166, 0.22); --glow-lg: 0 24px 64px rgba(251, 146, 60, 0.16); --mesh-1: rgba(20, 184, 166, 0.35); --mesh-2: rgba(251, 146, 60, 0.28); --mesh-3: rgba(56, 189, 248, 0.25); --prose: #b8c5d4; --card-shadow: 0 4px 28px rgba(0, 0, 0, 0.4); --callout-bg: rgba(20, 184, 166, 0.1); --callout-border: rgba(45, 212, 191, 0.25); } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --color-muted: var(--muted); --color-accent: var(--accent); --color-surface: var(--surface); --color-border: var(--border); --font-sans: var(--font-dm-sans); --font-serif: var(--font-source-serif); --font-display: var(--font-plus-jakarta); } html { color-scheme: light; scroll-padding-top: calc(var(--header-h) + 1rem); } html.dark { color-scheme: dark; } body { background: var(--background); color: var(--foreground); font-family: var(--font-dm-sans), system-ui, sans-serif; } /* Latitude grid + ambient mesh */ .mesh-bg { position: fixed; inset: 0; z-index: -2; overflow: hidden; pointer-events: none; background-image: linear-gradient(rgba(13, 148, 136, 0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(13, 148, 136, 0.04) 1px, transparent 1px); background-size: 48px 48px; } .dark .mesh-bg { background-image: linear-gradient(rgba(45, 212, 191, 0.06) 1px, transparent 1px), linear-gradient(90deg, rgba(45, 212, 191, 0.06) 1px, transparent 1px); } .mesh-bg::before, .mesh-bg::after { content: ""; position: absolute; border-radius: 50%; filter: blur(88px); animation: mesh-float 20s ease-in-out infinite alternate; } .mesh-bg::before { width: min(72vw, 540px); height: min(72vw, 540px); top: -14%; right: -6%; background: radial-gradient(circle, var(--mesh-1), transparent 68%); } .mesh-bg::after { width: min(58vw, 420px); height: min(58vw, 420px); bottom: 8%; left: -12%; background: radial-gradient(circle, var(--mesh-2), transparent 70%); animation-delay: -7s; } .mesh-orb { position: absolute; border-radius: 50%; filter: blur(76px); animation: mesh-float 24s ease-in-out infinite alternate-reverse; } .mesh-orb--sky { width: min(48vw, 340px); height: min(48vw, 340px); top: 42%; left: 38%; background: radial-gradient(circle, var(--mesh-3), transparent 70%); } @keyframes mesh-float { 0% { transform: translate(0, 0) scale(1); } 100% { transform: translate(20px, -28px) scale(1.06); } } .gradient-text { background: linear-gradient( 125deg, var(--gradient-1) 0%, var(--gradient-2) 45%, var(--gradient-3) 100% ); -webkit-background-clip: text; background-clip: text; color: transparent; } .glass-card { background: var(--surface); border: 1px solid var(--border); backdrop-filter: blur(16px); box-shadow: var(--card-shadow); } .btn-primary { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; height: 3rem; padding-inline: 1.75rem; border-radius: 9999px; font-size: 0.875rem; font-weight: 600; color: white; background: linear-gradient( 125deg, var(--gradient-1), var(--gradient-2), var(--gradient-3) ); background-size: 200% 200%; box-shadow: var(--glow-sm); transition: transform 0.2s, box-shadow 0.2s, background-position 0.4s; } .btn-primary:hover { transform: translateY(-1px); box-shadow: var(--glow-lg); background-position: 100% 50%; } .btn-secondary { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; height: 3rem; padding-inline: 1.75rem; border-radius: 9999px; font-size: 0.875rem; font-weight: 600; color: var(--foreground); background: var(--surface); border: 1px solid var(--border); backdrop-filter: blur(12px); transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s; } .btn-secondary:hover { border-color: color-mix(in srgb, var(--accent) 45%, transparent); box-shadow: var(--glow-sm); transform: translateY(-1px); } .font-display { font-family: var(--font-plus-jakarta), var(--font-dm-sans), system-ui, sans-serif; } .cover-float { animation: cover-float 7s ease-in-out infinite; } @keyframes cover-float { 0%, 100% { transform: translateY(0) rotate(-0.5deg); } 50% { transform: translateY(-12px) rotate(0.5deg); } } /* Hub marquee */ .marquee-track { display: flex; width: max-content; animation: marquee 42s linear infinite; } @keyframes marquee { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } } /* Reading progress */ .reading-progress { position: fixed; top: var(--header-h); left: 0; z-index: 40; height: 3px; width: 100%; background: transparent; pointer-events: none; } .reading-progress__bar { height: 100%; width: 0%; background: linear-gradient( 90deg, var(--gradient-1), var(--gradient-2), var(--gradient-3) ); transition: width 0.1s linear; box-shadow: 0 0 12px color-mix(in srgb, var(--gradient-1) 50%, transparent); } /* Prose */ .prose-ebook { font-size: 1.0625rem; line-height: 1.88; } .prose-ebook h2 { font-family: var(--font-source-serif), Georgia, serif; font-size: clamp(1.4rem, 3.2vw, 1.75rem); font-weight: 500; letter-spacing: -0.025em; line-height: 1.25; margin-bottom: 0.5rem; color: var(--foreground); } .prose-ebook .chapter-lead { font-size: 0.9375rem; color: var(--muted); margin-bottom: 1.5rem; padding-bottom: 1.25rem; border-bottom: 1px solid var(--border); } .prose-ebook p { color: var(--prose); margin-bottom: 1.25rem; } .prose-ebook p:last-child { margin-bottom: 0; } .prose-ebook strong { color: var(--foreground); font-weight: 600; } .prose-ebook ul { margin: 1rem 0 1.35rem; padding-left: 1.35rem; list-style: disc; } .prose-ebook li { color: var(--prose); margin-bottom: 0.55rem; } .prose-ebook ol { margin: 1rem 0 1.35rem; padding-left: 1.35rem; list-style: decimal; } .prose-ebook blockquote { margin: 1.5rem 0; padding: 1rem 1.15rem 1rem 1.25rem; border-left: 3px solid var(--gradient-1); border-radius: 0 0.75rem 0.75rem 0; background: var(--callout-bg); border-top: 1px solid var(--callout-border); border-right: 1px solid var(--callout-border); border-bottom: 1px solid var(--callout-border); font-size: 0.98rem; color: var(--foreground); font-style: normal; } .prose-ebook blockquote p { margin: 0; color: inherit; } /* TOC active state */ .toc-link--active { background: color-mix(in srgb, var(--gradient-1) 12%, transparent); color: var(--foreground); font-weight: 600; } .toc-link--active .toc-index { background: linear-gradient(135deg, var(--gradient-1), var(--gradient-3)); color: white; } @media (prefers-reduced-motion: reduce) { .cover-float, .marquee-track, .mesh-bg::before, .mesh-bg::after, .mesh-orb { animation: none; } .btn-primary:hover, .btn-secondary:hover { transform: none; } }