|
1 | 1 | @import "tailwindcss"; |
2 | 2 |
|
3 | 3 | @theme { |
4 | | - --color-navy: #0a192f; |
5 | | - --color-navy-light: #112240; |
6 | | - --color-navy-lightest: #233554; |
7 | | - --color-slate: #8892b0; |
8 | | - --color-slate-light: #a8b2d1; |
9 | | - --color-slate-lightest: #ccd6f6; |
10 | | - --color-white: #e6f1ff; |
11 | | - --color-green: #64ffda; |
12 | | - --color-green-tint: rgba(100, 255, 218, 0.1); |
13 | | - --font-sans: "Inter", "San Francisco", "SF Pro Text", -apple-system, system-ui, sans-serif; |
14 | | - --font-mono: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", monospace; |
| 4 | + --color-bg: #09090b; |
| 5 | + --color-surface: #111113; |
| 6 | + --color-elevated: #1a1a1e; |
| 7 | + --color-border: #1f1f23; |
| 8 | + --color-border-hover: #2e2e35; |
| 9 | + --color-text: #ededed; |
| 10 | + --color-muted: #888888; |
| 11 | + --color-dim: #555555; |
| 12 | + --color-green: #4ade80; |
| 13 | + --color-green-dim: #22c55e; |
| 14 | + --color-green-tint: rgba(74, 222, 128, 0.08); |
| 15 | + --color-green-glow: rgba(74, 222, 128, 0.12); |
| 16 | + --color-purple: #c084fc; |
| 17 | + --color-cyan: #22d3ee; |
| 18 | + --color-yellow: #fbbf24; |
| 19 | + --color-rose: #fb7185; |
| 20 | + --font-sans: "Inter", -apple-system, system-ui, sans-serif; |
| 21 | + --font-mono: "JetBrains Mono", "Fira Code", monospace; |
15 | 22 | } |
16 | 23 |
|
17 | | -html { |
18 | | - scroll-behavior: smooth; |
19 | | -} |
| 24 | +html { scroll-behavior: smooth; } |
20 | 25 |
|
21 | 26 | body { |
22 | | - background-color: var(--color-navy); |
23 | | - color: var(--color-slate); |
| 27 | + background-color: var(--color-bg); |
| 28 | + color: var(--color-muted); |
24 | 29 | font-family: var(--font-sans); |
25 | 30 | -webkit-font-smoothing: antialiased; |
26 | | - -moz-osx-font-smoothing: grayscale; |
27 | 31 | } |
28 | 32 |
|
29 | 33 | ::selection { |
30 | | - background-color: var(--color-navy-lightest); |
31 | | - color: var(--color-slate-lightest); |
| 34 | + background-color: rgba(74, 222, 128, 0.2); |
| 35 | + color: var(--color-text); |
| 36 | +} |
| 37 | + |
| 38 | +::-webkit-scrollbar { width: 6px; } |
| 39 | +::-webkit-scrollbar-track { background: transparent; } |
| 40 | +::-webkit-scrollbar-thumb { background-color: var(--color-border-hover); border-radius: 3px; } |
| 41 | + |
| 42 | +/* ── Noise texture ── */ |
| 43 | +body::before { |
| 44 | + content: ''; |
| 45 | + position: fixed; |
| 46 | + inset: 0; |
| 47 | + opacity: 0.02; |
| 48 | + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); |
| 49 | + pointer-events: none; |
| 50 | + z-index: 0; |
| 51 | +} |
| 52 | + |
| 53 | +/* ── Scroll progress ── */ |
| 54 | +.scroll-bar { |
| 55 | + transform-origin: left; |
| 56 | + background: linear-gradient(90deg, var(--color-green), var(--color-green-dim)); |
| 57 | +} |
| 58 | + |
| 59 | +/* ── Blinking cursor ── */ |
| 60 | +@keyframes blink { |
| 61 | + 0%, 100% { opacity: 1; } |
| 62 | + 50% { opacity: 0; } |
| 63 | +} |
| 64 | +.typing-cursor { |
| 65 | + display: inline-block; |
| 66 | + width: 2px; |
| 67 | + height: 1.15em; |
| 68 | + background: var(--color-green); |
| 69 | + margin-left: 1px; |
| 70 | + animation: blink 0.75s step-end infinite; |
| 71 | + vertical-align: text-bottom; |
| 72 | +} |
| 73 | + |
| 74 | +/* ── Fade in ── */ |
| 75 | +.reveal { |
| 76 | + opacity: 0; |
| 77 | + transform: translateY(24px); |
| 78 | + transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1), transform 0.7s cubic-bezier(0.16, 1, 0.3, 1); |
| 79 | +} |
| 80 | +.reveal.shown { |
| 81 | + opacity: 1; |
| 82 | + transform: none; |
| 83 | +} |
| 84 | + |
| 85 | +/* ── Card ── */ |
| 86 | +.card { |
| 87 | + background: var(--color-surface); |
| 88 | + border: 1px solid var(--color-border); |
| 89 | + border-radius: 12px; |
| 90 | + transition: border-color 0.3s, box-shadow 0.3s, background-color 0.3s; |
| 91 | +} |
| 92 | +.card:hover, .card-glow:hover { |
| 93 | + border-color: rgba(74, 222, 128, 0.25); |
| 94 | + box-shadow: 0 0 40px rgba(74, 222, 128, 0.04); |
| 95 | + background: var(--color-elevated); |
32 | 96 | } |
33 | 97 |
|
34 | | -::-webkit-scrollbar { |
35 | | - width: 12px; |
| 98 | +/* ── Code block ── */ |
| 99 | +.code-block { |
| 100 | + background: var(--color-surface); |
| 101 | + border: 1px solid var(--color-border); |
| 102 | + border-radius: 12px; |
| 103 | + overflow: hidden; |
| 104 | +} |
| 105 | +.code-block .titlebar { |
| 106 | + background: var(--color-elevated); |
| 107 | + border-bottom: 1px solid var(--color-border); |
| 108 | + padding: 10px 16px; |
| 109 | + display: flex; |
| 110 | + align-items: center; |
| 111 | + gap: 8px; |
36 | 112 | } |
| 113 | +.code-block .dots { display: flex; gap: 6px; } |
| 114 | +.code-block .dot { width: 10px; height: 10px; border-radius: 50%; } |
| 115 | +.code-block .dot-red { background: #ff5f57; } |
| 116 | +.code-block .dot-yellow { background: #febc2e; } |
| 117 | +.code-block .dot-green { background: #28c840; } |
37 | 118 |
|
38 | | -::-webkit-scrollbar-track { |
39 | | - background: var(--color-navy); |
| 119 | +/* ── Tag ── */ |
| 120 | +.tag { |
| 121 | + font-family: var(--font-mono); |
| 122 | + font-size: 11px; |
| 123 | + padding: 3px 10px; |
| 124 | + border-radius: 6px; |
| 125 | + background: var(--color-green-tint); |
| 126 | + color: var(--color-green); |
| 127 | + border: 1px solid rgba(74, 222, 128, 0.12); |
| 128 | + transition: all 0.2s; |
| 129 | + white-space: nowrap; |
40 | 130 | } |
41 | 131 |
|
42 | | -::-webkit-scrollbar-thumb { |
43 | | - background-color: var(--color-navy-lightest); |
44 | | - border: 3px solid var(--color-navy); |
45 | | - border-radius: 10px; |
| 132 | +/* ── Experience entry ── */ |
| 133 | +.exp-entry { |
| 134 | + border-left: 2px solid var(--color-border); |
| 135 | + transition: border-color 0.3s; |
| 136 | +} |
| 137 | +.exp-entry:hover { |
| 138 | + border-left-color: var(--color-green); |
| 139 | +} |
| 140 | + |
| 141 | +/* ── Terminal ── */ |
| 142 | +.terminal-backdrop { |
| 143 | + background: rgba(0, 0, 0, 0.8); |
| 144 | + backdrop-filter: blur(24px); |
| 145 | +} |
| 146 | +.terminal-body::-webkit-scrollbar { width: 4px; } |
| 147 | +.terminal-body::-webkit-scrollbar-thumb { background-color: var(--color-border-hover); border-radius: 2px; } |
| 148 | + |
| 149 | +/* ── Glow dot ── */ |
| 150 | +@keyframes pulse-ring { |
| 151 | + 0% { transform: scale(1); opacity: 0.6; } |
| 152 | + 100% { transform: scale(2.5); opacity: 0; } |
| 153 | +} |
| 154 | +.glow-dot::before { |
| 155 | + content: ''; |
| 156 | + position: absolute; |
| 157 | + inset: 0; |
| 158 | + border-radius: 50%; |
| 159 | + background: var(--color-green); |
| 160 | + animation: pulse-ring 2s ease-out infinite; |
46 | 161 | } |
0 commit comments