/* === HOMEPAGE REDESIGN === */
/* Hero */
.jl-hero{position:relative;background:linear-gradient(135deg,#0a0a1a 0%,#1a1a3e 40%,#2d1b69 100%);overflow:hidden;padding:8rem 2rem 6rem;text-align:center}
.jl-hero::before{content:”;position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle at 30% 50%,rgba(108,59,245,0.15) 0%,transparent 50%),radial-gradient(circle at 70% 80%,rgba(255,107,53,0.1) 0%,transparent 50%);animation:jlFloat 20s ease-in-out infinite}
@keyframes jlFloat{0%,100%{transform:translate(0,0)}50%{transform:translate(-2%,2%)}}
.jl-hero>*{position:relative;z-index:1}
.jl-badge{display:inline-block;background:rgba(108,59,245,0.15);border:1px solid rgba(108,59,245,0.3);color:#a78bfa;font-size:13px;font-weight:600;letter-spacing:2px;text-transform:uppercase;padding:8px 20px;border-radius:50px;margin-bottom:2rem}
.jl-hero h1{color:#fff;font-size:clamp(2.5rem,6vw,4.5rem);font-weight:800;line-height:1.08;margin:0 0 1.5rem}
.jl-hero h1 span{background:linear-gradient(135deg,#818cf8,#ff6b35);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.jl-hero p{color:rgba(255,255,255,0.5);font-size:clamp(1rem,1.5vw,1.2rem);line-height:1.7;max-width:600px;margin:0 auto 2.5rem}
.jl-btn-group{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}
.jl-btn{display:inline-flex;align-items:center;gap:8px;padding:14px 32px;border-radius:50px;font-weight:600;font-size:15px;text-decoration:none;transition:all .3s ease;border:none;cursor:pointer}
.jl-btn-primary{background:linear-gradient(135deg,#6C3BF5,#FF6B35);color:#fff;box-shadow:0 4px 20px rgba(108,59,245,0.3)}
.jl-btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(108,59,245,0.4);color:#fff}
.jl-btn-outline{background:transparent;color:#fff;border:2px solid rgba(255,255,255,0.2)}
.jl-btn-outline:hover{border-color:rgba(255,255,255,0.5);background:rgba(255,255,255,0.05);color:#fff}
/* Stats Strip */
.jl-stats{background:#111827;padding:2.5rem 2rem;display:flex;justify-content:center;gap:4rem;flex-wrap:wrap}
.jl-stat{text-align:center}
.jl-stat-num{font-size:2rem;font-weight:800;background:linear-gradient(135deg,#818cf8,#ff6b35);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.jl-stat-label{font-size:13px;color:#9ca3af;margin-top:4px;text-transform:uppercase;letter-spacing:1px}
/* Sections */
.jl-section{padding:5rem 2rem}
.jl-section-center{text-align:center}
.jl-section-title{font-size:clamp(1.6rem,3vw,2.2rem);font-weight:800;color:#111827;margin:0 0 0.5rem}
.jl-section-sub{font-size:1.05rem;color:#6b7280;margin:0 0 3rem}
/* Featured Post */
.jl-featured{background:#f9fafb;padding:5rem 2rem}
.jl-featured-card{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center;background:#fff;border-radius:20px;overflow:hidden;box-shadow:0 4px 30px rgba(0,0,0,0.06);border:1px solid #f3f4f6}
.jl-featured-img{width:100%;height:100%;min-height:320px;object-fit:cover}
.jl-featured-body{padding:3rem 3rem 3rem 0}
.jl-featured-tag{display:inline-block;background:rgba(108,59,245,0.08);color:#6C3BF5;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;padding:6px 14px;border-radius:6px;margin-bottom:1rem}
.jl-featured-body h3{font-size:1.6rem;font-weight:700;color:#111827;margin:0 0 1rem;line-height:1.3}
.jl-featured-body h3 a{color:inherit;text-decoration:none}
.jl-featured-body h3 a:hover{color:#6C3BF5}
.jl-featured-body p{color:#6b7280;line-height:1.7;margin:0 0 1.5rem}
.jl-featured-body .jl-btn{font-size:14px;padding:10px 24px}
/* Category Cards */
.jl-cats{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;max-width:1100px;margin:0 auto}
.jl-cat{background:#fff;border-radius:16px;padding:2rem;border:1px solid #f3f4f6;transition:all .3s ease;position:relative;overflow:hidden}
.jl-cat:hover{transform:translateY(-4px);box-shadow:0 12px 40px rgba(0,0,0,0.08);border-color:transparent}
.jl-cat::before{content:”;position:absolute;top:0;left:0;right:0;height:3px;border-radius:16px 16px 0 0}
.jl-cat.purple::before{background:linear-gradient(90deg,#6C3BF5,#818cf8)}
.jl-cat.orange::before{background:linear-gradient(90deg,#FF6B35,#fb923c)}
.jl-cat.green::before{background:linear-gradient(90deg,#059669,#34d399)}
.jl-cat-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px;margin-bottom:1rem}
.jl-cat.purple .jl-cat-icon{background:rgba(108,59,245,0.08)}
.jl-cat.orange .jl-cat-icon{background:rgba(255,107,53,0.08)}
.jl-cat.green .jl-cat-icon{background:rgba(5,150,105,0.08)}
.jl-cat h3{font-size:1.15rem;font-weight:700;color:#111827;margin:0 0 0.5rem}
.jl-cat p{font-size:14px;color:#6b7280;line-height:1.6;margin:0 0 1.25rem}
.jl-cat-link{font-size:14px;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:6px;transition:all .2s}
.jl-cat.purple .jl-cat-link{color:#6C3BF5}
.jl-cat.orange .jl-cat-link{color:#FF6B35}
.jl-cat.green .jl-cat-link{color:#059669}
.jl-cat-link:hover{gap:10px}
/* Posts Grid */
.jl-posts-grid{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
/* About VKP */
.jl-about{background:#f9fafb;padding:5rem 2rem}
.jl-about-inner{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}
.jl-about-text h2{font-size:clamp(1.6rem,3vw,2.2rem);font-weight:800;color:#111827;margin:0 0 1rem}
.jl-about-text p{color:#6b7280;line-height:1.8;font-size:1.05rem;margin:0 0 2rem}
.jl-about-img{border-radius:20px;overflow:hidden;box-shadow:0 8px 40px rgba(0,0,0,0.1)}
.jl-about-img img{width:100%;display:block}
/* CTA */
.jl-cta{background:linear-gradient(135deg,#111827 0%,#1e1b4b 100%);padding:5rem 2rem;text-align:center;position:relative;overflow:hidden}
.jl-cta::before{content:”;position:absolute;top:0;left:50%;transform:translateX(-50%);width:600px;height:600px;background:radial-gradient(circle,rgba(108,59,245,0.1) 0%,transparent 70%);pointer-events:none}
.jl-cta>*{position:relative;z-index:1}
.jl-cta h2{color:#fff;font-size:clamp(1.6rem,3vw,2.2rem);font-weight:800;margin:0 0 0.75rem}
.jl-cta p{color:rgba(255,255,255,0.5);font-size:1.05rem;margin:0 0 2rem}
/* Responsive */
@media(max-width:900px){
.jl-featured-card{grid-template-columns:1fr}
.jl-featured-img{min-height:240px}
.jl-featured-body{padding:2rem}
.jl-cats{grid-template-columns:1fr}
.jl-posts-grid{grid-template-columns:1fr}
.jl-about-inner{grid-template-columns:1fr}
.jl-stats{gap:2rem}
}
@media(max-width:600px){
.jl-hero{padding:5rem 1.5rem 4rem}
.jl-section{padding:3.5rem 1.5rem}
}
???? Open Source Projects
Building cool stuff with Microcontrollers & Machines
ESP32, STM32, Arduino, LinuxCNC, Motion Control — Hands-on engineering projects and tutorials by VKP from Delhi, India.
Latest Project
Fresh from the workbench
New
RPi 5 costs $205 now. Switch to $3 ESP32 for smart home automation. Compare cost, power, boot time, and ESPHome integration.
Read Article →
Browse by Category
Find projects that match your interests
⚡
Embedded Systems
ESP32, STM32, ATmega, Arduino, sensor integration, firmware development, and smart home automation.
Browse articles →
????
CNC & Machining
LinuxCNC, SolidWorks CAM, GRBL post processors, stepper motor control, and machine automation.
Browse articles →
????
Tech & How-To
WordPress tips, web development, OpenPnP, banking guides, and practical tech tutorials.
Browse articles →
Latest from the Lab
Hands-on guides, tutorials, and DIY projects
AI Coding Agents Just Became Attack Tools — Here’s How to Protect Your Developer Workflow July 9, 2026 A decades-old Unix trick broke six AI coding assistants in one week, and an autonomous AI agent ran its first complete ransomware attack. Here’s what developers and security teams need to understand — and fix.
ESP32 vs Raspberry Pi for Smart Home: Why $3 Beats $205 in 2026 July 9, 2026 RPi 5 costs $205 now. Switch to $3 ESP32 for smart home automation. Compare ESP32 vs Raspberry Pi: cost, power, boot time, ESPHome integration.
DIY Quick Change Tapping Attachment for CNC Lathes – Free Design Files July 7, 2024 Test
ATmega8A Direct Port Register Programming – LED Blink Tutorial February 19, 2023 Learn ATmega8A direct port register programming with this step-by-step guide. Blink LED using AVR port registers, no Arduino libraries needed. Includes complete code and circuit diagram.
LinuxCNC Raspberry Pi 4B Double Step Implementation Guide December 27, 2021 Complete guide to LinuxCNC Raspberry Pi 4B double step implementation. Configure stepper motor drivers, set up realtime kernel, and achieve microstepping on RPi4 for CNC applications.
SolidWorks CAM Post Processor for LinuxCNC Lathe – Complete Guide June 23, 2021 Generate SolidWorks CAM post processor for LinuxCNC lathe operations. Step-by-step guide to export G-code from SolidWorks CAM for LinuxCNC machine control.
DIY Engineering by VKP
I build open-source hardware and software projects — from custom CNC post-processors for LinuxCNC to embedded systems with STM32, motion control with stepper motors, and smart home automation with ESP32. This is where I share what I learn along the way.
Let’s Build Something Together
Have a project idea, question, or just want to connect? Reach out anytime.