|
175 | 175 | img{max-width:100%;height:auto;display:block} |
176 | 176 | /* Font display */ |
177 | 177 | @font-face{font-family:'FontAwesome';font-display:swap} |
| 178 | + /* Homepage featured section - prevent FOUC */ |
| 179 | + .featured-section{ |
| 180 | + background:linear-gradient(135deg,#667eea 0%,#764ba2 100%); |
| 181 | + border-radius:16px; |
| 182 | + padding:32px; |
| 183 | + margin-bottom:40px; |
| 184 | + position:relative; |
| 185 | + overflow:hidden; |
| 186 | + } |
| 187 | + @media(min-width:768px){.featured-section{padding:48px;border-radius:20px}} |
| 188 | + .featured-section__title{ |
| 189 | + display:flex; |
| 190 | + align-items:center; |
| 191 | + gap:12px; |
| 192 | + color:#fff; |
| 193 | + font-size:24px; |
| 194 | + font-weight:700; |
| 195 | + margin-bottom:24px; |
| 196 | + } |
| 197 | + .featured-section__grid{ |
| 198 | + display:grid; |
| 199 | + grid-template-columns:1fr; |
| 200 | + gap:20px; |
| 201 | + } |
| 202 | + @media(min-width:768px){.featured-section__grid{grid-template-columns:repeat(2,1fr);gap:24px}} |
| 203 | + .featured-card{ |
| 204 | + background:rgba(255,255,255,0.95); |
| 205 | + backdrop-filter:blur(10px); |
| 206 | + border-radius:12px; |
| 207 | + padding:20px; |
| 208 | + border:1px solid rgba(255,255,255,0.2); |
| 209 | + } |
| 210 | + @media(min-width:768px){.featured-card{padding:24px;border-radius:16px}} |
| 211 | + .featured-card__title{font-size:18px;font-weight:600;color:#1f2937;margin:0 0 8px} |
| 212 | + .featured-card__excerpt{font-size:14px;color:#6b7280;margin:0 0 12px;line-height:1.5} |
| 213 | + .featured-card__meta{font-size:12px;color:#9ca3af} |
| 214 | + /* Core topics section */ |
| 215 | + .core-topics{ |
| 216 | + background:#fff; |
| 217 | + border-radius:16px; |
| 218 | + padding:24px; |
| 219 | + margin-bottom:32px; |
| 220 | + border:1px solid rgba(0,0,0,0.05); |
| 221 | + box-shadow:0 4px 20px rgba(0,0,0,0.06); |
| 222 | + } |
| 223 | + @media(min-width:768px){.core-topics{padding:32px}} |
| 224 | + .core-topics__header{ |
| 225 | + display:flex; |
| 226 | + align-items:center; |
| 227 | + gap:10px; |
| 228 | + margin-bottom:20px; |
| 229 | + } |
| 230 | + .core-topics__title{font-size:20px;font-weight:700;color:#1f2937;margin:0} |
| 231 | + .core-topics__tags{display:flex;flex-wrap:wrap;gap:12px} |
| 232 | + /* Topic tags */ |
| 233 | + .topic-tag{ |
| 234 | + display:inline-flex; |
| 235 | + align-items:center; |
| 236 | + gap:8px; |
| 237 | + padding:10px 20px; |
| 238 | + border-radius:100px; |
| 239 | + font-size:14px; |
| 240 | + font-weight:500; |
| 241 | + text-decoration:none; |
| 242 | + transition:transform 0.2s,box-shadow 0.2s; |
| 243 | + } |
| 244 | + .topic-tag--ai{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff} |
| 245 | + .topic-tag--dev{background:linear-gradient(135deg,#11998e 0%,#38ef7d 100%);color:#fff} |
| 246 | + .topic-tag--product{background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%);color:#fff} |
| 247 | + .topic-tag--career{background:linear-gradient(135deg,#4facfe 0%,#00f2fe 100%);color:#fff} |
| 248 | + .topic-tag--life{background:linear-gradient(135deg,#fa709a 0%,#fee140 100%);color:#fff} |
| 249 | + /* Animation visibility (no keyframes - just initial state) */ |
| 250 | + .animate-on-scroll{opacity:1;transform:translateY(0)} |
| 251 | + .fade-in-up{opacity:1;transform:translateY(0)} |
178 | 252 | </style> |
179 | 253 |
|
180 | | - <!-- Bootstrap CSS - MUST load synchronously for layout --> |
181 | | - <link rel="stylesheet" href="{{ "/css/bootstrap.min.css" | prepend: site.baseurl }}"> |
| 254 | + <!-- Bootstrap CSS - Load async (critical grid styles already inlined above) --> |
| 255 | + <link rel="preload" href="{{ "/css/bootstrap.min.css" | prepend: site.baseurl }}" as="style"> |
| 256 | + <link rel="stylesheet" href="{{ "/css/bootstrap.min.css" | prepend: site.baseurl }}" media="print" onload="this.media='all';this.onload=null;"> |
| 257 | + <noscript><link rel="stylesheet" href="{{ "/css/bootstrap.min.css" | prepend: site.baseurl }}"></noscript> |
182 | 258 |
|
183 | 259 | <!-- Font Awesome - Async load (icons don't affect layout) --> |
184 | 260 | <link rel="preload" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css" as="style"> |
|
318 | 394 | } |
319 | 395 | </script> |
320 | 396 |
|
321 | | - <!-- Custom Blog Styles - Synchronous to prevent CLS --> |
322 | | - <link rel="stylesheet" href="{{ "/css/jason-blog.min.css" | prepend: site.baseurl }}"> |
| 397 | + <!-- Custom Blog Styles - Load async (critical styles already inlined above) --> |
| 398 | + <link rel="preload" href="{{ "/css/jason-blog.min.css" | prepend: site.baseurl }}" as="style"> |
| 399 | + <link rel="stylesheet" href="{{ "/css/jason-blog.min.css" | prepend: site.baseurl }}" media="print" onload="this.media='all';this.onload=null;"> |
| 400 | + <noscript><link rel="stylesheet" href="{{ "/css/jason-blog.min.css" | prepend: site.baseurl }}"></noscript> |
323 | 401 |
|
324 | 402 | <!-- Async tail styles (low priority, non-layout) --> |
325 | 403 | <link rel="stylesheet" href="{{ "/css/async.css" | prepend: site.baseurl }}" media="print" onload="this.media='all';this.onload=null;"> |
|
0 commit comments