/* De leeskolom van /writing/. Laadt bovenop to.css, dat de basis doet
   (body, wrap, nav, knoppen, wachtlijst, voettekst).

   Bron: Paper, pagina "Redesign App", artboards "Site · Blog artikel —
   336 recensies" en "Site · Blog overzicht".

   De maatvoering is die van een leespagina, niet van een
   landingspagina: één kolom van 680px, tekst op 19px/33px, en geen
   enkel blok dat breder is dan die kolom. Dat is het verschil dat de
   eerste versie miste. */

/* to.css kent --ground-raised niet (die staat alleen in
   src/styles/global.css, voor de React-homepage). Zelfde waarde, hier
   aangevuld zodat het cijferkader dezelfde verhoogde vlakkleur heeft
   als de rest van de site. */
:root {
  --ground-raised: #171412;
}

.lees {
  padding-top: clamp(56px, 7vw, 104px);
  padding-bottom: clamp(48px, 6vw, 88px);
}

.lees-kolom {
  width: min(680px, 100% - clamp(40px, 10vw, 144px));
  margin: 0 auto;
}

.lees-terug {
  display: inline-block;
  font-size: 15px;
  color: var(--text-muted);
  margin-bottom: 28px;
}

.lees-terug:hover {
  color: var(--text);
}

.lees-kolom h1 {
  font-size: clamp(34px, 4.6vw, 56px);
  font-weight: 500;
  letter-spacing: -0.035em;
  line-height: 1.14;
}

/* Second line of a two-line headline. */
.title-muted {
  display: block;
  color: rgba(247, 244, 240, 0.42);
}

.lees-dek {
  margin-top: 22px;
  font-size: clamp(18px, 2vw, 21px);
  line-height: 1.62;
  color: var(--text-secondary);
}

/* Byline. Het portret is rechthoekig, zoals elke foto op de site; de
   naam linkt naar de auteurspagina zodat de auteur een eigen entiteit
   is voor answer engines. */
.byline {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 36px;
  padding-top: 28px;
  border-top: 1px solid var(--hairline);
}

.byline-foto {
  flex-shrink: 0;
  line-height: 0;
}

.byline-foto img {
  width: 44px;
  height: 55px;
  object-fit: cover;
  border-radius: 4px;
}

