(function() {
  'use strict';
  
  var SORO_BLOG_TITLE = 'aircraftjackrepair.com';
  var SORO_ARTICLES = [{"id":"d9190f56-9ce1-49a7-aee1-b2550f9fb098","title":"How to Refurbish Obsolete Support Equipment","slug":"how-to-refurbish-obsolete-support-equipment","excerpt":"Learn how to refurbish obsolete support equipment through inspection, engineering review, repair, testing, and documentation that return assets to service.","content":null,"date":"September 12, 2026","isoDate":"2026-09-12T02:11:56.529+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/workflows/dc5d04ed-be7a-4a27-b596-b4c410b97007.webp"},{"id":"5d0dace0-6798-4227-82ed-111141b05311","title":"Custom Fabrication vs Buying New GSE Explained","slug":"custom-fabrication-vs-buying-new-gse","excerpt":"Compare custom fabrication vs buying new GSE for aircraft support operations, including cost, lead time, compliance, serviceability, and fleet planning.","content":null,"date":"September 10, 2026","isoDate":"2026-09-10T01:46:20.528+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/workflows/7f9a61fe-c676-42b0-ab8d-03bedb1ae019.webp"},{"id":"3973f846-0f6a-41c2-a68d-c9bca8349100","title":"Can Legacy GSE Be Refurbished for Service?","slug":"can-legacy-gse-be-refurbished","excerpt":"Can legacy GSE be refurbished? See how inspection, hydraulic repair, fabrication, and functional testing can return critical support equipment to service.","content":null,"date":"September 8, 2026","isoDate":"2026-09-08T05:42:55.806+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/workflows/fca6a7a5-6fab-4ee5-8ef6-8ed29fbda736.webp"},{"id":"fae0977b-2208-4bd3-bbd9-0c18508a948b","title":"Fabrication Solutions for Obsolete GSE Repairs","slug":"fabrication-solutions-for-obsolete-gse-repairs","excerpt":"Fabrication solutions for obsolete GSE restore damaged, unavailable, and unsupported components to keep aviation ground equipment safe and ready daily.","content":null,"date":"September 6, 2026","isoDate":"2026-09-06T05:39:56.082+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/workflows/c9f48664-5daf-40fc-9bfc-1bbfc47d90fa.webp"},{"id":"1923cb77-18c9-427c-9b1b-24acd25c7c37","title":"GSE Certification Requirements for Safe Operations","slug":"gse-certification-requirements","excerpt":"GSE certification requirements vary by equipment, operator, and worksite. Learn how inspections, testing, training, and records support safe daily readiness.","content":null,"date":"September 4, 2026","isoDate":"2026-09-04T05:39:52.857+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/workflows/7bb1039e-0510-453a-a471-af5c08b9360a.webp"},{"id":"733dea59-9322-4f5c-b134-2cf2bd769725","title":"Field Guide to Support Equipment Compliance","slug":"guide-to-support-equipment-compliance","excerpt":"Use this guide to support equipment compliance with inspections, documented testing, preventive maintenance, and repair planning that protects uptime.","content":null,"date":"September 2, 2026","isoDate":"2026-09-02T05:39:52.254+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/workflows/2ffae193-bd9e-4117-8e5d-78b8f290e5dd.webp"},{"id":"8b5ed78d-45b0-48ef-ba75-1ce8469e40ed","title":"Mobile Repair Versus Shop Overhaul: Which Fits?","slug":"mobile-repair-versus-shop-overhaul","excerpt":"Mobile repair versus shop overhaul for aircraft jacks: compare scope, safety controls, downtime, testing, and lifecycle cost before scheduling service.","content":null,"date":"August 31, 2026","isoDate":"2026-08-31T05:39:51.2+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/workflows/fcd9c0a0-afb3-408d-b2c9-1f8ddb1d85cb.webp"},{"id":"d4c83d7f-ec55-4d07-b6fb-57ec38f516ac","title":"Hydraulic Rebuild Versus Replacement Decisions","slug":"hydraulic-rebuild-versus-replacement-decisions","excerpt":"Hydraulic rebuild versus replacement decisions affect safety, downtime, and lifecycle cost. Learn how to evaluate cylinders, jacks, and support equipment.","content":null,"date":"August 29, 2026","isoDate":"2026-08-29T05:39:42.12+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/workflows/d4961986-94b9-4441-abb8-fe2fd6689d58.webp"},{"id":"2589ed69-5093-49fc-849b-1948fbabaac3","title":"Best Methods for GSE Refurbishment That Last","slug":"best-methods-for-gse-refurbishment","excerpt":"Learn the best methods for GSE refurbishment, from inspection and hydraulic repair to load testing, corrosion control, and documented return to service.","content":null,"date":"August 27, 2026","isoDate":"2026-08-27T05:36:34.15+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/workflows/b8b60f02-5098-4df0-99ab-87e95a3a80e2.webp"},{"id":"17c3c50b-7401-4f7f-9d48-a17da86b3670","title":"Can Damaged Jack Cylinders Be Repaired Safely?","slug":"can-damaged-jack-cylinders-be-repaired","excerpt":"Can damaged jack cylinders be repaired? Learn how inspection, machining, seal replacement, and load testing determine safe return to aircraft service.","content":null,"date":"August 25, 2026","isoDate":"2026-08-25T05:33:39.727+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/workflows/1df7884d-3785-4ba1-b221-93b2522202f8.webp"},{"id":"572d074f-59f8-47f3-9363-886e7a58660c","title":"Guide to Hydraulic Leak Diagnosis for Ground Equipment","slug":"guide-to-hydraulic-leak-diagnosis-ground-equipment","excerpt":"Use this guide to hydraulic leak diagnosis to find faults in aircraft jacks, test stands, and GSE before pressure loss, downtime, or unsafe lifting occurs.","content":null,"date":"August 23, 2026","isoDate":"2026-08-23T05:30:29.823+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/workflows/9fd9c443-2d70-4f60-9303-9d2bc2f6184a.webp"},{"id":"a561c49e-15cd-4b7e-a7e8-58e26ce376dd","title":"Best Ways to Extend Jack Lifespan in Service","slug":"best-ways-to-extend-jack-lifespan","excerpt":"The best ways to extend jack lifespan include inspection, hydraulic care, correct loading, and documented testing for aircraft maintenance operations.","content":null,"date":"August 21, 2026","isoDate":"2026-08-21T05:34:13.849+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/a561c49e-15cd-4b7e-a7e8-58e26ce376dd.webp"},{"id":"41d568d5-5e0c-41b6-a8f5-d7ac894c1cac","title":"Hydraulic Cylinder Restoration Guide for GSE","slug":"hydraulic-cylinder-restoration-guide-gse","excerpt":"Hydraulic cylinder restoration guide explains inspection, teardown, machining, sealing, testing, and return-to-service decisions for GSE teams.","content":null,"date":"August 19, 2026","isoDate":"2026-08-19T04:06:34.834+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/41d568d5-5e0c-41b6-a8f5-d7ac894c1cac.webp"},{"id":"430e17fc-6513-48b7-a92e-cb0634d3f385","title":"What Is Jack Proof Load Testing for Aircraft?","slug":"what-is-jack-proof-load-testing","excerpt":"What is jack proof load testing? Learn how aircraft jack inspections, controlled loading, records, and repair decisions protect maintenance operations.","content":null,"date":"August 17, 2026","isoDate":"2026-08-17T04:15:52.758+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/430e17fc-6513-48b7-a92e-cb0634d3f385.webp"},{"id":"89cda63f-74b6-4ec7-8c4b-2c02e3046483","title":"How to Maintain Aviation Power Carts Safely","slug":"how-to-maintain-aviation-power-carts","excerpt":"Learn how to maintain aviation power carts with inspection, load testing, battery care, hydraulic service, and repair practices that protect uptime and safety.","content":null,"date":"August 15, 2026","isoDate":"2026-08-15T04:28:00.062+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/89cda63f-74b6-4ec7-8c4b-2c02e3046483.webp"},{"id":"648f643b-c068-40dd-8143-75a1403cb9d3","title":"What Causes Tripod Jack Instability on Aircraft?","slug":"what-causes-tripod-jack-instability","excerpt":"Learn what causes tripod jack instability, how to identify hydraulic, structural, and setup faults, and when inspection or repair is required for lifting.","content":null,"date":"August 13, 2026","isoDate":"2026-08-13T04:21:25.867+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/648f643b-c068-40dd-8143-75a1403cb9d3.webp"},{"id":"57c9b10f-6c65-4d30-9e3c-bcc68271adce","title":"GSE Refurbishment Services That Protect Uptime","slug":"gse-refurbishment-services-protect-uptime","excerpt":"GSE refurbishment services restore aircraft support equipment with inspection, repair, testing, and maintenance for safety, uptime, and long service life.","content":null,"date":"August 11, 2026","isoDate":"2026-08-11T04:24:57.949+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/57c9b10f-6c65-4d30-9e3c-bcc68271adce.webp"},{"id":"31d2d68b-731f-4f41-9e06-9dd97866f53e","title":"Ground Equipment Maintenance That Protects Uptime","slug":"ground-equipment-maintenance-protects-uptime","excerpt":"Ground equipment maintenance protects aircraft, crews, and schedules. Learn what to inspect, test, repair, and document before failures disrupt operations.","content":null,"date":"August 9, 2026","isoDate":"2026-08-09T05:03:19.437+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/31d2d68b-731f-4f41-9e06-9dd97866f53e.webp"},{"id":"18fdfdb7-bdfb-4813-943f-18c5435ef428","title":"A Practical Guide to GSE Preventive Inspections","slug":"guide-to-gse-preventive-inspections","excerpt":"This guide to GSE preventive inspections outlines defect checks, service intervals, records, and repairs that keep ground support equipment ready for use.","content":null,"date":"August 7, 2026","isoDate":"2026-08-07T05:10:02.712+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/9a896892-a524-4e3a-9764-9887e5fb08f2/18fdfdb7-bdfb-4813-943f-18c5435ef428.webp"},{"id":"e5404911-8de0-426d-a37f-e4d9042974eb","title":"Top Causes of Hydraulic Cart Failure in Service","slug":"top-causes-hydraulic-cart-failure","excerpt":"Learn the top causes of hydraulic cart failure, how to spot early warning signs, and which maintenance actions protect uptime, safety, and serviceability.","content":null,"date":"August 5, 2026","isoDate":"2026-08-05T05:00:33.665+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/e5404911-8de0-426d-a37f-e4d9042974eb.webp"},{"id":"c82a1f81-081d-4f49-aef2-cc35ce844eb0","title":"A Guide to Aviation Jack Calibration Procedures","slug":"guide-to-aviation-jack-calibration-procedures","excerpt":"This guide to aviation jack calibration covers inspection, load testing, pressure checks, documentation, and service decisions for operational readiness.","content":null,"date":"August 3, 2026","isoDate":"2026-08-03T04:39:20.909+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/c82a1f81-081d-4f49-aef2-cc35ce844eb0.webp"},{"id":"358aba55-1d9b-491c-a02c-38ec5158a36d","title":"Predictive Maintenance for Support Equipment","slug":"predictive-maintenance-for-support-equipment","excerpt":"Predictive maintenance for support equipment helps aviation teams detect hydraulic, structural, and control issues before downtime or unsafe lift events.","content":null,"date":"August 1, 2026","isoDate":"2026-08-01T05:15:21.368+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/358aba55-1d9b-491c-a02c-38ec5158a36d.webp"},{"id":"2ff8afd5-4b10-4ae1-bab4-9d85c4476ec8","title":"How to Calibrate Aircraft Jacks for Safe Lifting","slug":"how-to-calibrate-aircraft-jacks","excerpt":"Learn how to calibrate aircraft jacks with controlled load testing, pressure verification, inspection, and documented results for safe, reliable lifting.","content":null,"date":"July 30, 2026","isoDate":"2026-07-30T05:36:59.931+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/2ff8afd5-4b10-4ae1-bab4-9d85c4476ec8.webp"},{"id":"ae6caf15-b6ec-47c7-85ec-a34485860c69","title":"Best Aircraft Jack Testing Methods for Safe Lifts","slug":"best-aircraft-jack-testing-methods","excerpt":"Learn the best aircraft jack testing methods for verifying load capacity, hydraulic integrity, stability, and documented readiness before aircraft lifting.","content":null,"date":"July 28, 2026","isoDate":"2026-07-28T06:18:29.894+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/ae6caf15-b6ec-47c7-85ec-a34485860c69.webp"},{"id":"71e1b225-b6be-473f-950c-45937b014ada","title":"Load Testing vs Visual Inspection for Aircraft Jacks","slug":"load-testing-vs-visual-inspection-aircraft-jacks","excerpt":"Load testing vs visual inspection for aircraft jacks: learn what each method finds, where visual checks fall short, and how to plan service intervals.","content":null,"date":"July 26, 2026","isoDate":"2026-07-26T05:57:37.294+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/71e1b225-b6be-473f-950c-45937b014ada.webp"},{"id":"f69850cf-0f54-4aff-b3b0-fd348081430e","title":"Turnaround Time for Jack Overhaul Explained","slug":"turnaround-time-for-jack-overhaul","excerpt":"Learn what affects turnaround time for jack overhaul, from intake inspection and parts sourcing to testing, scheduling, and planning equipment coverage.","content":null,"date":"July 24, 2026","isoDate":"2026-07-24T06:12:57.261+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/f69850cf-0f54-4aff-b3b0-fd348081430e.webp"},{"id":"2657956b-aa0e-4fcd-81e2-9d9eaea09c69","title":"How to Restore Legacy GSE for Safe Service","slug":"how-to-restore-legacy-gse","excerpt":"Learn how to restore legacy GSE through inspection, hydraulic repair, fabrication, testing, and documentation to return critical support assets to service.","content":null,"date":"July 22, 2026","isoDate":"2026-07-22T06:36:14.36+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/2657956b-aa0e-4fcd-81e2-9d9eaea09c69.webp"},{"id":"cec0711c-1b1e-4c5d-b9a8-c20a97ce3f5e","title":"Best Practices for Jack Inspection in Aviation","slug":"best-practices-for-jack-inspection-aviation","excerpt":"Best practices for jack inspection help aviation maintenance teams identify hydraulic, structural, and safety issues before a lift becomes a major outage.","content":null,"date":"July 20, 2026","isoDate":"2026-07-20T06:09:44.195+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/cec0711c-1b1e-4c5d-b9a8-c20a97ce3f5e.webp"},{"id":"eafa7dd2-0d05-4d55-9b14-bfac4372f10f","title":"How to Verify Jack Load Capacity Before Use","slug":"how-to-verify-jack-load-capacity","excerpt":"Learn how to verify jack load capacity using ratings, load paths, inspection records, and controlled testing for safe aircraft maintenance lifting.","content":null,"date":"July 18, 2026","isoDate":"2026-07-18T04:33:44.573+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/eafa7dd2-0d05-4d55-9b14-bfac4372f10f.webp"},{"id":"dd30b06e-12fc-418f-ac54-bb855ec381dc","title":"How to Maintain Tripod Jacks for Safe Lifts","slug":"how-to-maintain-tripod-jacks","excerpt":"Learn how to maintain tripod jacks with routine inspections, hydraulic service, lubrication, testing, and repairs that protect personnel and aircraft.","content":null,"date":"July 16, 2026","isoDate":"2026-07-16T05:21:06.512+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/dd30b06e-12fc-418f-ac54-bb855ec381dc.webp"},{"id":"1b9f23ab-a93d-4dfe-9e02-ddfc7f818971","title":"Tripod Jack Repair vs Replacement Decisions","slug":"tripod-jack-repair-vs-replacement","excerpt":"Tripod jack repair vs replacement decisions affect safety, compliance, cost, and uptime. Learn how inspections, testing, and lifecycle guide each call.","content":null,"date":"July 14, 2026","isoDate":"2026-07-14T04:45:35.081+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/1b9f23ab-a93d-4dfe-9e02-ddfc7f818971.webp"},{"id":"6a1eaf54-395a-4638-8508-4bcf000ff483","title":"Aviation Jack Service That Protects Uptime","slug":"aviation-jack-service","excerpt":"Aviation jack service covers inspection, repair, load testing, and overhaul to keep tripod and axle jacks safe, tested, and ready for aircraft maintenance","content":null,"date":"July 12, 2026","isoDate":"2026-07-12T05:21:25.376+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/6a1eaf54-395a-4638-8508-4bcf000ff483.webp"},{"id":"e6e96f02-4337-4eeb-a1d5-4d0be2002c29","title":"Safety Testing for Lifting Equipment","slug":"safety-testing-for-lifting-equipment","excerpt":"Safety testing for lifting equipment helps prevent failure, supports compliance, and keeps aircraft jacks and shop assets ready for service.","content":null,"date":"July 10, 2026","isoDate":"2026-07-10T05:36:18.211+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/e6e96f02-4337-4eeb-a1d5-4d0be2002c29.webp"},{"id":"e2e647f7-dc31-4c1c-a05c-b7b5db501b23","title":"How to Service Axle Jacks Properly","slug":"how-to-service-axle-jacks","excerpt":"Learn how to service axle jacks properly, from inspection and hydraulic checks to load testing, seal replacement, and documentation.","content":null,"date":"July 8, 2026","isoDate":"2026-07-08T03:54:29.905+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/e2e647f7-dc31-4c1c-a05c-b7b5db501b23.webp"},{"id":"344662d2-e4b8-4e0e-8c93-6524b442c48e","title":"Overhaul vs Rebuild Aircraft Jacks","slug":"overhaul-vs-rebuild-aircraft-jacks","excerpt":"Overhaul vs rebuild aircraft jacks - understand scope, inspection, testing, cost, and when each service makes sense for safety and uptime.","content":null,"date":"July 6, 2026","isoDate":"2026-07-06T04:36:49.934+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/344662d2-e4b8-4e0e-8c93-6524b442c48e.webp"},{"id":"137c47cb-cf68-4658-8ab8-ce171bfe4766","title":"A Practical Guide to Aircraft Jack Compliance","slug":"guide-to-aircraft-jack-compliance","excerpt":"A practical guide to aircraft jack compliance covering inspection, load testing, records, repairs, and service intervals for safer equipment use.","content":null,"date":"July 4, 2026","isoDate":"2026-07-04T02:42:24.093+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/137c47cb-cf68-4658-8ab8-ce171bfe4766.webp"},{"id":"cf6006d8-0efd-45f5-a646-fb8661a4844c","title":"How to Inspect Aircraft Jacks Correctly","slug":"how-to-inspect-aircraft-jacks","excerpt":"Learn how to inspect aircraft jacks correctly with practical checks for structure, hydraulics, load points, safety locks, and serviceability.","content":null,"date":"July 2, 2026","isoDate":"2026-07-02T02:27:45.69+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/cf6006d8-0efd-45f5-a646-fb8661a4844c.webp"},{"id":"25033936-4be1-426d-853c-e192e844bc21","title":"Why Do Aircraft Jacks Leak?","slug":"why-do-aircraft-jacks-leak","excerpt":"Why do aircraft jacks leak? Learn the common hydraulic, seal, and maintenance causes behind leaks and what they mean for safety and uptime.","content":null,"date":"June 30, 2026","isoDate":"2026-06-30T03:03:52.436+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/25033936-4be1-426d-853c-e192e844bc21.webp"},{"id":"868b71a3-fc3f-4c31-9b5b-e8f4381a8e37","title":"Top Causes of Jack Failure in Service","slug":"top-causes-of-jack-failure-in-service","excerpt":"Top causes of jack failure include overload, poor maintenance, hydraulic leaks, corrosion, and misuse that put aircraft lifting safety at risk.","content":null,"date":"June 28, 2026","isoDate":"2026-06-28T03:12:22.523+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/868b71a3-fc3f-4c31-9b5b-e8f4381a8e37.webp"},{"id":"6900e1dd-8995-49d8-adc3-c7b247fa42cb","title":"Machining Services for Ground Support Equipment","slug":"machining-services-for-ground-support-equipment","excerpt":"Machining services for ground support equipment restore worn parts, support legacy GSE, and reduce downtime for aviation maintenance teams.","content":null,"date":"June 26, 2026","isoDate":"2026-06-26T04:18:06.637+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/6900e1dd-8995-49d8-adc3-c7b247fa42cb.webp"},{"id":"347ce709-2225-485c-8575-432eef9d1b0b","title":"Aviation Welding and Fabrication Services","slug":"aviation-welding-and-fabrication-services","excerpt":"Aviation welding and fabrication services support aircraft jacks, GSE, and legacy equipment with precise repair, rebuild, and custom shop work.","content":null,"date":"June 24, 2026","isoDate":"2026-06-24T05:33:29.742+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/347ce709-2225-485c-8575-432eef9d1b0b.webp"},{"id":"08ee3de5-bd23-46ef-874f-2c6d34c8a4c3","title":"When to Overhaul an Aircraft Axle Jack","slug":"when-to-overhaul-an-aircraft-axle-jack","excerpt":"Learn when to overhaul an aircraft axle jack based on leaks, load drift, test results, wear, and service history before failure affects safety.","content":null,"date":"June 23, 2026","isoDate":"2026-06-23T05:39:17.506+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/08ee3de5-bd23-46ef-874f-2c6d34c8a4c3.webp"},{"id":"92941ee0-a994-4b6d-9a0e-803493c4e8da","title":"Oxygen Service Cart Maintenance Basics","slug":"oxygen-service-cart-maintenance-basics","excerpt":"Oxygen service cart maintenance reduces leaks, contamination, and downtime through routine inspection, cleaning, testing, and component repair.","content":null,"date":"June 22, 2026","isoDate":"2026-06-22T05:48:36.963+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/92941ee0-a994-4b6d-9a0e-803493c4e8da.webp"},{"id":"d57574bc-5c55-419f-8250-9e6707bdba0a","title":"How Often Should Aircraft Jacks Be Tested?","slug":"how-often-should-aircraft-jacks-be-tested","excerpt":"How often should aircraft jacks be tested? Learn what drives inspection and load test intervals for tripod and axle jacks in service.","content":null,"date":"June 21, 2026","isoDate":"2026-06-21T05:51:36.545+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/d57574bc-5c55-419f-8250-9e6707bdba0a.webp"},{"id":"62b9bb1f-861d-454e-ae5a-0f09b4ac64ce","title":"Nitrogen Service Cart Repair That Holds Up","slug":"nitrogen-service-cart-repair","excerpt":"Nitrogen service cart repair restores pressure control, leak integrity, and safe operation for aviation and industrial ground support equipment.","content":null,"date":"June 20, 2026","isoDate":"2026-06-20T05:57:30.868+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/62b9bb1f-861d-454e-ae5a-0f09b4ac64ce.webp"},{"id":"c9f88d39-23d7-4974-8ce0-099c500b1c52","title":"Aircraft Power Cart Repair That Holds Up","slug":"aircraft-power-cart-repair","excerpt":"Aircraft power cart repair restores reliable output, protects aircraft systems, and extends GSE life through testing, electrical repair, and overhaul.","content":null,"date":"June 19, 2026","isoDate":"2026-06-19T06:03:36.509+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/c9f88d39-23d7-4974-8ce0-099c500b1c52.webp"},{"id":"9b74b1ec-f632-4270-a171-b3914e7f2b60","title":"Hydraulic Test Stand Repair That Holds Up","slug":"hydraulic-test-stand-repair-that-holds-up","excerpt":"Hydraulic test stand repair keeps pressure, flow, and controls accurate. Learn what fails, what to inspect, and when overhaul makes more sense.","content":null,"date":"June 18, 2026","isoDate":"2026-06-18T06:09:47.008+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/9b74b1ec-f632-4270-a171-b3914e7f2b60.webp"},{"id":"5bd994ab-f551-4d35-8929-e45bbf76ef5d","title":"Preventive Maintenance for Aircraft Jacks","slug":"preventive-maintenance-for-aircraft-jacks","excerpt":"Preventive maintenance for aircraft jacks reduces downtime, supports safe lifting, and extends service life through inspection, repair, testing.","content":null,"date":"June 17, 2026","isoDate":"2026-06-17T06:15:32.836+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/5bd994ab-f551-4d35-8929-e45bbf76ef5d.webp"},{"id":"fc4f0861-fdcd-462d-9654-e6458118860f","title":"Legacy Ground Support Equipment Restoration","slug":"legacy-ground-support-equipment-restoration","excerpt":"Legacy ground support equipment restoration extends asset life, restores safe operation, and supports uptime for aviation and industrial fleets.","content":null,"date":"June 16, 2026","isoDate":"2026-06-16T06:24:32.042+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/fc4f0861-fdcd-462d-9654-e6458118860f.webp"},{"id":"03f90388-434f-45e5-8cbd-6d725b749341","title":"Aircraft Jack Rebuild Service Explained","slug":"aircraft-jack-rebuild-service","excerpt":"Aircraft jack rebuild service restores lifting equipment through inspection, machining, seal replacement, testing, and recertification for safe use.","content":null,"date":"June 15, 2026","isoDate":"2026-06-15T06:30:31.922+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/03f90388-434f-45e5-8cbd-6d725b749341.webp"},{"id":"3dda7ffa-b670-4011-8a69-a6a54357e1c5","title":"Aircraft Jack Load Testing Explained","slug":"aircraft-jack-load-testing","excerpt":"Aircraft jack load testing verifies lifting capacity, stability, and hydraulic function to keep jacks compliant, reliable, and ready for service.","content":null,"date":"June 14, 2026","isoDate":"2026-06-14T06:36:31.651+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/3dda7ffa-b670-4011-8a69-a6a54357e1c5.webp"},{"id":"e52e96a7-939a-4245-b1e8-f8f8ca52f951","title":"Aircraft Axle Jack Overhaul Explained","slug":"aircraft-axle-jack-overhaul","excerpt":"Aircraft axle jack overhaul restores lifting safety, test performance, and service life through inspection, repair, machining, seals, and load testing.","content":null,"date":"June 13, 2026","isoDate":"2026-06-13T06:42:44.765+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/e52e96a7-939a-4245-b1e8-f8f8ca52f951.webp"},{"id":"34d0e6ee-9cfb-4300-a50a-4d56572c952c","title":"Quote for Aircraft Jack Overhaul","slug":"quote-for-aircraft-jack-overhaul","excerpt":"Need a quote for aircraft jack overhaul? Learn what affects pricing, scope, turnaround, testing, and documentation for safer equipment service.","content":null,"date":"June 12, 2026","isoDate":"2026-06-12T06:45:54.73+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/34d0e6ee-9cfb-4300-a50a-4d56572c952c.webp"},{"id":"b02ba585-d760-4615-aba5-c20266ab4d6f","title":"Aircraft Tripod Jack Repair Basics","slug":"aircraft-tripod-jack-repair-basics","excerpt":"Aircraft tripod jack repair restores lifting safety, load performance, and compliance through inspection, rebuild, testing, and preventive service.","content":null,"date":"June 11, 2026","isoDate":"2026-06-11T17:39:54.995+00:00","image":"https://afocirmbqdxnkyescnev.supabase.co/storage/v1/object/public/featured-images/595322c2-7c6a-43e5-a705-0f9dad73aae5/b02ba585-d760-4615-aba5-c20266ab4d6f.webp"}];
  var SORO_TOKEN = 'dee6aafa-b538-41bc-988c-084480b066c1';
  var SORO_API_BASE = 'https://app.trysoro.com';
  var SORO_T = {"allArticles":"All Articles","backToAll":"Back to all articles","loading":"Loading article...","error":"Failed to load article. Please try again.","empty":"Published articles may take up to 60 minutes to appear here.","blogArticles":"Blog articles"};
  
  // Content cache (loaded on demand)
  var contentCache = {};
  
  // Pre-populate cache with any server-included content (for SEO deep links)
  SORO_ARTICLES.forEach(function(article) {
    if (article.content) {
      contentCache[article.id] = article.content;
    }
  });
  
  // Find the container
  var container = document.getElementById('soro-blog');
  if (!container) {
    console.error('Soro Blog: No element with id="soro-blog" found');
    return;
  }
  
  // Save the original page title so we can restore it
  var originalTitle = document.title;
  var originalDescription = '';
  var descMeta = document.querySelector('meta[name="description"]');
  if (descMeta) originalDescription = descMeta.getAttribute('content') || '';
  
  // Detect if running inside a srcdoc iframe (website builders like GoDaddy, Wix, etc.)
  var isSrcdocIframe = false;
  var parentBaseUrl = null;
  try {
    isSrcdocIframe = window.location.href === 'about:srcdoc' || 
                     window.location.pathname === '/srcdoc' ||
                     (window.self !== window.top && window.location.origin === 'null');
  } catch(e) {
    isSrcdocIframe = true; // cross-origin means we're in an iframe
  }
  
  // Try to get the parent page URL for building article links
  if (isSrcdocIframe) {
    try {
      var pUrl = new URL(window.parent.location.href);
      pUrl.searchParams.delete('post');
      parentBaseUrl = pUrl.origin + pUrl.pathname + pUrl.search;
    } catch(e) {
      parentBaseUrl = null;
    }
  }
  
  // Detect deep-linked article from URL query param: ?post=slug
  function getRequestedSlug() {
    try {
      if (isSrcdocIframe) {
        // In srcdoc iframe, check parent URL if accessible
        try {
          var params = new URLSearchParams(window.parent.location.search);
          return params.get('post') || null;
        } catch(e) {
          return null;
        }
      }
      var params = new URLSearchParams(window.location.search);
      return params.get('post') || null;
    } catch(e) {
      return null;
    }
  }
  
  // Build article URL with query param (preserves existing params)
  function getArticleUrl(slug) {
    try {
      if (isSrcdocIframe && parentBaseUrl) {
        // Build full parent page URL with ?post= param so new tab works
        var sep = parentBaseUrl.indexOf('?') !== -1 ? '&' : '?';
        return parentBaseUrl + sep + 'post=' + encodeURIComponent(slug);
      }
      if (isSrcdocIframe) {
        return '#post=' + encodeURIComponent(slug);
      }
      var url = new URL(window.location.href);
      url.searchParams.set('post', slug);
      return url.pathname + url.search;
    } catch(e) {
      return '#post=' + encodeURIComponent(slug);
    }
  }
  
  // Get the base list URL (current page without post param)
  function getListUrl() {
    try {
      if (isSrcdocIframe && parentBaseUrl) {
        return parentBaseUrl;
      }
      if (isSrcdocIframe) {
        return '#';
      }
      var url = new URL(window.location.href);
      url.searchParams.delete('post');
      var search = url.search;
      return url.pathname + (search ? search : '');
    } catch(e) {
      return window.location.pathname;
    }
  }
  
  // Safe pushState wrapper (fails silently in srcdoc iframes)
  function safePushState(state, title, url) {
    if (isSrcdocIframe) return;
    try {
      history.pushState(state, title, url);
    } catch(e) {
      // pushState not available (srcdoc iframe, cross-origin, etc.)
    }
  }
  
  // Update page meta tags for SEO (title, description, canonical, JSON-LD)
  // Skip in srcdoc iframes since we can't meaningfully update the parent page
  function updatePageMeta(article) {
    if (isSrcdocIframe) return;
    if (article) {
      // Article view: set article-specific meta
      document.title = article.title + ' | ' + SORO_BLOG_TITLE;
      
      var desc = document.querySelector('meta[name="description"]');
      if (!desc) {
        desc = document.createElement('meta');
        desc.setAttribute('name', 'description');
        document.head.appendChild(desc);
      }
      desc.setAttribute('content', article.excerpt);
      
      // Set canonical URL to the article deep link
      var canonical = document.querySelector('link[rel="canonical"][data-soro]');
      if (!canonical) {
        canonical = document.createElement('link');
        canonical.setAttribute('rel', 'canonical');
        canonical.setAttribute('data-soro', 'true');
        document.head.appendChild(canonical);
      }
      canonical.setAttribute('href', window.location.href);
      
      // JSON-LD: single BlogPosting
      injectJsonLd({
        '@context': 'https://schema.org',
        '@type': 'BlogPosting',
        'headline': article.title,
        'description': article.excerpt,
        'datePublished': article.isoDate,
        'image': article.image || undefined,
        'url': window.location.href
      });
    } else {
      // List view: restore original meta
      document.title = originalTitle;
      
      var desc = document.querySelector('meta[name="description"]');
      if (desc && originalDescription) {
        desc.setAttribute('content', originalDescription);
      }
      
      // Remove soro canonical
      var canonical = document.querySelector('link[rel="canonical"][data-soro]');
      if (canonical) canonical.remove();
      
      // JSON-LD: Blog with all articles
      var blogPosting = SORO_ARTICLES.map(function(a) {
        var item = {
          '@type': 'BlogPosting',
          'headline': a.title,
          'description': a.excerpt,
          'datePublished': a.isoDate,
          'url': window.location.origin + getArticleUrl(a.slug)
        };
        if (a.image) item.image = a.image;
        return item;
      });
      
      injectJsonLd({
        '@context': 'https://schema.org',
        '@type': 'Blog',
        'name': SORO_BLOG_TITLE,
        'blogPost': blogPosting
      });
    }
  }
  
  // Inject styles
  var styleId = 'soro-blog-styles-light';
  if (!document.getElementById(styleId)) {
    var style = document.createElement('style');
    style.id = styleId;
    style.textContent = `
      .soro-blog {
        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
        max-width: 800px;
        margin: 0 auto;
        color: #1a1a1a;
        background: transparent;
      }
      .soro-blog * {
        box-sizing: border-box;
      }
      .soro-blog a {
        text-decoration: none;
        color: inherit;
      }
      .soro-blog-header {
        display: none;
        align-items: center;
        margin-bottom: 16px;
      }
      .soro-blog-back {
        display: inline-flex;
        align-items: center;
        gap: 6px;
        background: transparent;
        border: 1px solid #e5e5e5;
        color: #666;
        cursor: pointer;
        font-size: 14px;
        padding: 8px 16px;
        border-radius: 6px;
        transition: background 0.2s, border-color 0.2s;
        text-decoration: none;
      }
      .soro-blog-back:hover {
        background: #f5f5f5;
        border-color: #d0d0d0;
      }
      .soro-blog-list {
        display: flex;
        flex-direction: column;
        gap: 24px;
      }
      .soro-blog-card {
        display: flex;
        gap: 20px;
        padding: 20px;
        background: transparent;
        border: 1px solid #e5e5e5;
        border-radius: 12px;
        cursor: pointer;
        transition: box-shadow 0.2s, border-color 0.2s;
        text-decoration: none;
        color: inherit;
      }
      .soro-blog-card:hover {
        box-shadow: 0 4px 12px rgba(0,0,0,0.08);
        border-color: #d0d0d0;
      }
      .soro-blog-card-image {
        width: 140px;
        height: 100px;
        object-fit: cover;
        border-radius: 8px;
        flex-shrink: 0;
      }
      .soro-blog-card-content {
        flex: 1;
        min-width: 0;
      }
      .soro-blog-card-title {
        font-size: 18px;
        font-weight: 600;
        margin: 0 0 8px 0;
        line-height: 1.3;
        color: #1a1a1a;
      }
      h2.soro-blog-card-title {
        font-size: 18px;
      }
      .soro-blog-card-excerpt {
        font-size: 14px;
        color: #666;
        margin: 0 0 12px 0;
        line-height: 1.5;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
      }
      .soro-blog-card-date {
        font-size: 12px;
        color: #999;
      }
      .soro-blog-article {
        display: none;
      }
      .soro-blog-article.visible {
        display: block;
      }
      .soro-blog-article-title {
        font-size: 32px;
        font-weight: 700;
        margin: 0 0 12px 0;
        line-height: 1.2;
        color: #1a1a1a;
      }
      .soro-blog-article-date {
        font-size: 14px;
        color: #666;
        margin-bottom: 24px;
      }
      .soro-blog-article-image {
        width: 100%;
        max-height: 400px;
        object-fit: cover;
        border-radius: 12px;
        margin-bottom: 24px;
      }
      .soro-blog-article-content {
        font-size: 16px;
        line-height: 1.7;
        color: #1a1a1a;
      }
      .soro-blog-article-content h1,
      .soro-blog-article-content h2,
      .soro-blog-article-content h3 {
        margin-top: 32px;
        margin-bottom: 16px;
        line-height: 1.3;
        color: #1a1a1a;
      }
      .soro-blog-article-content h2 {
        font-size: 24px;
      }
      .soro-blog-article-content h3 {
        font-size: 20px;
      }
      .soro-blog-article-content p {
        margin: 0 0 16px 0;
      }
      .soro-blog-article-content ul,
      .soro-blog-article-content ol {
        margin: 0 0 16px 0;
        padding-left: 24px;
        padding-right: 0;
      }
      .soro-blog-article-content li {
        margin-bottom: 8px;
      }
      .soro-blog-article-content a {
        color: #0066cc;
      }
      .soro-blog-article-content img {
        max-width: 100%;
        height: auto;
        border-radius: 8px;
      }
      .soro-blog-empty {
        text-align: center;
        padding: 48px 24px;
        color: #666;
      }
      .soro-blog-loading {
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 48px 24px;
        color: #666;
      }
      .soro-blog-spinner {
        width: 24px;
        height: 24px;
        border: 2px solid #e5e5e5;
        border-top-color: #1a1a1a;
        border-radius: 50%;
        animation: soro-spin 0.8s linear infinite;
        margin-right: 12px;
      }
      @keyframes soro-spin {
        to { transform: rotate(360deg); }
      }
      .soro-blog-error {
        text-align: center;
        padding: 48px 24px;
        color: #dc2626;
      }
      @media (max-width: 600px) {
        .soro-blog-card {
          flex-direction: column;
          gap: 12px;
        }
        .soro-blog-card-image {
          width: 100%;
          height: 180px;
        }
        .soro-blog-article-title {
          font-size: 24px;
        }
      }
    `;
    document.head.appendChild(style);
  }
  
  // Inject or update JSON-LD structured data
  function injectJsonLd(data) {
    var jsonLdId = 'soro-blog-jsonld';
    var existing = document.getElementById(jsonLdId);
    if (existing) existing.remove();
    
    var script = document.createElement('script');
    script.id = jsonLdId;
    script.type = 'application/ld+json';
    script.textContent = JSON.stringify(data);
    document.head.appendChild(script);
  }
  
  // State
  var currentView = 'list';
  var currentArticle = null;
  var isLoading = false;
  
  // Fetch article content on demand
  function fetchArticleContent(articleId, callback) {
    // Check cache first (includes server-pre-rendered content for deep links)
    if (contentCache[articleId]) {
      callback(null, contentCache[articleId]);
      return;
    }
    
    var url = SORO_API_BASE + '/api/embed/' + SORO_TOKEN + '/article/' + articleId;
    
    fetch(url)
      .then(function(response) {
        if (!response.ok) throw new Error('Failed to load article');
        return response.json();
      })
      .then(function(data) {
        contentCache[articleId] = data.content;
        callback(null, data.content);
      })
      .catch(function(error) {
        callback(error, null);
      });
  }
  
  // Render article list — cards are real <a> links for SEO crawlability
  function renderList() {
    if (SORO_ARTICLES.length === 0) {
      return '<div class="soro-blog-empty"><p>' + SORO_T.empty + '</p></div>';
    }
    
    var html = '<section class="soro-blog-list" role="feed" aria-label="' + SORO_T.blogArticles + '">';
    SORO_ARTICLES.forEach(function(article) {
      var articleUrl = getArticleUrl(article.slug);
      var targetAttr = isSrcdocIframe ? ' target="_blank" rel="noopener"' : '';
      html += '<a href="' + articleUrl + '"' + targetAttr + ' class="soro-blog-card" data-slug="' + escapeHtml(article.slug) + '" itemscope itemtype="https://schema.org/BlogPosting">';
      if (article.image) {
        html += '<img class="soro-blog-card-image" src="' + article.image + '" alt="' + escapeHtml(article.title) + '" loading="lazy" itemprop="image">';
      }
      html += '<div class="soro-blog-card-content">';
      html += '<h2 class="soro-blog-card-title" itemprop="headline">' + escapeHtml(article.title) + '</h2>';
      html += '<p class="soro-blog-card-excerpt" itemprop="description">' + escapeHtml(article.excerpt) + '</p>';
      html += '<time class="soro-blog-card-date" datetime="' + article.isoDate + '" itemprop="datePublished">' + article.date + '</time>';
      html += '</div></a>';
    });
    html += '</section>';
    return html;
  }
  
  function renderArticle(article, content) {
    var html = '<article class="soro-blog-article visible" itemscope itemtype="https://schema.org/BlogPosting">';
    html += '<header>';
    html += '<h1 class="soro-blog-article-title" itemprop="headline">' + escapeHtml(article.title) + '</h1>';
    html += '<time class="soro-blog-article-date" datetime="' + article.isoDate + '" itemprop="datePublished">' + article.date + '</time>';
    html += '</header>';
    if (article.image) {
      html += '<img class="soro-blog-article-image" src="' + article.image + '" alt="' + escapeHtml(article.title) + '" itemprop="image">';
    }
    html += '<div class="soro-blog-article-content" itemprop="articleBody">' + content + '</div>';
    html += '</article>';
    return html;
  }
  
  function renderLoading() {
    return '<div class="soro-blog-loading"><div class="soro-blog-spinner"></div>' + SORO_T.loading + '</div>';
  }
  
  function renderError() {
    return '<div class="soro-blog-error"><p>' + SORO_T.error + '</p></div>';
  }
  
  function escapeHtml(str) {
    var div = document.createElement('div');
    div.textContent = str;
    return div.innerHTML;
  }
  
  // Make all links inside article content open in a new tab
  // This is critical for embeds running on external sites or inside iframes
  function processContentLinks(parentEl) {
    var links = parentEl.querySelectorAll('.soro-blog-article-content a');
    for (var i = 0; i < links.length; i++) {
      links[i].setAttribute('target', '_blank');
      links[i].setAttribute('rel', 'noopener noreferrer');
    }
  }
  
  // Navigate to article view (updates URL without full reload)
  function showArticle(slug) {
    var article = null;
    for (var i = 0; i < SORO_ARTICLES.length; i++) {
      if (SORO_ARTICLES[i].slug === slug) {
        article = SORO_ARTICLES[i];
        break;
      }
    }
    if (!article) {
      // Unknown slug (deleted or unpublished article) — show the list instead of a blank widget
      showList();
      return;
    }

    currentArticle = article;
    currentView = 'article';
    
    // Update URL (pushState so back button works)
    var articleUrl = getArticleUrl(slug);
    if (!isSrcdocIframe && window.location.pathname + window.location.search !== articleUrl) {
      safePushState({ post: slug }, '', articleUrl);
    }
    
    // Update page meta for SEO
    updatePageMeta(article);
    
    var header = container.querySelector('.soro-blog-header');
    var content = container.querySelector('.soro-blog-content');
    header.style.display = 'flex';
    
    // Check if content is already available (pre-rendered or cached)
    if (contentCache[article.id]) {
      content.innerHTML = renderArticle(article, contentCache[article.id]);
      processContentLinks(content);
    } else {
      // Show loading, then fetch
      isLoading = true;
      content.innerHTML = renderLoading();
      
      fetchArticleContent(article.id, function(error, articleContent) {
        isLoading = false;
        if (error) {
          content.innerHTML = renderError();
        } else {
          content.innerHTML = renderArticle(article, articleContent);
          processContentLinks(content);
        }
      });
    }
    
    container.scrollIntoView({ behavior: 'smooth', block: 'start' });
  }
  
  // Navigate to list view
  function showList() {
    currentView = 'list';
    currentArticle = null;
    isLoading = false;
    
    // Update URL
    var listUrl = getListUrl();
    if (!isSrcdocIframe && window.location.pathname + window.location.search !== listUrl) {
      safePushState({ post: null }, '', listUrl);
    }
    
    // Restore page meta
    updatePageMeta(null);
    
    var header = container.querySelector('.soro-blog-header');
    var content = container.querySelector('.soro-blog-content');
    header.style.display = 'none';
    content.innerHTML = renderList();
    
    // Intercept card link clicks
    var cards = content.querySelectorAll('.soro-blog-card');
    cards.forEach(function(card) {
      card.addEventListener('click', function(e) {
        e.preventDefault();
        var slug = card.getAttribute('data-slug');
        if (isSrcdocIframe) {
          // In srcdoc iframe, open article in a new tab with real URL
          var url = getArticleUrl(slug);
          window.open(url, '_blank');
        } else {
          showArticle(slug);
        }
      });
    });
  }
  
  // Handle browser back/forward buttons (not applicable in srcdoc iframes)
  if (!isSrcdocIframe) {
    window.addEventListener('popstate', function(e) {
      var slug = getRequestedSlug();
      if (slug) {
        showArticle(slug);
      } else {
        showList();
      }
    });
  }
  
  // Initial render
  var backArrow = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M19 12H5M12 19l-7-7 7-7"/></svg>';
  container.innerHTML = '<div class="soro-blog">' +
    '<div class="soro-blog-header" style="display: none;">' +
      '<a href="' + getListUrl() + '" class="soro-blog-back" aria-label="' + SORO_T.backToAll + '">' +
        backArrow +
        SORO_T.allArticles +
      '</a>' +
    '</div>' +
    '<div class="soro-blog-content"></div>' +
  '</div>';
  
  // Add back button handler (intercept for SPA navigation)
  container.querySelector('.soro-blog-back').addEventListener('click', function(e) {
    e.preventDefault();
    showList();
  });
  
  // Check if URL has a deep-linked article on initial load
  var initialSlug = getRequestedSlug();
  if (initialSlug) {
    showArticle(initialSlug);
  } else {
    showList();
  }
})();