:root{
  --bg:#0a0b0d;
  --ink:#e9e6df;
  --read:rgba(233,230,223,.80);
  --read-hi:#f3f0e8;
  --dim:rgba(233,230,223,.42);
  --faint:rgba(233,230,223,.30);
  --hair:rgba(233,230,223,.14);
  --glow:rgba(233,230,223,.13);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{min-height:100%}
body{
  background:var(--bg);color:var(--ink);
  font-family:'Jost',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
}

/* ---- background stack ---- */
#scope{
  position:fixed;inset:0;width:100%;height:100%;display:block;
  z-index:0;opacity:.5;filter:blur(.4px);
}
#grain{
  position:fixed;inset:0;width:100%;height:100%;
  z-index:2;pointer-events:none;
  mix-blend-mode:overlay;opacity:.08;image-rendering:auto;
}
#veil{
  position:fixed;inset:0;z-index:3;pointer-events:none;
  background:radial-gradient(ellipse at center, rgba(10,11,13,.34) 22%, rgba(6,7,8,.80) 100%);
}

/* ---- top bar ---- */
.topbar{
  position:fixed;top:0;left:0;right:0;z-index:6;
  display:flex;align-items:center;justify-content:space-between;
  padding:1.5rem clamp(1.4rem,5vw,3rem);
  pointer-events:none;
}
.mark{
  pointer-events:auto;
  font-family:'Cormorant Garamond',serif;font-weight:300;
  font-size:1.45rem;letter-spacing:.2em;text-indent:.2em;
  color:var(--ink);text-decoration:none;opacity:.92;
  transition:opacity .5s ease;
}
.mark:hover{opacity:1}
.back{
  pointer-events:auto;
  font-weight:300;text-transform:uppercase;letter-spacing:.3em;text-indent:.3em;
  font-size:.62rem;color:var(--dim);text-decoration:none;transition:color .5s ease;
}
.back:hover{color:var(--ink)}

/* ---- document ---- */
.doc{
  position:relative;z-index:5;
  max-width:46rem;margin:0 auto;
  padding:clamp(7rem,18vh,11rem) clamp(1.6rem,6vw,2rem) clamp(6rem,14vh,9rem);
}
.kicker{
  font-weight:300;text-transform:uppercase;
  letter-spacing:.5em;text-indent:.5em;font-size:1.06rem;
  color:rgba(233,230,223,.58);margin-bottom:2.4rem;
}
.lede{
  font-family:'Cormorant Garamond',serif;font-weight:300;
  font-size:clamp(1.7rem,4.4vw,2.5rem);line-height:1.32;
  letter-spacing:.005em;color:var(--ink);
  margin-bottom:2.8rem;text-wrap:balance;
}
.lede em{font-style:italic;color:var(--read-hi)}

/* ---- music section page body ---- */
.body p{
  font-family:'Cormorant Garamond',serif;font-weight:400;
  font-size:clamp(1.5rem,2.9vw,1.72rem);line-height:1.78;
  letter-spacing:.004em;color:var(--read);
  margin-bottom:1.5rem;text-wrap:pretty;
}
.body em{font-style:italic;color:var(--ink)}
.body a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--hair);
  transition:border-color .4s ease}
.body a:hover{border-color:var(--ink)}

.sec{
  font-family:'Jost',sans-serif;font-weight:300;
  text-transform:uppercase;letter-spacing:.42em;text-indent:.42em;
  font-size:.94rem;color:var(--faint);
  margin:3.6rem 0 1.3rem;
}

.feature{
  margin:1.2rem 0 1rem;padding:2.2rem clamp(1.4rem,4vw,2.4rem);
  border:1px solid var(--hair);border-radius:2px;
  background:linear-gradient(180deg, rgba(233,230,223,.025), rgba(233,230,223,0));
}
.feature .tag{
  font-family:'Jost',sans-serif;font-weight:300;text-transform:uppercase;
  letter-spacing:.4em;text-indent:.4em;font-size:.6rem;color:var(--faint);
  display:block;margin-bottom:1rem;
}
.feature .title{
  font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:400;
  font-size:clamp(1.9rem,5vw,2.8rem);line-height:1.18;color:var(--ink);
  margin-bottom:.5rem;text-wrap:balance;
}
.by{
  font-family:'Jost',sans-serif;font-weight:300;font-size:.78rem;
  letter-spacing:.16em;color:var(--dim);margin:-.4rem 0 1.4rem;
}
.feature p{
  font-family:'Cormorant Garamond',serif;font-weight:400;
  font-size:clamp(1.4rem,2.8vw,1.62rem);line-height:1.74;color:var(--read);
  margin-bottom:1.2rem;text-wrap:pretty;
}
.feature p:last-child{margin-bottom:0}

