← back to Stars of Design
views/public/home.ejs
106 lines
<%- include('../partials/head', { title }) %>
<%- include('../partials/header') %>
<main class="home">
<!-- Gucci-style huge hero: full-bleed photographic ground + wordmark BELOW + italic tagline below.
Per standing rule (feedback_hero_anatomy_gucci): logo UL + hamburger UR live on top.
Image source is /img/hero.jpg (≥2560×1600); CSS gradient is the fallback ground. -->
<section class="hero-gucci" aria-labelledby="hero-wordmark">
<div class="hero-gucci-bg" role="img" aria-label="Editorial interior — placeholder while final hero photo is licensed"></div>
<div class="hero-gucci-stars" aria-hidden="true"></div>
<div class="hero-gucci-stack">
<h1 id="hero-wordmark" class="hero-gucci-wordmark">Stars of Design</h1>
<p class="hero-gucci-tagline">
<em>The designers who set the room.</em><br>
<em>The wallcoverings that set the tone.</em>
</p>
<p class="hero-gucci-subtitle">A working atlas of 150 interior designers — Draper through Wearstler — paired to the patterns they'd actually hang.</p>
<div class="hero-gucci-cta">
<a class="btn primary" href="/designers">Browse the directory →</a>
<a class="btn ghost" href="/about">How it works</a>
</div>
</div>
<a class="hero-gucci-scroll" href="#directory" aria-label="Scroll to the directory">↓</a>
</section>
<section class="section" id="directory">
<div class="wrap">
<div class="section-head">
<h2>The directory</h2>
<a class="muted" href="/designers">View all designers →</a>
</div>
<%- include('../partials/grid-controls', { total, sortKey }) %>
<div class="designer-grid" data-designer-grid>
<% designers.slice(0, 24).forEach(function (d) { %>
<article class="designer-card">
<header>
<span class="card-mark" aria-hidden="true"><%= (d.name || '?').split(' ').slice(0,2).map(function (w) { return w[0]; }).join('') %></span>
<div>
<h3><a href="/designers/<%= d.slug %>"><%= d.name %></a></h3>
<p class="muted"><%= d.era %><% if (d.city) { %> · <%= d.city %><% } %></p>
</div>
</header>
<% if (d.headline) { %>
<p class="headline"><%= d.headline %></p>
<% } %>
<% if (d.styles && d.styles.length) { %>
<ul class="tags">
<% d.styles.forEach(function (s) { %><li><%= s %></li><% }) %>
</ul>
<% } %>
</article>
<% }); %>
</div>
</div>
</section>
<% if (typeof eraIndex !== 'undefined' && eraIndex && eraIndex.length) { %>
<section class="section era-section" id="by-era">
<div class="wrap">
<div class="section-head">
<h2>By the era</h2>
<a class="muted" href="/designers">Filter the directory →</a>
</div>
<p class="era-section-lede">A working anthology, decade by decade — the designers who defined each chapter of the modern American interior, and the wallcoverings they put on the walls.</p>
<div class="era-grid">
<% eraIndex.forEach(function (e) { %>
<a class="era-card" href="<%= e.href %>">
<span class="era-card-rule" aria-hidden="true"></span>
<h3 class="era-card-title"><%= e.era %></h3>
<p class="era-card-blurb"><%= e.blurb %></p>
<ul class="era-card-names">
<% e.exemplars.forEach(function (n) { %><li><%= n %></li><% }) %>
</ul>
<span class="era-card-count"><%= e.count %> designer<%= e.count === 1 ? '' : 's' %> →</span>
</a>
<% }); %>
</div>
</div>
</section>
<% } %>
<section class="section alt">
<div class="wrap two-col">
<div>
<h2>How to read these profiles</h2>
<ol class="prose">
<li><strong>Era and city.</strong> Every profile is anchored to a working decade and a working city — Dorothy Draper in 1940s New York is a different designer than Athena Calderone in 2020s Brooklyn.</li>
<li><strong>Signature.</strong> One sentence on the visual language a designer is known for. The thing you'd recognize across the room.</li>
<li><strong>Wallcovering pairings.</strong> Three Designer Wallcoverings collections that map to the designer's published interiors — chintz for Buatta, plaster for Vervoordt, hexagonal geometric for Hicks.</li>
</ol>
</div>
<div>
<h2>For designers and PR</h2>
<p>If you'd like to be added to the directory or update an existing profile, use the <a href="/submit">submission form</a>. Profiles are free, editorial, and never paid placement.</p>
<p class="muted">We do not sell contact data and we do not run ads above organic results.</p>
</div>
</div>
</section>
</main>
<%- include('../partials/footer') %>
<script src="/js/grid-controls.js" defer></script>
<script src="/js/hamburger.js" defer></script>