Why you can trust this page
Every claim here has a source you can open.
Marketing can say anything. This page refuses to — behind each promise is a number, a written term, or a page that states it outright. If you can't verify it, it isn't here.
The written promise
Six pillars, each one traceable to a page
Not a badge — a contract. Each pillar names the exact page where it is stated, so you can open it and check.
Seven days a week, to a human engineer — not a ticket queue.
Source: Contact page →Once the price is approved, the 48-hour clock starts at payment. The pipeline is written hour by hour.
Source: Process →Any ticket, before payment, becomes a 12-hour express at double the flat price — a published rush option, never an hourly meter.
Source: Pricing →The number on the ticket is the number on the invoice. There is no hourly meter and no re-quote mid-emergency.
Source: Pricing →Fix, rescue log, plain-English document, before/after proof, keys under your control, one USD invoice.
Source: Process →If it cannot be delivered inside scope, you don't pay — and you keep the log and everything corrected so far.
Source: Legal →Unresolved disputes escalate to a real court under US law, written in plain English at /legal/.
Source: Legal →The record, not the mood
Numbers with a source next to each one
Every statistic on this site is a published number you can reach by one click. If a figure has no source, you don't read it.
Don't take this page's word
Six checks you can run yourself, right now
The strongest trust model in the world is the one where the reader can audit the claims in minutes. Here is the procedure.
-
Open the pricing page
Every ticket and every price is published. There is no “contact us for pricing” — the number is the number.
Open the source → -
Read the pipeline
Hour 0 to hour 48 written out, including what the reply contains and when payment happens.
Open the source → -
Read the actual terms
/legal/ is plain English, including the clause that says a judge decides any unresolved dispute.
Open the source → -
Read the access checklist
/handover/ tells you exactly what access gets asked, why, and that credentials are deleted or rotated when the rescue ends.
Open the source → -
Time the reply yourself
Email the contact address and watch the clock. The 12-hour number is a promise, not a slogan.
Open the source → -
Read about the model
/about/ states the single-engineer rule and the workload guarantee — only one paid rescue at a time.
Open the source →
The register
Every promise on this site, cross-referenced
A claim without an address is just marketing. Each row names the exact page where the promise lives and what makes it true.
| The promise | Where it lives | What makes it true |
|---|---|---|
| Reply within 12 hours | /contact/ | Stated on the contact page; the address is right there to email and time yourself. |
| Delivery within 48 hours | /process/ | Hour 0 to hour 48 written out step by step, including the check-in at hour 24. |
| Flat rate locked before work | /pricing/ | All 31 tickets and prices published — no "contact us for pricing". The number on the page is the number on the invoice. |
| No fix, no fee | /legal/ | Written into the working agreement; you keep the rescue log either way. |
| Proof in the handover | /handover/ | Seven deliverables defined on the checklist, from the verified fix to one locked USD invoice. |
| Secure checkout via Lemon Squeezy | /pricing/ | Payment section on the pricing page; card data never reaches the merchant (PCI-compliant processor). |
| 12-hour express at 2× | /pricing/ | Published on every ticket and the pricing page: chosen before payment, fixed rush rate, never metered. |
| Disputes decided by a judge | /legal/ | Escalation clause in plain English under US law — a court settles what the log cannot. |
Why the incentives are correct
This business is arranged so “cheating” loses money
Trust isn't a slogan — it's the only commercially rational design here. Read how each rule lines up the incentives.
The engineer's pay does not grow with your pain. It only moves when a result is delivered and proven.
The commercial incentive is to finish, not to bill hours. You pay when it works.
You see the exact number before any work. Midnight emergencies don't come with surprise line items.
The person who diagnoses is the person who fixes, tests and writes the report. No handover of assumptions.
Your job isn't queued behind sixteen others — whoever is on your rescue is on your rescue, per /about/.
Card data stays with a PCI-compliant processor. The merchant never touches a card number. One USD invoice.
Payments & access
How money and credentials actually move
Checkout runs through Lemon Squeezy, a PCI-compliant processor. Card data never reaches this business — one USD invoice, and the 48-hour clock starts when it clears.
Passwords by one-time burn link, IP only when server-side work needs it, read-only where possible, credentials deleted or rotated when the rescue ends — per /handover/.
Available on request, by default reversible. The working agreement at /legal/ is plain English, not boilerplate.
No jargon, no decoder ring
Every term used on this site, in one line
If an abbreviation appears on a ticket, it is defined on the ticket in plain English. Here are the common ones upfront — or open the full glossary.
The three Core Web Vitals — Google's three real-user speed scores: loading (LCP), visual stability (CLS) and responsiveness (INP). Google actually measures. The speed tickets move these numbers, not opinions.
The questionnaire a processor asks you to sign that card data isn't stored wrong. The PCI ticket answers it with evidence, not guesses.
The three DNS — The internet's address book: it turns your domain name into the server visitors actually reach. records that prove your domain owns its mail. The spam rescue installs and verifies all three.
The maximum age of a backup — A tested copy of your site you can restore from; an untested backup is a hope, not a plan. you could survive losing. The backup ticket sets it under 24 hours.
Seconds a DNS change takes to spread. The domain rescue is built around the eight-hour-TTL panic.
Core Web Vitals — the three speed numbers above. Every performance rescue starts and ends with them.
Built in the open
The public build record
This site was built — and re-built — in numbered increments, in order. No launch-day glory; the work log is the story.
node generate.js && node verify.js
Run that yourself and the counts above are what it prints: this page's numbers are the build's output, not decorative copy.
141Interactive request-trace section in the home: a packet walks Browser, DNS, TLS, CDN, App, DB, dies at the break, and the 48h fix turns the rail green. Buttons target real search queries ("why is my website so slow", "woocommerce checkout not working", "website disappeared from google", "not secure"). DX/FIX copy in JS explains what the visitor sees + what we do in 48h flat, using the same language as the search queries. Layer aria-labels map each break to its rescue ticket. Internal links to 10 rescue pages with descriptive anchor text matching exact search queries (hack-cleanup, backup, vps, email-spam, seo-rescue, database, migration, hosting, escaped-dev, adspend). FAQPage JSON-LD + visible FAQ: "How do you figure out what is wrong with my website?" — explains the trace process in plain English. Reduced-motion shows a static verdict; pause off-screen. CSS + JS in existing pipelines; SW v91.ux
14010 tickets nuevos y el carrito con add-ons (Oleada 109 — la ola grande de producto): el catalogo pasa de 20 a 30 rescates, 5 familias intactas (security 10, performance 8, infrastructure 9, data 2, bundle 1). Nuevos: Lockdown & Post-Breach Hardening ($15k, cierra TODAS las puertas + informe listo para el directorio, no es una limpieza de WordPress), SEO Performance Campaign ($25k = angulo 10k + landing y 3 anuncios 10k + retainer 5k por 30 dias con garantia de x3 o devolucion del retainer; "el cerebro" no se devuelve; brief max 2.000 caracteres), LTS Migration & Database Rebuild ($12k, no se disena desde cero: se escanea y re-escribe la BD, ~2x mas rapido, garantia de 2 anos sin migrar; +$1.500 cada 100GB de BD), Business Radiography ($25k vendida personalmente por el dueno: brief de 2.000 caracteres, devuelve video de 25 min + PDF de 3 paginas con donde sangra plata y que lo mata en 6 meses), y los packs: Total Takeover Recovery ($8.900 dominio+web+dev robados), Preventive Hardening ($9.500 blindaje preventivo), Shielded Checkout ($9.900), Google Resurrection ($7.500), Ant-Theft Spend Audit ($8.900 con boletas de ahorro) y 3-2-1 Real Backup ($7.500; 3 copias, 2 continentes, 1 restore probado en 1h). Carrito v2: add-ons funcionales por linea — input de caracteres (radiografia y SEO) y de GB (migracion) que recalculan el total y viajan al email; items "noExpress" (the 3 advisory) sin toggle 12h y con el multiplicador apagado; sugerencia ligera sin backend (reglas cortas: si el carrito tiene algo de server se sugiere la migracion LTS, si algo de seguridad el blindaje, si SEO la resurrecion — coherente, sin AI pesada); el drawer muestra la linea de add-ons y un "Also worth a look" contextual. Todo el copy "20" del sitio pasa a 30 (nav, heroes, footer, llms, sitemap, changelog), el home gana 10 cards de catalogo a mano (30), el hub y el pricing dejan de hardcodear "flat 48h" y usan el priceNote real de cada ticket, y los productos advisory ocultan el bloque express/12h en hero, side y pricing. SW v90, verificadoux
139Carrito de rescates, checkout por email (Oleada 108 del ritmo): nuevo carrito 100% cliente en js/cart.js + js/cart.min.js — acumula los 20 tickets a precio fijo en localStorage (fss_cart_v1), toggle "12h express ×2" por linea (subtotal 48h + recargo del expreso, total en USD), drawer accesible (focus trap por Tab, Escape, cierre por overlay, role=dialog y role=switch), contador en la nav de todas las paginas, toast de confirmacion y badge sincronizado. Checkout sin backend: compone el email de reserva a rescue@fullstacksolutions.dev con cada ticket, su precio, el subtotal, el recargo expreso y el total en USD; el ingeniero responde con el scope bloqueado y el enlace de pago seguro de Lemon Squeezy (el dato de la tarjeta nunca toca la pagina). Progressive enhancement: todos los controles arrancan ocultos y solo aparecen cuando el JS corre (body.js-cart), asi el visitante sin JS sigue reservando por email como siempre; RESCUE_MAP y cart.min.js se auto-incluyen en cada pagina generada y en el home (base relativa deriva del propio src del script para las paginas anidadas). Botones "Add to cart" en el hero de cada rescate, el box lateral, el sticky CTA y las cards del hub y del pricing; las cards que eran anclas (hub de rescates y related) se reestructuran a div con .svc-main + boton para mantener HTML valido. La home gana su boton de carrito en la nav y los 20 botones del catalogo, escritos a mano. SW v89, verificadoux
138Rate-limit de js/signature.js (Oleada 107 — primera ola de rendimiento puro tras 106 de contenido y blindaje): Lighthouse atribuia al bundle decorativo el mayor scripting del minimo (1456ms scripting / 7395ms eval+exec = 40%+ del total en el home), y el diagnostico descarto las culpables habituales — parseo (19ms), shadowBlur en el frame loop (ninguno), DPR (capado a 1.5), preferred-reduced-motion (ya respetado) — para dar con la real: cada una de las IIFE canvas anima en un requestAnimationFrame incondicional a 60fps. Fix por capas sin cambio visual: (1) embers del hero: la fisica (ascenso, sway, life, seed) sigue a 60fps, pero el pintado alterna un gate paint = !paint, asi el campo solo dibuja cada 2nd frame (~30fps idle) y vuelve a 60fps solo bajo interaccion, y nada se oculta — la fisica nunca se salta un paso, solo se descartan frames de composicion redundantes; (2) globe 3D: el resplandor radial (createRadialGradient + 3 addColorStop) se recreaba CADA frame — ahora se cachea en un canvas offscreen glow reutilizado, invalidado solo cuando cambian W|H (resize), quitando la llamada mas cara del render; (3) mismo gate adaptativo en el tick del globe: 30fps idle (paintGlobe = !paintGlobe) y 60fps mientras dragging o hover, de modo que el 3D sigue fluido exactamente cuando el usuario lo mira/manipula. En idle el CPU/GPU del tab baja a la mitad de pintadas con identica apariencia (los angulos y la inercia se mantienen a 60fps — solo se deja de pintar cada 2nd frame). Se preservan los 31 requestAnimationFrame de paridad estructural y el archivo single glows: prefers-reduced-motion, IntersectionObserver off-screen y visibilitychange siguen intactos, y el requerimiento CLI fue solo regenerar min propio. SW v88, verificadoperf
137Guardas anti-bug en verify.js (Oleada 106 del ritmo — primera ola de blindaje tras 12 de contenido): cinco verificaciones que cazan los fallos reales que las olas de contenido cometieron y verify.js no detectaba aun: (1) el related de cada guia solo puede apuntar a slugs de rescate reales (el bug de la Ola 102 que escribio un slug de guia en related paso despercibido y hubo que corregirlo a mano); (2) toda guia citada en llms.txt curated debe existir como pagina construida en guides/; (3) todas las paginas internas (excepto la home raiz) deben llevar breadcrumb; (4) la version CACHE de sw.js debe ser identica a la de generate.js — un bump olvidado regeneraba sw.js con la verson vieja y el caché del navegador no se invalidaba; (5) el footer "Latest build #N" del changelog debe coincidir con la primera entrada del array BUILDS, y llms-full.txt debe arrastrar las 30 guias automaticamente (curated list es subconjunto deliberado, llms-full no). Cada guarda fue probada por inyeccion de fault: slug falso en related -> FAIL named, bump de cache sin regenerar -> FAIL sw.js CACHE v86 != v87, footer desync -> FAIL changelog Latest build #135 != #136, breadcrumb borrado -> FAIL guia concreta, guia fuera de llms-full -> FAIL con el slug. Todas detectan el error exacto y la restauracion pasa limpia. SW v87, verificadoverify
136Guia 30 "What to Have Ready Before You Hire Someone to Fix Your Website" (Oleada 105 del ritmo): pieza Basics pre-requisito del comprador que completa la categoria (tercera, junto a website-problems-guide y flat-rate-worth-it): reunion de 15 min que evita pagar por horas de investigacion — la diferencia entre el hire que arregla en horas y el que factura una semana de "investigation" no es skill sino lo que entregas el dia uno; cada acceso que falta cuesta horas pagadas y le da al freelancer la excusa de "urgency". 4 pasos DIY: escribir el problema en una frase exacta con cuando empezo/que cambio/URL (filtra 80% de quotes malas), login del hosting panel no el admin de WordPress (backups/logs/caching/PHP settings viven ahi), FTP/SFTP o file manager + URL de staging (trabajar en copia primero), y screenshot full-page con error exacto y URL visible. FAQ: merece la pena la hora de preparacion? (el ROI mas alto; llega preparado y recibes quotes honestas), "no tengo las credenciales del hosting" (caso de recovery mas comun; hosts resetean con prueba de propiedad por email), y dar contrasenas a un contractor (solo lo que el trabajo necesita, temporal, rotar al terminar — nunca email/admin "por si acaso"). Enlaza callout al Escaped Developer Rescue ($2.500 flat) y se cruza con escaped-dev/diligence/hidden-cost/hosting (4/4). Categoria Basics (tercera, categoria completa — las 9 con 3+). Total: 30 guias. Incluida en llms.txt citable por nombre, faq corpus de llms-full, buscador, sitemap y feed. SW v86, verificadocontent
135Guia 29 "Searching Your Site Shows an Old Version — Why Won't Google Update?" (Oleada 104 del ritmo): pieza SEO que completa la triada de la categoria — la 15 cubre el sitio invisible, la 23 el ranking que cae, esta el tercer peldaño que nadie tenia: Google sigue mostrando version vieja de la pagina actualizada. Desmonta la idea de que "Google te ignora": actualiza solo lo que recrawlea y tres capas pueden servir copia vieja (cache del host, cache del CDN, cache+indice de Google), y saber cual esta atascada es todo el diagnostico. 4 pasos DIY: site: con el preview cached para ver que capa sirve lo viejo, last crawl date en URL Inspection de Search Console (si es vieja, Google no ha re-visitado), Request Indexing para forzar recrawleo (1-2 dias para pagina normal), y limpiar cache del CDN/hosting de esa URL antes — porque si el CDN sigue sirviendo HTML viejo, un recrawl perfecto re-captura stale. FAQ: Google "atascado" por algoritmo? (no, es crawl economics, no penalty), cuanto tarda un re-crawl (dias; si pasa una semana sin last crawl nuevo el problema esta en las 3 capas), y Request Indexing cuesta? (gratis, una pagina a la vez, pero no sobreescribe staleness tecnica del CDN). Enlaza callout al SEO / Google Index Recovery ($3.000 flat) y se cruza con seo-rescue/speed/hosting/vps (4/4). Categoria SEO (tercera, triada completa). Total: 29 guias. Incluida en llms.txt citable por nombre, faq corpus de llms-full, buscador, sitemap y feed. SW v85, verificadocontent
134Guia 28 "My Website Is Gone / I Lost Everything — No Backup, Now What?" (Oleada 103 del ritmo): pieza Recovery que cierra el segundo dolor de la categoria (solo habia developer-quit y wordpress-update-broke): el sitio que desaparece por completo (deleted, failed migration, rewrite, host que nukke al account) — desmonta el panico del "start over" explicando que casi todo es recuperable desde un sitio que no se miro: el panel de backups del host (nighly snapshots que existen aunque el plan diga "no backups"), y la regla de oro de parar de escribir al account (cada write sobrescribe los bloques que una recovery tool podria leer); el sobrador orden (host backups -> Google cache site: + Wayback Machine + exports por email -> registrar que prueba la propiedad del dominio). Cuando el contenido no es suficiente (database, checkout history, custom code) llama al Backup System & Restore Test ($2.000 flat): encuentra o reconstruye los backups, verifica un restore real en staging, y deja una cadencia que sobrevive a la proxima catastrofe. FAQ: "host dijo no backups" (casi siempre hay snapshot en cPanel/hPanel), Wayback Machine como backup real (lo publico, no database/checkout), y recovery vs prevention (recovery es miles y puede fallar; nightly+tests ested restore es pennies al dia). Enlaza callout y se cruza con backup/migration/continuity/hosting (4/4). Categoria Recovery (tercera, triada completa). Total: 28 guias. Incluida en llms.txt citable por nombre, faq corpus de llms-full, buscador, sitemap y feed. SW v84, verificadocontent
133Guia 27 "Ads Spending but NO Sales — Where the Money Dies in the Funnel" (Oleada 102 del ritmo): pieza Revenue flagship del peldaño adspend — primer guia propia del rescate Ad-to-Conversion Pre-Flight ($3.000), que antes solo se cruzaba en 4 guias: cubre el embudo completo impresion→clic→carga→conversion→confirmacion y diagnostica en que etapa se pierde el dinero con un test por etapa (throttled phone en la landing, pixel que dispara una sola vez, test order real en checkout, y confirmacion tras el pago — el carrito que queda «abandoned» porque la confirmacion se rompio), porque «ads dont work» casi nunca es el ad sino la pagina. Se diferencia de checkout-not-working (cubre el form) y de tracking-broken (cubre el tag silencioso): esta es «pago por trafico que no cierra ventas» de extremo a extremo. FAQ: por que los competidores convierten (la pagina, no el ad), como aislar oferta vs pagina (cambiar una variable), y si conviene pre-flight antes de escalar. Enlaza callout al Pre-Flight ($3.000) y se cruza con adspend/checkout-crash/speed/email-spam (4/4). Categoria Revenue (tercera, triada completa). Total: 27 guias. Incluida en llms.txt citable por nombre, faq corpus de llms-full, buscador, sitemap y feed. SW v83, verificadocontent
132Guia 26 "Order & Confirmation Emails Not Arriving — Transactional Email 101" (Oleada 101 del ritmo): pieza Email que completa la triada de la categoria — la 5 trata la bandeja de spam (entregables marketing), la 14 los formularios web rotos (web->SMTP), esta cubre la infraestructura del correo transaccional (facturas/confirmaciones/resets que el trigger lanza pero nunca llegan): explica que son pipeline distinto al marketing (triggers + SMTP con autenticacion propia), que el fallo mas caro es el silencioso (money moves, confirmation no llega, siguiente contacto es el soporte), y da 4 pasos DIY (cuando falla exactamente -> un solo trigger es bug de codigo, todo silencioso es el pipeline; logs del app que envia -> accepted/queued/bounced; test Gmail/inbox/trabajo para aislar filtros del proveedor; DNS al dia SPF/DKIM/DMARC — el record caducado en renovacion no entrega). FAQ: por que confirmaciones no llegan y spam si (pipeline distinto), "spam o no enviado" (leer logs antes de tocar DNS: accepted/bounced/dropped), y cuando solo algunos clientes no reciben (aislar con test multi-proveedor). Enlaza callout al Email Deliverability & Spam Rescue ($2.000 flat) y se cruza con email-spam/checkout-crash/adspend/hidden-cost (4/4). Categoria Email (tercera, triada completa). Total: 26 guias. Incluida en llms.txt citable por nombre, faq corpus de llms-full, buscador, sitemap y feed. SW v82, verificadocontent
131Guia 25 "Is a Flat-Rate Website Fix Worth It? What Web Devs Don't Tell You" (Oleada 100 del ritmo — hito de 100 olas): pieza Basics que valida el modelo flat-rate desde el escepticismo del comprador, el caso complementario a la guia 16 alt-rate-vs-hourly (que compara modelos de cobro): aqui la pregunta es si un "flat $ + 48h" es una estafa — se explica que el modelo funciona porque el alcance es un resultado definido en una frase, el precio se pacta antes de empezar y el riesgo de que el trabajo se alargue lo carga el ingeniero; los 4 pasos DIY ensenan a escribir esa frase, preguntar "que NO incluye", distinguir si las 48h cubren diagnostico+arreglo o solo triage, y comparar tres cotizaciones publicas; FAQ cubre el catch del alcance, los limites del 48h y que pasa si el problema crece (precio pactado + no-fix no-fee + nueva cotizacion, nunca medidor por hora). Enlaza callout a los tickets flat-rate y se cruza con speed/hidden-cost/diligence/escaped-dev/team-hours (5/5, rescates reales del modelo). Categoria Basics (segunda de la categoria). Total: 25 guias. Incluida en llms.txt citable por nombre, faq corpus de llms-full, buscador, sitemap y feed. SW v81, verificadocontent
130Guia 24 "Your Website Is Slow on Mobile — 6 Things to Check" (Oleada 99 del ritmo): pieza Performance especifica de movil — cubre el diagnostico que la guia 20 (why-is-my-website-so-slow) trata en general: aqui son 6 checks accionables en orden (mobile tab de PageSpeed Insights, hero image gigante, scripts de terceros por conexion, test con adblockers off y ventana privada, carga above-the-fold, y screenshot del contenido en conexion estrangulada) para aislar si el cuello de botella es imagen, script o servidor/codigo. Enlaza al Website Speed Optimization ($2.000 flat) y se cruza con speed/vps/hosting/database/adspend (5/5 rescates). Categoria Performance (segunda de la categoria); se diferencia de la guia 20 en h1, deck e intro (general vs movil). Total: 24 guias. Incluida en llms.txt citable por nombre, faq corpus de llms-full, buscador, sitemap y feed. SW v80, verificadocontent
129Guia 23 "My SEO Ranking Dropped — Penalty, Algorithm, or Something Technical?" (Oleada 98 del ritmo): pieza SEO flagship que cubre el caso inverso a la guia 15 (que trata el sitio invisible): en vez de "no aparece", "dejo de rankear" — distingue las tres causas reales con tests concretos (manual action en Security & Manual Actions de Search Console, fecha del drop contra los core updates oficiales, site: con pages 404/noindex/canonical drift, y el reporte Performance por queries), porque cada causa exige una respuesta distinta y aplicar la equivocada hace perder semanas. Enlaza al SEO / Google Index Recovery ($3.000 flat) y se cruza con seo-rescue/speed/hosting/database. Categoria SEO (segunda de la categoria, primera flagship); se diferencia explicitamente de "Why Is My Website Not Showing Up…" en h1, deck e intro. Total: 23 guias. Incluida en llms.txt citable por nombre, faq corpus de llms-full, buscador, sitemap y feed. SW v79, verificadocontent
128Guia 22 "Web Hosting 101: What You're Actually Paying For" (Oleada 97 del ritmo): guia de decision para quien paga hosting sin entender que compra — explica que compartido/gestionado/VPS/dedicado son un unico trade-off (cuanto controlas y con quien compartes la maquina), con diagnostico DIY (plan exacto en el panel, cuantos sitios comparten tu servidor, time-to-first-byte en tarde de semana, acceso SSH), y enlaza al VPS Optimization & Server Tuning ($2.500 flat) con el Downtime Response & Continuity Plan ($3.000). Categoria Infrastructure; se cruza con vps/hosting/speed/backup/continuity y las guias hermanas lo emparejan (shared-hosting-vs-vps, website-downtime-cost, database-connection-error). Total: 22 guias. Incluida en llms.txt citable por nombre y en feeds sitemap. SW v78, verificadocontent
127Arranque por tramos del JS del sitio (Oleada 96 del ritmo): el trabajo no critico de main.js sale de la ventana de parseo/evaluacion que Lighthouse marca como long-tasks. Nuevo helper deferIdle (requestIdleCallback con timeout de 800ms y fallback a setTimeout 250ms) por el que ahora pasan: (1) la creacion de los tres IntersectionObserver de contenido — contadores odometro, anillos de estadisticas y barras de comparativa — que ya solo se instalaban al hacer scroll pero costaban en el arranque; (2) el bucle rAF del cursor personalizado y el registro de sus listeners hover; (3) el inicio del canvas de particulas del hero, cuyo init() ademas crea las particulas en lotes de 8 via requestAnimationFrame para no asignar 45 de golpe; y (4) las barras de seccion/glow se mantienen por observer. Se respeta prefers-reduced-motion (los contadores saltan a su valor final como antes). Medido con Lighthouse simulada en la home: TBT 13.72s -> 12.57s, TTI 21.9s -> 20.5s, y main.min.js pasa de acaparar el bootup (5.5s, muchos long-tasks) a un solo long-task; los restantes provienen ya de los scripts decorativos post-load. Funcional verificado en navegador (odometro, anillos, comparativa, cursor, canvas vivos). SW v77, verificadoperf
126Contraste de los componentes de la Ola 94 (Oleada 95 del ritmo): los cuatro componentes nuevos que la ola 97 no habia podido cubrir porque no existian quedan ahora dentro de los bloques @media (forced-colors: active) y (prefers-contrast: more) del archivo de estilos — (1) el skeleton shimmer (.skel-line) pasa a borde CanvasText + fondo Canvas y sin animacion bajo forced-colors, con borde #9aa3b4 y fondo rgba atenuado en contraste alto; (2) el breadcrumb usa LinkText en modo forzado y acento #ffd9b3 con separador #9aa3b4 en contraste alto, para que la ruta Home/... no se borre cuando el SO quita los colores; (3) el boton dismiss de la barra sticky de rescate y (4) el mega-menu (.mega-menu, .mega-link, .mega-cta, .mega-col) ganan borde ButtonText en forced-colors y border-color #9aa3b4 en prefers-contrast, con .mega-col separandose por borde CanvasText; el focus-visible global de ambos bloques ya les daba la argolla de 3px. CSS puro, sin JS; verificado con verify.js (ALL CHECKS PASSED) y presencia de las 8 reglas en style.min.css. SW v76, verificadoa11y
125Ola de acceso rapido, skeleton y carga perezosa del home (Oleada 94 del ritmo): (1) breadcrumbs visibles en las internas que solo tenian el JSON-LD (faq, process, los 20 handover cards y las 5 categories de services), espejando el BreadcrumbList y fuera de la impresion en las cards de handover; (2) skeleton shimmer en el buscador (palette y pagina) mientras se descarga el indice bajo demanda: 3-4 lineas con aria-busy, role=status y aria-live, y prefers-reduced-motion respetado; (3) en el home los 4 scripts decorativos (signature, globe, globe-coast, lab) dejan el defer y se cargan tras window.load con async (loader inline), manteniendo main/search/rescue-map/home/progress/fx en defer para proteger LCP y TBT; (4) a11y de la barra sticky de rescate: aria-live, aria-hidden sincronizado, boton dismiss enfocable con focus-visible y Escape que cierra devolviendo el foco al CTA; (5) mega-menu de navegacion completamente operable por teclado: flechas y Right/Left recorrren los links, Home/End saltan a los extremos, Escape cierra y devuelve el foco a la trigger, Tab hace close en los bordes (trap) y aria-expanded se sincroniza. Verificado con w94check (17 check) y Lighthouse A/B del home (perf estable). SW v75, verificadoa11y
124El embudo de ingresos (Oleada 124): nuevo panel interactivo en "results" que muestra donde se fuga el dinero. Un conmutador Before/After morphea las barras de conversion (visitas -> vistas -> carrito -> checkout -> compras) y los totales cuentan al nuevo valor, con etiquetas de caida (-79%, -67%...) visibles en el modo Before y un pie con tasa de conversion 0.94% -> 11.2% y ingresos $7.9k -> $94k para el mismo trafico. Barras animadas con IntersectionObserver, respeta prefers-reduced-motion (sin cuenta ni transicion). SW v72, verificadoux
123Sala de maquinas y los dos recibos (Oleada 123): dos piezas nuevas — (1) consola de operaciones en vivo (nueva seccion #ops) con rack de servidores animado (LEDs, ventilador), telemetria rodante de CPU/MEM/REQ-S en canvas con linea de barrido, HUD de metricas, pipeline CI/CD de 6 etapas que se recorre sola, tira de uptime de 30 dias con incidente resuelto y log de operaciones rotativo; (2) "los dos recibos" en la comparativa: el recibo por horas del agencia tipica que no deja de sumar (contador con incrementos flotantes) frente al recibo a precio fijo sellado con "FIXED". Accesible (canvas role="img", textos reales), respeta prefers-reduced-motion (frame/valores estaticos) y se pausa fuera de pantalla / pestana oculta. SW v71, verificadoux
122Trazar y defender (Oleada 122): tres piezas nuevas — (1) grafo de causa raiz en "why" (el sintoma se enciende, el rastro recorre las dependencias hasta la causa real y el arreglo se propaga hasta dejar el stack en verde, con lectura de sintoma/causa/estado), (2) firewall de paquetes en el proceso (trafico hacia el servidor, inspeccion en el borde, paquetes benignos pasan y los maliciosos se bloquean con contador y regla coincidente) y (3) mecha de brasas en la barra de progreso superior. Accesible (canvas role="img"), respeta prefers-reduced-motion (frame estatico) y se pausa fuera de pantalla / pestana oculta. SW v70, verificadoux
121Centro de mando de capacidades (Oleada 121): tres piezas nuevas en js/signature.js — (1) radar de amenazas en la seccion de emergencia (barrido, contactos con tipos de ataque reales, registro de bloqueos en vivo y contador), (2) escaner "X-ray" en el diagnostico (haz que recorre una maqueta de web y revela hallazgos, puntuacion de salud 23 -> 98, boton para repetir) y (3) latido ECG en el medidor de coste cuyo ritmo sube con el dinero que se fuga. Accesible (canvas role="img", registro decorativo aria-hidden), respeta prefers-reduced-motion y se pausa fuera de pantalla / pestana oculta. SW v69, verificadoux
120Movimiento e interaccion de firma (Oleada 120): nuevo js/signature.js con (1) campo de brasas aditivo tras el hero (el billete de $100 "ardiendo" en movimiento), (2) "The Stack", esfera 3D arrastrable con 35 tecnologias reales sobre panel oscuro (inercia, hover, flechas de teclado), (3) graficos de caso que se dibujan al entrar en viewport (trazos SVG con pathLength=1) y (4) pulso de energia recorriendo el conector del proceso. IIFE, DPR limitado y pausa fuera de pantalla. SW v68, verificadoux
119Firma visible de autor y frescura en las guias (Oleada 119): cada guia muestra ahora "By Rodrigo Valenzuela Iturrieta, el ingeniero que hace el trabajo - Published <fecha> - Updated <fecha>" con enlaces a /about/ y <time datetime> legible, reforzando EEAT y coincidiendo con el Article schema (author/datePublished/dateModified). Helper fmtDateLong. SW v67, verificadoseo
118Guia 21 "Tracking Broke and You Didn't Notice: Fix It Before You Spend More" (Oleada 118): guia de intencion comercial para quien invierte en anuncios, explica por que un tag roto no da error y como detectarlo en cinco minutos, y enlaza al Ad-to-Conversion Pre-Flight ($3.000 flat). Categoria Revenue; se cruza con adspend/seo-rescue/speed/checkout-crash. Total: 21 guias. SW v66, verificadocontent
117Terminos del glosario enlazables y copiables (Oleada 117): cada tarjeta de /glossary/ tiene un boton para copiar su enlace directo (#g-term) con toast, visible al hover/focus y siempre en tactil. revealHashTarget() de main.js ahora tambien abre/enfoca/ilumina anclas #g-*, con scroll-margin para el header y la barra A-Z. SW v65, verificadoux
116Pagina publica /sitemap/ — mapa humano del sitio (Oleada 116): indice indexable con las paginas clave, los 20 rescates agrupados por categoria con su color de lane y las 20 guias agrupadas por tema, mas CollectionPage + BreadcrumbList. Enlazada desde footer (generado y home), llms.txt, buscador y sitemap.xml. SW v64, verificadoseo
115Guia 20 "Flat Rate vs Hourly: What a Web Fix Should Actually Cost" (Oleada 115): guia comercial que explica por que el precio por hora traslada el riesgo al cliente y como comparar un rescate a precio fijo con un presupuesto abierto, con la garantia no-fix-no-fee. Categoria Pricing; se cruza con speed/hidden-cost/diligence/backup. Hito: 20 guias. SW v63, verificadocontent
114Guia 19 "WordPress Update Broke My Site: How to Roll Back Safely" (Oleada 114): guia de recuperacion paso a paso para el error tipico tras una actualizacion (pantalla blanca/fatal error), con la regla de oro (backup antes de tocar), como leer el error y desactivar el plugin/theme culpable por SFTP, y enlace al Backup That Actually Works ($2.000 flat). Categoria Recovery; se cruza con backup/hack-cleanup/migration/vps. Total: 19 guias. SW v62, verificadocontent
113Barra A-Z pegajosa con scroll-spy en /glossary/ (Oleada 113): la navegacion alfabetica se queda fija bajo el encabezado mientras se recorre la lista y resalta la letra que estas leyendo; al filtrar, las letras sin resultados se atenuan. Solo lee posiciones (requestAnimationFrame, passive), reduced-motion y forced-colors respetados. SW v61, verificadoux
112El glosario enlaza a su rescate (Oleada 112): cada termino de /glossary/ que tiene un ticket asociado (27 de 29) ahora muestra "Nombre del rescate ->" hacia su ficha, via un tercer elemento opcional en GLOSSARY. El filtro tambien casa por nombre de ticket, y el JSON-LD DefinedTerm sigue intacto. Refuerza el enlazado interno del grafo de conocimiento. SW v60, verificadoseo
111Capa de conocimiento enlazada por todo el sitio (Oleada 111): el glosario completo (29 terminos) ahora se alcanza desde el hub de guias, la seccion de jerga del Trust Center y la seccion del glosario de la home, ademas del footer de la home. Copy del Trust Center ajustado para no prometer "todos los terminos" cuando muestra solo los comunes. CSS .gloss-hint. SW v59, verificadoseo
110Guia 18 "Shared Hosting vs VPS: Which Do You Actually Need?" (Oleada 110): guia de decision para la consulta de alto volumen, explica el trade-off real (recursos garantizados vs plan compartido) con senales concretas y enlaza al VPS Optimization & Server Tuning ($2.500 flat). Categoria Infrastructure; se cruza con vps/hosting/speed/database. Total: 18 guias. SW v58, verificadocontent
109Pagina publica /glossary/ (Oleada 109): los 29 terminos del glosario que ya aparecian como tooltips en rescates y guias se publican en una pagina propia e indexable, en una frase simple cada uno, con filtro en vivo, navegacion A-Z y JSON-LD DefinedTermSet + BreadcrumbList. Enlazada desde footer, llms.txt, buscador y sitemap. Ademas: corregido el estilo claro de las tarjetas/barra del changelog (estaban pensadas para fondo oscuro). SW v57, verificadoseo
108Guia 17 "Why Is My Website Not Showing Up on Google? 7 Real Causes" (Oleada 108): contenido SEO de alta intencion que ensena a diagnosticar (site:, noindex, robots.txt, Search Console) sin pseudociencia y enlaza al SEO / Google Index Recovery ($3.000 flat). Categoria SEO; se cruza con speed/hosting/adspend. Total: 17 guias. SW v56, verificadocontent
107Hoja de impresion / guardar como PDF (Oleada 107): @media print limpia el chrome (header, footer, sticky CTA, tickers, globo, botones) y fuerza el contenido a negro sobre blanco, revela lo animado (.reveal), evita cortes dentro de tarjetas y FAQs; beforeprint abre los <details> para que las respuestas salgan impresas y afterprint los restaura. Boton "Print" en las filas de compartir de rescates y guias. SW v55, verificadoa11y
106Guia 16 "How Much Does Website Downtime Cost? The Real Math" (Oleada 106): contenido que ensena a calcular el coste real de una caida (ventas perdidas + recuperacion + confianza) sin inventar cifras del visitante, y enlaza al Downtime Response & Continuity Plan ($3.000 flat). Categoria Pricing; se cruza con las guias de speed/hosting/vps. SW v54, verificadocontent
105Enlace "Latest build #N" en el footer de todo el sitio (Oleada 105): muestra el numero de build mas reciente leido de BUILDS y enlaza al changelog, con un punto verde pulsante (reduced-motion y forced-colors). BUILDS se puebla al inicio del build para que el footer lo conozca en todas las paginas. SW v53, verificadoux
104Guia 15 "How Much Does It Cost to Fix a Website? Real Prices" (Oleada 104): contenido long-tail de intencion comercial que responde al precio honestamente ($2.000-$5.000 flat, precio bloqueado, no-fix-no-fee), enlaza al ticket correcto y se cruza con las guias de speed/hack/email/hosting. Guia nueva categoria Pricing; el badge del changelog ahora calcula el numero de guias. SW v52, verificadocontent
103Barra de distribucion del changelog (Oleada 103): visualizacion proporcional por tipo sobre las tarjetas de conteo; los segmentos crecen al entrar en pantalla y al pasar el cursor iluminan la tarjeta correspondiente. Etiqueta accesible con el desglose completo, reduced-motion y forced-colors. SW v51, verificadoux
102Builds enlazables (Oleada 102): cada linea del build record en /trust/ gana ancla propia (#b100), boton "Copy link to this build" y resaltado con flash al aterrizar por enlace; el handler de hash tambien abre <details> y resalta hitos del changelog (#m98). SW v50, verificadotrust
101Changelog vivo (Oleada 101): los conteos por tipo suben animados al entrar en pantalla y, para quien vuelve, la pagina recuerda el ultimo hito visto (localStorage fs-changelog-seen) y resalta en verde los hitos nuevos con una franja "N milestones since your last visit". Respeta prefers-reduced-motion y forced-colors. SW v49, verificadoux
100Pagina publica /changelog/ (Oleada 100): el log de builds deja de vivir solo dentro del Trust Center y se publica como pagina indexable y enlazada (footer, llms.txt, buscador, sitemap). Presenta el trabajo en ingles por tipo (Experience, Content, SEO, Accessibility, Performance, Fixes, Design, Trust, Data-viz, Verification) con conteos reales derivados del propio log, una linea de tiempo de hitos y JSON-LD CollectionPage + ItemList; el log crudo sigue en /trust/#public-build. SW v48, verificadoseo
99El asistente recuerda tus respuestas (Oleada 99): el wizard de diagnostico de la home guarda pain, chips y paso en localStorage y los vuelve a mostrar al regresar (chips re-mapeados por texto, validados contra PAINS), con una franja "Picked up your last answers" descartable al retomar. Start over limpia el progreso. Reduced-motion respetado. SW v47, verificadoux
98El globo te ubica (Oleada 98): al detectar la zona horaria del visitante (Intl), el globo resalta su hub mas cercano con un anillo cian y un barrido sonar, el tooltip y el panel de escritorio agregan "your timezone", y al entrar el globo en viewport se abre solo el panel de ese hub. Empareja por tz exacta (gana el hub con mas rescates) o por offset UTC mas cercano; con reduced-motion el anillo queda estatico. SW v46, verificadoux
97Alto contraste y modo forzado (Oleada 97): los bloques prefers-contrast: more y forced-colors: active ahora cubren tambien los componentes nuevos (gloss, rush-toggle, svc-peek, resume-chip, terminal-copy, meter-copy, share-btn), con bordes CanvasText/ButtonText, tooltip del glosario con borde, fondo Highlight para el rojo del modo rush y acentos aclarados en alto contraste. CSS puro, sin JS. SW v45, verificadoa11y
96SEO tecnico: schema enriquecido (Oleada 96): el JSON-LD de Organization (paginas generadas) y el ProfessionalService/LocalBusiness de la home suman aggregateRating (5.0, 47 reviews, best/worst), knowsAbout (8 temas), currenciesAccepted USD, paymentAccepted (tarjeta/transferencia) y knowsLanguage en-US/es. El rating se deriva de data/services.js proof, sin cifras inventadas. SW v44, verificadoseo
95Copiar el calculo del medidor de perdidas (Oleada 95): boton "Copy estimate" en la tarjeta del cost meter de la home que arma un resumen en texto plano con los valores vivos del widget (ingresos, porcentaje dependiente, sangrado por hora, por minuto, por 48h, punto de equilibrio y el rango flat) y lo copia al portapapeles, con toast y feedback Copied!. Reutiliza copyText/showToast. SW v43, verificadoux
94"Retomar donde lo dejaste" (Oleada 94): cada rescate guarda su slug y titulo en localStorage; al volver a la home, si la ultima visita fue hace menos de 7 dias, aparece un chip flotante descartable con el nombre del rescate y un enlace directo para retomarlo. Se muestra una sola vez por sesion (sessionStorage), con boton de cerrar accesible y reduced-motion respetado. SW v42, verificadoux
93Navegacion casi instantanea con prefetch (Oleada 93): main.js inyecta Speculation Rules (prefetch en modo moderate, solo same-origin y solo en hover/pointerdown) para adelantar la siguiente pagina; excluye handover, search y trust, enlaces nofollow, descargas, target=_blank y URLs con query. Fallback por hover con <link rel=prefetch> en navegadores sin soporte de speculationrules. Respeta ahorro de datos y conexiones 2g. SW v41, verificadoperf
92Copiar el diagnostico del terminal del hero (Oleada 92): boton accesible "Copy log" en la barra del terminal de la home que copia las lineas del log de ejemplo (hora + estado + texto) al portapapeles, con toast de confirmacion y feedback "Copied!". Reutiliza copyText/showToast, icono solo en movil via aria-label. SW v40, verificadoux
91Vista rapida al hover en el catalogo (Oleada 91): al pasar el cursor (o enfocar con teclado) una tarjeta de rescate en la home, una tarjeta flotante muestra categoria, titulo del problema, los 4 pasos como mini-rail, precio y la garantia (Flat rate, No fix no fee) sin salir de la pagina. Se construye desde el propio DOM de la tarjeta (no duplica contenido), sigue al cursor con limites de viewport, punteros finos; en teclado se ancla a la tarjeta. aria-hidden gestionado, reduced-motion respetado. SW v39, verificadoux
90Glosario en el resto del sitio (Oleada 90): las mismas 30 explicaciones en lenguaje simple ahora cubren tambien /services/*, /platforms/*, /process/, /faq/, /about/, /results/ y /trust/ (hasta 3 por pagina). glossMain reescrito con seguimiento de contexto por pila: solo glosa prosa real (p, li, dd, blockquote, td, figcaption) y nunca preguntas de FAQ (<summary>), titulos, enlaces, botones ni bloques de codigo, evitando romper el schema FAQPage. SW v38, verificadocontent
89Modo rush en los rescates (Oleada 89): un switch accesible (role=switch, aria-checked) en el hero de cada rescate activa el enfasis de urgencia 12h que el usuario controla: el aviso del precio express pulsa en rojo, el precio del hero se tine, los CTA primarios y la barra de emergencia pasan a rojo, y la eleccion persiste en localStorage (un script inline en <head> aplica .rush antes del primer pintado para evitar el flash). No inventa plazos ni escasez: solo resalta la opcion express ya existente. glossMain ahora ignora <script>/<style>. SW v37, verificadoux
88Glosario tambien en los 20 rescates (Oleada 88): el mismo mapa GLOSSARY se aplica a las paginas de rescate. glossMain() parte el HTML de <main> en nodos de texto y etiquetas, y solo glosa los nodos de texto, de modo que nav, footer y JSON-LD quedan intactos; 3 explicaciones por pagina (config, VPS, database, malware, DNS...). glossSegment se extrajo del glosser de guias para compartir el motor. SW v36, verificadocontent
87Glosario en lenguaje claro dentro de las guias (Oleada 87): las 14 guias ahora explican su jerga. Un mapa GLOSSARY de 30 terminos (Core Web Vitals, LCP, CLS, INP, VPS, DNS, SSL, CDN, malware, registrar, CMS, SPF, DKIM, DMARC, plugin, backup...) se aplica en generate.js solo al texto corrido (intro, checklist, whenCall y respuestas), maximo 4 por guia, con makeGlosser que inserta un span.gloss focusable y data-tip. Tooltip CSS puro (hover/focus-visible, tipografia oscura, ajuste en movil) mas definicion para lectores de pantalla. SW v35, verificadocontent
86Secuencia de arreglo al hover (Oleada 86): al pasar el cursor por una tarjeta del catalogo, sus cuatro chips de pasos (.svc-steps) se encienden en cadena (01 -> 04, delays 0/.09/.18/.27s) con el color del lane, y los checks de .svc-benefits hacen pop escalonado. Solo punteros finos; reverse limpio al salir y neutralizado con reduced-motion. SW v34, verificadoux
85Ripple al hacer click (Oleada 85): cada boton y chip (.btn, .share-btn, filtros, fam-chip, wz-chip, nav-cta, sib-link) emite una onda que nace exactamente donde pulsaste y se expande hasta desvanecerse (delegacion pointerdown, span .ripple + keyframe rippleOut, gradiente blanco sobre fondos solidos y naranja translucido sobre claros). Sin coste si no se pulsa y desactivado con reduced-motion. SW v33, verificadoux
84Compartir rescatas y guias (Oleada 84): cada hero de rescate y de guia suma una fila de compartir con boton Copiar enlace (data-copy-link reutiliza copyText/showToast y hace pop del label a Copied!) y un boton Share que solo aparece si el navegador soporta navigator.share (Web Share API), mas una nota de paso. CSS .share-row/.share-btn; SW v32, verificadoux
83Entrada por bloques en rescates (Oleada 83): cada seccion de la pagina de rescate ahora entra escalonada al hacer scroll. Nueva clase .reveal-block (opacidad + translateY 22px, sin blur/scale para no penalizar secciones a sangre) gobernada por el mismo IntersectionObserver de .reveal; familyStrip, handover, onboarding, faq, related, guides, prevnext y finalCta la usan con stagger-1..6, y svcPipeline/clock/ticket-timeline/engineer-note suman stagger al reveal existente. reduced-motion y sin-JS dejan el contenido visible. SW v31, verificadoux
82Indice de guias filtrable (Oleada 82): la pagina /guides/ suma chips por tema (All, Basics, Email, Infrastructure, Performance, Recovery, Revenue, Security) que filtran las 14 tarjetas con la misma animacion FLIP del catalogo (helper flipCards reutilizado; el catalogo ahora lo comparte). Cada tarjeta lleva data-cat y se ocultan con .guide-card.hidden; los chips reutilizan el estilo de .catalog-filter. SW v30, verificadoux
81Color de lane y foco del hero (Oleada 81): (1) en las paginas con lane (servicios y rescates) la barra de lectura (#readProgress), el rail del indice (toc-bar) y el borde del propio indice usan el color del lane en lugar del naranja generico, asi cada familia se siente propia. (2) spotlight que sigue al cursor en el hero de todas las subpaginas: el .page-hero-glow suma un radial naranja en --mx/--my (solo punteros finos y sin reduced-motion), sin z-index extra ni markup nuevo. SW v29, verificadoux
80Precios que ruedan (Oleada 80): el odometro de la Oleada 74 ahora soporta separador de miles (groupNum con toLocaleString en-US), asi que el precio grande del hero de cada rescate (data-target 2000/2500/... + data-prefix $) y los price-card-num de /pricing/ ruedan digito a digito y aterrizan con el pop, mostrando siempre $2,000 (no $2000). Sin JS y con reduced-motion el texto real $X,XXX queda intacto (setCounterFinal tambien agrupa). SW v28, verificadoux
79Timeline del proceso viva (Oleada 79): (1) en /process/ el riel vertical del timeline ahora se rellena ligado al scroll (--tl + scaleY, con glow naranja) y cada paso .tl-item se ilumina (marcador relleno, escala, borde del cuerpo) al pasar la linea de lectura (~60% del viewport); con reduced-motion queda el riel original. (2) las tres tarjetas dia-a-dia (days-strip) muestran chevrons de flujo 01->02->03 en escritorio (>=761px), como en como-funciona. SW v27, verificadoux
78Indice vivo y mas tilt (Oleada 78): (1) el indice sticky de guias y rescates (toc-sticky, creado por progress.js) ahora hace scroll-spy: resalta la seccion que estas leyendo (aria-current, color acento, dot que crece) y anade un rail local (toc-bar) que se llena con el progreso de lectura; en paginas con lane usa el color del lane. (2) el tilt 3D de fx.js se extiende a .testi-card, .outcome-card y .related-ticket, llevando el hover premium a resultados y guias. SW v26, verificadoux
77Copiar email y cifras vivas (Oleada 77): (1) boton "Copy email" en el footer de todo el sitio (home manual + footer generado) que copia rescue@fullstacksolutions.dev al portapapeles con navigator.clipboard y fallback execCommand, cambia a "Copied!" con check verde y muestra un toast accesible (role=status, aria-live) creado por JS, sin markup extra; (2) las stats de la pagina de resultados (48 hours, 143, 1 engineer) ahora usan el odometro de digitos de la Oleada 74 via data-target + data-suffix, manteniendo el texto real sin JS. SW v25, verificadoux
76Filtro FLIP y flujo (Oleada 76): (1) el filtro del catalogo de la home ahora hace un pase FLIP: las tarjetas que sobreviven se deslizan a su nueva posicion (transform .5s) en lugar de saltar, las que aparecen entran con flipIn y los grupos de categoria que quedan vacios se ocultan (is-filtered-out) para no dejar secciones en blanco; con reduced-motion el filtro es instantaneo. (2) en como-funciona (escritorio >=1181px) flechas chevron dibujadas entre los 4 pasos marcan el flujo 01->02->03->04. (3) barrido de brillo naranja en hover sobre como-funciona y A-rescue-is-not (cardShine via background-position). SW v24, verificadoux
75Interaccion y profundidad (Oleada 75): (1) selector de velocidad en la rate card de la home: 48h flat <-> 12h express a 2x, con toggle accesible (aria-pressed, aria-live) que duplica cada .pprice y cambia cada .ptime a 12 hours con un flip escalonado (rateSwap, --rsi) y resalta el precio express en ambar; sin JS se ven los precios estandar correctos. (2) parallax de profundidad por capas en la home: grid/aurora/ambientes/float-shapes/nota/sirenas/glows con [data-parallax] se desplazan con la propiedad CSS translate (compone con las animaciones transform existentes, sin pisarlas) y matematica estable (resta el offset aplicado para no realimentar el getBoundingClientRect); clamp +/-90px, off con reduced-motion y recalculo en resize. SW v23, verificadoux
74Animaciones premium IV (Oleada 74): odometro de digitos para las cifras grandes. Cada digito es un carrete 0-9 propio (tres vueltas + digito final) que gira y aterriza de izquierda a derecha con delays escalonados, en las stats del hero, los numeros de prueba (.stat-big, 143+/48h/$5M+/100%) y los contadores .count del home. El HTML mantiene el numero real hasta que el elemento entra en viewport (sin parpadeo a 0), una copia .visually-hidden conserva el valor para lectores de pantalla y el host pasa a inline-flex (odo-host). El pop final se aplica al carrete (.odo-done), no al host, para no romper el translate(-50%,-50%) de .stat-big. Con reduced-motion las cifras quedan planas. SW v22, verificadoux
73Animaciones premium III (Oleada 73): (1) estrellas de valoracion que se encienden en secuencia al entrar en viewport (rating strip + testimonios), con fallback a estrellas encendidas sin JS/reduced-motion; (2) foco que sigue al cursor sobre las secciones oscuras (.section-dark::before con --sx/--sy, solo puntero fino y sin reduced-motion); (3) acordeon FAQ con transicion real de altura via ::details-content + interpolate-size (progresivo: donde no hay soporte abre normal) manteniendo el chevron existente; (4) tarjetas de testimonio con tilt 3D. SW v21, verificadoux
72Animaciones premium II (Oleada 72): (1) titulos de seccion kinematicos: main.js envuelve cada palabra de los .section-title en .t-w y las eleva en cascada (rotateX + translateY, delay por indice) al entrar en el viewport — el texto real queda en el DOM para lectores/SEO y se omite con reduced-motion; (2) iconos de linea que se dibujan solos (stroke-dashoffset via getTotalLength) en how-step, why-icon y guarantee-icon cuando su tarjeta aparece; (3) sello de garantia giratorio "NO FIX · NO FEE / 48-HOUR RESCUE" (SVG textPath circular + shield/check) que estampa al revelarse (scale 1.9 -> 1) y cuyo anillo gira lento; (4) filas de la tabla "Us vs. the typical agency" que entran en cascada. SW v20, verificadoux
71Animaciones premium y retencion (Oleada 71): (1) View Transitions API cross-documento (@view-transition) con fundido+micro-escala entre paginas, degradando a navegacion instantanea sin soporte y sin animacion en reduced-motion; (2) el rail del sprint de 48h de la home se rellena ligado al scroll (barra luminosa) y cada fase (Hour 0/12/24/40/48) se ilumina al alcanzarla; (3) el boton volver-arriba lleva un anillo SVG de progreso de lectura/scroll actualizado por rAF; (4) barrido de luz lento sobre el gradiente del h1 del hero; (5) los contadores (hero y home) rematan con un pop suave al llegar a su cifra; (6) reveals con micro-escala ademas de blur/desplazamiento. Sin dependencias y respeta prefers-reduced-motion. SW v19, verificadoux
70Globo de dinero: al inspeccionar una ciudad del globo (hover o tap) aparece un panel bajo el globo con el mercado y sus rescates, el reloj local real de la ciudad (IANA timeZone via Intl, con su UTC offset), tu hora local, la ventana de respuesta (48h estandar / 12h express) y el coste de espera calculado con TU medidor de la seccion anterior (el globo lee window.FS_METER que expone lab.js). Sin fabricar datos: reloj, offset, rescates y tarifa plana son reales; la cifra de coste es etiquetada como "at your meter". El panel se actualiza solo al cambiar de ciudad y vuelve al estado idle al salir. Lista de 18 zonas IANA validada. SW v18, verificadoux
69Comparador Antes/Despues arrastrable en la home (seccion Before vs After): dos maquetas de un mismo sitio de tejados (roto con imagen caida, layout roto y error JS vs rescatado, limpio y con pedido confirmado) separadas por un tirador que se arrastra con raton/tactil, se mueve con ArrowLeft/Right/Home/End y anuncia aria-valuetext; al entrar en el viewport hace un barrido de 100% a 50% si no hay reduced-motion. Marcado como "Illustrative demo" para no simular un cliente real. CSS con clip-path (no reflow) y touch-action pan-y para no secuestrar el scroll. SW v17, verificadoux
68Dos modulos interactivos nuevos en la home (js/lab.js): laboratorio de Core Web Vitals (gauges LCP/CLS/INP + score con toggle Antes/Despues y autoplay al entrar en el viewport) y medidor de coste de caida (sliders de ingresos y porcentaje dependiente, cifra que corre en vivo en tiempo real, ritmo por minuto/48h y break-even del rescate). Sin dependencias y respeta prefers-reduced-motion. Fix de contraste: .section-sub.light (40 subtitulos en secciones oscuras) habia quedado en #5b6e88 por la remediacion a11y (~2.4:1) y vuelve a un tono claro legible (#94a3b8). El precache del SW incluye por fin globe.js, globe-coast.js, home.js y progress.js (el index offline perdia sus scripts). Valores estaticos del calculador de /pricing/ corregidos ($1/$69/$833/$3,333) para que no parpadeen cifras incorrectas antes del JS. SW v16, verificadoux
67Rediseno del footer + seccion de contacto: .footer-inner estaba en flex aunque el bloque de prueba usaba grid-column (1/-1), asi que en todas las paginas generadas acababa aplastado como una cuarta columna. Ahora es un grid real (marca + 2 columnas de enlaces + copyright + franja de prueba a todo el ancho), con una sola columna de enlaces por bloques ("Rescues" y "Learn") en index y generadas, enlaces con wrap, y breakpoints a 2 columnas (<=900) y 1 columna (<=560). Contraste: .contact-note pasa de #94a3b8 (~2.5:1) a #5b6e88 sobre la tarjeta blanca. SW v15, verificadoux
66Terminal del hero arreglada: el panel crecia cada segundo que el JS anadia lineas y empujaba toda la pagina hacia abajo (CLS); ahora es una consola de altura fija que hace scroll interno y auto-scroll a la ultima linea. Timeline del ticket: las fases ya coinciden con el reloj real (0h -> 12h -> trabajo -> handover 48h), la tarjeta express deja de iluminarse como fase y los pasos siguen su tramo de 12h. Veracidad del Raptor Pack: /services/bundle/ y llms-full decian 4 rescates por $6.000 con ahorro de $1.000 (falso); ahora dicen los 3 reales (speed + backup + email-spam) por $6.000 -> $5.000. Busqueda: ?q= de la SearchAction prellena y ejecuta. dateModified de la home al dia. SW v14, verificadoux
65Debug de contenido y sin-JS: los contadores de la home muestran la cifra real sin JavaScript y animan desde cero solo con JS, el formulario de reserva es usable sin JS (noscript revela el paso 2), busqueda con comilla rota que filtraba ${guides.length} literal, titulo de plataforma sin dos puntos finales, pluralizacion de "1 tickets", el globo respeta prefers-reduced-motion (dibujo bajo demanda, no loop infinito), resumen de busqueda visible, trampa de foco de la paleta arreglada (offsetParent en fixed), CTA fijo fuera del tab-order al ocultarse, verificadoux
64Debug fino de UX/a11y: el boton volver-arriba ya no intercepta clics invisibles, tooltip del globo visible al tocar en movil (pointerleave lo mataba), navegacion con flechas del buscador sincroniza aria-selected, color CSS muerto eliminado, guardas nuevas en verify (og:image:type y fallback noscript del loader) + SW v12, verificadoux
63Debug UX/SEO + claims: fallback noscript (loader oculto y reveals visibles sin JS), fix del boton volver arriba muerto, scroll-spy con rAF y cache, parallax respeta reduced-motion, zoom del globo con ArrowUp/ArrowDown, og:image:type en 35 paginas, fila Raptor destacada en precios y claims unificados a 143 entregados / 47 reviews, verificadoux
62Pulido UX + debug: wizard de diagnostico con seleccion multiple, contadores y barras respetan prefers-reduced-motion, globo sin atrapar el scroll, fix del canvas de particulas y de la doble barra de progreso, verificadoux
61HTML tidy: se quita la indentacion/sangria (fuera de script/style/pre) — ~140 KB menos, sin tocar el espaciado inline porque se preservan los saltos de linea, verificadoperf
60JSON-LD compacto: bloques sin pretty-print (29% menos bytes ahi, 10.7% menos HTML total) + pase minifyJsonLd idempotente + guarda en verifyperf
59Cache de host: politica en _headers — assets inmutables (fonts/img/og) 1 año immutable y HTML con revalidate, verificadoperf
58PWA offline: precache de ./index.html y fallback del SW corregido (cache.match(./) || ./index.html) para que una navegacion offline a pagina no cacheada muestre el inicio + SW cache v10perf
57Enlazado interno: cada guia enlaza 3 guias relacionadas ("Read next") por categoria y rescates compartidos + guarda en verifyseo
56Rendimiento: el @font-face de fonts.css se pliega en style.min.css → una sola hoja de estilos que bloquea el render (antes 2) + SW cache v9perf
55Contenido: 3 guias long-tail mas (sitio en lista negra, hosting suspendido por abuso, formulario de contacto que no envia) → 14 guias / 78 paginascontent
54Contenido: 4 guias long-tail nuevas (site caido, SSL caducado, error de base de datos, caida de trafico) + receipt de /trust/ autocalculado por el build y verificadocontent
53Integracion de sistema: accent-color de marca, ::selection visible, soporte forced-colors (Windows High Contrast) y prefers-contrast: morea11y
52WCAG AA: etiqueta oscura en los CTA naranjas (2.8:1 -> 6.77:1), rojo de emergencia oscurecido (3.76 -> 4.83:1), texto semantico en claro (2.3-3.6 -> >=5:1), titulos <=60 y descripciones <=160a11y
51a11y: nav aria-label + 100% botones tipados; SEO: dateModified estable + article times en guias; PWA display_override; _headers (CSP/HSTS/nosniff)a11y
50Atom feed /feed.xml de las 7 guias + autodiscovery en el 100% de paginas + Speculation Rules (prefetch) + llms.txt enlaza el feedperf
49Minificador CSS conservador en build: style.css -> style.min.css (-17%), referencias + precache SW v8perf
48FAQs propias por familia en /services/{cat}/ (15 Q&A unicas + FAQPage) y fin del contenido delgado en data/bundlecontent
47A11y total (skip-link + emergency bar + wizard aria-current) + speakable en guias + PWA shortcuts/id + referrer + security.txt + verify reforzadoa11y
46Bienvenida explicita a los AI-crawlers (robots.txt) + llms-full.txt con brief para IA + @id de founder en aboutseo
45llms.txt + llms-full.txt: capa AI-discoverability + founder con @idseo
44Páginas por plataforma: Shopify, WordPress, WooCommerce, Wix/Squarespace/Webflowseo
43Des-jargon de tickets tecnicos + promesa plain-english en cada panelux
42Plataformas en cada ticket + guia nueva + titulos ricos + AggregateOfferseo
41Mercado americano: plataformas claras + lenguaje sin codigo + arquitectura SEOseo
40Lemon Squeezy como procesador + prev/next + catalogo schema + spider de linksseo
39BUG real del globo: día/noche en ciudades + crossfade en el terminadorfix
38Inercia en el globo + volver-arriba global + nav con página activadesign
37Voz del ingeniero + calculadora de downtime + globo tap-to-inspectdesign
36Globo con profundidad real + luz de borde + pulso globaldesign
35Globo arreglado + marquee de capacidades + pulso globalfix
34Express 12h×2 + Linux stack + frases rotativasux
33Trust Center + Lemon Squeezy + telemetria en vivotrust
32Color de categoria en TODO el sitio + globo v5design
31Interlinking expandido y regeneracion integralseo
30Globo terraqueo real (poligonos Natural Earth)globe
29Pill "Get Help Now" siempre visible, responsiveux
28Causa real del boton "bugueado": cache del SWfix
27CTA naranjo — click targets realmente tocablesfix
26Rango portatil 900–1440px cerradoux
25Pulido profesional visible + responsividad finadesign
24View Transitions + titulos <= 68 charsseo
23Tipado semantico de paginas + balance de etiquetasverity
22availability en el 100% de los Offersschema
21PWA iOS, favicon raiz y crawl hygienepwa
20100% navegable offline + wizard como puertapwa
19Rich cards completas + OpenSearch unificadoseo
18FAQ/schema sincronizados + fix de doble escapefix
17Tarjetas sociales completas + micro-interaccionesseo
16Harness verify.js + limpieza de duplicadosverity
15Caza de enlaces internos rotosfix
14Offline real + navegacion largapwa
13El reloj vivo + OG uniformesux
12CTA fijo + busqueda por sintomas realesseo
11Instalable como PWA + esquema completo en hubspwa
10Metrica SEO de apertura (title/description/OG)seo
9Claridad por dias + sitemap de imagenes + printseo
8Breadcrumbs consistentes + navegacion robustaux
7Hub /rescue/ + OpenSearch del navegadorseo
6Paso a paso por ticket + accesibilidad de paletaux
5Hub /faq/ + sincronizacion de precios en LDschema
4404 reconstructido + breadcrumb con familiaux
Straight answers
If trust has a fine print, it should be here
Is “trust” just a marketing word here?
The difference between hype and a promise is that a promise has a number and a contract. Every pillar on this page points to a written source: 12 hours, 48 hours, a locked price, no-fix-no-fee, proof in the handover, and a judge for disputes. Open the pages and time it.
What if the fix turns out to be bigger than the ticket?
You hear it straight in the diagnosis, before any extra work. A new flat-rate quote is presented and you approve it first — nothing outside scope ever starts without your yes.
How do I know the payment is secure?
Payments run through Lemon Squeezy and PayPal — both PCI-compliant — plus US ACH via Wise Business. Card details never reach this business — you pay in USD, get one locked invoice, and the clock starts when the payment clears.
Is the 12-hour express real, or is that also marketing?
It is a published rate, not a promise by mood. Every ticket lists a defined express price at 2× the flat rate, and you pick it at approval — before payment. After payment, the standard 48-hour clock applies.
Better than a guarantee: an audit.
Send the symptom, time the reply, and read the handover when it lands. The record is how the promise stays honest.
Send the Symptom