+page.svelte 6.57 KB
<script>
  let institucion = "Ministerio de Economía y Finanzas Públicas";
  let pais = "Bolivia";
</script>

<svelte:head>
  <title>Sobre | Presupuesto Público</title>
  <link rel="preconnect" href="https://fonts.googleapis.com" />
  <link href="https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,300;0,8..60,400;0,8..60,600;1,8..60,300;1,8..60,400&family=JetBrains+Mono:wght@400&display=swap" rel="stylesheet" />
</svelte:head>

<div class="manifesto-outer">
  <div class="manifesto-inner">

    <div class="manifesto-label">
      Presentación &nbsp;·&nbsp; Liberación de la base histórica
    </div>

    <div class="manifesto-fecha">
      A fines de 2025 decidimos abrir los datos históricos<br>
      de presupuesto del Estado boliviano.
    </div>

    <div class="manifesto-cuerpo">

      <p class="p1">
        Cada año el Estado recibe y gasta dinero a tu nombre. ¿Sabes de dónde viene,
        en qué se usa y qué se logra con él? Esa información es tuya. Siempre lo fue,
        pero durante décadas permaneció encerrada en archivos PDF, en sistemas que pocos
        saben usar y en las paredes de un ministerio.
      </p>

      <div class="manifesto-hoy">Hoy cambia eso.</div>

      <p class="p3">
        Aquí puedes explorar más de veinte años de ejecución presupuestaria, con
        actualización semanal. Puedes ver qué hizo el Estado en tu región, en tu sector
        y en el año que te interesa. Puedes comparar, cuestionar y entender. Y si
        encuentras algo que no cuadra o que vale la pena contar, puedes hacerlo tuyo.
      </p>

      <hr class="manifesto-regla" />

      <p class="p4">
        No publicamos esto para cumplir un trámite de transparencia. Lo hacemos porque
        creemos que un Estado que trabaja de espaldas a su sociedad se vuelve impune,
        y una sociedad que no entiende al Estado se desconecta de él.
      </p>

      <blockquote class="manifesto-apuesta">
        Un presupuesto abierto es una apuesta: que la confianza se construye con
        <strong>información</strong> y no con promesas.
      </blockquote>

    </div>

    <div class="manifesto-cierre">
      <p class="manifesto-cierre-texto">Abrimos para no cerrar.</p>
      <p class="manifesto-cierre-sub">{institucion} &nbsp;·&nbsp; {pais}</p>
    </div>

  </div>
</div>

