body {
background-color: #f3eedc;
font-family: “Helvetica Neue”, Helvetica, Arial, sans-serif;
color: #1c1c1c;
text-align: center;
background-image: radial-gradient(rgba(0,0,0,0.02) 1px, transparent 1px);
background-size: 4px 4px;
}
/* Header */
.catalog-header {
margin-top: 60px;
margin-bottom: 30px;
text-transform: uppercase;
}
.catalog-header h2 {
font-size: 50px;
letter-spacing: 2px;
color: #d2191e;
margin: 0;
}
.catalog-header h1 {
font-size: 120px;
line-height: 0.9;
letter-spacing: -6px;
margin: 10px 0;
font-weight: 900;
color: #d2191e;
}
.catalog-year {
font-size: 16px;
letter-spacing: 3px;
color: #555;
margin-bottom: 50px;
}
/* Catalog grid */
.ikea-catalog {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 40px;
padding: 60px 20px;
max-width: 1100px;
margin: auto;
}
.ikea-item {
position: relative;
width: 180px;
transition: transform 0.25s ease, box-shadow 0.25s ease;
cursor: pointer;
}
.ikea-item img {
width: 100%;
height: auto;
border-radius: 2px;
display: block;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.ikea-item:hover {
transform: scale(1.08);
}
.ikea-item:hover img {
box-shadow: 0 10px 25px rgba(255, 230, 80, 0.9);
}
.ikea-item .label {
font-size: 14px;
color: #222;
margin-top: 8px;
text-transform: uppercase;
letter-spacing: 0.05em;
}
/* Footer */
footer {
background-color: #e7dec7;
padding: 40px 20px;
text-align: center;
margin-top: 80px;
border-top: 1px solid #c5bfa8;
font-size: 13px;
color: #4a4a4a;
}
footer .footer-logo {
font-size: 28px;
font-weight: 900;
color: #d2191e;
letter-spacing: -2px;
}
footer .footer-text {
max-width: 700px;
margin: 10px auto 20px;
line-height: 1.5;
}
footer .barcode {
font-family: monospace;
font-size: 14px;
color: #888;
letter-spacing: 4px;
margin-top: 10px;
}
/* Responsive */
@media (max-width: 768px) {
.ikea-item { width: 42%; }
.catalog-header h1 { font-size: 70px; }
}
@media (max-width: 480px) {
.ikea-item { width: 80%; }
.catalog-header h1 { font-size: 50px; }
}
JAKE
DENNY
HELLUV ALOTA — Catalog (1970s)
/* ———- Palette & Base ———- */
:root{
–paper:#f7efe2;
–muted:#6b4f3b;
–accent:#d06a0a; /* burnt orange */
–accent-2:#9aa43a; /* avocado-ish green */
–card:#fff7ee;
–border:#e0d3c1;
}
html,body{height:100%;margin:0;background:var(–paper);color:var(–muted);font-family:”Futura”, “Trebuchet MS”, Arial, sans-serif;-webkit-font-smoothing:antialiased;}
a{color:var(–accent);text-decoration:none;}
.wrap{max-width:1100px;margin:40px auto;padding:26px;}
/* ———- Header / masthead ———- */
header.mast{
display:flex;
gap:18px;
align-items:center;
border-bottom:4px solid var(–border);
padding:14px 0 22px;
}
.brand-mark{
width:120px;height:62px;background:linear-gradient(90deg,var(–accent-2),var(–accent));display:flex;align-items:center;justify-content:center;border-radius:4px;color:#fff;font-weight:800;font-size:20px;letter-spacing:2px;
box-shadow: 0 3px 0 rgba(0,0,0,0.06) inset;
}
.mast-info h1{margin:0;font-size:28px;letter-spacing:1px;font-weight:700;}
.mast-info p{margin:6px 0 0;font-size:13px;color:#7a6250;}
/* ———- Top promo banner ———- */
.promo{
display:flex;
gap:14px;
align-items:center;
margin:20px 0 26px;
padding:12px 14px;
background:linear-gradient(90deg, rgba(208,106,10,0.06), rgba(154,164,58,0.03));
border-radius:6px;border:1px dashed var(–border);
}
.promo .tag{font-weight:700;color:var(–accent);padding:6px 10px;border-radius:4px;background:#fff;box-shadow:0 2px 0 rgba(0,0,0,0.03);}
/* ———- Two-column intro ———- */
.intro{
display:grid;
grid-template-columns: 1fr 320px;
gap:24px;
align-items:start;
margin-bottom:28px;
}
.intro .lead{font-size:18px;line-height:1.5;color:#5b4336;margin:0;}
.intro .issue{background:var(–card);padding:12px;border-radius:6px;border:1px solid var(–border);font-weight:700;text-align:center;color:var(–muted);}
/* ———- Grid of products (catalog) ———- */
.grid{
display:grid;
grid-template-columns: repeat(auto-fit,minmax(220px,1fr));
gap:20px;
}
.card{
background:var(–card);
border:1px solid var(–border);
border-radius:6px;
padding:12px;
box-shadow: 0 6px 16px rgba(0,0,0,0.03);
display:flex;
flex-direction:column;
gap:10px;
transition:transform .14s ease, box-shadow .14s ease;
}
.card:hover{transform:translateY(-6px);box-shadow:0 14px 30px rgba(0,0,0,0.06);}
.media{
height:160px;
border-radius:4px;
overflow:hidden;
display:flex;
align-items:center;
justify-content:center;
background:linear-gradient(180deg,#f1e8dc,#efe6d7);
}
.media img{width:100%;height:100%;object-fit:cover;display:block;}
.title{font-size:16px;font-weight:700;color:var(–muted);margin:0;}
.desc{font-size:13px;color:#7a6250;margin:0;}
.meta{display:flex;justify-content:space-between;align-items:center;margin-top:auto;font-size:13px;color:#7a6250;}
.price{font-weight:800;color:var(–accent-2);}
.sku{font-size:12px;color:#a0826d}
/* small assembly icon row (70s flat icon style) */
.assembly{display:flex;gap:8px;align-items:center;margin-top:8px;font-size:12px;color:#8c6f55}
.assembly .box{width:18px;height:12px;border:2px solid #8c6f55;display:inline-block;border-left:6px solid #8c6f55;transform:skewX(-8deg);}
/* ———- Modal (product detail) ———- */
.modal{
position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(100,72,55,0.45);opacity:0;visibility:hidden;transition:opacity .18s ease;
}
.modal.active{opacity:1;visibility:visible;}
.modal-card{width:90%;max-width:900px;background:var(–paper);border-radius:6px;padding:18px;border:6px solid rgba(0,0,0,0.03);display:grid;grid-template-columns:1fr 360px;gap:16px;align-items:start}
.modal-media{height:360px;background:#efe7d8;display:flex;align-items:center;justify-content:center;border-radius:4px;overflow:hidden}
.modal-media img{width:100%;height:100%;object-fit:cover}
.modal-info h3{margin:0;color:var(–muted);font-size:22px}
.modal-info p{color:#6b4f3b;font-size:14px}
.close{display:inline-block;margin-top:12px;padding:8px 12px;background:#fff;border:1px solid var(–border);border-radius:6px;color:var(–muted);text-decoration:none}
/* ———- Footer ———- */
footer{margin-top:34px;padding-top:18px;border-top:1px solid var(–border);color:#8c6f55;font-size:13px;display:flex;justify-content:space-between;align-items:center}
/* ———- Print styles ———- */
@media print{
body{background:#fff}
.mast .brand-mark{display:none}
.promo,.close,footer,.promo{display:none}
.wrap{padding:0;margin:0}
.modal{display:none}
}
/* ———- Responsive ———- */
@media (max-width:860px){
.intro{grid-template-columns:1fr}
.modal-card{grid-template-columns:1fr}
.mast{flex-direction:column;align-items:flex-start;gap:12px}
}
HELLUV ALOTA — Home & Concept
Catalog Edition — 1973 • Scandinavian influence, American grit
Curated objects for the home and the mind. Practical by day, conceptual by night. Each piece intentionally imperfect — built to be lived in, argued about, and posted.
Idea, Unassembled
A simple, flat-packed idea: glue optional. Made from reclaimed thinking boards.
Concept 2.0
Iteration for the restless — stackable, modular, and suspiciously cheerful.
Emotional Support Chair
Comfort engineered around a questionable Instagram caption.
Art, Flatpack
A flat-packed art piece. Instructions included in the form of a poem.
Corporate Soul — DIY Kit
Everything you need to brand your feelings. Price includes existential subscription.
// product dataset (match data-id)
const data = {
1: {title:”Idea, Unassembled”, desc:”A simple, flat-packed idea: glue optional. Made from reclaimed thinking boards.”, sku:”HLLV-001″, price:”$0.00″, img:”https://via.placeholder.com/1200×900/efe6d8/aa8c5c?text=Idea+Unassembled”},
2: {title:”Concept 2.0″, desc:”Iteration for the restless — stackable, modular, and suspiciously cheerful.”, sku:”HLLV-002″, price:”—”, img:”https://via.placeholder.com/1200×900/efe6d8/7b8a2c?text=Concept+2.0″},
3: {title:”Emotional Support Chair”, desc:”Comfort engineered around a questionable Instagram caption.”, sku:”HLLV-003″, price:”$79.00″, img:”https://via.placeholder.com/1200×900/efe6d8/b0612b?text=Emotional+Support+Chair”},
4: {title:”Art, Flatpack”, desc:”A flat-packed art piece. Instructions included in the form of a poem.”, sku:”HLLV-004″, price:”$404.00″, img:”https://via.placeholder.com/1200×900/efe6d8/d08915?text=Art+Flatpack”},
5: {title:”Corporate Soul — DIY Kit”, desc:”Everything you need to brand your feelings. Price includes existential subscription.”, sku:”HLLV-005″, price2:”Not for resale”, img:”https://via.placeholder.com/1200×900/efe6d8/9aa43a?text=Corporate+Soul+Kit”}
};
// open modal
const cards = document.querySelectorAll(‘.card’);
const modal = document.getElementById(‘modal’);
const modalImg = document.getElementById(‘modalImg’);
const modalTitle = document.getElementById(‘modalTitle’);
const modalDesc = document.getElementById(‘modalDesc’);
const modalSku = document.getElementById(‘modalSku’);
const modalPrice = document.getElementById(‘modalPrice’);
const closeBtn = document.getElementById(‘closeBtn’);
cards.forEach(card => {
card.addEventListener(‘click’, () => {
const id = card.getAttribute(‘data-id’);
const item = data[id];
if(!item) return;
modalImg.src = item.img;
modalImg.alt = item.title;
modalTitle.textContent = item.title;
modalDesc.textContent = item.desc;
modalSku.textContent = item.sku || ”;
modalPrice.textContent = item.price || item.price2 || ”;
modal.classList.add(‘active’);
modal.setAttribute(‘aria-hidden’,’false’);
document.body.style.overflow = ‘hidden’;
});
// keyboard open
card.addEventListener(‘keydown’, (e) => {
if(e.key === ‘Enter’ || e.key === ‘ ‘) { e.preventDefault(); card.click(); }
});
});
// close modal
function closeModal(){
modal.classList.remove(‘active’);
modal.setAttribute(‘aria-hidden’,’true’);
document.body.style.overflow = ”;
}
closeBtn.addEventListener(‘click’, (e) => { e.preventDefault(); closeModal(); });
modal.addEventListener(‘click’, (e) => { if(e.target === modal) closeModal(); });
document.addEventListener(‘keydown’, (e) => { if(e.key === ‘Escape’) closeModal(); });



