.avanzamento {
  position:fixed; top:0; left:0; right:0; height:2px; z-index:70;
  pointer-events:none; background:transparent;
}
.avanzamento span {
  display:block; height:100%; width:100%; transform:scaleX(0);
  transform-origin:left center; background:var(--accent);
}

.articolo { padding-block:clamp(28px, 4vw, 44px) var(--sezione); }

.briciole { margin-bottom:clamp(28px, 4vw, 44px); }
.briciole ol {
  list-style:none; margin:0; padding:0;
  display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px;
  font-size:.72rem; font-weight:600; text-transform:uppercase;
  letter-spacing:.14em; color:var(--ink-faint);
}
.briciole li + li::before { content:"/"; margin-right:10px; color:var(--ink-faint); opacity:.6; }
.briciole a { color:var(--ink-soft); transition:color .3s var(--ease); }
.briciole a:hover { color:var(--accent); }
.briciole [aria-current] { color:var(--ink-faint); }

.articolo-testata h1 {
  margin:0; font-family:var(--font-display); font-weight:500;
  font-size:clamp(2.1rem, 5vw, 3.5rem); line-height:1.08; letter-spacing:-.012em;
}
.articolo-testata .sommario {
  margin:22px 0 0; font-size:clamp(1.1rem, 1.7vw, 1.3rem);
  line-height:1.6; color:var(--ink-soft);
}

.riga-firma {
  margin-top:clamp(28px, 4vw, 40px); padding-top:24px;
  border-top:1px solid var(--line);
  display:flex; align-items:center; gap:16px;
}
.firma-foto {
  width:52px; height:52px; flex:0 0 auto; object-fit:cover;
  border:1px solid var(--line-strong); border-radius:2px; filter:saturate(.92);
}
.firma-nome {
  font-size:.95rem; font-weight:600; color:var(--ink);
  transition:color .3s var(--ease);
}
.firma-nome:hover { color:var(--accent); }
.firma-date {
  margin:5px 0 0; display:flex; flex-wrap:wrap; gap:4px 16px;
  font-size:.72rem; font-weight:500; text-transform:uppercase;
  letter-spacing:.12em; color:var(--ink-faint);
}

.apertura-articolo {
  margin:clamp(34px, 4.6vw, 60px) 0 0; position:relative;
  border:1px solid var(--line-strong); border-radius:2px; overflow:hidden;
  background:var(--srf-1);
}
.apertura-articolo img { width:100%; height:auto; display:block; }
.apertura-articolo::after {
  content:""; position:absolute; inset:0; pointer-events:none;
  box-shadow:inset 0 0 90px 12px rgba(12,11,11,.5);
}

.articolo-corpo {
  margin-top:clamp(40px, 6vw, 68px);
  display:grid; grid-template-columns:250px minmax(0, 1fr);
  gap:clamp(32px, 5vw, 72px); align-items:start;
}

.indice {
  position:sticky; top:28px;
  border-left:1px solid var(--line); padding-left:22px;
}
.indice h2 {
  margin:0 0 16px; font-size:.72rem; font-weight:600;
  text-transform:uppercase; letter-spacing:.18em; color:var(--ink-faint);
  font-family:var(--font-body);
}
.indice ol { list-style:none; margin:0; padding:0; counter-reset:voce; }
.indice li { counter-increment:voce; margin-bottom:11px; }
.indice a {
  display:block; font-size:.86rem; line-height:1.35; color:var(--ink-soft);
  transition:color .3s var(--ease);
}
.indice a::before {
  content:counter(voce, decimal-leading-zero); margin-right:9px;
  font-size:.68rem; color:var(--ink-faint); font-variant-numeric:tabular-nums;
}
.indice a:hover, .indice a.qui { color:var(--accent); }
.indice a.qui::before { color:var(--accent); }

