-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstyles.css
More file actions
234 lines (218 loc) · 13.4 KB
/
Copy pathstyles.css
File metadata and controls
234 lines (218 loc) · 13.4 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
234
/* ============================================================
Pavan Dharma Adapa — portfolio
Hand-written CSS. No framework, no external fonts, no CDN.
Rebuilt 2026-08-26: warm light base, editorial serif display,
asymmetric hero, work as a numbered list rather than a card grid.
============================================================ */
:root{
--serif: Georgia, "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, "Times New Roman", serif;
--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
--max: 1120px;
--t: 200ms cubic-bezier(.22,.61,.36,1);
/* warm paper, not clinical white */
--paper:#faf9f6; --paper-2:#f3f1ec; --card:#fffefb;
--line:#e6e2d9; --line-2:#d3cec2;
--ink:#16191c; --ink-2:#3f474e; --muted:#6b7280;
--accent:#0f5f57; --accent-2:#0b423d; --accent-soft:#e8f1ef;
--gold:#8a6d3b;
--shadow: 0 1px 2px rgba(30,26,20,.04), 0 12px 34px rgba(30,26,20,.07);
}
@media (prefers-color-scheme:dark){
:root:not([data-theme="light"]){
--paper:#101314; --paper-2:#161a1c; --card:#171c1e;
--line:#252c2f; --line-2:#36403f;
--ink:#eceae4; --ink-2:#bcc3c2; --muted:#8d9794;
--accent:#6bc7b6; --accent-2:#9adbcd; --accent-soft:rgba(107,199,182,.12);
--gold:#c9a86a;
--shadow: 0 1px 2px rgba(0,0,0,.4), 0 14px 38px rgba(0,0,0,.34);
}
}
:root[data-theme="dark"]{
--paper:#101314; --paper-2:#161a1c; --card:#171c1e;
--line:#252c2f; --line-2:#36403f;
--ink:#eceae4; --ink-2:#bcc3c2; --muted:#8d9794;
--accent:#6bc7b6; --accent-2:#9adbcd; --accent-soft:rgba(107,199,182,.12);
--gold:#c9a86a;
--shadow: 0 1px 2px rgba(0,0,0,.4), 0 14px 38px rgba(0,0,0,.34);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){
html{scroll-behavior:auto}
*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}
body{margin:0;background:var(--paper);color:var(--ink);
font:17px/1.65 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.wrap{max-width:var(--max);margin:0 auto;padding:0 28px}
@media(max-width:600px){.wrap{padding:0 20px}}
a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:3px}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
.skip{position:absolute;left:-9999px}
.skip:focus{left:14px;top:14px;z-index:99;background:var(--card);padding:11px 18px;border-radius:10px;border:1px solid var(--line)}
img{max-width:100%;display:block}
/* ---------- header ---------- */
.site{position:sticky;top:0;z-index:30;
background:color-mix(in srgb,var(--paper) 82%,transparent);
backdrop-filter:saturate(1.7) blur(12px);border-bottom:1px solid var(--line)}
.site .wrap{display:flex;align-items:center;gap:26px;height:64px}
.brand{display:flex;align-items:center;gap:11px;margin-right:auto;text-decoration:none;color:var(--ink)}
.brand img{width:32px;height:32px;border-radius:50%;object-fit:cover;
border:1px solid var(--line-2)}
.brand b{font:600 15.5px/1 var(--sans);letter-spacing:-.01em}
.brand span{display:block;font-size:12px;color:var(--muted);margin-top:3px;letter-spacing:.02em}
.site nav{display:flex;gap:26px}
.site nav a{color:var(--ink-2);text-decoration:none;font-size:14.5px;transition:color var(--t)}
.site nav a:hover{color:var(--accent)}
/* Below 800px the nav used to be display:none with nothing in its place, so
Experience/Skills/Education were unreachable except by scrolling the whole
page. It now becomes a horizontally scrollable strip: no JS, no toggle
state to get stuck, nothing that can fail. */
@media(max-width:800px){
.site .wrap{flex-wrap:wrap;height:auto;padding-top:10px;padding-bottom:0;gap:12px}
.brand span span{display:none}
.site nav{order:3;flex:1 0 100%;gap:0;overflow-x:auto;scrollbar-width:none;
-webkit-overflow-scrolling:touch;margin:0 -20px;padding:0 20px;
border-top:1px solid var(--line)}
.site nav::-webkit-scrollbar{display:none}
.site nav a{white-space:nowrap;padding:13px 14px;font-size:14px}
}
.themeb{border:1px solid var(--line);background:var(--card);color:var(--ink-2);
width:36px;height:36px;border-radius:10px;cursor:pointer;display:grid;place-items:center;transition:var(--t)}
.themeb:hover{border-color:var(--line-2);color:var(--ink)}
/* ---------- hero ---------- */
.hero{padding:88px 0 0}
.hero-grid{display:grid;grid-template-columns:1.35fr .65fr;gap:60px;align-items:center}
@media(max-width:900px){.hero-grid{grid-template-columns:1fr;gap:38px}}
.eyebrow{display:inline-flex;align-items:center;gap:9px;font-size:13px;font-weight:600;
letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin:0 0 24px}
.eyebrow::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);
box-shadow:0 0 0 4px var(--accent-soft)}
h1{font:400 clamp(40px,6.4vw,68px)/1.04 var(--serif);letter-spacing:-.022em;margin:0 0 26px;color:var(--ink)}
h1 em{font-style:italic;color:var(--accent)}
.lede{font-size:clamp(17.5px,2vw,20px);line-height:1.6;color:var(--ink-2);max-width:56ch;margin:0 0 16px}
.lede b{color:var(--ink);font-weight:600}
.sub{font-size:15.5px;color:var(--muted);max-width:58ch;margin:0 0 32px;line-height:1.65}
/* figure carries a UA margin of 1em 40px, which was eating 80px of the column */
.portrait{position:relative;justify-self:center;margin:0}
/* height:auto is required or the height="800" attribute wins over aspect-ratio */
.portrait img{width:min(310px,72vw);height:auto;aspect-ratio:1;object-fit:cover;border-radius:22px;
box-shadow:var(--shadow);border:1px solid var(--line)}
.portrait::after{content:"";position:absolute;inset:-14px -14px 26px 26px;border-radius:26px;
border:1px solid var(--line-2);z-index:-1}
.cta{display:flex;flex-wrap:wrap;gap:11px;margin-bottom:18px}
.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 20px;border-radius:11px;
border:1px solid var(--line);background:var(--card);color:var(--ink);
text-decoration:none;font-size:15px;font-weight:530;transition:var(--t)}
.btn:hover{border-color:var(--line-2);transform:translateY(-2px);box-shadow:var(--shadow)}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}
:root[data-theme="dark"] .btn-primary,
:root:not([data-theme="light"]) .btn-primary{color:#0d1a18}
@media (prefers-color-scheme:light){:root:not([data-theme="dark"]) .btn-primary{color:#fff}}
.btn-primary:hover{background:var(--accent-2);border-color:var(--accent-2)}
.cvline{font-size:14px;color:var(--muted);margin:0}
/* Two resume lines now (health/research and data/software). .cvline is margin:0,
so without this they collide. */
.cvline + .cvline{margin-top:6px}
.cvline a{margin-right:16px;white-space:nowrap;display:inline-block}
/* On a phone these were 23px tall — under the 44px tap-target guideline, and
they are the most important action on the page. */
@media(max-width:600px){
.cvline{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.cvline a{margin-right:0;min-height:44px;display:inline-flex;align-items:center;
padding:0 14px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
}
/* ---------- proof ---------- */
.proof{margin-top:66px;padding:30px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.proof-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:30px}
.stat .n{font:400 clamp(27px,3.6vw,36px)/1 var(--serif);letter-spacing:-.02em;
font-variant-numeric:tabular-nums;color:var(--ink)}
.stat .l{font-size:13.5px;color:var(--muted);margin-top:8px;line-height:1.45}
/* ---------- sections ---------- */
/* The sticky header is 64px. Section padding happens to absorb it today, but
that is luck, not design - make it explicit. */
section[id],#top{scroll-margin-top:80px}
section{padding:82px 0}
.sec-h{margin-bottom:14px}
.sec-h .k{font-size:12.5px;font-weight:650;letter-spacing:.13em;text-transform:uppercase;color:var(--accent);display:block;margin-bottom:12px}
.sec-h h2{font:400 clamp(27px,3.4vw,38px)/1.15 var(--serif);letter-spacing:-.02em;margin:0}
.sec-intro{font-size:17px;color:var(--ink-2);max-width:62ch;margin:14px 0 42px;line-height:1.65}
/* ---------- work: numbered editorial entries ---------- */
.work{display:grid;gap:0}
.entry{display:grid;grid-template-columns:64px 1fr;gap:30px;
padding:40px 0;border-top:1px solid var(--line)}
.entry:first-child{border-top:none;padding-top:6px}
@media(max-width:760px){.entry{grid-template-columns:1fr;gap:14px}}
.entry .idx{font:400 26px/1 var(--serif);color:var(--line-2);padding-top:6px;font-variant-numeric:tabular-nums}
.entry h3{font:600 22px/1.3 var(--sans);letter-spacing:-.015em;margin:0 0 6px}
.entry .src{font:400 12.5px/1.5 var(--mono);color:var(--muted);margin:0 0 16px}
.entry .what{color:var(--ink-2);margin:0 0 20px;max-width:70ch;font-size:16.5px}
.entry .what b{color:var(--ink);font-weight:600}
.finding{background:var(--accent-soft);border-left:3px solid var(--accent);
padding:16px 20px;border-radius:0 10px 10px 0;margin:0 0 18px;font-size:16px;line-height:1.6;max-width:72ch}
.finding b{font-variant-numeric:tabular-nums;color:var(--ink)}
.limit{font-size:14.5px;color:var(--muted);margin:0 0 20px;padding-left:18px;
border-left:2px solid var(--line-2);line-height:1.6;max-width:70ch}
.limit b{color:var(--ink-2);font-weight:600}
.tags{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 20px;padding:0;list-style:none}
.tags li{font:400 12px/1.6 var(--mono);color:var(--muted);
background:var(--paper-2);border:1px solid var(--line);padding:3px 10px;border-radius:7px}
.links{display:flex;flex-wrap:wrap;gap:10px;margin:0}
.links a{font-size:14px;padding:9px 17px;border-radius:10px;text-decoration:none;
border:1px solid var(--line);color:var(--ink);background:var(--card);font-weight:530;transition:var(--t)}
.links a:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}
.links a.live{background:var(--accent);border-color:var(--accent);color:#fff}
:root[data-theme="dark"] .links a.live,
:root:not([data-theme="light"]) .links a.live{color:#0d1a18}
@media (prefers-color-scheme:light){:root:not([data-theme="dark"]) .links a.live{color:#fff}}
.links a.live:hover{background:var(--accent-2);border-color:var(--accent-2)}
/* ---------- experience ---------- */
.roles-list{display:grid}
.role{display:grid;grid-template-columns:184px 1fr;gap:34px;padding:32px 0;border-top:1px solid var(--line)}
.role:first-child{border-top:none;padding-top:6px}
@media(max-width:760px){.role{grid-template-columns:1fr;gap:8px}}
.role .when{font-size:14px;color:var(--muted);font-variant-numeric:tabular-nums;padding-top:5px}
.role h3{font:600 18.5px/1.35 var(--sans);margin:0 0 4px;letter-spacing:-.012em}
.role .org{font-size:15px;color:var(--accent);margin:0 0 14px}
.role ul{margin:0;padding-left:20px;color:var(--ink-2);font-size:16px}
.role li{margin-bottom:9px}
.role li b{color:var(--ink);font-variant-numeric:tabular-nums;font-weight:600}
/* ---------- skills ---------- */
.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(262px,1fr));gap:20px}
.skill{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:24px}
.skill h3{font-size:12.5px;font-weight:650;letter-spacing:.07em;text-transform:uppercase;
color:var(--muted);margin:0 0 14px}
.skill ul{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:7px}
.skill li{font-size:14px;color:var(--ink-2);background:var(--paper-2);
border:1px solid var(--line);padding:5px 11px;border-radius:8px}
.note{grid-column:1/-1;font-size:14.5px;color:var(--muted);background:transparent;
border:1px dashed var(--line-2);border-radius:14px;padding:18px 22px;line-height:1.65}
.note b{color:var(--ink-2)}
/* ---------- education ---------- */
.edu-row{display:grid;grid-template-columns:184px 1fr;gap:34px;align-items:baseline;
padding:18px 0;border-top:1px solid var(--line)}
.edu-row:first-child{border-top:none}
@media(max-width:760px){.edu-row{grid-template-columns:1fr;gap:4px}}
.edu-row .when{font-size:14px;color:var(--muted);font-variant-numeric:tabular-nums}
.edu-row b{font-weight:600;font-size:17px}
.edu-row .org{color:var(--ink-2);font-size:15.5px;margin-top:2px}
.pub{background:var(--card);border:1px solid var(--line);border-radius:14px;
padding:24px;margin-top:26px;line-height:1.65}
.pub .tag{display:inline-block;font-size:11.5px;font-weight:650;letter-spacing:.07em;
text-transform:uppercase;color:var(--gold);border:1px solid color-mix(in srgb,var(--gold) 40%,transparent);
padding:3px 10px;border-radius:7px;margin-bottom:12px}
.pub .title{font:400 19px/1.4 var(--serif);color:var(--ink);margin-bottom:8px}
.pub .authors{color:var(--ink-2);font-size:15px}
.pub .authors u{text-decoration:none;font-weight:650;color:var(--ink)}
/* ---------- contact ---------- */
.contact{background:var(--card);border:1px solid var(--line);border-radius:22px;
padding:60px 48px;text-align:center;box-shadow:var(--shadow)}
.contact h2{font:400 clamp(26px,3.4vw,36px)/1.2 var(--serif);letter-spacing:-.02em;margin:0 0 16px}
.contact p{color:var(--ink-2);max-width:54ch;margin:0 auto 30px;font-size:16.5px}
.contact .cta{justify-content:center;margin-bottom:0}
@media(max-width:600px){.contact{padding:40px 24px}}
/* ---------- footer ---------- */
footer{border-top:1px solid var(--line);padding:34px 0 54px;color:var(--muted);font-size:14px}
footer .wrap{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;align-items:center}
footer a{color:var(--muted)}
footer a:hover{color:var(--accent)}