Skip to content

Commit 42785aa

Browse files
commitconfirmclaude
andcommitted
Improve landing page layout with two-column grid
- Preview section on left, setup/auth on right on desktop (900px+) - Mobile: auth/setup first, preview below - Move intro text into header with smaller font - Fix setup-section to be inserted inside landing-grid for proper layout Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent b2d30f9 commit 42785aa

4 files changed

Lines changed: 189 additions & 144 deletions

File tree

src/callback.html

Lines changed: 66 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -16,78 +16,77 @@
1616
<img src="/spotifort_transparent.png" alt="Spotifort logo" class="site-logo" />
1717
<h1>Spotifort</h1>
1818
<p class="tagline">Find which artists you love are playing Treefort 2026</p>
19+
<p class="header-intro">Connect your Spotify account to see which artists from your Liked Songs are playing Treefort Music Fest 2026 (March 25-29, Boise, Idaho).</p>
1920
</header>
2021

2122
<main>
22-
<section id="intro-section">
23-
<p>Connect your Spotify account to see which artists from your Liked Songs are playing Treefort Music Fest 2026 (March 25-29, Boise, Idaho).</p>
24-
</section>
25-
26-
<section id="preview-section">
27-
<h2>Here's what you'll see</h2>
28-
<div class="preview-box">
29-
<div class="list-box preview-list-box">
30-
<h3>Your Treefort Matches</h3>
31-
<ul class="artist-list">
32-
<li class="artist-item">
33-
<div class="artist-row">
34-
<span class="artist-toggle">
35-
<span class="artist-marker">[+]</span>
36-
</span>
37-
<a href="https://open.spotify.com/artist/2kGBy2WHvF0VdZyqiVCkDT" target="_blank" rel="noopener noreferrer" class="artist-name-link">Father John Misty</a>
38-
</div>
39-
</li>
40-
<li class="artist-item">
41-
<div class="artist-row">
42-
<span class="artist-toggle">
43-
<span class="artist-marker">[+]</span>
44-
</span>
45-
<a href="https://open.spotify.com/artist/1oPRcJUkloHaRLYx0olBLJ" target="_blank" rel="noopener noreferrer" class="artist-name-link">Magdalena Bay</a>
46-
</div>
47-
</li>
48-
<li class="artist-item preview-expanded">
49-
<div class="artist-row">
50-
<span class="artist-toggle">
51-
<span class="artist-marker">[-]</span>
52-
</span>
53-
<a href="https://open.spotify.com/artist/7qrEXiLLnWkkYHhadZ1Oij" target="_blank" rel="noopener noreferrer" class="artist-name-link">Blondshell</a>
54-
</div>
55-
<div class="artist-related">
56-
<p class="related-header">Other artists at Treefort you might like:</p>
57-
<p class="related-info">Based on shared genres (indie rock). This is not Spotify's "Related Artists" — it's genre matching from our lineup data.</p>
58-
<ul class="related-list">
59-
<li><a href="https://open.spotify.com/artist/1Uk1GyijF6fSfX4mWq5bfR" target="_blank" rel="noopener noreferrer" class="related-artist-link">Samia</a></li>
60-
<li><a href="https://open.spotify.com/artist/4aEnNH9PuU1HF3TsZTru54" target="_blank" rel="noopener noreferrer" class="related-artist-link">Caracara</a></li>
61-
<li><a href="https://open.spotify.com/artist/2kGBy2WHvF0VdZyqiVCkDT" target="_blank" rel="noopener noreferrer" class="related-artist-link">Father John Misty</a></li>
62-
</ul>
63-
</div>
64-
</li>
65-
<li class="artist-item">
66-
<div class="artist-row">
67-
<span class="artist-toggle">
68-
<span class="artist-marker">[+]</span>
69-
</span>
70-
<a href="https://open.spotify.com/artist/1Uk1GyijF6fSfX4mWq5bfR" target="_blank" rel="noopener noreferrer" class="artist-name-link">Samia</a>
71-
</div>
72-
</li>
73-
<li class="artist-item">
74-
<div class="artist-row">
75-
<span class="artist-toggle">
76-
<span class="artist-marker">[+]</span>
77-
</span>
78-
<a href="https://open.spotify.com/artist/7c3NW1Z7GXA6bhuMmqvJYf" target="_blank" rel="noopener noreferrer" class="artist-name-link">Billie Marten</a>
79-
</div>
80-
</li>
81-
</ul>
23+
<div class="landing-grid">
24+
<section id="preview-section">
25+
<h2>Here's what you'll see</h2>
26+
<div class="preview-box">
27+
<div class="list-box preview-list-box">
28+
<h3>Your Treefort Matches</h3>
29+
<ul class="artist-list">
30+
<li class="artist-item">
31+
<div class="artist-row">
32+
<span class="artist-toggle">
33+
<span class="artist-marker">[+]</span>
34+
</span>
35+
<a href="https://open.spotify.com/artist/2kGBy2WHvF0VdZyqiVCkDT" target="_blank" rel="noopener noreferrer" class="artist-name-link">Father John Misty</a>
36+
</div>
37+
</li>
38+
<li class="artist-item">
39+
<div class="artist-row">
40+
<span class="artist-toggle">
41+
<span class="artist-marker">[+]</span>
42+
</span>
43+
<a href="https://open.spotify.com/artist/1oPRcJUkloHaRLYx0olBLJ" target="_blank" rel="noopener noreferrer" class="artist-name-link">Magdalena Bay</a>
44+
</div>
45+
</li>
46+
<li class="artist-item preview-expanded">
47+
<div class="artist-row">
48+
<span class="artist-toggle">
49+
<span class="artist-marker">[-]</span>
50+
</span>
51+
<a href="https://open.spotify.com/artist/7qrEXiLLnWkkYHhadZ1Oij" target="_blank" rel="noopener noreferrer" class="artist-name-link">Blondshell</a>
52+
</div>
53+
<div class="artist-related">
54+
<p class="related-header">Other artists at Treefort you might like:</p>
55+
<p class="related-info">Based on shared genres (indie rock). This is not Spotify's "Related Artists" — it's genre matching from our lineup data.</p>
56+
<ul class="related-list">
57+
<li><a href="https://open.spotify.com/artist/1Uk1GyijF6fSfX4mWq5bfR" target="_blank" rel="noopener noreferrer" class="related-artist-link">Samia</a></li>
58+
<li><a href="https://open.spotify.com/artist/4aEnNH9PuU1HF3TsZTru54" target="_blank" rel="noopener noreferrer" class="related-artist-link">Caracara</a></li>
59+
<li><a href="https://open.spotify.com/artist/2kGBy2WHvF0VdZyqiVCkDT" target="_blank" rel="noopener noreferrer" class="related-artist-link">Father John Misty</a></li>
60+
</ul>
61+
</div>
62+
</li>
63+
<li class="artist-item">
64+
<div class="artist-row">
65+
<span class="artist-toggle">
66+
<span class="artist-marker">[+]</span>
67+
</span>
68+
<a href="https://open.spotify.com/artist/1Uk1GyijF6fSfX4mWq5bfR" target="_blank" rel="noopener noreferrer" class="artist-name-link">Samia</a>
69+
</div>
70+
</li>
71+
<li class="artist-item">
72+
<div class="artist-row">
73+
<span class="artist-toggle">
74+
<span class="artist-marker">[+]</span>
75+
</span>
76+
<a href="https://open.spotify.com/artist/7c3NW1Z7GXA6bhuMmqvJYf" target="_blank" rel="noopener noreferrer" class="artist-name-link">Billie Marten</a>
77+
</div>
78+
</li>
79+
</ul>
80+
</div>
81+
<p class="preview-label">Example results — connect Spotify to see your actual matches</p>
8282
</div>
83-
<p class="preview-label">Example results — connect Spotify to see your actual matches</p>
84-
</div>
85-
</section>
83+
</section>
8684