.links{
  display:flex;flex-wrap:wrap;gap:1.4rem;margin:.4rem 0 .2rem;
}
.lk{
  position:relative;font-family:'Jost',sans-serif;font-weight:300;
  text-transform:uppercase;letter-spacing:.26em;text-indent:.26em;font-size:.66rem;
  color:var(--dim);text-decoration:none;padding:.3em 0;transition:color .5s ease;
}
.lk::after{
  content:"";position:absolute;left:0;bottom:0;width:0;height:1px;
  background:var(--ink);transition:width .5s cubic-bezier(.2,.7,.2,1);
}
.lk:hover{color:var(--ink)}
.lk:hover::after{width:100%}

.articles{list-style:none;margin:.6rem 0 0;padding:0}
.articles li{margin:0 0 1.1rem}
.art{
  font-family:'Cormorant Garamond',serif;font-weight:400;font-style:italic;
  font-size:clamp(1.38rem,2.7vw,1.58rem);line-height:1.4;
  color:var(--read);text-decoration:none;
  border-bottom:1px solid var(--hair);
  transition:color .4s ease,border-color .4s ease;
}
.art:hover{color:var(--read-hi);border-color:var(--ink)}

.lede,.body p,.sec,.feature .title,.feature p,.coda{
  transition:color .5s ease,text-shadow .5s ease;
}
.lede:hover{color:#f7f4ed;text-shadow:0 0 26px var(--glow)}
.body p:hover{color:var(--read-hi);text-shadow:0 0 22px var(--glow)}

/* ---- listen control (music section page only) ---- */
.listen{
  position:fixed;z-index:6;left:50%;bottom:1.5rem;transform:translateX(-50%);
  display:flex;align-items:center;gap:.7rem;
  padding:.55rem 1rem;border:1px solid var(--hair);border-radius:999px;
  background:rgba(10,11,13,.42);backdrop-filter:blur(6px);
  color:var(--dim);cursor:pointer;
  font-family:'Jost',sans-serif;font-weight:300;text-transform:uppercase;
  letter-spacing:.26em;text-indent:.26em;font-size:.58rem;
  transition:color .5s ease,border-color .5s ease,opacity 1.4s ease;
  opacity:0;animation:fade 2s ease 1.4s forwards;
}
.listen:hover{color:var(--ink);border-color:rgba(233,230,223,.3)}
.listen .dot{
  width:7px;height:7px;border-radius:50%;background:var(--faint);
  transition:background .5s ease,box-shadow .5s ease;flex:0 0 auto;
}
.listen.live .dot{
  background:#e9e6df;box-shadow:0 0 9px rgba(233,230,223,.7);
  animation:pulse 2.6s ease-in-out infinite;
}
.listen.live{color:var(--ink)}
.note{
  position:fixed;z-index:7;left:50%;bottom:4.2rem;transform:translateX(-50%) translateY(6px);
  max-width:min(32rem,90vw);text-align:center;
  font-family:'Jost',sans-serif;font-weight:300;font-size:.82rem;line-height:1.65;
  letter-spacing:.03em;color:var(--read);
  background:rgba(8,9,11,.96);
  border:1px solid rgba(233,230,223,.28);border-radius:6px;
  box-shadow:0 10px 34px rgba(0,0,0,.55);
  padding:.85rem 1.2rem;
  opacity:0;pointer-events:none;transition:opacity .45s ease,transform .45s ease;
}
.note.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---- shared rule + close ---- */
.rule{
  border:0;height:1px;margin:3.6rem 0;
  background:linear-gradient(90deg,
    rgba(233,230,223,0) 0%, rgba(233,230,223,.22) 50%, rgba(233,230,223,0) 100%);
}
.close{margin-top:3.6rem;text-align:center}
.close .coda{
  font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;
  font-size:clamp(1.42rem,3.2vw,1.78rem);line-height:1.4;color:var(--ink);
  margin-bottom:2.4rem;
}
.doorways{display:flex;align-items:center;justify-content:center;gap:1.9rem}
.door{
  position:relative;font-family:'Jost',sans-serif;font-weight:300;
  text-transform:uppercase;letter-spacing:.34em;text-indent:.34em;font-size:.82rem;
  color:var(--dim);text-decoration:none;padding:.4em 0;transition:color .6s ease;
}
.door::after{
  content:"";position:absolute;left:50%;bottom:0;width:0;height:1px;
  background:var(--ink);transform:translateX(-50%);
  transition:width .5s cubic-bezier(.2,.7,.2,1);
}
.door:hover{color:var(--ink)}
.door:hover::after{width:100%}
.sep{width:1px;height:1.15em;background:var(--hair)}

/* ---- article body (Hugo markdown output) ---- */
.article-date{
  font-family:'Jost',sans-serif;font-weight:300;text-transform:uppercase;
  letter-spacing:.3em;text-indent:.3em;font-size:.7rem;color:var(--faint);
  margin-bottom:3rem;
}
.article-body p,
.article-body li{
  font-family:'Cormorant Garamond',serif;font-weight:400;
  font-size:clamp(1.5rem,2.9vw,1.72rem);line-height:1.78;
  letter-spacing:.004em;color:var(--read);
  margin-bottom:1.5rem;text-wrap:pretty;
}
.article-body h2{
  font-family:'Jost',sans-serif;font-weight:300;
  text-transform:uppercase;letter-spacing:.38em;text-indent:.38em;
  font-size:.88rem;color:var(--faint);
  margin:3.6rem 0 1.3rem;
}
.article-body h3{
  font-family:'Jost',sans-serif;font-weight:300;
  text-transform:uppercase;letter-spacing:.28em;text-indent:.28em;
  font-size:.78rem;color:var(--faint);
  margin:2.4rem 0 1rem;
}
.article-body img{
  display:block;width:100%;height:auto;
  margin:2rem 0;border-radius:1px;
}
.article-body a{
  color:var(--ink);text-decoration:none;
  border-bottom:1px solid var(--hair);transition:border-color .4s ease;
}
.article-body a:hover{border-color:var(--ink)}
.article-body strong{color:var(--ink)}
.article-body em{font-style:italic;color:var(--ink)}
.article-body blockquote{
  border-left:1px solid var(--hair);
  padding:.6rem 0 .6rem 1.4rem;
  margin:1.8rem 0;
}
.article-body blockquote p{color:var(--dim);font-style:italic}
.article-body ul,.article-body ol{
  padding-left:1.8rem;margin-bottom:1.5rem;
}
.article-body li{margin-bottom:.5rem}
.article-body code{
  font-family:monospace;font-size:.88em;
  color:var(--read-hi);background:rgba(233,230,223,.08);
  padding:.1em .35em;border-radius:2px;
}

/* ---- entry animations ---- */
.doc>*{opacity:0;transform:translateY(14px);
  animation:rise 1.4s cubic-bezier(.2,.7,.2,1) forwards}
.doc>*:nth-child(1){animation-delay:.15s}
.doc>*:nth-child(2){animation-delay:.30s}
.doc>*:nth-child(n+3){animation-delay:.45s}

@keyframes rise{to{opacity:1;transform:translateY(0)}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}}
@keyframes fade{to{opacity:1}}

@media (max-width:560px){
  .doorways{flex-direction:column;gap:1.1rem}
  .doorways .sep{display:none}
  .note{bottom:4.4rem}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .doc>*,.listen{animation:none;opacity:1;transform:none}
  .listen{transform:translateX(-50%)}
}

/* ---- bandcamp players ---- */
.player{margin:1.5rem 0 1.2rem}
.player .bc{display:block;width:100%;border-radius:2px}
.player-feature{max-width:34rem}            /* keep the featured Solo player from over-spanning */
.feature .player{margin:1.4rem 0 1.2rem}
