<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 390 900" role="img" aria-labelledby="arch-m-title arch-m-desc">
  <title id="arch-m-title">Architettura di trentpower.fr</title>
  <desc id="arch-m-desc">Architettura statica, auto-gestita e orientata alla privacy. Sei livelli: richiesta del browser, hosting con header rigorosi, file statici, cache offline via service worker, file di integrità e identità firmati, e archivi pubblici congelati.</desc>
  <style>
    .panel    { fill: #FFFEFA; stroke: #D8D4CC; stroke-width: 1; }
    .surface  { fill: #EDEAE4; stroke: #D8D4CC; stroke-width: 1; }
    .rule     { stroke: #E6E1D8; stroke-width: 1; fill: none; }
    .accent-mark { fill: #6E1A14; }
    .connector { stroke: #D8D4CC; stroke-width: 1; fill: none; stroke-dasharray: 2 3; }
    .label    { font-family: 'Söhne', system-ui, -apple-system, sans-serif; font-size: 12px; font-weight: 500; fill: #1F1E1C; }
    .sublabel { font-family: 'Söhne Mono', ui-monospace, Menlo, monospace; font-size: 10px; fill: #5C5955; letter-spacing: 0.04em; }
    .num      { font-family: 'Söhne Mono', ui-monospace, Menlo, monospace; font-size: 10px; fill: #6E1A14; font-weight: 500; letter-spacing: 0.14em; }
    .layer-title { font-family: 'Söhne Mono', ui-monospace, Menlo, monospace; font-size: 10px; fill: #706B66; letter-spacing: 0.14em; text-transform: uppercase; }
  </style>

  <!-- 01 BROWSER -->
  <text x="20"  y="76"  class="num">01</text>
  <text x="48"  y="76"  class="layer-title">Browser</text>
  <rect x="20" y="86"  width="350" height="62" class="panel"/>
  <text x="36" y="108" class="label">Utente · HTTPS</text>
  <text x="36" y="124" class="sublabel">Nessun Cookie · Nessuna Analisi</text>
  <text x="36" y="139" class="sublabel">TLS · HSTS</text>
  <line x1="195" y1="156" x2="195" y2="178" class="connector"/>

  <!-- 02 STATIC HOST -->
  <text x="20"  y="200" class="num">02</text>
  <text x="48"  y="200" class="layer-title">Hosting</text>
  <rect x="20" y="210" width="350" height="78" class="panel"/>
  <text x="36" y="232" class="label">Apache · Gandi, Parigi</text>
  <text x="36" y="248" class="sublabel">Header Rigorosi · CSP · HSTS</text>
  <text x="36" y="263" class="sublabel">COOP · COEP · CORP · Permissions Policy Bloccata</text>
  <text x="36" y="278" class="sublabel">SRI su CSS · JS</text>
  <line x1="195" y1="296" x2="195" y2="318" class="connector"/>

  <!-- 03 SITE FILES -->
  <text x="20"  y="340" class="num">03</text>
  <text x="48"  y="340" class="layer-title">File</text>
  <rect x="20" y="350" width="350" height="78" class="panel"/>
  <text x="36" y="372" class="label">HTML · CSS · JS Puro</text>
  <text x="36" y="388" class="sublabel">Signifier · Söhne · Söhne Mono</text>
  <text x="36" y="403" class="sublabel">Font Auto-Gestiti · 8 woff2</text>
  <text x="36" y="418" class="sublabel">Nessun Framework, Nessun Bundler</text>
  <line x1="195" y1="436" x2="195" y2="458" class="connector"/>

  <!-- 04 OFFLINE -->
  <text x="20"  y="480" class="num">04</text>
  <text x="48"  y="480" class="layer-title">Offline</text>
  <rect x="20" y="490" width="350" height="62" class="surface"/>
  <text x="36" y="512" class="label">Service Worker · Cache Locale</text>
  <text x="36" y="528" class="sublabel">Rete Prima</text>
  <text x="36" y="543" class="sublabel">Offline Dopo il 1° Caricamento</text>
  <line x1="195" y1="560" x2="195" y2="582" class="connector"/>

  <!-- 05 TRUST — single oxblood dot is the only accent -->
  <text x="20"  y="604" class="num">05</text>
  <text x="48"  y="604" class="layer-title">Fiducia</text>
  <rect x="20" y="616" width="350" height="78" class="panel"/>
  <circle cx="28" cy="635" r="3" class="accent-mark"/>
  <text x="40" y="638" class="label">integrity.json</text>
  <text x="40" y="654" class="sublabel">Manifest SHA-256</text>
  <text x="36" y="673" class="label">integrity.json.sig</text>
  <text x="36" y="689" class="sublabel">Firma PGP Staccata</text>
  <line x1="195" y1="702" x2="195" y2="724" class="connector"/>

  <!-- 06 ARCHIVE -->
  <text x="20"  y="746" class="num">06</text>
  <text x="48"  y="746" class="layer-title">Archivio</text>
  <rect x="20" y="756" width="350" height="62" class="surface"/>
  <text x="36" y="778" class="label">Versioni Pubbliche Congelate</text>
  <text x="36" y="794" class="sublabel">/integrity/releases/2026-02/</text>
  <text x="36" y="809" class="sublabel">/integrity/releases/2026-05-08/</text>

  <line x1="20" y1="848" x2="370" y2="848" class="rule"/>
  <text x="20" y="876" class="sublabel">Browser → Host → Sito → Cache → Fiducia → Archivio</text>
</svg>