87-
<section id="auth-section">
88-
<button id="connect-btn" type="button">Connect Spotify</button>
89-
<p class="browser-note">For best results, open this site in Safari or Chrome, not an in-app browser.</p>
90-
</section>
85+
<section id="auth-section">
86+
<button id="connect-btn" type="button">Connect Spotify</button>
87+
<p class="browser-note">For best results, open this site in Safari or Chrome, not an in-app browser.</p>
88+
</section>
89+
</div>
9190

9291
<section id="results-section" class="hidden">
9392
<!-- Results will be rendered here -->

src/index.html

Lines changed: 66 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -16,78 +16,77 @@
1616
<img src="/spotifort_transparent.png" alt="Spotifort logo" class="site-logo" />
1717
<h1>Spotifort</h1>
1818
<p class="tagline">Find which artists you love are playing Treefort 2026</p>
19+
<p class="header-intro">Connect your Spotify account to see which artists from your Liked Songs are playing Treefort Music Fest 2026 (March 25-29, Boise, Idaho).</p>
1920
</header>
2021

2122
<main>
22-
<section id="intro-section">
23-
<p>Connect your Spotify account to see which artists from your Liked Songs are playing Treefort Music Fest 2026 (March 25-29, Boise, Idaho).</p>
24-
</section>
25-
26-
<section id="preview-section">
27-
<h2>Here's what you'll see</h2>
28-
<div class="preview-box">
29-
<div class="list-box preview-list-box">
30-
<h3>Your Treefort Matches</h3>
31-
<ul class="artist-list">
32-
<li class="artist-item">
33-
<div class="artist-row">
34-
<span class="artist-toggle">
35-
<span class="artist-marker">[+]</span>
36-
</span>
37-
<a href="https://open.spotify.com/artist/2kGBy2WHvF0VdZyqiVCkDT" target="_blank" rel="noopener noreferrer" class="artist-name-link">Father John Misty</a>
38-
</div>
39-
</li>
40-
<li class="artist-item">
41-
<div class="artist-row">
42-
<span class="artist-toggle">
43-
<span class="artist-marker">[+]</span>
44-
</span>
45-
<a href="https://open.spotify.com/artist/1oPRcJUkloHaRLYx0olBLJ" target="_blank" rel="noopener noreferrer" class="artist-name-link">Magdalena Bay</a>
46-
</div>
47-
</li>
48-
<li class="artist-item preview-expanded">
49-
<div class="artist-row">
50-
<span class="artist-toggle">
51-
<span class="artist-marker">[-]</span>
52-
</span>
53-
<a href="https://open.spotify.com/artist/7qrEXiLLnWkkYHhadZ1Oij" target="_blank" rel="noopener noreferrer" class="artist-name-link">Blondshell</a>
54-
</div>
55-
<div class="artist-related">
56-
<p class="related-header">Other artists at Treefort you might like:</p>
57-
<p class="related-info">Based on shared genres (indie rock). This is not Spotify's "Related Artists" — it's genre matching from our lineup data.</p>
58-
<ul class="related-list">
59-
<li><a href="https://open.spotify.com/artist/1Uk1GyijF6fSfX4mWq5bfR" target="_blank" rel="noopener noreferrer" class="related-artist-link">Samia</a></li>
60-
<li><a href="https://open.spotify.com/artist/4aEnNH9PuU1HF3TsZTru54" target="_blank" rel="noopener noreferrer" class="related-artist-link">Caracara</a></li>
61-
<li><a href="https://open.spotify.com/artist/2kGBy2WHvF0VdZyqiVCkDT" target="_blank" rel="noopener noreferrer" class="related-artist-link">Father John Misty</a></li>
62-
</ul>
63-
</div>
64-
</li>
65-
<li class="artist-item">
66-
<div class="artist-row">
67-
<span class="artist-toggle">
68-
<span class="artist-marker">[+]</span>
69-
</span>
70-
<a href="https://open.spotify.com/artist/1Uk1GyijF6fSfX4mWq5bfR" target="_blank" rel="noopener noreferrer" class="artist-name-link">Samia</a>
71-
</div>
72-
</li>
73-
<li class="artist-item">
74-
<div class="artist-row">
75-
<span class="artist-toggle">
76-
<span class="artist-marker">[+]</span>
77-
</span>
78-
<a href="https://open.spotify.com/artist/7c3NW1Z7GXA6bhuMmqvJYf" target="_blank" rel="noopener noreferrer" class="artist-name-link">Billie Marten</a>
79-
</div>
80-
</li>
81-
</ul>
23+
<div class="landing-grid">
24+
<section id="preview-section">
25+
<h2>Here's what you'll see</h2>
26+
<div class="preview-box">
27+
<div class="list-box preview-list-box">
28+
<h3>Your Treefort Matches</h3>
29+
<ul class="artist-list">
30+
<li class="artist-item">
31+
<div class="artist-row">
32+
<span class="artist-toggle">
33+
<span class="artist-marker">[+]</span>
34+
</span>
35+
<a href="https://open.spotify.com/artist/2kGBy2WHvF0VdZyqiVCkDT" target="_blank" rel="noopener noreferrer" class="artist-name-link">Father John Misty</a>
36+
</div>
37+
</li>
38+
<li class="artist-item">
39+
<div class="artist-row">
40+
<span class="artist-toggle">
41+
<span class="artist-marker">[+]</span>
42+
</span>
43+
<a href="https://open.spotify.com/artist/1oPRcJUkloHaRLYx0olBLJ" target="_blank" rel="noopener noreferrer" class="artist-name-link">Magdalena Bay</a>
44+
</div>
45+
</li>
46+
<li class="artist-item preview-expanded">
47+
<div class="artist-row">
48+
<span class="artist-toggle">
49+
<span class="artist-marker">[-]</span>
50+
</span>
51+
<a href="https://open.spotify.com/artist/7qrEXiLLnWkkYHhadZ1Oij" target="_blank" rel="noopener noreferrer" class="artist-name-link">Blondshell</a>
52+
</div>
53+
<div class="artist-related">
54+
<p class="related-header">Other artists at Treefort you might like:</p>
55+
<p class="related-info">Based on shared genres (indie rock). This is not Spotify's "Related Artists" — it's genre matching from our lineup data.</p>
56+
<ul class="related-list">
57+
<li><a href="https://open.spotify.com/artist/1Uk1GyijF6fSfX4mWq5bfR" target="_blank" rel="noopener noreferrer" class="related-artist-link">Samia</a></li>
58+
<li><a href="https://open.spotify.com/artist/4aEnNH9PuU1HF3TsZTru54" target="_blank" rel="noopener noreferrer" class="related-artist-link">Caracara</a></li>
59+
<li><a href="https://open.spotify.com/artist/2kGBy2WHvF0VdZyqiVCkDT" target="_blank" rel="noopener noreferrer" class="related-artist-link">Father John Misty</a></li>
60+
</ul>
61+
</div>
62+
</li>
63+
<li class="artist-item">
64+
<div class="artist-row">
65+
<span class="artist-toggle">
66+
<span class="artist-marker">[+]</span>
67+
</span>
68+
<a href="https://open.spotify.com/artist/1Uk1GyijF6fSfX4mWq5bfR" target="_blank" rel="noopener noreferrer" class="artist-name-link">Samia</a>
69+
</div>
70+
</li>
71+
<li class="artist-item">
72+
<div class="artist-row">
73+
<span class="artist-toggle">
74+
<span class="artist-marker">[+]</span>
75+
</span>
76+
<a href="https://open.spotify.com/artist/7c3NW1Z7GXA6bhuMmqvJYf" target="_blank" rel="noopener noreferrer" class="artist-name-link">Billie Marten</a>
77+
</div>
78+
</li>
79+
</ul>
80+
</div>
81+
<p class="preview-label">Example results — connect Spotify to see your actual matches</p>
8282
</div>
83-
<p class="preview-label">Example results — connect Spotify to see your actual matches</p>
84-
</div>
85-
</section>
83+
</section>
8684

