-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstyle.css
More file actions
233 lines (207 loc) · 14.5 KB
/
Copy pathstyle.css
File metadata and controls
233 lines (207 loc) · 14.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
/* style.css */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root {
--bg: #ECF4E8;
--ink: #1A2F24;
--ink2: #3b5c4b;
--ink3: #69907c;
--a: #93BFC7;
--b: #CBF3BB;
--font-serif: 'Playfair Display', Georgia, serif;
--font-mono: 'Outfit', sans-serif;
}
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }
html { cursor: none; background: var(--bg); color: var(--ink); scroll-behavior: initial; }
body {
font-family: var(--font-mono);
font-size: 14px;
line-height: 1.6;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
}
/* LOADER */
.loader {
position: fixed; inset: 0; z-index: 99999;
background: var(--ink); color: var(--bg);
display: flex; align-items: center; justify-content: center;
}
.loader-text {
font-family: var(--font-serif); font-size: 24px; font-style: italic;
animation: pulse 1.5s ease infinite;
}
@keyframes pulse { 0%,100%{opacity:.5} 50%{opacity:1} }
/* CURSOR */
#c-ring {
position: fixed; top: 0; left: 0; z-index: 9999;
width: 32px; height: 32px; border: 1.5px solid rgba(26,47,36,0.6);
border-radius: 50%; pointer-events: none; transform: translate(-50%,-50%);
transition: width .25s ease-out, height .25s ease-out, border-color .3s, background .3s;
}
#c-dot {
position: fixed; top: 0; left: 0; z-index: 10000;
width: 5px; height: 5px; background: var(--ink); border-radius: 50%;
pointer-events: none; transform: translate(-50%,-50%);
}
body.hov #c-ring { width: 64px; height: 64px; background: rgba(26,47,36,0.08); border-color: transparent; }
body.hov #c-dot { opacity: 0; }
.grain {
position: fixed; inset: 0; z-index: 100; pointer-events: none;
opacity: 0.05; mix-blend-mode: multiply;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.page { position: relative; z-index: 1; }
.sec-pad { padding: 8rem 4rem; }
@media (max-width: 768px) { .sec-pad { padding: 5rem 1.5rem; } }
/* NAV */
.nav-main {
position: fixed; top: 0; width: 100%; z-index: 50;
display: flex; justify-content: space-between; align-items: center;
padding: 2rem 4rem; mix-blend-mode: difference; color: #fff;
}
.menu-toggle {
display: none; background: transparent; border: none; cursor: pointer;
padding: 10px; width: 44px; height: 44px; color: inherit;
flex-direction: column; justify-content: center; gap: 6px; z-index: 100;
}
.menu-toggle .bar {
display: block; width: 100%; height: 2px; background: currentColor;
transition: all 0.3s cubic-bezier(0.19, 1, 0.22, 1);
}
.menu-toggle.active .bar:nth-child(1) { transform: translateY(4px) rotate(45deg); }
.menu-toggle.active .bar:nth-child(2) { transform: translateY(-4px) rotate(-45deg); }
.mobile-menu-overlay {
position: fixed; inset: 0; background: var(--bg); color: var(--ink);
z-index: 45; display: flex; flex-direction: column; justify-content: center; align-items: center;
transform: translateY(-100%); transition: transform 0.6s cubic-bezier(0.77, 0, 0.175, 1);
}
.mobile-menu-overlay.open { transform: translateY(0); }
.mobile-nav-items { list-style: none; text-align: center; }
.mobile-nav-items li { margin-bottom: 2rem; overflow: hidden; }
.mobile-nav-items a {
font-family: var(--font-serif); font-size: 40px; color: inherit;
text-decoration: none; display: inline-block; transform: translateY(100%); transition: transform 0.6s cubic-bezier(0.77, 0, 0.175, 1);
transition-delay: 0s;
}
.mobile-menu-overlay.open .mobile-nav-items a { transform: translateY(0); transition-delay: 0.3s; }
.mobile-nav-items a:hover { color: var(--a); }
/* Hide cursor on coarse pointers */
@media (hover: none) and (pointer: coarse) {
#c-ring, #c-dot { display: none !important; }
*, html, body, a, button { cursor: auto !important; }
}
.nav-mark { font-family: var(--font-serif); font-size: 20px; font-style: italic; letter-spacing: 0.05em; }
.nav-items { display: flex; gap: 3rem; list-style: none; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; }
.nav-items a { color: inherit; text-decoration: none; position: relative; }
.nav-items a::after { content:''; position: absolute; left: 0; bottom: -4px; width: 0%; height: 1px; background: #fff; transition: width 0.3s ease; }
.nav-items a:hover::after { width: 100%; }
.nav-status { display: flex; align-items: center; gap: 8px; font-size: 10px; text-transform: uppercase; letter-spacing: 0.1em; }
.status-pip { width: 6px; height: 6px; border-radius: 50%; background: #4ade80; animation: blink 2s infinite; }
@keyframes blink { 0%,100%{opacity:1} 50%{opacity:0.3} }
/* WEBGL */
#gl { position: fixed; inset: 0; z-index: 0; pointer-events: none; width: 100vw; height: 100vh; opacity: 0; transition: opacity 2s ease; }
/* HERO */
#hero { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 0 4rem; position: relative; z-index: 2; }
.hero-split { display: grid; grid-template-columns: 1.15fr 1fr; gap: 6rem; width: 100%; max-width: 1300px; align-items: center; margin-top: 2rem;}
.hero-text-col { display: flex; flex-direction: column; }
.hero-top-text { font-family: var(--font-mono); font-size: 13px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink2); margin-bottom: 2rem; }
.hero-top-text::before { content: ''; display: inline-block; width: 40px; height: 1px; background: var(--a); margin-right: 15px; vertical-align: middle; }
.hero-huge-title { font-family: var(--font-serif); font-size: clamp(50px, 7vw, 120px); font-weight: 300; line-height: 1.05; letter-spacing: -0.02em; color: var(--ink); margin-bottom: 2rem; }
.h-line { overflow: hidden; display: flex; align-items: flex-end;}
.anim-word { display: inline-block; transform: translateY(110%); }
.hero-subtext { font-family: var(--font-mono); font-size: 16px; color: var(--ink3); max-width: 480px; line-height: 1.7; letter-spacing: 0.02em;}
.fade-in { opacity: 0; transform: translateY(20px); }
.hero-img-col { display: flex; justify-content: center; position: relative; perspective: 1000px; }
.hero-img-wrapper { position: relative; width: clamp(280px, 32vw, 420px); aspect-ratio: 0.85; border-radius: 200px; overflow: hidden; transform: scale(0) rotateY(-15deg); border: 1px solid rgba(26,47,36,0.1); box-shadow: -20px 40px 80px rgba(26,47,36,0.1); }
.hero-profile-pic { width: 100%; height: 100%; object-fit: cover; filter: grayscale(100%) contrast(1.05); transition: filter 0.8s, transform 0.8s; }
.hero-profile-pic:hover { filter: grayscale(0%) contrast(1); transform: scale(1.03); }
.scroll-down-tracker { position: absolute; bottom: 3rem; left: 4rem; opacity: 0; }
.sc-line { width: 1px; height: 60px; background: var(--ink); transform-origin: top; animation: scaleY 2s cubic-bezier(0.77, 0, 0.175, 1) infinite; }
@keyframes scaleY { 0% { transform: scaleY(0); } 50% { transform: scaleY(1); transform-origin: top; } 50.1% { transform-origin: bottom; } 100% { transform: scaleY(0); transform-origin: bottom; } }
/* ABOUT */
#about { background: var(--ink); color: var(--bg); }
.container { max-width: 1200px; margin: 0 auto; }
.about-text { font-family: var(--font-serif); font-weight: 300; font-size: clamp(28px, 4vw, 56px); line-height: 1.3; }
.about-text .word { opacity: 0.2; transition: opacity 0.4s; }
.about-stats { display: flex; gap: 5rem; margin-top: 6rem; border-top: 1px solid rgba(236,244,232,0.15); padding-top: 3rem; flex-wrap: wrap;}
.stat-n { font-family: var(--font-mono); font-size: 32px; margin-bottom: 0.5rem; }
.stat-l { font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; opacity: 0.6; }
.fade-up { opacity: 0; transform: translateY(30px); }
.download-link { color: inherit; text-decoration: none; display: flex; align-items: center; gap: 6px; transition: color 0.3s;}
.download-link:hover { color: var(--a); }
/* PROJECTS */
#projects { background: var(--bg); position: relative; padding-top: 8rem; }
.sec-lbl { font-size: 11px; letter-spacing: 0.15em; text-transform: uppercase; color: var(--ink2); margin-bottom: 2rem; }
.proj-header { padding-bottom: 2rem; max-width: 1200px; margin: 0 auto; }
.cards-container { position: relative; padding-bottom: 10vh; margin: 0 auto; width: 100%; max-width: 1200px; }
.card-sticky { position: sticky; top: 15vh; height: 75vh; width: 100%; display: flex; justify-content: center; margin-bottom: 10vh; }
.card-inner { width: 100%; height: 100%; background: #fff; border-radius: 24px; overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 20px 40px rgba(26,47,36,0.05); transform-origin: top; border: 1px solid rgba(26,47,36,0.1); }
.card-img-container { flex: 1.5; width: 100%; overflow: hidden; background: var(--bg1); position: relative;}
.card-img { width: 100%; height: 130%; object-fit: cover; position: absolute; top: -15%; }
.card-info { padding: 3rem 4rem; display: flex; flex-direction: column; justify-content: center; background: #fff; flex: 1;}
.card-meta { font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink3); margin-bottom: 1rem; }
.card-title { font-family: var(--font-serif); font-size: 48px; font-weight: 300; margin-bottom: 0.5rem; color: var(--ink); line-height: 1; }
.card-desc { font-size: 14px; color: var(--ink2); max-width: 600px; margin-top: 1rem;}
/* MARQUEE */
#skills { padding: 8rem 0; overflow: hidden; background: var(--ink); color: var(--bg); }
.marquee-wrapper { display: flex; width: 100%; overflow: hidden; padding: 2rem 0; }
.marquee { white-space: nowrap; display: flex; width: max-content; }
.marquee-content { display: flex; align-items: center; gap: 8rem; padding-right: 8rem; animation: scrollX 30s linear infinite; }
.marquee-wrapper.reverse .marquee-content { animation-direction: reverse; animation-duration: 35s; }
.marquee-content img { height: 70px; filter: grayscale(100%) brightness(1.5); opacity: 0.6; transition: filter 0.4s, opacity 0.4s, transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); cursor: none; }
.marquee-content img:hover { filter: grayscale(0%) brightness(1); opacity: 1; transform: scale(1.3); }
@keyframes scrollX { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.marquee-divider { height: 1px; background: rgba(236,244,232,0.1); width: 100%; margin: 2rem 0;}
.txt { font-family: var(--font-serif); font-size: 6vw; font-style: italic; font-weight: 300; }
.bull { font-size: 3vw; margin: 0 1rem; opacity: 0.5; color: var(--a); }
/* CONTACT */
#contact { background: var(--bg); min-height: 80vh; display: flex; align-items: center; }
.contact-split { display: grid; grid-template-columns: 1fr 1fr; gap: 6rem; width: 100%; }
.contact-huge { font-family: var(--font-serif); font-size: clamp(60px, 8vw, 120px); font-weight: 300; line-height: 1; margin-bottom: 2rem;}
.hover-link { color: var(--ink); text-decoration: none; position: relative; }
.hover-link::after { content:''; position: absolute; left: 0; bottom: 0; width: 100%; height: 2px; background: var(--ink); transform: scaleX(0); transform-origin: right; transition: transform 0.6s cubic-bezier(0.19, 1, 0.22, 1); }
.hover-link:hover::after { transform: scaleX(1); transform-origin: left; }
.s-link { display: inline-flex; align-items: center; justify-content: center; margin-right: 1rem; width: 48px; height: 48px; color: var(--ink); text-decoration: none; border: 1px solid rgba(26,47,36,0.2); border-radius: 50%; transition: all 0.3s cubic-bezier(.22,1,.36,1); }
.s-link:hover { background: var(--ink); color: var(--bg); border-color: var(--ink); transform: translateY(-4px); }
.c-form { display: flex; flex-direction: column; gap: 2.5rem; opacity: 0; transform: translateY(20px);}
.f-in { width: 100%; background: transparent; border: none; border-bottom: 1px solid rgba(26,47,36,0.2); padding: 1rem 0; font-family: var(--font-mono); font-size: 16px; color: var(--ink); outline: none; transition: border-color 0.3s; }
.f-in:focus { border-color: var(--ink); }
.f-in::placeholder { color: var(--ink3); }
.f-txt { resize: vertical; min-height: 100px; }
.btn-submit { align-self: flex-start; background: transparent; border: none; font-family: var(--font-mono); font-size: 14px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--ink); display: flex; align-items: center; gap: 10px; cursor: none; position: relative; padding: 1rem 0; outline: none; }
.btn-submit::before { content:''; position: absolute; left: 0; bottom: 0; width: 100%; height: 1px; background: var(--ink); transform: scaleX(0); transform-origin: right; transition: transform 0.4s; }
.btn-submit:hover::before { transform: scaleX(1); transform-origin: left; }
.arr { transition: transform 0.3s; }
.btn-submit:hover .arr { transform: translate(4px, -4px); }
/* FOOTER */
.ftr { padding: 3rem 4rem; display: flex; justify-content: space-between; border-top: 1px solid rgba(26,47,36,0.1); font-size: 10px; text-transform: uppercase; letter-spacing: 0.1nem; color: var(--ink3); background: var(--bg);}
@media (max-width: 900px) {
.nav-items, .nav-status { display: none; }
.menu-toggle { display: flex; }
.nav-main { padding: 1.5rem; transition: mix-blend-mode 0s 0.6s, color 0.6s; }
.nav-main.menu-open { mix-blend-mode: normal; color: var(--ink); transition: mix-blend-mode 0s 0s, color 0.6s; }
#hero { padding: 8rem 1.5rem 0; }
.hero-split { grid-template-columns: 1fr; gap: 4rem; text-align: center; }
.hero-text-col { align-items: center; }
.hero-top-text::before { display: none; }
.hero-huge-title { font-size: clamp(40px, 12vw, 80px); }
.hero-subtext { max-width: 100%; }
.hero-img-wrapper { width: clamp(240px, 60vw, 320px); margin: 0 auto; }
.scroll-down-tracker { display: none; }
.contact-split { grid-template-columns: 1fr; gap: 3rem;}
.card-sticky { padding: 0 1.5rem; height: auto; margin-bottom: 4rem; position: relative; top: 0; }
.card-inner { flex-direction: column; box-shadow: none; border: none; background: transparent; }
.card-img-container { height: 400px; border-radius: 24px; overflow: hidden; margin-bottom: 2rem;}
.card-info { padding: 0; background: transparent; }
.cards-container { padding-bottom: 4rem; }
.ftr { padding: 2rem 1.5rem; flex-direction: column; gap: 1rem; text-align: center; }
.sec-pad { padding: 5rem 1.5rem; }
.about-stats { gap: 2rem; flex-direction: column; align-items: center; text-align: center; }
}
@media (max-width: 480px) {
.hero-huge-title { font-size: clamp(36px, 10vw, 50px); }
.card-title { font-size: 32px; }
.contact-huge { font-size: clamp(40px, 8vw, 60px); }
}