.prosa { max-width:none; font-size:1.075rem; line-height:1.72; }
.prosa > *:first-child { margin-top:0; }
.prosa p { margin:0 0 1.35em; }
.prosa h2 {
  margin:2.4em 0 .7em; font-family:var(--font-display); font-weight:500;
  font-size:clamp(1.65rem, 3vw, 2.25rem); line-height:1.14; color:var(--ink);
  scroll-margin-top:32px;
}
.prosa h3 {
  margin:2em 0 .5em; font-family:var(--font-display); font-weight:500;
  font-size:clamp(1.22rem, 1.9vw, 1.5rem); line-height:1.22; color:var(--accent);
}
.prosa h4 {
  margin:1.7em 0 .4em; font-size:1rem; font-weight:600; color:var(--ink);
  text-transform:uppercase; letter-spacing:.08em;
}
.prosa a {
  color:var(--ink);
  background:linear-gradient(var(--accent), var(--accent)) left bottom / 100% 1px no-repeat;
  transition:color .3s var(--ease), background-size .3s var(--ease);
  padding-bottom:1px;
}
.prosa a:hover { color:var(--accent-viva); background-size:100% 2px; }
.prosa strong { font-weight:600; color:var(--ink); }
.prosa em { font-style:italic; }
.prosa ul, .prosa ol { margin:0 0 1.35em; padding-left:1.4em; }
.prosa li { margin-bottom:.55em; }
.prosa li::marker { color:var(--accent); }
.prosa hr { border:0; border-top:1px solid var(--line); margin:2.6em 0; }

.prosa img, .prosa figure img {
  width:100%; height:auto; border:1px solid var(--line-strong);
  border-radius:2px; margin-block:.6em; filter:saturate(.92);
}
.prosa figure { margin:2.2em 0; }
.prosa figcaption {
  margin-top:12px; font-size:.82rem; color:var(--ink-faint); line-height:1.5;
}

.prosa table {
  width:100%; border-collapse:collapse; margin:2.2em 0;
  font-size:.95rem; font-variant-numeric:tabular-nums;
  background:var(--srf-1);
  border:1px solid var(--line-strong);
  border-top:2px solid rgba(194,160,91,.55);
  box-shadow:0 18px 44px -30px rgba(0,0,0,.8);
}
.prosa th {
  text-align:left; padding:14px 16px; vertical-align:top;
  font-weight:600; color:var(--accent);
  border-bottom:1px solid var(--line);
}
.prosa thead th, .prosa tr:first-child th {
  font-size:.72rem; text-transform:uppercase; letter-spacing:.14em;
  border-bottom:1px solid rgba(194,160,91,.35);
  background:var(--srf-2);
}
.prosa td {
  padding:14px 16px; border-bottom:1px solid var(--line); vertical-align:top;
}
.prosa tbody tr:nth-child(even) td,
.prosa tbody tr:nth-child(even) th:not(:only-of-type) { background:rgba(241,239,233,.025); }
.prosa tr:last-child td, .prosa tr:last-child th { border-bottom:0; }
.prosa td em, .prosa th em { color:var(--ink-soft); }

