Skip to content

Insert HTML here

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Gloock&family=Crimson+Pro:ital,wght@0,300;1,300;1,400&family=Jost:wght@100;200;300&display=swap" rel="stylesheet">
<!-- ── JSON-LD: BREADCRUMB + COLLECTION PAGE ── -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://homesweeteclectic.com/" },
{ "@type": "ListItem", "position": 2, "name": "The Archive", "item": "https://homesweeteclectic.com/blog/" }
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CollectionPage",
"@id": "https://homesweeteclectic.com/blog/#archive",
"name": "The Archive — All Posts",
"description": "Every post on Home Sweet Eclectic. Dark, moody, maximalist interiors — collected obsessions, documented chaos.",
"url": "https://homesweeteclectic.com/blog/",
"inLanguage": "en-US",
"isPartOf": { "@id": "https://homesweeteclectic.com/#website" },
"publisher": { "@id": "https://homesweeteclectic.com/#organization" },
"about": [
{ "@type": "Thing", "name": "Maximalist Interior Design" },
{ "@type": "Thing", "name": "Dark Moody Interiors" },
{ "@type": "Thing", "name": "Eclectic Home Decor" }
]
}
</script>
<style>
/* Scoped aliases — point to global tokens from Additional CSS */
#arc {
--bg: var(--ecc-bg);
--bg1: var(--ecc-bg1);
--bg2: var(--ecc-bg2);
--gold: var(--ecc-gold);
--cream: var(--ecc-cream);
--cream2:var(--ecc-cream2);
--muted: var(--ecc-dim);
--dim: var(--ecc-dark);
--serif: var(--ecc-serif);
--ui: var(--ecc-ui);
--body: var(--ecc-body);
--ease: var(--ecc-ease);
--slow: var(--ecc-slow);
}
#arc { margin:0;padding:0;background:var(--bg);color:var(--cream2);font-family:var(--ui);font-weight:200;overflow-x:hidden; }
#arc *{box-sizing:border-box;}
#arc a{text-decoration:none;color:inherit;}
#arc img{display:block;}
/* ── ARCHIVE HEADER ── */
.arc-head {
padding:clamp(80px,10vw,120px) 6vw72px;
background:var(--bg);
border-bottom:1pxsolidvar(--dim);
position:relative;overflow:hidden;
}
.arc-head-bg {
position:absolute;inset:0;
background:
radial-gradient(ellipse60%80% at 90%60%, rgba(201,168,76,.05) 0%, transparent65%),
radial-gradient(ellipse40%60% at 10%80%, rgba(201,168,76,.02) 0%, transparent60%);
pointer-events:none;
}
.arc-head-noise {
position:absolute;inset:0;opacity:.025;pointer-events:none;
background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='256' height='256'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='256' height='256' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
}
.arc-head-inner { position:relative; max-width:1400px; }
.arc-head-eyebrow {
display:inline-flex;align-items:center;gap:14px;
margin-bottom:20px;
}
.arc-head-eyebrow-line { width:32px;height:1px;background:var(--gold); }
.arc-head-eyebrow-text {
font-size:8px;letter-spacing:5px;text-transform:uppercase;font-weight:200;
color:var(--gold);
}
.arc-head-title {
font-family:var(--serif);font-weight:400;
font-size:clamp(3.5rem,7vw,7.5rem);
color:var(--cream);line-height:.9;letter-spacing:-.04em;
margin:0028px;
}
.arc-head-title em { font-style:italic;color:var(--gold); }
.arc-head-desc {
font-family:var(--body);font-style:italic;
font-size:clamp(1rem,1.4vw,1.25rem);
color:rgba(242,232,213,.45);max-width:520px;line-height:1.65;
}
.arc-head-meta {
display:flex;align-items:center;gap:24px;
margin-top:32px;
}
.arc-head-meta-item {
display:flex;flex-direction:column;gap:4px;
}
.arc-head-meta-val {
font-family:var(--serif);font-weight:400;
font-size:clamp(1.4rem,2vw,2rem);
color:var(--gold);line-height:1;
}
.arc-head-meta-label {
font-size:8px;letter-spacing:4px;text-transform:uppercase;
color:var(--muted);
}
.arc-head-meta-sep { width:1px;height:36px;background:var(--dim); }
.arc-count-ghost {
position:absolute;right:4vw;bottom:-20px;
font-family:var(--serif);font-weight:400;font-style:italic;
font-size:clamp(8rem,16vw,18rem);
color:rgba(201,168,76,.035);line-height:1;
pointer-events:none;user-select:none;
letter-spacing:-.05em;
}
/* ── FILTER STRIP ── */
.arc-filters-wrap {
background:var(--bg1);
border-bottom:1pxsolidvar(--dim);
position:sticky;top:0;z-index:100;
}
.arc-filters {
display:flex;gap:0;overflow-x:auto;
padding:06vw;scrollbar-width:none;
position:relative;
}
.arc-filters::-webkit-scrollbar{display:none;}
.arc-filter-btn {
flex-shrink:0;
padding:18px22px;
font-size:8.5px;letter-spacing:3px;text-transform:uppercase;font-weight:200;
color:var(--muted);background:transparent;border:none;
position:relative;cursor:pointer;
transition:color.35svar(--ease);
display:flex;align-items:center;gap:8px;
}
.arc-filter-btn:hover { color:var(--cream2); }
.arc-filter-btn.active { color:var(--gold); }
.arc-filter-btn-count {
font-size:7px;letter-spacing:1px;
background:rgba(201,168,76,.12);
color:rgba(201,168,76,.6);
padding:2px6px;border-radius:20px;
transition:background.35svar(--ease),color.35svar(--ease);
}
.arc-filter-btn.active .arc-filter-btn-count {
background:rgba(201,168,76,.2);color:var(--gold);
}
.arc-filter-indicator {
position:absolute;bottom:0;left:0;
height:2px;background:var(--gold);
transition:left.35svar(--slow),width .35svar(--slow);
will-change:left,width;
}
.arc-filters-fade-r {
position:absolute;right:0;top:0;bottom:0;width:60px;
background:linear-gradient(to left,var(--bg1) 0%,transparent100%);
pointer-events:none;
}
/* ── POST GRID ── */
.arc-grid {
padding:2px;
background:var(--bg);
display:grid;
gap:2px;
grid-template-columns:1fr1fr1fr;
}
/* Lead card: full-bleed magazine overlay */
.arc-grid .post-card:first-child {
grid-column:1/-1;
min-height:520px;
position:relative;overflow:hidden;
}
.arc-grid .post-card:first-child .pc-img {
position:absolute;inset:0;aspect-ratio:unset;height:100%;
}
.arc-grid .post-card:first-child .pc-img img {
height:100%;
}
.arc-grid .post-card:first-child .pc-img::after {
background:linear-gradient(to right, rgba(7,4,2,.92) 0%, rgba(7,4,2,.7) 45%, rgba(7,4,2,.2) 100%);
}
.arc-grid .post-card:first-child .pc-body {
position:relative;z-index:2;
padding:clamp(40px,5vw,72px) clamp(40px,6vw,80px);
max-width:620px;
}
.arc-grid .post-card:first-child .pc-num { font-size:clamp(4rem,6vw,7rem); }
.arc-grid .post-card:first-child .pc-title { font-size:clamp(1.8rem,3vw,3.2rem); }
.arc-grid .post-card:first-child .pc-excerpt { -webkit-line-clamp:4; }
/* Second row: 2/3 + 1/3 */
.arc-grid .post-card:nth-child(2) { grid-column:span 2; }
.arc-grid .post-card:nth-child(3) { grid-column:span 1; }
/* Post card base */
.post-card {
background:var(--bg1);
position:relative;
cursor:pointer;
display:flex;flex-direction:column;
border:1pxsolidvar(--dim);
transition:border-color .6svar(--ease);
}
.post-card::before {
content:'';
position:absolute;top:0;left:0;right:0;height:2px;
background:var(--gold);
transform:scaleX(0);transform-origin:left;
transition:transform .5svar(--slow);
z-index:3;
}
.post-card:hover::before { transform:scaleX(1); }
.post-card:hover { border-color:rgba(201,168,76,.35); }
/* Card image */
.pc-img {
overflow:hidden;position:relative;
aspect-ratio:4/3;
flex-shrink:0;
}
.pc-img::after {
content:'';position:absolute;inset:0;
background:linear-gradient(to bottom,transparent40%,rgba(7,4,2,.65) 100%);
pointer-events:none;z-index:1;
}
.pc-img::before {
content:'';
position:absolute;inset:0;z-index:2;
background:linear-gradient(115deg,transparent40%,rgba(255,248,200,.06) 50%,transparent60%);
transform:translateX(-100%);
transition:transform .7svar(--ease);
}
.post-card:hover .pc-img::before { transform:translateX(100%); }
.pc-img img {
width:100%;height:100%;object-fit:cover;
filter:brightness(.68) saturate(.82);
transition:transform 1.2svar(--slow),filter .7svar(--ease);
}
.post-card:hover .pc-img img {
transform:scale(1.04);
filter:brightness(.82) saturate(1.05);
}
/* Card body */
.pc-body {
padding:28px30px34px;
display:flex;flex-direction:column;
flex:1;
}
.pc-num {
font-family:var(--serif);font-weight:400;
font-size:clamp(2.5rem,4vw,4.5rem);
color:rgba(201,168,76,.09);line-height:1;
margin:00-10px;display:block;
}
.pc-meta-top {
display:flex;align-items:center;gap:10px;
margin-bottom:12px;
}
.pc-cat {
font-size:8px;letter-spacing:4px;text-transform:uppercase;font-weight:200;
color:var(--gold);
}
.pc-meta-dot { width:2px;height:2px;border-radius:50%;background:var(--muted); }
.pc-read-time {
font-size:8px;letter-spacing:2px;text-transform:uppercase;font-weight:200;
color:var(--muted);
}
.pc-title {
font-family:var(--serif);font-weight:400;
font-size:clamp(1.1rem,1.5vw,1.5rem);
color:var(--cream);line-height:1.2;
margin:0014px;
transition:color.35svar(--ease);
}
.post-card:hover .pc-title { color:var(--gold); }
.pc-excerpt {
font-family:var(--body);font-size:.9rem;font-weight:300;font-style:italic;
color:rgba(242,232,213,.38);line-height:1.65;
margin:0020px;flex:1;
display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.pc-footer {
display:flex;align-items:center;justify-content:space-between;
margin-top:auto;padding-top:16px;
border-top:1pxsolidvar(--dim);
}
.pc-read {
display:inline-flex;align-items:center;gap:10px;
font-size:8px;letter-spacing:3.5px;text-transform:uppercase;font-weight:200;
color:var(--gold);
}
.pc-read::after {
content:'';width:16px;height:1px;background:var(--gold);
transition:width .4svar(--slow);flex-shrink:0;
}
.post-card:hover .pc-read::after { width:32px; }
.pc-date {
font-size:8px;letter-spacing:2px;text-transform:uppercase;font-weight:200;
color:var(--dim);
}
/* ── LOADING STATE ── */
.arc-loading {
grid-column:1/-1;
padding:80px0;text-align:center;
font-size:9px;letter-spacing:4px;text-transform:uppercase;
color:var(--muted);
}
/* ── SKELETON CARDS ── */
.pc-skeleton {
background:var(--bg1);border:1pxsolidvar(--dim);
overflow:hidden;
}
.pc-skeleton .sk-img {
aspect-ratio:4/3;
background:linear-gradient(90deg,var(--bg1) 25%,var(--bg2) 50%,var(--bg1) 75%);
background-size:200%100%;
animation:shimmer 1.8sinfinite;
}
.pc-skeleton .sk-body{padding:24px 28px;}
.pc-skeleton .sk-line {
height:10px;border-radius:2px;margin-bottom:12px;
background:linear-gradient(90deg,var(--bg1) 25%,var(--bg2) 50%,var(--bg1) 75%);
background-size:200%100%;
animation:shimmer 1.8sinfinite;
}
.pc-skeleton .sk-line:nth-child(1){width:30%;}
.pc-skeleton .sk-line:nth-child(2){width:80%;}
.pc-skeleton .sk-line:nth-child(3){width:65%;}
.pc-skeleton .sk-line:nth-child(4){width:40%;}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
/* ── EDITORIAL BREAK (mid-grid) ── */
.arc-break {
grid-column:1/-1;
padding:clamp(60px,8vw,100px) 6vw;
background:var(--bg1);
border-top:1pxsolidvar(--dim);border-bottom:1pxsolidvar(--dim);
display:grid;
grid-template-columns:1fr1fr;
gap:clamp(40px,6vw,80px);
align-items:center;
}
.arc-break-quote {
font-family:var(--serif);font-weight:400;font-style:italic;
font-size:clamp(1.6rem,2.5vw,3rem);
color:var(--cream);line-height:1.05;letter-spacing:-.03em;
margin:0;border-left:2pxsolidvar(--gold);padding-left:32px;
}
.arc-break-quote em { font-style:normal;color:var(--gold); }
.arc-break-right { display:flex;flex-direction:column;gap:24px; }
.arc-break-principle {
display:flex;align-items:flex-start;gap:20px;
padding-bottom:24px;
border-bottom:1pxsolidvar(--dim);
}
.arc-break-principle:last-child { border-bottom:none;padding-bottom:0; }
.arc-break-roman {
font-family:var(--serif);font-weight:400;font-style:italic;
font-size:1.2rem;color:var(--gold);opacity:.5;flex-shrink:0;width:24px;
}
.arc-break-text {
font-size:.8rem;font-weight:200;letter-spacing:.03em;
color:rgba(242,232,213,.45);line-height:1.7;text-transform:uppercase;
}
/* ── STATEMENT BREAK ── */
.arc-statement {
padding:clamp(80px,10vw,120px) 6vw;text-align:center;
background:var(--bg);
border-top:1pxsolidvar(--dim);
position:relative;overflow:hidden;
}
.arc-statement::before {
content:'✦';
display:block;
font-size:.6rem;letter-spacing:8px;
color:rgba(201,168,76,.3);
margin-bottom:24px;
}
.arc-statement-big {
font-family:var(--serif);font-weight:400;font-style:italic;
font-size:clamp(2.2rem,5.5vw,6.5rem);
color:var(--cream);line-height:.92;letter-spacing:-.04em;
margin:0020px;
}
.arc-statement-big em{font-style:normal;color:var(--gold);}
.arc-statement-small {
font-size:8px;letter-spacing:5px;text-transform:uppercase;font-weight:200;
color:var(--muted);margin:0;
}
/* ── LOAD MORE ── */
.arc-more-wrap {
padding:06vw80px;background:var(--bg);
display:flex;flex-direction:column;align-items:center;gap:16px;
}
.arc-progress {
display:flex;align-items:center;gap:12px;
font-size:8px;letter-spacing:3px;text-transform:uppercase;
color:var(--muted);
}
.arc-progress-bar {
width:120px;height:1px;background:var(--dim);position:relative;overflow:hidden;
}
.arc-progress-fill {
position:absolute;inset-y:0;left:0;
background:var(--gold);
transition:width .5svar(--slow);
}
.arc-more-btn {
display:inline-flex;align-items:center;gap:16px;
padding:16px40px;
border:1pxsolidrgba(201,168,76,.4);background:transparent;
font-family:var(--ui);font-size:8.5px;letter-spacing:4px;text-transform:uppercase;font-weight:200;
color:var(--gold);cursor:pointer;
transition:background.35svar(--ease),color.35svar(--ease),border-color .35svar(--ease);
position:relative;
}
.arc-more-btn::after {
content:'';width:18px;height:1px;background:currentColor;transition:width .35svar(--ease);
}
.arc-more-btn:hover{background:var(--gold);color:var(--bg);border-color:var(--gold);}
.arc-more-btn:hover::after{width:0;}
.arc-more-btn:disabled{opacity:.35;cursor:default;}
/* ── REVEAL ── */
.reveal{opacity:0;transform:translateY(24px);transition:opacity 1s var(--slow),transform 1s var(--slow);}
.reveal.in{opacity:1;transform:translateY(0);}
/* ── STAGGER ── */
.reveal-stagger > *:nth-child(1){transition-delay:.05s}
.reveal-stagger > *:nth-child(2){transition-delay:.12s}
.reveal-stagger > *:nth-child(3){transition-delay:.19s}
.reveal-stagger > *:nth-child(4){transition-delay:.26s}
.reveal-stagger > *:nth-child(5){transition-delay:.33s}
.reveal-stagger > *:nth-child(6){transition-delay:.40s}
/* ── FOCUS ── */
.arc-filter-btn:focus-visible { outline:2px solid var(--gold);outline-offset:-2px; }
.post-card:focus-visible { outline:2px solid var(--gold);outline-offset:2px; }
/* ── REDUCED MOTION ── */
@media(prefers-reduced-motion:reduce){
.reveal,.post-card,.pc-imgimg,.pc-img::before,.post-card::before,.arc-filter-indicator{transition:none!important;animation:none!important;}
.reveal{opacity:1;transform:none;}
}
/* ── RESPONSIVE ── */
@media(max-width:1100px){
.arc-grid{grid-template-columns:1fr1fr;}
.arc-grid.post-card:first-child{min-height:400px;}
.arc-grid.post-card:nth-child(2){grid-column:span 1;}
.arc-break{grid-template-columns:1fr;}
}
@media(max-width:680px){
.arc-grid{grid-template-columns:1fr;gap:2px;}
.arc-grid.post-card:first-child{grid-column:1;min-height:320px;}
.arc-grid.post-card:nth-child(2){grid-column:1;}
.arc-head-meta{flex-wrap:wrap;gap:16px;}
.arc-head-meta-sep{display:none;}
}
@media print{
.arc-filters-wrap,.arc-more-wrap{display:none!important;}
.arc-grid{grid-template-columns:1fr1fr!important;}
.post-card{break-inside:avoid;}
}
</style>
<div id="arc">
<!-- ARCHIVE HEADER -->
<header class="arc-head reveal" aria-label="Blog archive">
<divclass="arc-head-bg"></div>
<divclass="arc-head-noise"></div>
<divclass="arc-head-inner">
<divclass="arc-head-eyebrow">
<spanclass="arc-head-eyebrow-line"aria-hidden="true"></span>
<spanclass="arc-head-eyebrow-text">Home Sweet Eclectic</span>
</div>
<h1class="arc-head-title">The <em>Archive</em></h1>
<pclass="arc-head-desc">Rooms that break every rule. Collected obsessions. Documented chaos — curated with intent.</p>
<divclass="arc-head-meta">
<divclass="arc-head-meta-item">
<spanclass="arc-head-meta-val"id="arcTotalPosts">—</span>
<spanclass="arc-head-meta-label">Posts</span>
</div>
<divclass="arc-head-meta-sep"></div>
<divclass="arc-head-meta-item">
<spanclass="arc-head-meta-val"id="arcTotalCats">—</span>
<spanclass="arc-head-meta-label">Rooms</span>
</div>
<divclass="arc-head-meta-sep"></div>
<divclass="arc-head-meta-item">
<spanclass="arc-head-meta-val"id="arcYearSpan">—</span>
<spanclass="arc-head-meta-label">Years</span>
</div>
</div>
</div>
<divclass="arc-count-ghost"id="arcCount"aria-hidden="true">—</div>
</header>
<!-- FILTER STRIP -->
<nav class="arc-filters-wrap" aria-label="Filter posts by category">
<divclass="arc-filters"id="arcFilters"role="tablist">
<buttonclass="arc-filter-btn active"data-cat=""role="tab"aria-selected="true"aria-controls="arcGrid">
All Rooms
<spanclass="arc-filter-btn-count"id="arcAllCount"></span>
</button>
<spanclass="arc-filter-indicator"id="arcFilterIndicator"aria-hidden="true"></span>
</div>
<divclass="arc-filters-fade-r"aria-hidden="true"></div>
</nav>
<!-- POST GRID -->
<div class="arc-grid reveal-stagger" id="arcGrid" role="feed" aria-busy="true" aria-label="Posts">
<divclass="pc-skeleton"><divclass="sk-img"></div><divclass="sk-body"><divclass="sk-line"></div><divclass="sk-line"></div><divclass="sk-line"></div><divclass="sk-line"></div></div></div>
<divclass="pc-skeleton"><divclass="sk-img"></div><divclass="sk-body"><divclass="sk-line"></div><divclass="sk-line"></div><divclass="sk-line"></div></div></div>
<divclass="pc-skeleton"><divclass="sk-img"></div><divclass="sk-body"><divclass="sk-line"></div><divclass="sk-line"></div><divclass="sk-line"></div></div></div>
<divclass="pc-skeleton"><divclass="sk-img"></div><divclass="sk-body"><divclass="sk-line"></div><divclass="sk-line"></div><divclass="sk-line"></div></div></div>
<divclass="pc-skeleton"><divclass="sk-img"></div><divclass="sk-body"><divclass="sk-line"></div><divclass="sk-line"></div><divclass="sk-line"></div></div></div>
<divclass="pc-skeleton"><divclass="sk-img"></div><divclass="sk-body"><divclass="sk-line"></div><divclass="sk-line"></div><divclass="sk-line"></div></div></div>
</div>
<!-- EDITORIAL BREAK (injected by JS after first page) -->
<!-- STATEMENT BREAK -->
<div class="arc-statement reveal" id="arcStatement" style="display:none;" aria-live="polite">
<h2class="arc-statement-big">More is always <em>more.</em></h2>
<pclass="arc-statement-small"id="arcStatementCount">— posts that prove the point</p>
</div>
<!-- LOAD MORE -->
<div class="arc-more-wrap" id="arcMoreWrap" style="display:none;">
<divclass="arc-progress">
<spanid="arcProgressText">0 of 0</span>
<divclass="arc-progress-bar"aria-hidden="true">
<divclass="arc-progress-fill"id="arcProgressFill"style="width:0%"></div>
</div>
</div>
<buttonclass="arc-more-btn"id="arcMoreBtn">Load More Rooms</button>
</div>
</div><!-- #arc -->
<script>
(function(){
varAPI='/wp-json/wp/v2/';
varstate= { page:1, perPage:12, cat:'', total:0, loaded:0, cats:{}, loading:false, firstPage:true };
vargrid=document.getElementById('arcGrid');
varmoreBtn=document.getElementById('arcMoreBtn');
varmoreWrap=document.getElementById('arcMoreWrap');
varstatement=document.getElementById('arcStatement');
vararcCount=document.getElementById('arcCount');
vararcStatCount=document.getElementById('arcStatementCount');
vararcTotalPosts=document.getElementById('arcTotalPosts');
vararcTotalCats=document.getElementById('arcTotalCats');
vararcYearSpan=document.getElementById('arcYearSpan');
vararcAllCount=document.getElementById('arcAllCount');
vararcProgressText=document.getElementById('arcProgressText');
vararcProgressFill=document.getElementById('arcProgressFill');
varfiltersEl=document.getElementById('arcFilters');
varindicator=document.getElementById('arcFilterIndicator');
varbreakInjected=false;
varBREAK_AFTER=6;
varYEAR_START=2019;
functionfmtDate(d){ vardt=newDate(d); returndt.toLocaleDateString('en-US',{year:'numeric',month:'long'}); }
functionstrip(h){ vard=document.createElement('div');d.innerHTML=h;returnd.textContent||d.innerText||''; }
functionesc(s){ returnString(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;'); }
functionreadTime(text){ returnMath.max(1,Math.ceil(text.split(/\s+/).length/200))+'m'; }
functioncardHtml(post, idx){
varimgMeta=post._embedded &&post._embedded['wp:featuredmedia'] &&post._embedded['wp:featuredmedia'][0];
varimgUrl='';
if(imgMeta){
varsizes=imgMeta.media_details &&imgMeta.media_details.sizes;
imgUrl=sizes&&sizes.large ?sizes.large.source_url :sizes&&sizes.full ?sizes.full.source_url :imgMeta.source_url ||'';
}
varcats=post._embedded &&post._embedded['wp:term'] ?post._embedded['wp:term'][0] : [];
varcatName=cats&&cats.length?cats[0].name :'Interiors';
varexcerpt=post.excerpt ?strip(post.excerpt.rendered).replace('[&hellip;]','').replace('…','').trim().slice(0,115)+'…':'';
varcontentText=post.content ?strip(post.content.rendered) :excerpt;
varrt=readTime(contentText);
varnum=String(state.loaded-state.perPage+idx+1).padStart(2,'0');
return'<a href="'+esc(post.link)+'" class="post-card reveal" aria-label="'+esc(strip(post.title.rendered))+'">'
+(imgUrl?'<div class="pc-img"><img src="'+esc(imgUrl)+'" alt="" loading="lazy" width="800" height="600"/></div>':'')
+'<div class="pc-body">'
+'<span class="pc-num" aria-hidden="true">'+num+'</span>'
+'<div class="pc-meta-top">'
+'<span class="pc-cat">'+esc(catName)+'</span>'
+'<span class="pc-meta-dot" aria-hidden="true"></span>'
+'<span class="pc-read-time">'+rt+' read</span>'
+'</div>'
+'<h2 class="pc-title">'+strip(post.title.rendered)+'</h2>'
+(excerpt?'<p class="pc-excerpt">'+esc(excerpt)+'</p>':'')
+'<div class="pc-footer">'
+'<span class="pc-read">Explore</span>'
+'<span class="pc-date">'+fmtDate(post.date)+'</span>'
+'</div>'
+'</div>'
+'</a>';
}
functioneditorialBreakHtml(){
return'<div class="arc-break reveal">'
+'<blockquote class="arc-break-quote">"Nothing here was chosen carelessly. Every room is a refusal to be <em>reasonable.</em>"</blockquote>'
+'<div class="arc-break-right">'
+'<div class="arc-break-principle"><span class="arc-break-roman">I</span><span class="arc-break-text">More texture is always the answer — layer until it breathes</span></div>'
+'<div class="arc-break-principle"><span class="arc-break-roman">II</span><span class="arc-break-text">Dark rooms are not gloomy — they are gathered, intimate, deliberate</span></div>'
+'<div class="arc-break-principle"><span class="arc-break-roman">III</span><span class="arc-break-text">Rules about what goes together exist to be broken once you understand them</span></div>'
+'</div>'
+'</div>';
}
functionupdateProgress(){
varpct=state.total>0?Math.round(state.loaded/state.total*100) :0;
arcProgressText.textContent=state.loaded+' of '+state.total;
arcProgressFill.style.width=pct+'%';
}
functionmoveIndicator(){
varactiveBtn=filtersEl.querySelector('.arc-filter-btn.active');
if(!activeBtn) return;
indicator.style.left=activeBtn.offsetLeft+'px';
indicator.style.width=activeBtn.offsetWidth+'px';
}
functionloadPosts(reset){
if(state.loading) return;
state.loading=true;
grid.setAttribute('aria-busy','true');
if(reset){
state.page=1;state.loaded=0;
breakInjected=false;
grid.innerHTML='<div class="pc-skeleton"><div class="sk-img"></div><div class="sk-body"><div class="sk-line"></div><div class="sk-line"></div><div class="sk-line"></div></div></div>'.repeat(6);
}
moreBtn.disabled=true;
varurl=API+'posts?per_page='+state.perPage+'&page='+state.page+'&_embed=1';
if(state.cat) url+='&categories='+state.cat;
fetch(url)
.then(function(r){
state.total=parseInt(r.headers.get('X-WP-Total')||0,10);
arcCount.textContent=state.total;
arcTotalPosts.textContent=state.total;
arcAllCount.textContent=state.total;
arcStatCount.textContent='— '+state.total+' posts that prove the point';
arcYearSpan.textContent=newDate().getFullYear() -YEAR_START+1;
returnr.json();
})
.then(function(posts){
if(reset) grid.innerHTML='';
varprevLoaded=state.loaded;
state.loaded+=posts.length;
varfrag=document.createDocumentFragment();
vartmp=document.createElement('div');
posts.forEach(function(p,i){ tmp.innerHTML=cardHtml(p,i); frag.appendChild(tmp.firstChild); });
/* Inject editorial break after BREAK_AFTER posts on first page */
if(!breakInjected&&state.loaded>=BREAK_AFTER&&posts.length>0){
varchildren=Array.prototype.slice.call(frag.childNodes);
varbreakEl=document.createElement('div');
breakEl.innerHTML=editorialBreakHtml();
varinsertAfter=children[BREAK_AFTER-prevLoaded-1];
if(insertAfter&&insertAfter.nextSibling){
frag.insertBefore(breakEl.firstChild, insertAfter.nextSibling);
} else {
frag.appendChild(breakEl.firstChild);
}
breakInjected=true;
}
grid.appendChild(frag);
state.page++;
state.loading=false;
grid.setAttribute('aria-busy','false');
varhasMore=state.loaded<state.total;
moreWrap.style.display=hasMore?'flex':'none';
moreBtn.disabled=false;
statement.style.display=state.loaded>0?'block':'none';
updateProgress();
initReveal();
})
.catch(function(err){ state.loading=false; grid.setAttribute('aria-busy','false'); console.error('[HSE archive]',err); });
}
functionloadCats(){
fetch(API+'categories?per_page=20&hide_empty=true&orderby=count&order=desc')
.then(function(r){ return r.json(); })
.then(function(cats){
varcount=0;
cats.slice(0,8).forEach(function(c){
varbtn=document.createElement('button');
btn.className='arc-filter-btn';
btn.dataset.cat=c.id;
btn.setAttribute('role','tab');
btn.setAttribute('aria-selected','false');
btn.setAttribute('aria-controls','arcGrid');
btn.innerHTML=esc(c.name)+'<span class="arc-filter-btn-count">'+c.count+'</span>';
filtersEl.insertBefore(btn, indicator);
state.cats[c.id]=c.name;
count++;
});
arcTotalCats.textContent=count||'—';
setTimeout(moveIndicator, 50);
filtersEl.addEventListener('click',function(e){
varbtn=e.target.closest('.arc-filter-btn');
if(!btn) return;
filtersEl.querySelectorAll('.arc-filter-btn').forEach(function(b){
b.classList.remove('active');b.setAttribute('aria-selected','false');
});
btn.classList.add('active');btn.setAttribute('aria-selected','true');
state.cat=btn.dataset.cat||'';
moveIndicator();
loadPosts(true);
});
window.addEventListener('resize', moveIndicator);
});
}
functioninitReveal(){
varels=document.querySelectorAll('.reveal:not(.in)');
if(!els.length) return;
vario=newIntersectionObserver(function(entries){
entries.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target); } });
},{threshold:0.05,rootMargin:'0px 0px 120px 0px'});
els.forEach(function(el){ io.observe(el); });
}
moreBtn.addEventListener('click', function(){ loadPosts(false); });
loadCats();
loadPosts(true);
initReveal();
})();
</script>