.byline-tekst {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.byline-naam {
  font-size: 15px;
  font-weight: 500;
  text-decoration: underline;
  text-decoration-color: var(--hairline-input);
  text-underline-offset: 3px;
}

.byline-naam:hover {
  text-decoration-color: var(--accent);
}

.byline-rol {
  font-size: 14px;
  color: var(--text-muted);
}

/* Lopende tekst */
.lees-kolom h2 {
  margin-top: 64px;
  font-size: clamp(24px, 2.6vw, 30px);
  font-weight: 500;
  letter-spacing: -0.025em;
  line-height: 1.33;
}

.lees-kolom p {
  margin-top: 24px;
  font-size: 19px;
  line-height: 33px;
  color: var(--text-soft);
}

.lees-kolom h2 + p {
  margin-top: 20px;
}

/* Eerste alinea van een sectie: vol contrast, de rest zachter. Dat is
   de hiërarchie uit maat en kleur in plaats van uit lettergewicht. */
.lees-sterk {
  color: var(--text) !important;
}

.lees-kolom a:not(.lees-terug):not(.byline-naam):not(.btn-fill):not(.inhoud a) {
  text-decoration: underline;
  text-decoration-color: var(--hairline-input);
  text-underline-offset: 3px;
}

.lees-kolom a:not(.lees-terug):not(.byline-naam):not(.btn-fill):not(.inhoud a):hover {
  text-decoration-color: var(--accent);
}

/* A link inside muted body text reads at full contrast. */
.lees-kolom p > a {
  color: var(--text);
}

/* Comparison table. On desktop it starts at the column's left edge and runs
   up to 880px, never past the page gutter. Below 760px each row stacks: the
   feature, then one line per app. */
.comparison {
  display: block;
  width: max(100%, min(880px, (100vw + 100%) / 2 - clamp(20px, 5vw, 72px)));
  margin-top: 40px;
}

.comparison + h2 {
  margin-top: 80px;
}

.comparison caption {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.comparison thead,
.comparison tbody {
  display: block;
}

.comparison tr {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr) minmax(0, 1fr);
  column-gap: 24px;
  align-items: start;
  padding: 18px 0;
  border-top: 1px solid var(--hairline);
}

.comparison thead tr {
  align-items: baseline;
  padding-top: 0;
  border-top: 0;
}

.comparison tbody tr:last-child {
  border-bottom: 1px solid var(--hairline);
}

.comparison th,
.comparison td {
  text-align: left;
  font-size: 16px;
  font-weight: 400;
  line-height: 24px;
  color: var(--text);
}

.comparison thead th {
  font-size: 14px;
  font-weight: 500;
  line-height: 18px;
}

.comparison thead th:first-child {
  font-weight: 400;
  color: var(--text-secondary);
}

.comparison-app {
  display: none;
}

.comparison-value {
  display: block;
  color: var(--text-soft);
}

.comparison-muted {
  font-size: 14px;
  color: var(--text-muted);
}

.comparison-note {
  display: block;
  margin-top: 2px;
  font-size: 14px;
  line-height: 20px;
  color: var(--text-muted);
}

/* Cijferkader */
.cijfers {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 32px 40px;
  margin-top: 44px;
  padding: 36px 40px;
  border-radius: 16px;
  background: var(--ground-raised);
}

.cijfer {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.cijfer-getal {
  font-size: 40px;
  font-weight: 500;
  letter-spacing: -0.035em;
  line-height: 1.15;
}

/* Eén accentmoment per pagina: het cijfer waar het hele stuk om draait. */
.cijfer-accent {
  color: var(--accent);
}

.cijfer-label {
  font-size: 16px;
  line-height: 24px;
  color: var(--text-secondary);
}

/* Genummerde klachten */
.klachten,
.antwoorden {
  list-style: none;
  margin-top: 40px;
}

.klachten li,
.antwoorden li {
  padding: 26px 0;
  border-top: 1px solid var(--hairline);
}

.klachten li:last-child,
.antwoorden li:last-child {
  border-bottom: 1px solid var(--hairline);
}

.klacht-nr {
  display: block;
  font-size: 14px;
  line-height: 20px;
  color: var(--text-muted);
  margin-bottom: 10px;
}

.klachten h3,
.antwoorden h3 {
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 30px;
}

.klachten p,
.antwoorden p {
  margin-top: 10px;
  font-size: 18px;
  line-height: 30px;
  color: var(--text-soft);
}

/* Inhoudsopgave. Staat boven het stuk, in de leeskolom, en is bewust
   klein: hij hoort de lezer te oriënteren, niet de eerste alinea weg te
   duwen. Genummerd omdat de secties een volgorde hebben. */
.inhoud {
  margin-top: 40px;
  padding: 22px 26px;
  border: 1px solid var(--hairline);
  border-radius: 14px;
}

.lees-kolom .inhoud-kop {
  margin-top: 0;
  font-size: 15px;
  line-height: 22px;
  color: var(--text-muted);
}

.inhoud ol {
  margin-top: 12px;
  padding-left: 18px;
}

.inhoud li {
  font-size: 17px;
  line-height: 30px;
  color: var(--text-muted);
}

.inhoud a {
  color: var(--text-soft);
}

.inhoud a:hover {
  color: var(--text);
}

/* Vragen in een artikel. De .vraag-onderdelen zelf komen uit to.css; hier
   staat alleen de omhulling, want daar is .vragen een tweekolomssectie en
   moet het in een leeskolom één kolom blijven. */
.lees-vragen {
  margin-top: 44px;
}

/* Citaat */
.lees-kolom blockquote {
  margin-top: 56px;
  padding-left: 28px;
  border-left: 2px solid var(--accent);
  font-size: clamp(22px, 2.4vw, 28px);
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 1.5;
}

/* Slot: de wachtlijst staat in het stuk zelf, niet als aparte balk. */
.lees-slot {
  margin-top: 72px;
  padding-top: 32px;
  border-top: 1px solid var(--hairline);
}

.lees-slot p {
  margin-top: 0;
  color: var(--text-soft);
}

.lees-slot .app-store-badge {
  margin-top: 20px;
}


/* Auteurspagina */
.auteur-foto {
  width: 200px;
  height: 250px;
  object-fit: cover;
  border-radius: 4px;
  margin-bottom: 32px;
}

.auteur-links,
.auteur-berichten {
  list-style: none;
  margin-top: 28px;
}

.auteur-links li {
  display: inline-block;
  margin-right: 24px;
  font-size: 17px;
}

.auteur-berichten li {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  padding: 20px 0;
  border-top: 1px solid var(--hairline);
  font-size: 18px;
}

.auteur-berichten li:last-child {
  border-bottom: 1px solid var(--hairline);
}

.auteur-berichten span {
  color: var(--text-muted);
  flex-shrink: 0;
}

/* Overzicht */
.overzicht-kop {
  font-size: clamp(40px, 5.4vw, 64px);
  font-weight: 500;
  letter-spacing: -0.04em;
  line-height: 1.1;
}

.overzicht-sub {
  margin-top: 24px;
  max-width: 640px;
  font-size: clamp(18px, 2vw, 21px);
  line-height: 1.62;
  color: var(--text-secondary);
}

.berichten {
  margin-top: clamp(48px, 6vw, 88px);
}

.bericht {
  display: flex;
  align-items: flex-start;
  gap: 48px;
  padding: 40px 0;
  border-top: 1px solid var(--hairline);
}

.bericht:last-child {
  border-bottom: 1px solid var(--hairline);
}

.bericht-datum {
  width: 160px;
  flex-shrink: 0;
  font-size: 16px;
  line-height: 42px;
  color: var(--text-muted);
}

.bericht-tekst {
  display: flex;
  flex-direction: column;
  gap: 14px;
  flex: 1;
}

.bericht-kop {
  font-size: clamp(24px, 2.8vw, 34px);
  font-weight: 500;
  letter-spacing: -0.03em;
  line-height: 1.24;
}

.bericht:hover .bericht-kop {
  color: var(--accent);
}

.bericht-dek {
  font-size: 18px;
  line-height: 30px;
  color: var(--text-soft);
}

.bericht-duur {
  width: 120px;
  flex-shrink: 0;
  text-align: right;
  font-size: 16px;
  line-height: 42px;
  color: var(--text-muted);
}

@media (max-width: 760px) {
  .cijfers {
    grid-template-columns: minmax(0, 1fr);
    padding: 28px;
  }

  .bericht {
    flex-direction: column;
    gap: 12px;
  }

  .bericht-datum,
  .bericht-duur {
    width: auto;
    line-height: 24px;
    text-align: left;
  }

  .comparison thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }

  .comparison tr {
    grid-template-columns: minmax(0, 1fr);
    row-gap: 6px;
  }

  .comparison th[scope="row"] {
    font-weight: 500;
    margin-bottom: 2px;
  }

  .comparison td {
    display: grid;
    grid-template-columns: 124px minmax(0, 1fr);
    column-gap: 16px;
    align-items: baseline;
  }

  .comparison-app {
    display: block;
    font-size: 14px;
    line-height: 24px;
    color: var(--text-secondary);
  }
}
