/* ============================================================
   ARTICLE — pagine dedicate sotto /articoli/
   Eredita tutti i token (--bg, --fg, --font-sans, ecc.) da style.css.
   ============================================================ */

/* Nav delle pagine articolo: brand + lang switcher + back link.
   Stesso .nav delle home, ma con un sotto-gruppo "meta" a destra. */
.nav .nav-meta {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: var(--s-4);
}
/* Tipografia identica a quella dei .nav-links della home: Geist Sans, 500, 0.92rem.
   Così le voci nav nelle subpage hanno lo stesso peso/famiglia della home,
   niente stacco visivo. */
.nav .nav-back {
  font-family: var(--font-sans);
  font-size: 0.92rem;
  font-weight: 500;
  letter-spacing: -0.005em;
  color: var(--fg-soft);
  padding: 10px 4px;
  transition: color var(--t-fast) var(--ease);
}
.nav .nav-back:hover {
  color: var(--fg);
}
@media (max-width: 640px) {
  .nav .nav-meta { gap: var(--s-3); }
}
/* telefono: nella pillola il link "← tutti i progetti / altri articoli" diventa
   solo la freccia (il testo resta per gli screen reader tramite aria-label) */
@media (max-width: 560px) {
  .nav .nav-back { font-size: 0; padding: 8px; }
  .nav .nav-back::before { content: "←"; font-size: 1.15rem; color: var(--fg); }
}

/* ============================================================
   TAG — piccole pillole mono per categorizzare l'articolo.
   Stessa estetica delle eyebrow / label mono del sito.
   ============================================================ */
.article-tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
  margin-top: var(--s-3);
  list-style: none;
  padding: 0;
}
.article-tag {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  font-weight: 500;
  text-transform: lowercase;
  letter-spacing: 0.06em;
  color: var(--fg-soft);
  border: 1px solid var(--divider);
  border-radius: 100px;
  padding: 4px 10px;
  white-space: nowrap;
}

/* Misura di lettura più ampia (era 720px troppo "colonnato"). 880px
   = ~75-85 caratteri per linea: comodo da leggere ma con più respiro
   sui lati, non sembra un libro tascabile. */
.article {
  padding: var(--s-24) 0;
}
.article-container {
  max-width: 880px;
}

/* Meta + titolo + lead */
.article-header {
  margin-bottom: var(--s-12);
}
/* Eyebrow con linea orizzontale che si estende a destra — STESSO pattern
   editoriale di .section-eyebrow sulla homepage. Coerenza visiva tra le
   sezioni di Alberto e le pagine articolo. */
.article-eyebrow {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  font-family: var(--font-mono);
  font-size: 0.8rem;            /* stessa misura di tutte le etichette mono */
  color: var(--fg-soft);
  letter-spacing: 0.04em;
  text-transform: lowercase;
  margin-bottom: var(--s-6);
  width: 100%;
  white-space: nowrap;           /* "5 novembre 2026" non si spezza a metà */
}
.article-eyebrow::after {
  content: '';
  flex: 1 1 auto;
  height: 1px;
  background: var(--divider);
}
.article-eyebrow time { color: var(--fg-soft); }
.article-eyebrow .article-readtime::before {
  content: "·";
  margin-right: var(--s-2);
  color: var(--fg-softer);
}
.article-title {
  font-size: clamp(2.1rem, 5vw, 3.8rem);
  font-weight: 900;
  letter-spacing: -0.045em;
  line-height: 1.02;
  margin-bottom: var(--s-4);
}
.article-lead {
  font-size: clamp(1.1rem, 1.6vw, 1.4rem);
  font-weight: 500;
  letter-spacing: -0.015em;
  line-height: 1.5;
  color: var(--fg-soft);
  max-width: 56ch;
}

/* ============================================================
   AUDIO BLOCK — wrapper + player custom
   ============================================================ */
.article-audio {
  margin: var(--s-12) 0;
  padding: var(--s-5) var(--s-6);
  background: var(--bg);
  border: 1px solid var(--divider);
  border-radius: 14px;
}
.audio-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--font-mono);
  font-size: 0.74rem;
  color: var(--fg-soft);
  letter-spacing: 0.08em;
  text-transform: lowercase;
  margin-bottom: var(--s-3);
}
.audio-source {
  color: var(--fg-softer);
}

/* Il tag <audio> nativo viene nascosto da JS (audio.controls = false),
   poi viene costruito accanto .audio-player-ui via audio-player.js */
