|
19 | 19 | --apple-button-hover: #0077ed; |
20 | 20 | --apple-feature-card: rgba(255, 255, 255, 0.8); |
21 | 21 | --apple-card-shadow: rgba(0, 0, 0, 0.04); |
22 | | - --heading-font: "SF Pro Display", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif; |
23 | | - --body-font: "SF Pro Text", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif; |
| 22 | + --heading-font: -apple-system-headline, ui-sans-serif, system-ui, sans-serif, "SF Pro Display", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial; |
| 23 | + --body-font: -apple-system-body, ui-sans-serif, system-ui, sans-serif, "SF Pro Text", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial; |
24 | 24 | --theme-switch-bg: #f5f5f7; |
25 | 25 | --theme-switch-border: #d2d2d7; |
26 | 26 | } |
|
56 | 56 | letter-spacing: -0.022em; |
57 | 57 | transition: background-color 0.5s ease, color 0.5s ease; |
58 | 58 | -webkit-font-smoothing: antialiased; |
| 59 | + -moz-osx-font-smoothing: grayscale; |
| 60 | + text-rendering: optimizeLegibility; |
59 | 61 | } |
60 | 62 |
|
61 | 63 | .container { |
|
164 | 166 |
|
165 | 167 | .hero { |
166 | 168 | text-align: center; |
167 | | - padding: 120px 0 80px; |
| 169 | + padding: 180px 0 120px; |
168 | 170 | background-color: var(--apple-bg); |
169 | 171 | transition: background-color 0.5s ease; |
170 | 172 | overflow: hidden; |
| 173 | + position: relative; |
171 | 174 | } |
172 | 175 |
|
173 | 176 | h1 { |
|
176 | 179 | line-height: 1.07143; |
177 | 180 | font-weight: 600; |
178 | 181 | letter-spacing: -0.005em; |
179 | | - margin-bottom: 8px; |
| 182 | + margin-bottom: 16px; |
180 | 183 | color: var(--apple-text); |
181 | 184 | transition: color 0.5s ease; |
182 | 185 | } |
183 | 186 |
|
184 | 187 | .hero p { |
185 | | - font-size: 23px; |
| 188 | + font-size: 27px; |
186 | 189 | line-height: 1.381; |
187 | 190 | font-weight: 400; |
188 | 191 | letter-spacing: 0.004em; |
189 | | - max-width: 600px; |
| 192 | + max-width: 760px; |
190 | 193 | margin: 0 auto 40px; |
191 | 194 | color: var(--apple-secondary-text); |
192 | 195 | transition: color 0.5s ease; |
|
196 | 199 | display: inline-block; |
197 | 200 | background-color: var(--apple-button-bg); |
198 | 201 | color: white; |
199 | | - padding: 12px 22px; |
| 202 | + padding: 12px 28px; |
200 | 203 | border-radius: 980px; |
201 | 204 | text-decoration: none; |
202 | 205 | font-size: 17px; |
|
211 | 214 |
|
212 | 215 | .btn:hover { |
213 | 216 | background-color: var(--apple-button-hover); |
| 217 | + transform: scale(1.02); |
214 | 218 | } |
215 | 219 |
|
216 | 220 | .btn-secondary { |
|
224 | 228 | } |
225 | 229 |
|
226 | 230 | .highlights { |
227 | | - padding: 100px 0; |
| 231 | + padding: 140px 0; |
228 | 232 | background-color: var(--apple-bg); |
229 | 233 | transition: background-color 0.5s ease; |
| 234 | + position: relative; |
230 | 235 | } |
231 | 236 |
|
232 | 237 | .section-title { |
233 | 238 | text-align: center; |
234 | | - margin-bottom: 80px; |
| 239 | + margin-bottom: 100px; |
235 | 240 | font-family: var(--heading-font); |
236 | 241 | font-size: 48px; |
237 | 242 | line-height: 1.08349; |
|
243 | 248 |
|
244 | 249 | .highlights-grid { |
245 | 250 | display: grid; |
246 | | - grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); |
247 | | - gap: 40px; |
| 251 | + grid-template-columns: repeat(3, 1fr); |
| 252 | + gap: 60px; |
248 | 253 | } |
249 | 254 |
|
250 | 255 | .highlight { |
251 | 256 | text-align: center; |
252 | | - padding: 40px 20px; |
253 | | - border-radius: 20px; |
| 257 | + padding: 50px 30px; |
| 258 | + border-radius: 30px; |
254 | 259 | background-color: var(--apple-secondary-bg); |
255 | 260 | transition: transform 0.5s ease, background-color 0.5s ease; |
256 | 261 | overflow: hidden; |
|
263 | 268 | } |
264 | 269 |
|
265 | 270 | .highlight:hover { |
266 | | - transform: scale(1.02); |
| 271 | + transform: translateY(-10px); |
267 | 272 | } |
268 | 273 |
|
269 | 274 | .highlight h3 { |
|
272 | 277 | line-height: 1.14286; |
273 | 278 | font-weight: 600; |
274 | 279 | letter-spacing: 0.007em; |
275 | | - margin: 20px 0 10px; |
| 280 | + margin: 20px 0 16px; |
276 | 281 | color: var(--apple-text); |
277 | 282 | transition: color 0.5s ease; |
278 | 283 | } |
|
288 | 293 |
|
289 | 294 | .highlight-icon { |
290 | 295 | font-size: 56px; |
291 | | - margin-bottom: 20px; |
| 296 | + margin-bottom: 24px; |
292 | 297 | } |
293 | 298 |
|
294 | 299 | .features { |
295 | | - padding: 100px 0; |
| 300 | + padding: 140px 0; |
296 | 301 | background-color: var(--apple-secondary-bg); |
297 | 302 | transition: background-color 0.5s ease; |
| 303 | + position: relative; |
298 | 304 | } |
299 | 305 |
|
300 | 306 | [data-theme="dark"] .features { |
|
303 | 309 |
|
304 | 310 | .features-grid { |
305 | 311 | display: grid; |
306 | | - grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); |
307 | | - gap: 30px; |
| 312 | + grid-template-columns: repeat(3, 1fr); |
| 313 | + gap: 40px; |
308 | 314 | } |
309 | 315 |
|
310 | 316 | .feature { |
311 | 317 | background-color: var(--apple-bg); |
312 | | - border-radius: 20px; |
| 318 | + border-radius: 24px; |
313 | 319 | overflow: hidden; |
314 | 320 | box-shadow: 0 4px 30px var(--apple-card-shadow); |
315 | 321 | transition: transform 0.5s ease, background-color 0.5s ease, box-shadow 0.5s ease; |
|
320 | 326 | } |
321 | 327 |
|
322 | 328 | .feature:hover { |
323 | | - transform: translateY(-6px); |
324 | | - box-shadow: 0 12px 40px var(--apple-card-shadow); |
| 329 | + transform: translateY(-10px); |
| 330 | + box-shadow: 0 20px 50px var(--apple-card-shadow); |
325 | 331 | } |
326 | 332 |
|
327 | 333 | .feature-content { |
328 | | - padding: 30px; |
| 334 | + padding: 40px 30px; |
329 | 335 | text-align: center; |
330 | 336 | } |
331 | 337 |
|
|
335 | 341 | line-height: 1.16667; |
336 | 342 | font-weight: 600; |
337 | 343 | letter-spacing: 0.009em; |
338 | | - margin-bottom: 10px; |
| 344 | + margin-bottom: 16px; |
339 | 345 | color: var(--apple-text); |
340 | 346 | transition: color 0.5s ease; |
341 | 347 | } |
|
350 | 356 | } |
351 | 357 |
|
352 | 358 | .feature-icon { |
353 | | - font-size: 40px; |
354 | | - margin-bottom: 20px; |
| 359 | + font-size: 48px; |
| 360 | + margin-bottom: 24px; |
355 | 361 | } |
356 | 362 |
|
357 | 363 | footer { |
358 | 364 | background-color: var(--apple-bg); |
359 | | - padding: 20px 0; |
| 365 | + padding: 60px 0 30px; |
360 | 366 | text-align: center; |
361 | 367 | color: var(--apple-secondary-text); |
362 | 368 | font-size: 12px; |
|
378 | 384 | } |
379 | 385 |
|
380 | 386 | .footer-links { |
381 | | - margin-bottom: 10px; |
| 387 | + margin-bottom: 30px; |
382 | 388 | } |
383 | 389 |
|
384 | 390 | .footer-links a { |
385 | 391 | margin: 0 15px; |
| 392 | + font-size: 14px; |
386 | 393 | } |
387 | 394 |
|
388 | 395 | .footer-logo { |
389 | 396 | display: block; |
390 | | - margin: 0 auto 20px; |
391 | | - height: 40px; |
| 397 | + margin: 0 auto 30px; |
| 398 | + height: 50px; |
392 | 399 | } |
393 | 400 |
|
394 | 401 | .copyright { |
|
402 | 409 | margin: 0 auto; |
403 | 410 | } |
404 | 411 |
|
| 412 | + .hero-image-container { |
| 413 | + position: relative; |
| 414 | + margin: 60px auto 0; |
| 415 | + max-width: 600px; |
| 416 | + } |
| 417 | + |
405 | 418 | .hero-image { |
406 | 419 | max-width: 100%; |
407 | 420 | height: auto; |
408 | | - margin: 40px auto 0; |
409 | | - transition: transform 0.5s ease; |
410 | 421 | display: block; |
| 422 | + margin: 0 auto; |
| 423 | + transition: transform 0.8s ease; |
| 424 | + animation: float 6s ease-in-out infinite; |
411 | 425 | } |
412 | 426 |
|
413 | | - .hero-image:hover { |
414 | | - transform: scale(1.02); |
| 427 | + @keyframes float { |
| 428 | + 0% { transform: translateY(0px); } |
| 429 | + 50% { transform: translateY(-15px); } |
| 430 | + 100% { transform: translateY(0px); } |
415 | 431 | } |
416 | 432 |
|
417 | 433 | @media only screen and (max-width: 768px) { |
|
447 | 463 | } |
448 | 464 |
|
449 | 465 | .hero { |
450 | | - padding: 60px 0 40px; |
| 466 | + padding: 100px 0 80px; |
451 | 467 | } |
452 | 468 |
|
453 | 469 | .hero p { |
454 | | - font-size: 19px; |
| 470 | + font-size: 22px; |
455 | 471 | } |
456 | 472 |
|
457 | 473 | .btn { |
458 | 474 | display: block; |
459 | | - margin: 10px auto; |
| 475 | + margin: 16px auto; |
460 | 476 | max-width: 250px; |
461 | 477 | } |
462 | 478 |
|
463 | 479 | .section-title { |
464 | 480 | font-size: 32px; |
465 | | - margin-bottom: 40px; |
| 481 | + margin-bottom: 60px; |
466 | 482 | } |
467 | 483 |
|
468 | 484 | .highlights, .features { |
469 | | - padding: 60px 0; |
| 485 | + padding: 80px 0; |
| 486 | + } |
| 487 | + |
| 488 | + .highlights-grid, .features-grid { |
| 489 | + grid-template-columns: 1fr; |
470 | 490 | } |
471 | 491 | } |
472 | 492 |
|
473 | | - /* Mirroring Apple's animation style */ |
474 | | - @keyframes fadeIn { |
475 | | - from { opacity: 0; transform: translateY(20px); } |
| 493 | + /* Subtle animations */ |
| 494 | + @keyframes fadeUp { |
| 495 | + from { opacity: 0; transform: translateY(30px); } |
476 | 496 | to { opacity: 1; transform: translateY(0); } |
477 | 497 | } |
478 | 498 |
|
479 | | - .hero h1, .hero p, .btn, .hero-image, .highlight, .feature { |
480 | | - animation: fadeIn 0.8s ease-out forwards; |
| 499 | + .hero h1 { |
| 500 | + animation: fadeUp 0.8s ease-out forwards; |
481 | 501 | } |
482 | 502 |
|
483 | 503 | .hero p { |
| 504 | + animation: fadeUp 0.8s ease-out forwards; |
484 | 505 | animation-delay: 0.2s; |
| 506 | + opacity: 0; |
485 | 507 | } |
486 | 508 |
|
487 | 509 | .btn { |
| 510 | + animation: fadeUp 0.8s ease-out forwards; |
488 | 511 | animation-delay: 0.4s; |
| 512 | + opacity: 0; |
489 | 513 | } |
490 | 514 |
|
491 | | - .hero-image { |
| 515 | + .hero-image-container { |
| 516 | + animation: fadeUp 0.8s ease-out forwards; |
492 | 517 | animation-delay: 0.6s; |
| 518 | + opacity: 0; |
493 | 519 | } |
494 | 520 |
|
495 | | - .highlight:nth-child(1), .feature:nth-child(1) { |
496 | | - animation-delay: 0.2s; |
| 521 | + .highlight, .feature { |
| 522 | + opacity: 0; |
497 | 523 | } |
498 | 524 |
|
499 | | - .highlight:nth-child(2), .feature:nth-child(2) { |
500 | | - animation-delay: 0.4s; |
| 525 | + /* Intersection Observer styles */ |
| 526 | + .fade-in { |
| 527 | + opacity: 1; |
| 528 | + transform: translateY(0); |
| 529 | + transition: opacity 0.6s ease-out, transform 0.6s ease-out; |
501 | 530 | } |
502 | | - |
503 | | - .highlight:nth-child(3), .feature:nth-child(3) { |
504 | | - animation-delay: 0.6s; |
| 531 | + |
| 532 | + /* Add system font stack with SF Pro dynamic scaling */ |
| 533 | + @supports (font: -apple-system-body) { |
| 534 | + body { |
| 535 | + font: -apple-system-body; |
| 536 | + } |
| 537 | + |
| 538 | + h1, h2, h3, .section-title { |
| 539 | + font: -apple-system-headline; |
| 540 | + } |
505 | 541 | } |
506 | 542 | </style> |
507 | 543 | </head> |
@@ -537,7 +573,9 @@ <h1>OpenAPI Integration with DocC</h1> |
537 | 573 | <p>Transform OpenAPI specifications into beautiful, interactive documentation.</p> |
538 | 574 | <a href="docs/index.html" class="btn">View Documentation</a> |
539 | 575 | <a href="https://github.com/ayushshrivastv/OpenAPI-integration-with-DocC" class="btn btn-secondary">View on GitHub</a> |
540 | | - <img src="docs/favicon.svg" alt="OpenAPI DocC graphic representation" class="hero-image" width="240"> |
| 576 | + <div class="hero-image-container"> |
| 577 | + <img src="docs/favicon.svg" alt="OpenAPI DocC graphic representation" class="hero-image" width="240"> |
| 578 | + </div> |
541 | 579 | </div> |
542 | 580 | </section> |
543 | 581 |
|
@@ -595,7 +633,7 @@ <h3>Auto-updating</h3> |
595 | 633 |
|
596 | 634 | <footer> |
597 | 635 | <div class="container"> |
598 | | - <img class="footer-logo" src="docs/favicon.svg" alt="OpenAPI DocC Logo" width="40"> |
| 636 | + <img class="footer-logo" src="docs/favicon.svg" alt="OpenAPI DocC Logo" width="50"> |
599 | 637 | <div class="footer-links"> |
600 | 638 | <a href="https://github.com/ayushshrivastv/OpenAPI-integration-with-DocC">GitHub</a> |
601 | 639 | <a href="docs/index.html">Documentation</a> |
@@ -670,6 +708,22 @@ <h3>Auto-updating</h3> |
670 | 708 | } |
671 | 709 | }); |
672 | 710 | } |
| 711 | + |
| 712 | + // Intersection Observer for animations |
| 713 | + const observer = new IntersectionObserver((entries) => { |
| 714 | + entries.forEach(entry => { |
| 715 | + if (entry.isIntersecting) { |
| 716 | + entry.target.classList.add('fade-in'); |
| 717 | + } |
| 718 | + }); |
| 719 | + }, { |
| 720 | + threshold: 0.2 |
| 721 | + }); |
| 722 | + |
| 723 | + // Observe all highlights and features |
| 724 | + document.querySelectorAll('.highlight, .feature').forEach(el => { |
| 725 | + observer.observe(el); |
| 726 | + }); |
673 | 727 | }); |
674 | 728 | </script> |
675 | 729 | </body> |
|
0 commit comments