/* ============================================================================
   Publication signpost
   ============================================================================
   This file used to style a mirror: a lead card, an issue list, and a full
   article view rendered from Substack's own HTML. All of that is gone, and so
   is the machinery behind it — see data/publications.json for why.

   What is left is a page that says where the publication lives and sends the
   reader there. It holds no issues, so it cannot show an old one; it fetches
   nothing, so there is nothing to fail. Static markup, generated at build time
   by tools/gen-pages.mjs, and correct with scripting off — which the mirror
   never was.
   ========================================================================= */

.pub-signpost{max-width:42rem}

.pub-signpost .lede-2{
  margin:0 0 1.6rem;
  font-size:1.02rem;
  line-height:1.6;
  color:var(--ink-2);
}

/* The publication's own name, set as a wordmark rather than body text — this
   page is a handover to somewhere else and the destination should read like
   a destination. */
.pub-signpost .where{
  margin:0 0 1.5rem;
  padding:1.2rem 1.3rem;
  background:var(--plane);
  border:1px solid var(--line);
  border-radius:12px;
}
.pub-signpost .where .k{
  display:block;
  font-size:.7rem;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--npb-red);
  margin-bottom:.45rem;
}
.pub-signpost .where .n{
  display:block;
  font-size:1.2rem;
  font-weight:680;
  letter-spacing:-.012em;
  color:var(--ink);
}
.pub-signpost .where .u{
  display:block;
  margin-top:.3rem;
  font-size:.85rem;
  color:var(--ink-3);
}

.pub-actions{display:flex;flex-wrap:wrap;gap:.7rem;margin:0 0 1.5rem}

.pub-actions a{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  padding:.72rem 1.15rem;
  border-radius:9px;
  font-size:.92rem;
  font-weight:620;
  text-decoration:none;
  border:1px solid transparent;
  transition:background .15s,border-color .15s,color .15s;
}
.pub-actions .primary{background:var(--npb-red);color:#fff}
.pub-actions .primary:hover{background:var(--npb-red-deep)}
.pub-actions .secondary{background:var(--surface);border-color:var(--line);color:var(--ink-2)}
.pub-actions .secondary:hover{border-color:var(--ink-3);color:var(--ink)}
.pub-actions a:focus-visible{outline:2px solid var(--navy);outline-offset:2px}

/* The arrow is decoration on a link whose text already says "archive", so it
   is drawn rather than typed and hidden from the accessibility tree. */
.pub-actions .arrow{width:1em;height:1em;flex:0 0 auto}

/* Says plainly that the link leaves the site. A reader on a bank domain should
   not discover that by arriving somewhere else. */
.pub-note{
  margin:0;
  font-size:.82rem;
  line-height:1.6;
  color:var(--ink-3);
}

@media (max-width:480px){
  .pub-actions{flex-direction:column;align-items:stretch}
  .pub-actions a{justify-content:center}
}

/* ---------------------------------------------------------------------------
   Recent issues

   Added by publications-list.js when a list has been published, and absent
   otherwise. The signpost above it is the page; this is an extra, and it is
   styled as one — no borders competing with the card, no "latest issue" hero.
   The reader's next action is still the archive button.
   ------------------------------------------------------------------------ */

.pub-recent{max-width:42rem;margin:2.2rem 0 0}
.pub-recent[hidden]{display:none}

.pub-recent h2{
  margin:0 0 .3rem;
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--ink-3);
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:1rem;
  padding-bottom:.6rem;
  border-bottom:1px solid var(--line);
}
/* Stated, never warned about. This list is updated by hand after publishing,
   so being a few days behind is ordinary rather than a fault. */
.pub-recent .asat{
  font-size:.7rem;
  font-weight:400;
  letter-spacing:.02em;
  text-transform:none;
  color:var(--ink-3);
  white-space:nowrap;
}

.pub-issues{list-style:none;margin:0;padding:0}
.pub-issues li{border-bottom:1px solid var(--line-2)}
.pub-issues a{
  display:grid;
  grid-template-columns:4.5rem 1fr;
  gap:.15rem .9rem;
  padding:.72rem .4rem .72rem 0;
  text-decoration:none;
  border-left:2px solid transparent;
  transition:background .12s,border-color .12s;
}
.pub-issues a:hover{background:var(--plane);border-left-color:var(--npb-red);padding-left:.5rem}
.pub-issues a:focus-visible{outline:2px solid var(--navy);outline-offset:-2px}
.pub-issues .d{
  font-size:.74rem;color:var(--ink-3);
  font-variant-numeric:tabular-nums;
  padding-top:.1rem;
}
.pub-issues .t{font-size:.92rem;font-weight:620;color:var(--ink);overflow-wrap:anywhere}
.pub-issues .s{grid-column:2;font-size:.8rem;color:var(--ink-3);line-height:1.45;overflow-wrap:anywhere}

.pub-recent .pub-note{margin-top:.9rem}

@media (max-width:480px){
  .pub-issues a{grid-template-columns:1fr}
  .pub-issues .d{grid-column:1;padding-top:0}
  .pub-issues .s{grid-column:1}
  .pub-recent h2{flex-direction:column;gap:.2rem}
}