.audio-target {
  display: none;
}
.audio-player-ui {
  display: flex;
  align-items: center;
  gap: var(--s-4);
}
.audio-play-btn {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--fg);
  color: var(--bg);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background 200ms var(--ease), transform 200ms var(--ease);
  cursor: pointer;
  border: none;
}
.audio-play-btn:hover {
  background: var(--accent);
  transform: scale(1.04);
}
.audio-play-btn:focus-visible {
  outline: 2px solid var(--fg);
  outline-offset: 3px;
}
.audio-play-btn svg {
  width: 16px;
  height: 16px;
  display: block;
}
.audio-play-btn .play-icon { margin-left: 3px; } /* ottica: la freccia "play" pare centrata */
.audio-progress {
  flex: 1;
  height: 4px;
  background: var(--divider);
  border-radius: 2px;
  position: relative;
  cursor: pointer;
}
.audio-progress::before {
  /* zona di click un po' più alta dei 4px reali, per essere comodo da centrare */
  content: '';
  position: absolute;
  inset: -10px 0;
}
.audio-progress-bar {
  height: 100%;
  background: var(--fg);
  border-radius: 2px;
  width: 0%;
}
.audio-time {
  font-family: var(--font-mono);
  font-size: 0.85rem;
  color: var(--fg-soft);
  flex-shrink: 0;
  font-variant-numeric: tabular-nums; /* evita "ballerini" sui numeri che cambiano */
  min-width: 9ch;
  text-align: right;
}

/* ============================================================
   CREDITS BOX — cassetto della fonte originale, ora in fondo
   all'articolo. Riassunto editoriale prima, citation accademica dopo.
   Spaziatura interna più ariosa: paragrafi distanziati, line-height
   alto, padding generoso. Niente più "scritte troppo unite".
   ============================================================ */
.article-credits {
  margin: var(--s-12) 0;
  padding: var(--s-8);
  background: var(--divider);
  border-radius: 12px;
  border-left: 3px solid var(--fg);
  font-size: 0.95rem;
  line-height: 1.75;          /* era 1.55 — più aria tra le righe */
}
.article-credits .credits-label {
  font-family: var(--font-mono);
  font-size: 0.82rem;
  letter-spacing: 0.08em;
  text-transform: lowercase;
  color: var(--fg-soft);
  margin-bottom: var(--s-6);   /* era --s-3 — più stacco dal contenuto */
  display: block;
}
.article-credits p {
  margin-bottom: var(--s-6);   /* era --s-3 — paragrafi più staccati */
}
.article-credits p:last-child { margin-bottom: 0; }
.article-credits .credits-citation {
  color: var(--fg);
}
.article-credits .credits-doi {
  font-family: var(--font-mono);
  font-size: 0.88rem;
}
.article-credits .credits-affiliations {
  font-size: 0.9rem;
  color: var(--fg-soft);
}
.article-credits .credits-disclaimer {
  font-size: 0.88rem;
  color: var(--fg-soft);
  font-style: italic;
  border-top: 1px dashed var(--fg-softer);
  padding-top: var(--s-6);     /* era --s-3 — più aria sopra il disclaimer */
  margin-top: var(--s-2);
}
.article-credits a {
  color: var(--fg);
  border-bottom: 1px solid var(--fg-softer);
  transition: border-color 200ms var(--ease);
}
.article-credits a:hover {
  border-bottom-color: var(--fg);
}

/* ============================================================
   BODY — tipografia leggibile + spaziatura ariosa.
   Font ridotto rispetto a prima (era clamp 1.05/1.18) per non sembrare
   "ingrandito" rispetto al testo della home. Line-height alto = aria.
   ============================================================ */