.prosa .avvertenza { font-size:.8rem; line-height:1.65; color:#8B7CE8; }
.prosa .aggiornamento { font-size:.82rem; font-weight:600; color:var(--ink); }

.citazione {
  position:relative; isolation:isolate;
  margin:clamp(2.8em, 5vw, 3.6em) 0;
  padding:clamp(28px, 3.2vw, 40px) clamp(24px, 3vw, 44px) clamp(26px, 3vw, 36px);
}
.citazione::before,
.citazione::after {
  content:""; position:absolute; z-index:-1; pointer-events:none;
  width:clamp(52px, 9%, 96px); height:clamp(44px, 26%, 78px);
  border-color:rgba(194,160,91,.4); border-style:solid; border-width:0;
}
.citazione::before { top:0; left:0; border-top-width:1px; border-left-width:1px; }
.citazione::after { bottom:0; right:0; border-bottom-width:1px; border-right-width:1px; }

.cit-brace {
  position:absolute; z-index:-2; inset:-4% -3%;
  background:radial-gradient(52% 68% at 34% 44%, rgba(194,160,91,.16), transparent 74%);
}

.cit-marchio {
  position:absolute; z-index:-1; bottom:clamp(14px, 1.8vw, 24px); right:clamp(20px, 2.8vw, 42px);
  width:clamp(74px, 11vw, 116px); aspect-ratio:1;
  color:var(--accent); opacity:.11; pointer-events:none;
}
.cit-marchio svg { display:block; width:100%; height:100%; }

.citazione blockquote { margin:0; padding:0; border:0; }
.citazione blockquote p {
  margin:0; font-family:var(--font-display); font-style:italic; font-weight:400;
  font-size:clamp(1.18rem, 2.1vw, 1.62rem); line-height:1.5; letter-spacing:-.004em;
  color:var(--ink); text-wrap:pretty;
}

.citazione figcaption {
  margin-top:clamp(22px, 2.6vw, 32px); padding-top:clamp(18px, 2vw, 24px);
  position:relative;
}
.citazione figcaption::before {
  content:""; position:absolute; top:0; left:0;
  width:clamp(44px, 8vw, 72px); height:1px; background:var(--accent);
  transform:scaleX(var(--sx, 1)); transform-origin:left center;
}
.cit-autore {
  display:block; font-family:var(--font-body); font-size:.76rem; font-weight:600;
  text-transform:uppercase; letter-spacing:.19em; color:var(--ink-soft);
}
.cit-opera {
  display:block; margin-top:7px; font-family:var(--font-display); font-style:italic;
  font-size:clamp(1rem, 1.5vw, 1.18rem); line-height:1.3; color:var(--accent-viva);
}

@media (prefers-reduced-motion: no-preference) {
  .cit-brace { animation:cit-brace 11s ease-in-out infinite alternate; }
  @keyframes cit-brace {
    from { opacity:.62; transform:scale(.985); }
    to   { opacity:1;   transform:scale(1.015); }
  }
}
.moto .citazione figcaption { --sx:0; }

.elenco-fonti {
  list-style:none; margin:1.6em 0 0; padding:0;
  counter-reset:fonte;
  display:grid; grid-template-columns:repeat(2, minmax(0, 1fr));
  column-gap:clamp(28px, 4vw, 56px); row-gap:clamp(18px, 2.2vw, 26px);
}
.elenco-fonti li {
  counter-increment:fonte; position:relative; margin:0;
  padding-left:2.6em; font-size:.92rem; line-height:1.55; color:var(--ink-soft);
}
.elenco-fonti li::before {
  content:counter(fonte, decimal-leading-zero);
  position:absolute; left:0; top:.16em;
  font-size:.72rem; font-weight:600; font-variant-numeric:tabular-nums;
  letter-spacing:.08em; color:var(--accent); opacity:.7;
}
.elenco-fonti em { font-style:italic; color:var(--ink); }
.elenco-fonti a {
  display:inline-block; margin-top:5px; padding:2px 9px;
  border:1px solid var(--line-strong); border-radius:2px; background:none;
  font-family:var(--font-body); font-size:.66rem; font-weight:600;
  text-transform:uppercase; letter-spacing:.13em; color:var(--ink-faint);
  transition:border-color .3s var(--ease), color .3s var(--ease);
}
.elenco-fonti a:hover { border-color:var(--accent); color:var(--accent-viva); }

.faq { margin-top:1.4em; }
.prosa .faq-domanda {
  position:relative; margin:2.1em 0 .6em; padding-top:20px;
  color:var(--ink); font-size:clamp(1.16rem, 1.8vw, 1.4rem);
}
.prosa .faq-domanda::before {
  content:""; position:absolute; top:0; left:0;
  width:28px; height:1px; background:var(--accent); opacity:.55;
}
.faq > .faq-domanda:first-child { margin-top:0; }

.prosa img.emblema {
  width:auto; max-width:min(272px, 100%); margin:2.4em auto;
  border:0; border-radius:0; background:none;
  filter:drop-shadow(0 0 24px rgba(194,160,91,.22));
  -webkit-mask-image:radial-gradient(circle at 50% 48%, #000 54%, transparent 74%);
          mask-image:radial-gradient(circle at 50% 48%, #000 54%, transparent 74%);
}

.ruota-nel-testo {
  margin:clamp(2.6em, 5vw, 3.8em) 0;
  padding:clamp(30px, 4vw, 52px) clamp(20px, 3vw, 40px);
  border-block:1px solid var(--line);
  background:
    radial-gradient(70% 58% at 50% 34%, rgba(194,160,91,.055), transparent 70%),
    var(--srf-1);
}
.ruota-nel-testo .ruota-giostra {
  max-width:min(480px, 92%); container-type:inline-size;
}
.ruota-nel-testo .ruota-centro { width:52%; }
.ruota-nel-testo .ruota-icona {
  width:46%; max-width:none; margin-bottom:6%;
  filter:drop-shadow(0 0 16px rgba(194,160,91,.34));
  -webkit-mask-image:radial-gradient(circle at 50% 48%, #000 54%, transparent 74%);
          mask-image:radial-gradient(circle at 50% 48%, #000 54%, transparent 74%);
}
.ruota-nel-testo .ruota-nome { font-size:clamp(1.25rem, 6cqw, 1.9rem); letter-spacing:.06em; }
.ruota-nel-testo .ruota-sotto { font-size:clamp(.6rem, 2.4cqw, .72rem); }
.ruota-nel-testo .ruota-data { font-size:clamp(.82rem, 3.2cqw, 1rem); }
.ruota-nel-testo .ruota-svg text { font-size:15px; letter-spacing:1.6px; }
.ruota-legenda { margin-top:clamp(28px, 3.6vw, 44px); }
.ruota-occhiello {
  margin:0 0 18px; text-align:center;
  font-family:var(--font-body); font-size:.7rem; font-weight:600;
  text-transform:uppercase; letter-spacing:.2em; color:var(--ink-faint);
}
.ruota-nel-testo .calendario-griglia {
  list-style:none; margin:0; padding:0;
  grid-template-columns:repeat(4, minmax(0, 1fr));
}
.ruota-nel-testo .sabbat-scheda {
  background:var(--srf-1); padding:clamp(15px, 1.8vw, 20px); margin:0;
}
.ruota-nel-testo .sabbat-scheda.attivo { background:var(--srf-2); }
.ruota-nel-testo .sabbat-scheda .nome {
  margin:0; font-family:var(--font-display); font-weight:500;
  font-size:1.12rem; line-height:1.1; color:var(--ink);
}
.ruota-nel-testo .sabbat-scheda.attivo .nome { color:var(--accent-viva); }
.ruota-nel-testo .sabbat-scheda .sotto {
  margin:5px 0 0; font-size:.66rem; color:var(--ink-faint);
  text-transform:uppercase; letter-spacing:.11em; line-height:1.35;
}
.ruota-nel-testo .sabbat-scheda time {
  display:block; margin-top:10px; font-size:.86rem; color:var(--ink-soft);
  font-variant-numeric:tabular-nums;
}
.ruota-nel-testo .ruota-manca { min-height:1.4em; }

.scheda-autore {
  margin-top:var(--sezione); padding:clamp(28px, 4vw, 44px);
  border:1px solid var(--line); border-radius:2px; background:var(--srf-1);
  display:grid; grid-template-columns:auto minmax(0, 1fr);
  gap:clamp(22px, 3.4vw, 40px); align-items:center;
}
.scheda-autore img {
  width:clamp(88px, 11vw, 132px); aspect-ratio:1; object-fit:cover;
  border:1px solid var(--line-strong); border-radius:2px; filter:saturate(.92);
}
.scheda-autore h2 {
  margin:0; font-family:var(--font-display); font-weight:500;
  font-size:clamp(1.4rem, 2.4vw, 1.9rem); line-height:1.14;
}
.scheda-autore p:not(.occhiello) { margin:12px 0 0; color:var(--ink-soft); font-size:.98rem; }
.scheda-autore .occhiello { margin-bottom:10px; color:var(--ink-faint); }
.scheda-autore .andare {
  display:inline-block; margin-top:18px; font-size:.74rem; font-weight:600;
  text-transform:uppercase; letter-spacing:.16em; color:var(--accent);
  background:linear-gradient(var(--accent), var(--accent)) left bottom / 0 1px no-repeat;
  transition:background-size .35s var(--ease), color .3s var(--ease);
}
.scheda-autore .andare:hover { color:var(--accent-viva); background-size:100% 1px; }

.silo { margin-top:clamp(44px, 6vw, 72px); }
.silo h2 {
  margin:0 0 24px; font-family:var(--font-display); font-weight:500;
  font-size:clamp(1.5rem, 2.6vw, 2rem); line-height:1.1;
}
.silo ul {
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:1px;
  background:var(--line); border:1px solid var(--line);
}
.silo li { background:var(--srf-0); }
.silo li a {
  display:block; padding:20px 22px; font-family:var(--font-display);
  font-size:1.18rem; color:var(--ink);
  transition:background .35s var(--ease), color .35s var(--ease);
}
.silo li a:hover { background:var(--srf-1); color:var(--accent-viva); }

.silo-ruota ul { grid-template-columns:repeat(4, minmax(0, 1fr)); }
.silo-ruota li a {
  display:grid; justify-items:center; gap:12px; text-align:center;
  padding:26px 16px 22px;
}
.silo-ruota img {
  width:clamp(72px, 8vw, 104px); height:auto;
  -webkit-mask-image:radial-gradient(circle at 50% 48%, #000 54%, transparent 74%);
          mask-image:radial-gradient(circle at 50% 48%, #000 54%, transparent 74%);
  filter:saturate(.92);
  transition:transform .45s var(--ease), filter .45s var(--ease);
}
.silo-ruota li a:hover img {
  transform:translateY(-4px) scale(1.05);
  filter:saturate(1.05) drop-shadow(0 8px 20px rgba(194,160,91,.28));
}
@media (prefers-reduced-motion: reduce) {
  .silo-ruota img { transition:none; }
  .silo-ruota li a:hover img { transform:none; filter:saturate(.92); }
}
@media (max-width: 700px) {
  .silo-ruota ul { grid-template-columns:repeat(2, minmax(0, 1fr)); }
}

.moto .prosa > h2,
.moto .citazione,
.moto .scheda-autore { opacity:0; animation:moto-rete .01s linear 3s forwards; }

@media (max-width: 1080px) {
  .articolo-corpo { grid-template-columns:1fr; gap:clamp(28px, 4vw, 40px); }
  .indice {
    position:static; border-left:0; padding-left:0;
    border:1px solid var(--line); border-radius:2px; padding:22px 24px;
    background:var(--srf-1);
  }
  .indice ol { columns:2; column-gap:32px; }
  .indice li { break-inside:avoid; }
}

@media (max-width: 1080px) {
  .ruota-nel-testo .calendario-griglia { grid-template-columns:repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
  .elenco-fonti { grid-template-columns:1fr; }
}

@media (max-width: 700px) {
  .indice ol { columns:1; }
  .articolo-testata { max-width:none; }
  .riga-firma { align-items:flex-start; }
  .scheda-autore { grid-template-columns:1fr; justify-items:center; text-align:center; }
  .scheda-autore .andare { margin-inline:auto; }
  .prosa { font-size:1.04rem; }
  .prosa table { display:block; overflow-x:auto; }
  .citazione { padding-inline:16px; }
  .citazione::before, .citazione::after { width:44px; height:40px; }
  .ruota-nel-testo { margin-inline:calc(var(--gutter) * -1); padding-inline:20px; }
}

@media (max-width: 480px) {
  .ruota-nel-testo .calendario-griglia { grid-template-columns:1fr; }
}
