Skip to content

Commit ae735a9

Browse files
ricmmartinsclaude
andcommitted
Improve landing page design: step cards, alternating backgrounds, back-to-top
- Condense Quick Start into 4 visual step cards with time estimates - Add alternating section backgrounds for visual rhythm - Merge TL;DR and Why This Exists into single How It Compares section - Remove inline Day-1 Checklist to reduce page length - Add GitHub badge pill in hero section - Add back-to-top floating button with scroll behavior - Add lightbox, step-card, and alt-bg CSS styles Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f873cbc commit ae735a9

4 files changed

Lines changed: 218 additions & 166 deletions

File tree

_layouts/default.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
{{ content }}
1010
</main>
1111
{% include footer.html %}
12+
<button class="back-to-top" aria-label="Back to top">
13+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="18 15 12 9 6 15"/></svg>
14+
</button>
1215
<script src="{{ '/assets/js/main.js' | relative_url }}"></script>
1316
</body>
1417
</html>

assets/css/main.css

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,152 @@ img {
467467
margin-bottom: 2rem;
468468
}
469469

470+
/* Alternating section backgrounds */
471+
.landing-section.alt-bg {
472+
background: var(--bg-secondary);
473+
border-top: 1px solid var(--border-color);
474+
border-bottom: 1px solid var(--border-color);
475+
padding-left: 0;
476+
padding-right: 0;
477+
}
478+
479+
.landing-section.alt-bg > * {
480+
max-width: 1100px;
481+
margin-left: auto;
482+
margin-right: auto;
483+
padding-left: 1.5rem;
484+
padding-right: 1.5rem;
485+
}
486+
487+
/* --- Quick Start compact --- */
488+
.quick-start-steps {
489+
display: grid;
490+
grid-template-columns: repeat(4, 1fr);
491+
gap: 1.25rem;
492+
margin-top: 1.5rem;
493+
}
494+
495+
.step-card {
496+
background: var(--bg-primary);
497+
border: 1px solid var(--border-color);
498+
border-radius: 10px;
499+
padding: 1.5rem;
500+
box-shadow: var(--card-shadow);
501+
position: relative;
502+
}
503+
504+
.step-card .step-number {
505+
display: inline-flex;
506+
align-items: center;
507+
justify-content: center;
508+
width: 32px;
509+
height: 32px;
510+
border-radius: 50%;
511+
background: var(--azure-blue);
512+
color: #fff;
513+
font-weight: 700;
514+
font-size: 0.9rem;
515+
margin-bottom: 0.75rem;
516+
}
517+
518+
[data-theme="dark"] .step-card .step-number {
519+
background: #3B82F6;
520+
}
521+
522+
.step-card h3 {
523+
font-size: 1rem;
524+
font-weight: 600;
525+
margin-bottom: 0.4rem;
526+
color: var(--text-primary);
527+
}
528+
529+
.step-card p {
530+
font-size: 0.875rem;
531+
color: var(--text-secondary);
532+
line-height: 1.5;
533+
margin: 0;
534+
}
535+
536+
.step-card .step-time {
537+
font-size: 0.75rem;
538+
color: var(--text-muted);
539+
margin-top: 0.5rem;
540+
}
541+
542+
/* --- Back to top --- */
543+
.back-to-top {
544+
position: fixed;
545+
bottom: 2rem;
546+
right: 2rem;
547+
width: 40px;
548+
height: 40px;
549+
border-radius: 50%;
550+
background: var(--azure-blue);
551+
color: #fff;
552+
border: none;
553+
cursor: pointer;
554+
display: flex;
555+
align-items: center;
556+
justify-content: center;
557+
opacity: 0;
558+
visibility: hidden;
559+
transition: opacity 0.2s, visibility 0.2s;
560+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
561+
z-index: 50;
562+
}
563+
564+
.back-to-top.visible {
565+
opacity: 1;
566+
visibility: visible;
567+
}
568+
569+
.back-to-top:hover {
570+
background: var(--azure-blue-dark);
571+
}
572+
573+
[data-theme="dark"] .back-to-top {
574+
background: #3B82F6;
575+
}
576+
577+
[data-theme="dark"] .back-to-top:hover {
578+
background: #2563EB;
579+
}
580+
581+
/* --- GitHub badge --- */
582+
.hero-badge {
583+
display: inline-flex;
584+
align-items: center;
585+
gap: 0.5rem;
586+
background: rgba(255, 255, 255, 0.15);
587+
border: 1px solid rgba(255, 255, 255, 0.2);
588+
border-radius: 20px;
589+
padding: 0.35rem 0.85rem;
590+
font-size: 0.85rem;
591+
color: rgba(255, 255, 255, 0.9);
592+
margin-bottom: 1.5rem;
593+
text-decoration: none;
594+
transition: background 0.15s;
595+
}
596+
597+
.hero-badge:hover {
598+
background: rgba(255, 255, 255, 0.25);
599+
color: #fff;
600+
}
601+
602+
/* --- ASCII tree --- */
603+
.architecture-tree {
604+
background: var(--bg-code);
605+
border: 1px solid var(--border-color);
606+
border-radius: 8px;
607+
padding: 1.25rem 1.5rem;
608+
font-family: 'JetBrains Mono', 'Fira Code', monospace;
609+
font-size: 0.875rem;
610+
line-height: 1.6;
611+
margin-bottom: 1.5rem;
612+
overflow-x: auto;
613+
color: var(--text-primary);
614+
}
615+
470616
/* --- Key Points (4 cards) --- */
471617
.key-points {
472618
background: var(--bg-secondary);
@@ -691,6 +837,10 @@ img {
691837
grid-template-columns: repeat(2, 1fr);
692838
}
693839

840+
.quick-start-steps {
841+
grid-template-columns: repeat(2, 1fr);
842+
}
843+
694844
.page-content {
695845
padding: 1.5rem 2rem;
696846
}
@@ -757,6 +907,10 @@ img {
757907
grid-template-columns: 1fr;
758908
}
759909

910+
.quick-start-steps {
911+
grid-template-columns: 1fr;
912+
}
913+
760914
.footer-inner {
761915
flex-direction: column;
762916
gap: 1rem;

assets/js/main.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,30 @@
9595
initLightbox();
9696
}
9797

98+
/* --- Back to Top --- */
99+
function initBackToTop() {
100+
var btn = document.querySelector('.back-to-top');
101+
if (!btn) return;
102+
103+
window.addEventListener('scroll', function () {
104+
if (window.scrollY > 600) {
105+
btn.classList.add('visible');
106+
} else {
107+
btn.classList.remove('visible');
108+
}
109+
});
110+
111+
btn.addEventListener('click', function () {
112+
window.scrollTo({ top: 0, behavior: 'smooth' });
113+
});
114+
}
115+
116+
if (document.readyState === 'loading') {
117+
document.addEventListener('DOMContentLoaded', initBackToTop);
118+
} else {
119+
initBackToTop();
120+
}
121+
98122
/* --- Mermaid: convert markdown code blocks to mermaid divs --- */
99123
function convertMermaidBlocks() {
100124
document.querySelectorAll('pre code.language-mermaid').forEach(function (block) {

0 commit comments

Comments
 (0)