PageSourceSearch

https://www.tigrenator.com/

html tigrenator.com collected 2026-10-08 20:41:52 UTC 6,874 bytes, 89 lines download raw bytes

1<!DOCTYPE html>
2<html lang="es">
3  <head>
4    <meta charset="utf-8" />
5    <link rel="icon" href="/favicon.svg" type="image/svg+xml" />
6    <meta name="viewport" content="width=device-width, initial-scale=1" />
7    <meta name="theme-color" content="#000000" />
8    <meta name="description" content="Tigrenator es la calculadora de precios para freelancers de Latinoamérica y España. Calcula cuánto cobrar por tus servicios de diseño, desarrollo, marketing y más, ajustado a tu país, experiencia y tipo de cliente. Empieza gratis, sin tarjeta." />
9    <meta name="keywords" content="calculadora freelance, cuánto cobrar freelance, precios freelance latinoamérica, tarifas diseñador, tarifas desarrollador, presupuesto freelance, freelance venezuela, freelance argentina, freelance mexico, freelance colombia" />
10    <!-- IMPORTANT: el orden de estos 4 meta tags importa.
11         api/index.js los reemplaza in-bulk usando un regex que matchea
12         desde og:title hasta twitter:card. Si agregás más meta tags entre
13         medio, ajustá también el regex en api/index.js → app.get('/u/:handle'). -->
14    <meta property="og:title" content="Tigrenator — Calculadora de precios para freelancers" />
15    <meta property="og:description" content="Calcula cuánto cobrar por tus servicios freelance ajustado a tu país, experiencia y tipo de cliente." />
16    <meta property="og:url" content="https://tigrenator.com" />
17    <meta name="twitter:card" content="summary" />
18    <link rel="apple-touch-icon" href="/logo192.png" />
19    <link rel="manifest" href="/manifest.json" />
20    <title>Tigrenator — Cuánto cobrar como freelancer en LATAM y España</title>
21    <!-- El tema se pone ANTES de pintar (espejo de src/utils/tema.js): si lo
22         pusiera React, la página abriría oscura y saltaría a clara. -->
23    
23<script>
24      try {
25        if (localStorage.getItem('tigrenator_tema') === 'claro') {
26          document.documentElement.dataset.tema = 'claro';
27          document.documentElement.style.colorScheme = 'light';
28        }
29      } catch (e) {}
30    </script>
30
31    <link rel="preconnect" href="https://fonts.googleapis.com" />
32    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
33    <!-- Las dos familias del kit (src/kit/kit2d.css): Syne solo en el
34         logotipo escrito, Rubik en todo lo demás (cuerpo 400, interfaz y
35         datos 500–700). -->
36    <link href="https://fonts.googleapis.com/css2?family=Rubik:wght@400;500;600;700&family=Syne:wght@400;600&display=swap" rel="stylesheet" />
37<!-- ANALÍTICA: no se carga acá a propósito.
38     Google Analytics y Microsoft Clarity los inyecta `src/utils/analytics.js`
39     DESPUÉS de resolver el consentimiento (ver src/utils/consent.js).
40
41     Por qué no van hardcodeados como antes: el RGPD exige consentimiento
42     PREVIO, y un 
42<script> en el HTML ya cargó y ya envió antes de que el
43     usuario pueda opinar. Un banner encima de eso no cumple: informa de algo
44     que ya pasó. La única forma de que el consentimiento sea previo de verdad
45     es no tener el script en el documento.
46
47     Si algún día vuelve un script de terceros a este archivo, va DESPUÉS de la
48     hoja de fuentes y nunca entre las líneas del bloque og:* — api/index.js
49     reemplaza ese bloque con un regex y un script en medio rompe /u/:handle. -->
50   
50<script type="module" crossorigin src="/assets/index-BYkMTzsZ.js"></script>
50
51   <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-C2ZqOKBi.js">
52   <link rel="modulepreload" crossorigin href="/assets/useTranslation-CVsc-7Nx.js">
53   <link rel="modulepreload" crossorigin href="/assets/chunk-KS7C4IRE-DkWJIb2K.js">
54   <link rel="modulepreload" crossorigin href="/assets/firebase-BwG6h_hD.js">
55   <link rel="modulepreload" crossorigin href="/assets/AuthContext-OOP_QDjz.js">
56   <link rel="modulepreload" crossorigin href="/assets/axios-By6YYWBT.js">
57   <link rel="modulepreload" crossorigin href="/assets/exchangeRate-CIwF9CFN.js">
58   <link rel="modulepreload" crossorigin href="/assets/serviceI18n-ClgLW286.js">
59   <link rel="modulepreload" crossorigin href="/assets/encargo-YCoU5BLR.js">
60   <link rel="modulepreload" crossorigin href="/assets/QuoteContext-Da8WoxGD.js">
61   <link rel="modulepreload" crossorigin href="/assets/util-Bi0ZEjD9.js">
62   <link rel="modulepreload" crossorigin href="/assets/Bento-CplHpb-b.js">
63   <link rel="modulepreload" crossorigin href="/assets/Dialogo-wgc0TNDN.js">
64   <link rel="modulepreload" crossorigin href="/assets/profileTheme-JCNxCvc1.js">
65   <link rel="modulepreload" crossorigin href="/assets/useServiceCatalog-Ck8ziHvW.js">
66   <link rel="modulepreload" crossorigin href="/assets/usd-8dP4YqJ3.js">
67   <link rel="modulepreload" crossorigin href="/assets/ForumCategoryBadge-CyoPWOvy.js">
68   <link rel="stylesheet" crossorigin href="/assets/kit2d-CJocbZj9.css">
69   <link rel="stylesheet" crossorigin href="/assets/index-Df55tVns.css">
70 </head>
71  <body>
72    <noscript>You need to enable JavaScript to run this app.</noscript>
73    <!-- EL SPLASH (2026-10-04). La palabra Tigrenator en Syne, la letra del
74         logotipo, de borde a borde de la pantalla: el contorno se llena de
75         izquierda a derecha mientras carga la app. Vive acá y no en React para
76         verse en el primer pintado; src/utils/splash.js lo retira al montar.
77         Si el JavaScript no llega, se va solo a los 3 s (la animación `sale`):
78         nunca puede tapar la página. Va FUERA de #root a propósito: el
79         servidor reemplaza `<div id="root"></div>` con el HTML de cada ruta. -->
80    <div id="k-splash" aria-hidden="true">
81      <svg viewBox="0 0 1000 170" preserveAspectRatio="none">
82        <text class="contorno" x="0" y="140" textLength="1000" lengthAdjust="spacingAndGlyphs">Tigrenator</text>
83        <text class="relleno" x="0" y="140" textLength="1000" lengthAdjust="spacingAndGlyphs">Tigrenator</text>
84      </svg>
85    </div>
86    <style>#k-splash{z-index:2147483000;background:#0b0f1a;align-items:center;transition:opacity .35s ease-out,visibility .35s;animation:.35s ease-out 3s forwards k-splash-sale;display:flex;position:fixed;inset:0}#k-splash svg{width:100vw;height:auto;display:block;overflow:visible}#k-splash text{font-family:Syne,Rubik,system-ui,sans-serif;font-size:168px;font-weight:600}#k-splash .contorno{fill:none;stroke:#fdaa6359;stroke-width:1.5px}#k-splash .relleno{fill:#fdaa63;clip-path:inset(0 100% 0 0);animation:1.1s cubic-bezier(.6,0,.2,1) .1s forwards k-splash-llena}#k-splash[data-estado=sale]{opacity:0;visibility:hidden}:root[data-tema=claro] #k-splash{background:#ededea}@keyframes k-splash-llena{to{clip-path:inset(0)}}@keyframes k-splash-sale{to{opacity:0;visibility:hidden}}@media (prefers-reduced-motion:reduce){#k-splash .relleno{clip-path:none;animation:none}#k-splash{transition:none}}</style>
87    <div id="root"></div>
88  </body>
89</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.