87-
<section id="auth-section">
88-
<button id="connect-btn" type="button">Connect Spotify</button>
89-
<p class="browser-note">For best results, open this site in Safari or Chrome, not an in-app browser.</p>
90-
</section>
85+
<section id="auth-section">
86+
<button id="connect-btn" type="button">Connect Spotify</button>
87+
<p class="browser-note">For best results, open this site in Safari or Chrome, not an in-app browser.</p>
88+
</section>
89+
</div>
9190

9291
<section id="results-section" class="hidden">
9392
<!-- Results will be rendered here -->

src/style.css

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,14 @@ header h1 {
5959
margin-top: 0;
6060
}
6161

62+
.header-intro {
63+
font-size: 0.95rem;
64+
color: #444;
65+
max-width: 500px;
66+
margin: 1rem auto 0;
67+
line-height: 1.5;
68+
}
69+
6270
main {
6371
flex: 1;
6472
}
@@ -813,21 +821,54 @@ footer {
813821
box-shadow: 2px 2px 0 var(--black);
814822
}
815823

816-
/* Preview Section */
817-
#intro-section {
818-
max-width: 600px;
819-
margin: 0 auto 2rem;
820-
text-align: center;
824+
/* Landing Grid - Preview + Auth side by side on wide screens */
825+
.landing-grid {
826+
max-width: 1000px;
827+
margin: 0 auto;
828+
display: flex;
829+
flex-direction: column;
830+
gap: 2rem;
821831
}
822832

