resetea.net/public/index.html
hacklab b5ae0ceb29 UI: panel horizontal con tabs + OSINT dorking profesional (95 dorks)
- index.html: sustituye grid de bloques por 6 tabs horizontales
  (Cuentas base / Redes sociales / Mensajería / Streaming / Buscadores / Data brokers)
  con items como tarjetas en grid responsive
- egosurfing.html: dorking expandido de 12 dorks a ~95 organizados en
  10 categorías OSINT profesionales (nombre, email, teléfono, alias,
  data brokers, pastes/brechas, registros oficiales, perfil profesional,
  geolocalización, archivo histórico) con sistema de tabs dinámico
- erase.js: límites de longitud en campos opcionales (nickname 100,
  phone 30, address 300, extra 500) + type-check explícito en email

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 17:21:56 +02:00

693 lines
29 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>RESETEA.NET · Reduce tu huella digital</title>
<meta name="description"
content="Envía cartas GDPR y elimina tus datos de redes sociales, buscadores y data brokers. Sin guardar información. Enlace oficiales y textos RGPD.">
<link rel="stylesheet" href="index.css">
<style>
/* ── Panel tabs ── */
.ptabs-nav {
display: flex;
gap: 0.3rem;
border-bottom: 2px solid var(--border);
padding-bottom: 0;
flex-wrap: wrap;
margin-bottom: 0;
}
.ptab {
padding: 0.5rem 1.05rem;
border: 1px solid transparent;
border-bottom: none;
border-radius: 8px 8px 0 0;
background: none;
color: var(--muted);
font-size: 0.8rem;
font-weight: 600;
cursor: pointer;
transition: all 120ms ease;
font-family: system-ui, sans-serif;
white-space: nowrap;
position: relative;
bottom: -2px;
letter-spacing: 0.01em;
}
.ptab:hover { background: var(--surface2); color: var(--text); }
.ptab.active {
background: var(--bg);
border-color: var(--border);
border-bottom-color: var(--bg);
color: var(--caoba);
}
.ptab-pane { display: none; padding-top: 1.4rem; }
.ptab-pane.active { display: block; }
/* ── Items como grid horizontal de tarjetas ── */
.pitem-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(235px, 1fr));
gap: 0.85rem;
}
.pitem-card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 12px;
padding: 0.9rem 1rem;
box-shadow: var(--shadow-sm);
transition: box-shadow 180ms ease, transform 180ms ease;
}
.pitem-card:hover {
box-shadow: var(--shadow-md);
transform: translateY(-2px);
}
.pitem-card label {
display: flex;
align-items: center;
gap: 0.45rem;
cursor: pointer;
font-size: 0.88rem;
font-weight: 600;
color: var(--text);
margin-bottom: 0.55rem;
}
.pitem-card label input[type="checkbox"] {
accent-color: var(--caoba);
width: 15px; height: 15px;
flex-shrink: 0; cursor: pointer;
}
.pitem-card label:has(input:checked) {
text-decoration: line-through;
color: var(--subtle);
}
.pitem-card .actions {
margin-left: 1.4rem;
margin-top: 0;
}
@media (max-width: 600px) {
.pitem-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 420px) {
.pitem-grid { grid-template-columns: 1fr; }
.ptab { font-size: 0.72rem; padding: 0.4rem 0.7rem; }
}
</style>
</head>
<body>
<main>
<!-- ══════════════════════════════════════════
HERO — TÍTULO + LEMA + NAV BUTTONS
════════════════════════════════════════════ -->
<section class="hero-landing">
<div class="container hero-landing-inner">
<h1 class="main-title">RESETEA</h1>
<p class="main-tagline">Reduce tu huella digital.</p>
<div class="landing-nav">
<a class="landing-nav-btn" href="tipos.html">Tipos de información</a>
<a class="landing-nav-btn" href="concienciacion.html">Concienciación</a>
<a class="landing-nav-btn" href="egosurfing.html">Egosurfing</a>
<a class="landing-nav-btn landing-nav-btn--highlight" href="plantillas.html">Plantillas GDPR</a>
</div>
</div>
</section>
<!-- ══════════════════════════════════════════
FORMULARIO PRINCIPAL — EMAIL + REDES
════════════════════════════════════════════ -->
<section class="erase-form-section" id="panel">
<div class="container">
<div class="erase-form-wrap">
<div class="form-header">
<h2>Introduce tu correo electrónico</h2>
<p>Selecciona las redes y enviamos la carta GDPR por ti. Sin guardar nada.</p>
</div>
<div class="email-row">
<input type="email" id="gdpr-email" class="email-input"
placeholder="tu@correo.com" autocomplete="email">
</div>
<p class="networks-label">Selecciona las redes que quieres eliminar:</p>
<div class="networks-section">
<p class="networks-sublabel">Envío automático de carta GDPR</p>
<div class="networks-grid" id="networks-grid">
<button class="net-chip" data-provider="instagram" data-type="api">Instagram</button>
<button class="net-chip" data-provider="facebook" data-type="api">Facebook</button>
<button class="net-chip" data-provider="twitter_x" data-type="api">X / Twitter</button>
<button class="net-chip" data-provider="linkedin" data-type="api">LinkedIn</button>
<button class="net-chip" data-provider="tiktok" data-type="api">TikTok</button>
<button class="net-chip" data-provider="snapchat" data-type="api">Snapchat</button>
<button class="net-chip" data-provider="discord" data-type="api">Discord</button>
<button class="net-chip" data-provider="reddit" data-type="api">Reddit</button>
<button class="net-chip" data-provider="microsoft" data-type="api">Microsoft</button>
<button class="net-chip" data-provider="apple" data-type="api">Apple</button>
<button class="net-chip" data-provider="google"
data-type="form"
data-form-url="https://support.google.com/policies/contact/sar_data_protection">Google</button>
<button class="net-chip" data-provider="amazon"
data-type="form"
data-form-url="https://www.amazon.es/hz/contact-us/privacy-disclosure/">Amazon</button>
</div>
<p class="networks-sublabel networks-sublabel--manual">Acceso rápido — acción manual</p>
<div class="networks-grid">
<button class="net-chip net-chip--manual" data-provider="whatsapp"
data-type="link" data-link="https://faq.whatsapp.com/1306557496340600">WhatsApp</button>
<button class="net-chip net-chip--manual" data-provider="telegram"
data-type="link" data-link="https://my.telegram.org/auth">Telegram</button>
<button class="net-chip net-chip--manual" data-provider="spotify"
data-type="link" data-link="https://support.spotify.com/es/article/close-account/">Spotify</button>
<button class="net-chip net-chip--manual" data-provider="youtube"
data-type="link" data-link="https://support.google.com/youtube/answer/55759">YouTube</button>
<button class="net-chip net-chip--manual" data-provider="netflix"
data-type="link" data-link="https://help.netflix.com/es/node/100624">Netflix</button>
<button class="net-chip net-chip--manual" data-provider="twitch"
data-type="link" data-link="https://www.twitch.tv/user/delete-account">Twitch</button>
<button class="net-chip net-chip--manual" data-provider="pinterest"
data-type="link" data-link="https://help.pinterest.com/es/article/deactivate-or-close-your-account">Pinterest</button>
</div>
</div>
<div class="form-footer-row">
<button class="btn primary btn--lg" id="gdpr-send" disabled>
Enviar solicitudes GDPR
</button>
<p class="form-note">
No guardamos tu correo. Las cartas se envían directamente a los DPOs de cada plataforma.<br>
Las redes en verde requieren acción manual: abrimos el enlace oficial por ti.
</p>
</div>
<div id="gdpr-results" class="results-wrap" hidden></div>
</div>
</div>
</section>
<!-- ══════════════════════════════════════════
PANEL DE ACCIONES COMPLETO (checklist)
════════════════════════════════════════════ -->
<section class="panel">
<div class="container">
<h2>Panel de acciones completo</h2>
<p class="section-desc">
Marca cada acción completada para seguir tu progreso. Todos los enlaces apuntan a páginas oficiales.
Recuerda: <strong>descarga primero tus datos</strong> antes de eliminar nada.
</p>
<div class="progress-bar"><div class="progress-fill" id="progress-fill" style="width:0%"></div></div>
<div class="progress-label" style="margin-bottom:2rem"><span id="progress-text">0 acciones completadas</span></div>
<!-- ── Navegación por tabs ── -->
<div class="ptabs-nav">
<button class="ptab active" data-tab="cuentas">Cuentas base</button>
<button class="ptab" data-tab="redes">Redes sociales</button>
<button class="ptab" data-tab="mensajeria">Mensajería</button>
<button class="ptab" data-tab="streaming">Streaming</button>
<button class="ptab" data-tab="buscadores">Buscadores</button>
<button class="ptab" data-tab="brokers">Data brokers</button>
</div>
<!-- ── Contenido de cada tab ── -->
<div id="ptab-cuentas" class="ptab-pane active">
<div class="pitem-grid">
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Google</label>
<div class="actions">
<a href="https://myaccount.google.com/data-and-privacy" target="_blank" rel="noopener">Descarga datos</a>
<a href="https://myaccount.google.com/delete-services-or-account" target="_blank" rel="noopener">Eliminar cuenta</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Microsoft / Outlook</label>
<div class="actions">
<a href="https://account.microsoft.com/account/privacy" target="_blank" rel="noopener">Privacidad</a>
<a href="https://account.live.com/closeaccount.aspx" target="_blank" rel="noopener">Cerrar cuenta</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Apple ID</label>
<div class="actions">
<a href="https://privacy.apple.com/" target="_blank" rel="noopener">Portal privacidad</a>
<a href="https://support.apple.com/es-es/111001" target="_blank" rel="noopener">Eliminar cuenta</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Amazon</label>
<div class="actions">
<a href="https://www.amazon.es/gp/help/customer/display.html?nodeId=GX7NJQ4ZB8MHFRNJ" target="_blank" rel="noopener">Política privacidad</a>
<a href="https://www.amazon.es/gp/help/customer/display.html?nodeId=GXPU3YPMBDQWWHGZ" target="_blank" rel="noopener">Cerrar cuenta</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
</div>
</div>
<div id="ptab-redes" class="ptab-pane">
<div class="pitem-grid">
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Instagram</label>
<div class="actions">
<a href="https://www.instagram.com/download/request/" target="_blank" rel="noopener">Descarga datos</a>
<a href="https://www.instagram.com/accounts/remove/request/permanent/" target="_blank" rel="noopener">Eliminar cuenta</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Facebook</label>
<div class="actions">
<a href="https://www.facebook.com/dyi/" target="_blank" rel="noopener">Descarga datos</a>
<a href="https://www.facebook.com/help/delete_account" target="_blank" rel="noopener">Eliminar cuenta</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> X / Twitter</label>
<div class="actions">
<a href="https://x.com/settings/download_your_data" target="_blank" rel="noopener">Descarga datos</a>
<a href="https://x.com/settings/deactivate" target="_blank" rel="noopener">Desactivar cuenta</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> LinkedIn</label>
<div class="actions">
<a href="https://www.linkedin.com/mypreferences/d/data-export" target="_blank" rel="noopener">Descarga datos</a>
<a href="https://www.linkedin.com/mypreferences/d/close-your-account" target="_blank" rel="noopener">Cerrar cuenta</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> TikTok</label>
<div class="actions">
<a href="https://www.tiktok.com/setting/privacy?settingPage=privacy" target="_blank" rel="noopener">Privacidad</a>
<a href="https://support.tiktok.com/es/safety-hic/account-and-user-safety/account-deletion" target="_blank" rel="noopener">Eliminar cuenta</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Snapchat</label>
<div class="actions">
<a href="https://accounts.snapchat.com/accounts/downloadmydata" target="_blank" rel="noopener">Descarga datos</a>
<a href="https://accounts.snapchat.com/accounts/delete_account" target="_blank" rel="noopener">Eliminar cuenta</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Pinterest</label>
<div class="actions">
<a href="https://www.pinterest.es/settings/privacy/" target="_blank" rel="noopener">Privacidad</a>
<a href="https://help.pinterest.com/es/article/deactivate-or-close-your-account" target="_blank" rel="noopener">Eliminar cuenta</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Reddit</label>
<div class="actions">
<a href="https://www.reddit.com/settings/data-request" target="_blank" rel="noopener">Descarga datos</a>
<a href="https://www.reddit.com/settings/account" target="_blank" rel="noopener">Eliminar cuenta</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Discord</label>
<div class="actions">
<a href="https://discord.com/privacy" target="_blank" rel="noopener">Privacidad</a>
<a href="https://support.discord.com/hc/es/articles/212500837" target="_blank" rel="noopener">Eliminar cuenta</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
</div>
</div>
<div id="ptab-mensajeria" class="ptab-pane">
<div class="pitem-grid">
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> WhatsApp</label>
<div class="actions">
<a href="https://faq.whatsapp.com/1180414079177245" target="_blank" rel="noopener">Solicitar datos</a>
<a href="https://faq.whatsapp.com/1306557496340600" target="_blank" rel="noopener">Eliminar cuenta</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Telegram</label>
<div class="actions">
<a href="https://my.telegram.org/auth" target="_blank" rel="noopener">Eliminar cuenta</a>
<a href="https://telegram.org/privacy" target="_blank" rel="noopener">Política privacidad</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Gmail (correo)</label>
<div class="actions">
<a href="https://myaccount.google.com/deleteaccount" target="_blank" rel="noopener">Gestionar</a>
</div>
</div>
</div>
</div>
<div id="ptab-streaming" class="ptab-pane">
<div class="pitem-grid">
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Spotify</label>
<div class="actions">
<a href="https://www.spotify.com/es/account/privacy/" target="_blank" rel="noopener">Privacidad</a>
<a href="https://support.spotify.com/es/article/close-account/" target="_blank" rel="noopener">Cerrar cuenta</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Netflix</label>
<div class="actions">
<a href="https://help.netflix.com/es/node/407" target="_blank" rel="noopener">Cancelar suscripción</a>
<a href="https://help.netflix.com/es/node/100624" target="_blank" rel="noopener">Eliminar perfil</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Twitch</label>
<div class="actions">
<a href="https://www.twitch.tv/user/delete-account" target="_blank" rel="noopener">Eliminar cuenta</a>
<a href="https://www.twitch.tv/p/es-es/legal/privacy-notice/" target="_blank" rel="noopener">Política privacidad</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> YouTube</label>
<div class="actions">
<a href="https://myaccount.google.com/data-and-privacy" target="_blank" rel="noopener">Gestionar datos</a>
<a href="https://support.google.com/youtube/answer/55759" target="_blank" rel="noopener">Cerrar canal</a>
</div>
</div>
</div>
</div>
<div id="ptab-buscadores" class="ptab-pane">
<div class="pitem-grid">
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Google — Derecho al olvido (UE)</label>
<div class="actions">
<a href="https://reportcontent.google.com/forms/rtbf" target="_blank" rel="noopener">Formulario RTBF</a>
<a href="plantillas.html" target="_blank">Carta GDPR</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Google — Contenido obsoleto</label>
<div class="actions">
<a href="https://search.google.com/search-console/remove-outdated-content" target="_blank" rel="noopener">Herramienta eliminación</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Google — Info personal</label>
<div class="actions">
<a href="https://support.google.com/websearch/troubleshooter/9685456" target="_blank" rel="noopener">Solicitar eliminación</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Bing — Eliminación de contenido</label>
<div class="actions">
<a href="https://www.bing.com/webmasters/tools/content-removal" target="_blank" rel="noopener">Formulario Bing</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Bing — Derecho al olvido</label>
<div class="actions">
<a href="https://www.microsoft.com/es-es/concern/bing" target="_blank" rel="noopener">Solicitud Bing</a>
</div>
</div>
</div>
</div>
<div id="ptab-brokers" class="ptab-pane">
<div class="pitem-grid">
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Acxiom — Opt-out</label>
<div class="actions">
<a href="https://isapps.acxiom.com/optout/optout.aspx" target="_blank" rel="noopener">Opt-out oficial</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Epsilon — Opt-out</label>
<div class="actions">
<a href="https://www.epsilon.com/us/privacy-policy" target="_blank" rel="noopener">Política y opt-out</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> Have I Been Pwned</label>
<div class="actions">
<a href="https://haveibeenpwned.com/" target="_blank" rel="noopener">Verificar email</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> DeleteMe (referencia)</label>
<div class="actions">
<a href="https://joindeleteme.com/sites-we-remove-from/" target="_blank" rel="noopener">Lista de brokers</a>
</div>
</div>
<div class="pitem-card">
<label><input type="checkbox" class="progress-cb"> AEPD — Reclamación</label>
<div class="actions">
<a href="https://sedeagpd.gob.es/sede-electronica-web/" target="_blank" rel="noopener">Sede AEPD</a>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ══════════════════════════════════════════
CÓMO FUNCIONA
════════════════════════════════════════════ -->
<section id="como" class="info">
<div class="container">
<h2>Cómo funciona</h2>
<p>
RESETEA.NET centraliza los <strong>enlaces oficiales</strong> y envía
<strong>cartas GDPR</strong> directamente a los DPOs de cada plataforma.
Tus datos nunca salen de tu dispositivo hacia nuestros servidores.
</p>
<div class="grid" style="margin-top:1.5rem;">
<div class="group">
<h3>Paso 1 — Descarga tus datos</h3>
<p style="font-size:0.85rem;color:var(--muted);">
Antes de borrar nada, usa el enlace "Descarga datos" de cada plataforma.
Activa el <strong>derecho a la portabilidad (Art. 20 RGPD)</strong>.
</p>
</div>
<div class="group">
<h3>Paso 2 — Envía la carta GDPR</h3>
<p style="font-size:0.85rem;color:var(--muted);">
Introduce tu correo, selecciona las redes y enviamos la carta por ti.
Las plataformas tienen <strong>30 días</strong> para ejecutar el borrado.
</p>
</div>
<div class="group">
<h3>Paso 3 — Elimina la cuenta</h3>
<p style="font-size:0.85rem;color:var(--muted);">
Usa el enlace oficial de eliminación. Muchas tienen un periodo de gracia
de 730 días. Después el borrado es definitivo.
</p>
</div>
</div>
</div>
</section>
<!-- ══════════════════════════════════════════
PLANTILLAS
════════════════════════════════════════════ -->
<section id="plantillas" class="info alt">
<div class="container">
<h2>Plantillas legales</h2>
<p>
Cartas pre-redactadas para el <strong>derecho de supresión (Art. 17)</strong>,
<strong>acceso (Art. 15)</strong>, <strong>portabilidad (Art. 20)</strong>
y <strong>oposición al perfilado (Art. 21)</strong>.
</p>
<p style="margin-top:1rem;">
El generador funciona íntegramente en tu navegador: tus datos nunca salen de tu dispositivo.
</p>
<div class="hero-actions" style="margin-top:1.5rem;">
<a class="btn primary" href="plantillas.html">Abrir generador de cartas</a>
<a class="btn ghost" href="concienciacion.html">Entender mis derechos</a>
</div>
</div>
</section>
<!-- ══════════════════════════════════════════
LEGAL
════════════════════════════════════════════ -->
<section id="legal" class="info">
<div class="container">
<h2>Aviso legal</h2>
<p>
Esta herramienta no ofrece asesoramiento legal. Los enlaces y plantillas son orientativos.
El éxito de las solicitudes depende de cada plataforma y de la legislación aplicable.
</p>
</div>
</section>
</main>
<footer class="footer">
<div class="container">
<p>RESETEA.NET · Software estático · Sin tracking · Sin cookies · Sin almacenamiento de datos</p>
</div>
</footer>
<script>
'use strict';
/* ── Chips de redes ─────────────────────────── */
const chips = document.querySelectorAll('.net-chip');
const sendBtn = document.getElementById('gdpr-send');
const emailIn = document.getElementById('gdpr-email');
const results = document.getElementById('gdpr-results');
chips.forEach(chip => {
chip.addEventListener('click', () => {
chip.classList.toggle('selected');
syncBtn();
});
});
emailIn.addEventListener('input', syncBtn);
function validEmail(v) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v); }
function syncBtn() {
const ok = validEmail(emailIn.value) &&
[...chips].some(c => c.classList.contains('selected'));
sendBtn.disabled = !ok;
}
/* ── Envío ──────────────────────────────────── */
sendBtn.addEventListener('click', async () => {
const email = emailIn.value.trim();
const selected = [...chips].filter(c => c.classList.contains('selected'));
sendBtn.disabled = true;
sendBtn.textContent = 'Enviando…';
results.hidden = false;
results.innerHTML = '';
for (const chip of selected) {
const provider = chip.dataset.provider;
const type = chip.dataset.type;
const name = chip.textContent.trim();
if (type === 'link') {
window.open(chip.dataset.link, '_blank', 'noopener noreferrer');
addResult(name, 'manual', 'Enlace oficial abierto — completa la eliminación manualmente.');
continue;
}
if (type === 'form') {
window.open(chip.dataset.formUrl, '_blank', 'noopener noreferrer');
addResult(name, 'form', 'Formulario oficial abierto — rellénalo para completar la solicitud.');
continue;
}
/* type === 'api' */
try {
const res = await fetch('/api/erase', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ provider, email })
});
const data = await res.json();
if (data.status === 'ok') {
addResult(name, 'ok', `Carta GDPR enviada correctamente. Ref: <code>${data.reference}</code>`);
} else if (data.status === 'use_form') {
window.open(data.formUrl, '_blank', 'noopener noreferrer');
addResult(name, 'form', 'Este proveedor requiere formulario oficial (abierto en nueva pestaña).');
} else {
addResult(name, 'error', data.error || 'Error desconocido.');
}
} catch {
addResult(name, 'error', 'Error de red. Inténtalo de nuevo o usa el formulario oficial.');
}
}
sendBtn.textContent = 'Solicitudes enviadas ✓';
setTimeout(() => {
sendBtn.textContent = 'Enviar solicitudes GDPR';
syncBtn();
}, 4000);
});
function addResult(name, type, msg) {
const div = document.createElement('div');
div.className = `result-item result-${type}`;
div.innerHTML = `<strong>${name}</strong> — ${msg}`;
results.appendChild(div);
}
/* ── Panel tabs ────────────────────────────── */
document.querySelectorAll('.ptab').forEach(tab => {
tab.addEventListener('click', () => {
document.querySelectorAll('.ptab').forEach(t => t.classList.remove('active'));
document.querySelectorAll('.ptab-pane').forEach(p => p.classList.remove('active'));
tab.classList.add('active');
const pane = document.getElementById('ptab-' + tab.dataset.tab);
if (pane) pane.classList.add('active');
});
});
/* ── Progreso checklist ─────────────────────── */
const cbs = document.querySelectorAll('.progress-cb');
const fill = document.getElementById('progress-fill');
const label = document.getElementById('progress-text');
function updateProgress() {
const done = [...cbs].filter(c => c.checked).length;
const pct = Math.round((done / cbs.length) * 100);
fill.style.width = pct + '%';
label.textContent = done + ' / ' + cbs.length + ' acciones completadas (' + pct + '%)';
}
cbs.forEach(cb => cb.addEventListener('change', updateProgress));
updateProgress();
</script>
</body>
</html>