/*
Theme Name: Nieuw Populair Front
Theme URI: https://nieuwpopulairfront.nl
Author: Nieuw Populair Front
Description: Editorial WordPress theme for music, recordings, projects and transmissions.
Version: 1.0.0
Requires at least: 6.4
Requires PHP: 8.0
Text Domain: nieuw-populair-front
*/

:root {
  --paper: #f1f0eb;
  --ink: #111111;
  --muted: #6a6964;
  --line: rgba(17, 17, 17, 0.28);
  --signal: #2448ff;
  --wash: #d8d8d2;
  --display: "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
  --mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  --pad: clamp(1rem, 2.4vw, 2rem);
}

* { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  background: var(--paper);
}

body {
  margin: 0;
  color: var(--ink);
  background:
    linear-gradient(rgba(17,17,17,.035) 1px, transparent 1px),
    var(--paper);
  background-size: 100% 2rem;
  font-family: var(--display);
  font-size: 1rem;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
a:hover, a:focus-visible { color: var(--signal); }

.skip-link {
  position: fixed;
  left: 1rem;
  top: -5rem;
  z-index: 100;
  padding: .75rem 1rem;
  background: var(--ink);
  color: var(--paper);
}
.skip-link:focus { top: 1rem; }

.site-header {
  position: sticky;
  top: 0;
  z-index: 20;
  display: grid;
  grid-template-columns: minmax(12rem, 1fr) auto;
  gap: 1rem;
  align-items: center;
  min-height: 4rem;
  padding: .75rem var(--pad);
  border-bottom: 1px solid var(--ink);
  background: color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter: blur(12px);
}

.wordmark {
  font-family: var(--mono);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .05em;
  text-decoration: none;
  text-transform: uppercase;
}

.site-nav { display: flex; gap: clamp(.8rem, 2.2vw, 2rem); }
.site-nav a {
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .05em;
  text-decoration: none;
  text-transform: uppercase;
}

.front-main { overflow: hidden; }

.intro {
  min-height: calc(100svh - 4rem);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(16rem, 25vw);
  border-bottom: 1px solid var(--ink);
}

.intro-primary {
  display: flex;
  min-width: 0;
  flex-direction: column;
  justify-content: space-between;
  padding: var(--pad);
}

.eyebrow,
.section-code,
.meta,
.empty-code,
.footer-label {
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.title-lockup {
  margin: clamp(4rem, 10vh, 8rem) 0 clamp(3rem, 8vh, 6rem);
  font-size: clamp(4.1rem, 12.6vw, 12.5rem);
  font-stretch: condensed;
  font-weight: 800;
  letter-spacing: -.075em;
  line-height: .74;
  text-transform: uppercase;
}

.title-lockup span { display: block; }
.title-lockup span:nth-child(2) { margin-left: .16em; }

.intro-foot {
  display: grid;
  grid-template-columns: minmax(12rem, 1fr) minmax(16rem, 34rem);
  gap: 2rem;
  align-items: end;
}

.tagline {
  margin: 0;
  font-family: var(--mono);
  font-size: clamp(.8rem, 1.1vw, 1rem);
  letter-spacing: .05em;
  text-transform: uppercase;
}

.intro-copy {
  max-width: 38rem;
  margin: 0;
  font-size: clamp(1.2rem, 2vw, 1.85rem);
  line-height: 1.14;
}

.intro-rail {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  padding: var(--pad);
  border-left: 1px solid var(--ink);
  background: var(--wash);
}

.rail-status { display: grid; gap: .35rem; }
.rail-status strong {
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.rail-status span { font-size: 1.1rem; }

.rail-mark {
  margin: 0 0 -.1em -.08em;
  color: var(--signal);
  font-size: clamp(8rem, 22vw, 22rem);
  font-weight: 800;
  letter-spacing: -.11em;
  line-height: .65;
}

.content-section {
  display: grid;
  grid-template-columns: minmax(12rem, 25vw) minmax(0, 1fr);
  border-bottom: 1px solid var(--ink);
}

.section-head {
  min-height: 15rem;
  padding: var(--pad);
  border-right: 1px solid var(--ink);
}

.section-head h2 {
  margin: 1.4rem 0 0;
  font-size: clamp(2.6rem, 5.5vw, 6rem);
  font-weight: 800;
  letter-spacing: -.055em;
  line-height: .9;
  text-transform: uppercase;
}

.section-body { min-width: 0; }

.empty-state {
  min-height: 15rem;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 2rem;
  align-items: end;
  padding: var(--pad);
}

.empty-state p {
  max-width: 34rem;
  margin: 0;
  font-size: clamp(1.35rem, 3vw, 2.75rem);
  letter-spacing: -.035em;
  line-height: 1;
}

.post-card {
  display: grid;
  grid-template-columns: minmax(11rem, 28%) 1fr auto;
  gap: var(--pad);
  align-items: center;
  min-height: 12rem;
  padding: var(--pad);
  border-bottom: 1px solid var(--line);
  text-decoration: none;
}
.post-card:last-child { border-bottom: 0; }
.post-card:hover { background: var(--ink); color: var(--paper); }
.post-card:hover .card-index { color: #8da1ff; }

.card-image {
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--wash);
  filter: grayscale(1) contrast(1.15);
}
.card-image img { width: 100%; height: 100%; object-fit: cover; }
.card-title {
  margin: 0;
  font-size: clamp(1.75rem, 4vw, 4.75rem);
  font-weight: 700;
  letter-spacing: -.045em;
  line-height: .92;
  text-transform: uppercase;
}
.card-index { align-self: start; color: var(--signal); }

.manifesto {
  display: grid;
  grid-template-columns: minmax(12rem, 25vw) minmax(0, 1fr);
  min-height: 70vh;
  border-bottom: 1px solid var(--ink);
}

.manifesto-label {
  padding: var(--pad);
  border-right: 1px solid var(--ink);
}

.manifesto-copy {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 4rem;
  padding: var(--pad);
}

.manifesto-copy p {
  max-width: 68rem;
  margin: 0;
  font-size: clamp(2.3rem, 6vw, 6.8rem);
  font-weight: 650;
  letter-spacing: -.055em;
  line-height: .9;
}

.manifesto-copy small {
  max-width: 34rem;
  font-family: var(--mono);
  font-size: .8rem;
  line-height: 1.6;
  text-transform: uppercase;
}

.site-footer {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  min-height: 18rem;
  padding: var(--pad);
  color: var(--paper);
  background: var(--ink);
}

.footer-imprint {
  align-self: end;
  font-size: clamp(1.7rem, 4.8vw, 5rem);
  font-weight: 700;
  letter-spacing: -.045em;
  line-height: .9;
  text-transform: uppercase;
}

.footer-meta {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-end;
  text-align: right;
}
.footer-meta a { color: inherit; }

.archive-main, .single-main {
  min-height: 80vh;
  padding: clamp(5rem, 10vw, 9rem) var(--pad) var(--pad);
}
.page-title {
  max-width: 75rem;
  margin: 0 0 4rem;
  font-size: clamp(4rem, 11vw, 10rem);
  letter-spacing: -.07em;
  line-height: .78;
  text-transform: uppercase;
}
.single-content { max-width: 48rem; font-size: 1.15rem; }
.single-content > * { margin-top: 0; margin-bottom: 1.5rem; }
.single-content img { max-width: 100%; height: auto; filter: grayscale(1); }

@media (max-width: 760px) {
  .site-header { grid-template-columns: 1fr; gap: .5rem; }
  .site-nav { justify-content: space-between; }
  .intro { grid-template-columns: 1fr; min-height: auto; }
  .intro-primary { min-height: 78svh; }
  .title-lockup { margin-top: 5rem; font-size: clamp(3.8rem, 22vw, 8rem); }
  .intro-foot { grid-template-columns: 1fr; }
  .intro-rail { min-height: 15rem; border-top: 1px solid var(--ink); border-left: 0; }
  .rail-mark { position: absolute; right: .04em; bottom: -.04em; }
  .content-section, .manifesto { grid-template-columns: 1fr; }
  .section-head, .manifesto-label { min-height: auto; border-right: 0; border-bottom: 1px solid var(--ink); }
  .section-head h2 { margin-top: .6rem; }
  .empty-state { grid-template-columns: 1fr; min-height: 13rem; }
  .post-card { grid-template-columns: 5rem 1fr; }
  .post-card .card-title { grid-column: 2; }
  .card-index { grid-column: 1; grid-row: 1; }
  .site-footer { grid-template-columns: 1fr; }
  .footer-meta { align-items: flex-start; text-align: left; gap: 3rem; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