.article-body {
  font-size: clamp(0.98rem, 1.1vw, 1.08rem);
  line-height: 1.75;
  color: var(--fg);
}
.article-body p {
  margin-bottom: var(--s-4);
}
.article-body p:last-child {
  margin-bottom: 0;
}
/* H2: più editoriale, peso visivo simile ai titoli delle sezioni home */
.article-body h2 {
  font-size: clamp(1.55rem, 2.4vw, 2rem);
  font-weight: 900;
  letter-spacing: -0.035em;
  line-height: 1.15;
  margin-top: var(--s-16);
  margin-bottom: var(--s-4);
  color: var(--fg);
}
.article-body h3 {
  font-size: clamp(1.15rem, 1.5vw, 1.35rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  margin-top: var(--s-8);
  margin-bottom: var(--s-3);
  color: var(--fg);
}

/* Strong: underline grigio tenue statico (uguale alle righe di About sulla home).
   Niente più highlight animato che cresceva al hover — distraeva dal testo.
   L'underline è sempre visibile, sottile, in tonalità soft (--fg-softer). */
.article-body strong {
  font-weight: 700;
  text-decoration: underline;
  text-decoration-color: var(--fg-softer);
  text-decoration-thickness: 1.5px;
  text-underline-offset: 0.18em;
}
.article-body em { font-style: italic; }
.article-body a {
  color: var(--fg);
  border-bottom: 1px solid var(--fg-softer);
  transition: border-color 200ms var(--ease);
}
.article-body a:hover {
  border-bottom-color: var(--fg);
}
.article-body code {
  font-family: var(--font-mono);
  font-size: 0.9em;
  background: var(--divider);
  padding: 2px 6px;
  border-radius: 4px;
}
.article-body blockquote {
  margin: var(--s-8) 0;
  padding: var(--s-3) var(--s-6);
  border-left: 3px solid var(--fg);
  font-style: italic;
  color: var(--fg-soft);
}
.article-body blockquote cite {
  display: block;
  margin-top: var(--s-2);
  font-style: normal;
  font-family: var(--font-mono);
  font-size: 0.82rem;
}
.article-body ul,
.article-body ol {
  margin: var(--s-4) 0;
  padding-left: var(--s-6);
}
.article-body li {
  margin-bottom: var(--s-2);
}
.article-body ul li { list-style: disc; }
.article-body ol li { list-style: decimal; }
/* Immagine "nuda" nel body (raro): mantenuta minimal. Per immagini con
   contesto usare invece <figure class="article-figure"> qui sotto. */
.article-body img {
  width: 100%;
  height: auto;
  border-radius: 10px;
  margin: var(--s-6) 0;
  display: block;
}

/* ============================================================
   FIGURE — immagine + caption mono.
   FIX: margine generoso sopra/sotto la figure (era con var(--s-10),
   token INESISTENTE → faceva 0). Caption staccata dall'immagine con
   var(--s-4), e niente più border-left che la "appiccica" all'img.
   La identità della caption la dà il "// fig. NN" mono.
   ============================================================ */
.article-figure {
  margin: var(--s-16) 0;   /* era var(--s-10) — token rotto → era 0 */
}
.article-figure img {
  width: 100%;
  height: auto;
  display: block;
  border-radius: 12px;
  background: var(--divider);
  box-shadow: 0 20px 44px -22px rgba(10, 10, 10, 0.22);
  border: 1px solid var(--divider);
  margin: 0;
}
.article-figure figcaption {
  margin-top: var(--s-4);       /* era var(--s-3) — più stacco dall'immagine */
  font-family: var(--font-mono);
  font-size: 0.78rem;            /* più piccolo: una nota a margine, non un titolo */
  color: var(--fg-soft);
  line-height: 1.6;
  letter-spacing: 0.02em;
  /* Niente più border-left/padding-left: era ciò che "attaccava" la
     caption all'immagine. L'identità della caption la dà il label mono. */
}
.article-figure figcaption .figcaption-label {
  color: var(--fg-softer);
  text-transform: lowercase;
  letter-spacing: 0.06em;
  margin-right: var(--s-2);
  font-weight: 500;
}

/* ============================================================
   FOOTER articolo + responsive
   ============================================================ */
.article-footer {
  margin-top: var(--s-16);
  padding-top: var(--s-6);
  border-top: 1px solid var(--divider);
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--s-3);
  font-family: var(--font-mono);
  font-size: 0.85rem;
}
.article-back,
.article-discuss {
  color: var(--fg-soft);
  transition: color 200ms var(--ease);
}
.article-back:hover,
.article-discuss:hover {
  color: var(--fg);
}

@media (max-width: 640px) {
  .article { padding: var(--s-20) 0 var(--s-16); }
  .article-audio { padding: var(--s-4); }
  .audio-play-btn { width: 40px; height: 40px; }
  .article-footer { flex-direction: column; align-items: flex-start; }
}

/* ============================================================
   ARTICOLI CORRELATI — sezione popolata via JS in fondo all'articolo.
   Riusa le card .notes-list / .notes-item dell'archivio: stessa estetica,
   nessuna duplicazione di stili.
   ============================================================ */
.article-related {
  margin-top: var(--s-16);   /* spazio dall'articolo/credits sopra */
  padding-top: var(--s-8);   /* spazio tra il border-top e l'eyebrow */
  border-top: 1px solid var(--divider);
}
.article-related .related-header {
  margin-bottom: var(--s-6); /* spazio tra header e prima card */
}
.article-related .related-header .section-eyebrow {
  display: inline-block;
  margin-bottom: var(--s-2); /* spazio tra eyebrow e titolo */
}
.article-related .related-title {
  font-family: var(--font-sans);
  font-size: 1.7rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.1;
  margin: 0;
  color: var(--fg);
}
.article-related .notes-list {
  margin-top: 0;
}
/* Nella colonna stretta dell articolo l elenco a 5 colonne non ci sta:
   versione compatta → [data · tempo | freccia] / [titolo] / [sottotitolo] / [tag] */
.article-related .notes-link {
  grid-template-columns: minmax(0, 1fr) 2rem;
  grid-template-areas:
    "meta    arrow"
    "content content"
    "tags    tags";
  row-gap: var(--s-3);
  padding: var(--s-6) 0;
}
.article-related .notes-num { display: none; }
.article-related .notes-meta { flex-direction: row; gap: var(--s-2); }
.article-related .notes-readtime::before { content: "·"; margin-right: var(--s-2); }
.article-related .notes-title { font-size: clamp(1.3rem, 2.4vw, 1.9rem); }
.article-related .notes-tags { justify-content: flex-start; }
/* al passaggio la riga rientra, così la barra blu a sinistra non copre il testo
   (va ripetuto qui perché la regola compatta sopra azzera il padding) */
@media (hover: hover) and (pointer: fine) {
  .article-related .notes-link:hover { padding-left: var(--s-6); }
}

@media (max-width: 640px) {
  .article-related { margin-top: var(--s-12); padding-top: var(--s-6); }
  .article-related .related-header { margin-bottom: var(--s-4); }
  .article-related .related-title { font-size: 1.35rem; }
}