<style>
  .manifesto-outer {
    min-height: 100vh;
    background: var(--manifesto-bg);
    overflow: hidden;
  }

  .manifesto-inner {
    max-width: 640px;
    margin: 0 auto;
    padding: 72px 48px 88px;
    font-family: 'Source Serif 4', Georgia, 'Times New Roman', serif;
    color: var(--manifesto-text);
  }

  /* === etiqueta superior === */

  .manifesto-label {
    font-family: 'JetBrains Mono', 'Courier New', monospace;
    font-size: 10px;
    letter-spacing: 0.18em;
    color: var(--manifesto-muted);
    text-transform: uppercase;
    margin-bottom: 56px;
    display: flex;
    align-items: center;
    gap: 12px;
    opacity: 0;
    animation: fadeUp 0.6s ease forwards;
  }

  .manifesto-label::after {
    content: '';
    flex: 1;
    height: 0.5px;
    background: var(--manifesto-rule);
  }

  /* === fecha === */

  .manifesto-fecha {
    font-family: 'Source Serif 4', Georgia, serif;
    font-style: italic;
    font-weight: 300;
    font-size: 14px;
    color: var(--manifesto-subtle);
    letter-spacing: 0.02em;
    margin-bottom: 40px;
    opacity: 0;
    animation: fadeUp 0.6s ease 0.1s forwards;
  }

  /* === cuerpo === */

  .manifesto-cuerpo {
    font-size: 18.5px;
    line-height: 1.78;
    font-weight: 300;
    color: var(--manifesto-body);
    letter-spacing: 0.01em;
  }

  .p1 {
    opacity: 0;
    animation: fadeUp 0.7s ease 0.2s forwards;
    margin-bottom: 28px;
    margin-top: 0;
  }

  .manifesto-hoy {
    opacity: 0;
    animation: fadeUp 0.7s ease 0.5s forwards;
    margin: 44px 0;
    font-size: 26px;
    font-weight: 400;
    color: var(--manifesto-text);
    letter-spacing: -0.01em;
    line-height: 1.3;
  }

  .p3 {
    opacity: 0;
    animation: fadeUp 0.7s ease 0.65s forwards;
    margin-bottom: 28px;
    margin-top: 0;
  }

  .manifesto-regla {
    opacity: 0;
    animation: fadeUp 0.6s ease 0.75s forwards;
    border: none;
    border-top: 0.5px solid var(--manifesto-rule);
    margin: 44px 0;
  }

  .p4 {
    opacity: 0;
    animation: fadeUp 0.7s ease 0.85s forwards;
    margin-bottom: 0;
    margin-top: 0;
  }

  .manifesto-apuesta {
    opacity: 0;
    animation: fadeUp 0.7s ease 0.95s forwards;
    margin: 44px 0;
    padding: 0 0 0 24px;
    border-left: 1.5px solid var(--manifesto-quote-border);
    font-style: italic;
    font-weight: 300;
    font-size: 20px;
    line-height: 1.65;
    color: var(--manifesto-quote);
  }

  .manifesto-apuesta strong {
    font-style: normal;
    font-weight: 400;
    color: var(--manifesto-body);
  }

  /* === cierre === */

  .manifesto-cierre {
    opacity: 0;
    animation: fadeUp 0.8s ease 1.1s forwards;
    margin-top: 56px;
    padding-top: 36px;
    border-top: 0.5px solid var(--manifesto-rule);
  }

  .manifesto-cierre-texto {
    font-size: 36px;
    font-weight: 400;
    color: var(--color-gold);
    letter-spacing: -0.02em;
    line-height: 1.1;
    margin: 0;
  }

  .manifesto-cierre-sub {
    font-family: 'JetBrains Mono', 'Courier New', monospace;
    font-size: 10px;
    letter-spacing: 0.16em;
    color: var(--manifesto-muted);
    text-transform: uppercase;
    margin-top: 20px;
    margin-bottom: 0;
  }

  /* === animación === */

  @keyframes -global-fadeUp {
    from {
      opacity: 0;
      transform: translateY(14px);
    }
    to {
      opacity: 1;
      transform: translateY(0);
    }
  }

  /* === MODO OSCURO (default) === */
  .manifesto-outer {
    --manifesto-bg: #0C0C0C;
    --manifesto-text: #EDE9E1;
    --manifesto-body: #D9D4CB;
    --manifesto-muted: #5A5650;
    --manifesto-subtle: #6B6660;
    --manifesto-rule: #2A2822;
    --manifesto-quote: #C4BFB6;
    --manifesto-quote-border: #3A3530;
  }

  /* === MODO CLARO === */
  :global(html:not(.dark)) .manifesto-outer {
    --manifesto-bg: #FAFAF8;
    --manifesto-text: #1a1a1a;
    --manifesto-body: #3a3a3a;
    --manifesto-muted: #8a8a8a;
    --manifesto-subtle: #6a6a6a;
    --manifesto-rule: #e0e0e0;
    --manifesto-quote: #4a4a4a;
    --manifesto-quote-border: #d0d0d0;
  }

  /* === responsive === */

  @media (max-width: 600px) {
    .manifesto-inner {
      padding: 48px 28px 64px;
    }

    .manifesto-cuerpo {
      font-size: 17px;
    }

    .manifesto-hoy {
      font-size: 22px;
    }

    .manifesto-apuesta {
      font-size: 18px;
    }

    .manifesto-cierre-texto {
      font-size: 28px;
    }
  }
</style>