Home Sweet Eclectic

  • THE BLOG ARCHIVE
  • About
  • Contact
Home Sweet Eclectic

Home Sweet Eclectic

Interiors that refuse to behave — where every collision is intentional, and nothing was decorated in an afternoon.

Est. 2023  ·  Dark. Moody. Gloriously Eclectic.

Explore Rooms Latest Posts

The room is already crowded. Nothing here is accidental.

Dark  ·  Moody  ·  Gloriously Eclectic

Browse by Room

View all posts
Eclectic maximalist living rooms
Eclectic Maximalist Living Rooms
Dark moody maximalist bedrooms
Dark & Moody Bedrooms
Bold eclectic maximalist kitchens
Bold & Dramatic Kitchens
Dark cottagecore eclectic interiors
Dark Aesthetic Dark & Moody

Latest Obsessions

See All
01
Jewel tone living rooms
Living Rooms
13 Jewel Tone Living Rooms That Are Impossible to Ignore
02
Dark moody eclectic living rooms
Dark & Moody
15 Dark Moody Eclectic Living Rooms That Break All the Rules
03
Art Nouveau Gothic kitchen
Kitchens
17 Eclectic Maximalist Art Nouveau Gothic Western Kitchen Ideas

More is always more.

43 rooms that prove the point

Explore All Posts →
Join the Obsession

Rooms that break all the rules — in your inbox.

Weekly dark inspo, eclectic finds, and decor that dares. No beige. Ever.

Maximalist kitchen Dark cottage Russian bedroom Eclectic kitchen Russian living room
Home Sweet Eclectic
  • Blog
  • About
  • Contact
  • Privacy Policy

Dark. Moody. Gloriously Eclectic.

© 2026 Home Sweet Eclectic

  • THE BLOG ARCHIVE
  • About
  • Contact

© 2026 Home Sweet Eclectic

  • THE BLOG ARCHIVE
  • About
  • Contact