1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 <title>Adrien Poly</title> 7 8 <link rel="icon" href="assets/favicon.ico" sizes="any" /> 9 <link rel="icon" type="image/png" sizes="32x32" href="assets/favicon-32x32.png" /> 10 <link rel="icon" type="image/png" sizes="16x16" href="assets/favicon-16x16.png" /> 11 <link rel="apple-touch-icon" sizes="180x180" href="assets/apple-touch-icon.png" /> 12 <link rel="manifest" href="assets/site.webmanifest" /> 13 <meta name="theme-color" content="#0b0b0c" /> 14 15 <style> 16 @font-face { 17 font-family: "Geist"; 18 src: url("https://cdn.jsdelivr.net/npm/[email protected]/dist/fonts/geist-sans/Geist-Variable.woff2") 19 format("woff2"); 20 font-weight: 100 900; 21 font-style: normal; 22 font-display: swap; 23 } 24 25 :root { 26 --accent: #b3211c; 27 } 28 29 *, 30 *::before, 31 *::after { 32 box-sizing: border-box; 33 } 34 35 html { 36 height: 100%; 37 overflow: hidden; 38 } 39 40 html, 41 body { 42 margin: 0; 43 background: #0b0b0c; 44 font-family: "Geist", sans-serif; 45 } 46 47 body { 48 height: 100%; 49 min-height: 100dvh; 50 overflow: hidden; 51 display: flex; 52 align-items: stretch; 53 justify-content: center; 54 } 55 56 .v5-root { 57 position: relative; 58 width: 100%; 59 max-width: 1280px; 60 height: 100dvh; 61 padding: clamp(32px, 5vh, 64px) clamp(24px, 4vw, 64px); 62 background: #0b0b0c; 63 color: #e8e6e0; 64 display: flex; 65 flex-direction: column; 66 justify-content: center; 67 align-items: center; 68 overflow: hidden; 69 } 70 71 .v5-bg { 72 position: absolute; 73 inset: 0; 74 background: radial-gradient( 75 900px 500px at 50% 30%, 76 color-mix(in srgb, var(--accent, #b3211c) 8%, transparent), 77 transparent 70% 78 ); 79 pointer-events: none; 80 } 81 82 .v5-tag { 83 position: relative; 84 z-index: 1; 85 font-family: "Geist", sans-serif; 86 font-weight: 380; 87 font-size: 34px; 88 line-height: 1.36; 89 letter-spacing: -0.018em; 90 color: #e8e6e0; 91 max-width: 880px; 92 text-align: center; 93 margin: 0; 94 text-wrap: balance; 95 } 96 97 .v5-tag b { 98 font-weight: 560; 99 color: #fafaf7; 100 position: relative; 101 } 102 103 .v5-tag b::after { 104 content: ""; 105 position: absolute; 106 left: 0; 107 right: 0; 108 bottom: -4px; 109 height: 2px; 110 border-radius: 2px; 111 background: var(--accent, #b3211c); 112 } 113 114 .v5-tag .v5-mute { 115 color: #9a958a; 116 font-style: normal; 117 } 118 119 .v5-tag .v5-mute em { 120 font-style: normal; 121 color: var(--accent, #b3211c); 122 } 123 124 .v5-links { 125 position: relative; 126 z-index: 1; 127 display: flex; 128 gap: 28px; 129 margin-top: clamp(32px, 4vh, 48px); 130 font-size: 14px; 131 letter-spacing: 0.01em; 132 flex-shrink: 0; 133 } 134 135 .v5-links a { 136 color: #e8e6e0; 137 display: inline-flex; 138 align-items: center; 139 gap: 8px; 140 position: relative; 141 padding-bottom: 3px; 142 text-decoration: none; 143 transition: color 0.2s; 144 } 145 146 .v5-links a::before { 147 content: ""; 148 width: 5px; 149 height: 5px; 150 border-radius: 50%; 151 background: var(--accent, #b3211c); 152 opacity: 0; 153 transition: opacity 0.2s; 154 flex-shrink: 0; 155 } 156 157 .v5-links a::after { 158 content: ""; 159 position: absolute; 160 bottom: 0; 161 left: 13px; 162 right: 0; 163 height: 1px; 164 background: #3a3833; 165 transition: background 0.2s; 166 } 167 168 .v5-links a:hover { 169 color: #fafaf7; 170 } 171 172 .v5-links a:hover::before { 173 opacity: 1; 174 } 175 176 .v5-links a:hover::after { 177 background: var(--accent, #b3211c); 178 } 179 180 .v5-projects { 181 position: relative; 182 z-index: 1; 183 width: 100%; 184 max-width: 960px; 185 margin-top: clamp(36px, 5vh, 56px); 186 display: flex; 187 flex-direction: column; 188 align-items: center; 189 gap: 20px; 190 flex-shrink: 0; 191 } 192 193 .v5-projects-heading { 194 margin: 0; 195 font-size: 11px; 196 font-weight: 500; 197 letter-spacing: 0.08em; 198 color: #9a958a; 199 } 200 201 .v5-project-list { 202 margin: 0; 203 padding: 0; 204 list-style: none; 205 width: 100%; 206 display: grid; 207 grid-template-columns: repeat(3, 1fr); 208 gap: 16px; 209 } 210 211 .v5-project-card { 212 display: flex; 213 flex-direction: column; 214 gap: 8px; 215 height: 100%; 216 padding: 20px; 217 border: 1px solid #2a2824; 218 border-radius: 10px; 219 background: color-mix(in srgb, #fafaf7 2.5%, #0b0b0c); 220 text-decoration: none; 221 transition: border-color 0.2s, background 0.2s; 222 } 223 224 .v5-project-card:hover { 225 border-color: color-mix(in srgb, var(--accent, #b3211c) 50%, #2a2824); 226 background: color-mix(in srgb, var(--accent, #b3211c) 5%, #0b0b0c); 227 } 228 229 .v5-project-card h3 { 230 margin: 0; 231 font-size: 15px; 232 font-weight: 500; 233 letter-spacing: -0.01em; 234 color: #fafaf7; 235 transition: color 0.2s; 236 } 237 238 .v5-project-card:hover h3 { 239 color: var(--accent, #b3211c); 240 } 241 242 .v5-project-card p { 243 margin: 0; 244 font-size: 13px; 245 line-height: 1.55; 246 color: #9a958a; 247 letter-spacing: 0.005em; 248 } 249 250 @media (max-width: 760px) { 251 html, 252 body { 253 overflow: auto; 254 } 255 256 .v5-root { 257 height: auto; 258 min-height: 100dvh; 259 overflow: visible; 260 justify-content: flex-start; 261 padding-top: 48px; 262 padding-bottom: 48px; 263 } 264 265 .v5-project-list { 266 grid-template-columns: 1fr; 267 } 268 } 269 </style> 270 </head> 271 <body> 272 <main class="v5-root"> 273 <div class="v5-bg" aria-hidden="true"></div> 274 275 <p class="v5-tag"> 276 I'm <b>Adrien Poly</b>, a CTO and product builder based in Bordeaux. I build digital products with a mix of code, product thinking, and design sensitivity,
277 <span class="v5-mute">and contribute to <em>open source</em> projects in the Ruby and Rails community.</span> 278 </p> 279 280 <nav class="v5-links" aria-label="Social links"> 281 <a href="https://github.com/adrienpoly" target="_blank" rel="noopener noreferrer">GitHub</a> 282 <a href="https://x.com/adrienpoly" target="_blank" rel="noopener noreferrer">Twitter</a> 283 <a href="https://linkedin.com/in/adrienpoly" target="_blank" rel="noopener noreferrer">LinkedIn</a> 284 </nav> 285 286 <section class="v5-projects" aria-labelledby="projects-heading"> 287 <h2 class="v5-projects-heading" id="projects-heading">Currently working on</h2> 288 <ul class="v5-project-list"> 289 <li> 290 <a class="v5-project-card" href="https://plume-app.co" target="_blank" rel="noopener noreferrer"> 291 <h3>Plume</h3> 292 <p>Helping students become better writers through creative and structured writing experiences.</p> 293 </a> 294 </li> 295 <li> 296 <a class="v5-project-card" href="https://rubyevents.org" target="_blank" rel="noopener noreferrer"> 297 <h3>RubyEvents.org</h3> 298 <p>Making Ruby talks, conferences, and community events easier to discover, watch, and revisit.</p> 299 </a> 300 </li> 301 <li> 302 <a class="v5-project-card" href="https://listdeco.com" target="_blank" rel="noopener noreferrer"> 303 <h3>ListDeco.com</h3> 304 <p>A simple way for interior decorators to build, organize, and share curated shopping lists with their clients.</p> 305 </a> 306 </li> 307 </ul> 308 </section> 309 </main> 310 </body> 311</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.