823-
#intro-section p {
824-
font-size: 1.1rem;
825-
line-height: 1.6;
833+
/* Mobile: auth/setup first, preview second */
834+
.landing-grid #auth-section,
835+
.landing-grid #setup-section {
836+
order: 1;
837+
}
838+
839+
.landing-grid #preview-section {
840+
order: 2;
841+
}
842+
843+
/* Desktop: two columns, preview left, auth/setup right */
844+
@media (min-width: 900px) {
845+
.landing-grid {
846+
display: grid;
847+
grid-template-columns: 1fr 1fr;
848+
gap: 3rem;
849+
align-items: stretch;
850+
}
851+
852+
.landing-grid #preview-section {
853+
order: 1;
854+
max-width: none;
855+
margin: 0;
856+
}
857+
858+
.landing-grid #auth-section,
859+
.landing-grid #setup-section {
860+
order: 2;
861+
margin: 0;
862+
max-width: none;
863+
display: flex;
864+
flex-direction: column;
865+
justify-content: center;
866+
}
826867
}
827868

828869
#preview-section {
829870
max-width: 500px;
830-
margin: 0 auto 2rem;
871+
margin: 0 auto;
831872
}
832873

833874
#preview-section h2 {

src/ui.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export function showSetup() {
2828
const authSection = document.getElementById('auth-section');
2929
const resultsSection = document.getElementById('results-section');
3030
const loadingSection = document.getElementById('loading-section');
31+
const landingGrid = document.querySelector('.landing-grid');
3132

3233
if (authSection) authSection.classList.add('hidden');
3334
if (resultsSection) resultsSection.classList.add('hidden');
@@ -38,7 +39,12 @@ export function showSetup() {
3839
if (!setupSection) {
3940
setupSection = document.createElement('section');
4041
setupSection.id = 'setup-section';
41-
main.insertBefore(setupSection, main.firstChild);
42+
// Insert inside landing-grid if it exists, otherwise at start of main
43+
if (landingGrid) {
44+
landingGrid.appendChild(setupSection);
45+
} else {
46+
main.insertBefore(setupSection, main.firstChild);
47+
}
4248
}
4349
setupSection.classList.remove('hidden');
4450

0 commit comments

Comments
 (0)