<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vaidik SolarOne — One Network. Every Energy Solution.</title>
<style>
:root{
--green-950:#04150e; --green-900:#071f14; --green-800:#0b2e1e; --green-700:#0f4230;
--green-500:#14a05c; --green-400:#2fbf77; --green-300:#7fdcb0;
--amber:#f5b301; --amber-dark:#d99a00;
--ink:#eaf5ee; --muted:#9db8a9;
--card:rgba(255,255,255,.045); --line:rgba(255,255,255,.09);
--radius:16px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;background:var(--green-950);color:var(--ink);line-height:1.6;overflow-x:hidden}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
h1,h2,h3{line-height:1.15;letter-spacing:-.02em}
a{color:inherit;text-decoration:none}
img{max-width:100%}
/* ---------- NAV ---------- */
nav{position:fixed;top:0;left:0;right:0;z-index:100;backdrop-filter:blur(14px);background:rgba(4,21,14,.78);border-bottom:1px solid var(--line)}
.nav-inner{display:flex;align-items:center;justify-content:space-between;height:68px}
.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.15rem;letter-spacing:.02em}
.logo .mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--amber),var(--green-400));display:grid;place-items:center;color:var(--green-950);font-weight:900}
.logo span.one{color:var(--amber)}
.nav-links{display:flex;gap:28px;font-size:.92rem;color:var(--muted)}
.nav-links a:hover{color:var(--ink)}
.btn{display:inline-block;padding:11px 22px;border-radius:999px;font-weight:700;font-size:.92rem;cursor:pointer;border:none;transition:.2s}
.btn-amber{background:var(--amber);color:#231a00}
.btn-amber:hover{background:var(--amber-dark)}
.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}
.btn-ghost:hover{border-color:var(--green-400);color:var(--green-300)}
.btn-green{background:var(--green-500);color:#fff}
.btn-green:hover{background:var(--green-400)}
#hamburger{display:none;background:none;border:none;color:var(--ink);font-size:1.5rem;cursor:pointer}
/* ---------- HERO ---------- */
.hero{position:relative;padding:158px 0 90px;background:
radial-gradient(900px 500px at 85% -10%,rgba(245,179,1,.14),transparent 60%),
radial-gradient(700px 500px at -10% 30%,rgba(47,191,119,.12),transparent 60%)}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center}
.eyebrow{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:999px;border:1px solid var(--line);background:var(--card);font-size:.8rem;color:var(--green-300);margin-bottom:22px}
.eyebrow .dot{width:8px;height:8px;border-radius:50%;background:var(--green-400);box-shadow:0 0 10px var(--green-400)}
.hero h1{font-size:clamp(2.4rem,5vw,3.9rem);font-weight:800}
.hero h1 .grad{background:linear-gradient(90deg,var(--amber),var(--green-300));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p.lead{margin:20px 0 30px;color:var(--muted);font-size:1.08rem;max-width:520px}
.hero-cta{display:flex;gap:14px;flex-wrap:wrap}
.hero-stats{display:flex;gap:38px;margin-top:46px;flex-wrap:wrap}
.stat .num{font-size:1.7rem;font-weight:800;color:var(--amber)}
.stat .lbl{font-size:.82rem;color:var(--muted)}
.hero-card{background:linear-gradient(160deg,var(--green-800),var(--green-900));border:1px solid var(--line);border-radius:22px;padding:28px;box-shadow:0 30px 60px rgba(0,0,0,.4)}
.hero-card h3{font-size:1rem;color:var(--green-300);margin-bottom:18px;display:flex;align-items:center;gap:8px}
.id-chip{display:flex;justify-content:space-between;align-items:center;background:rgba(0,0,0,.28);border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-bottom:10px;font-family:"Consolas",monospace;font-size:.92rem}
.id-chip b{color:var(--amber);font-weight:700}
.id-chip .tag{font-family:inherit;font-size:.68rem;padding:3px 9px;border-radius:999px;background:rgba(47,191,119,.15);color:var(--green-300);border:1px solid rgba(47,191,119,.3)}
.pulse{width:8px;height:8px;border-radius:50%;background:var(--green-400);display:inline-block;margin-right:8px;animation:pulse 1.6s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
/* ---------- SECTIONS ---------- */
section{padding:88px 0}
.sec-head{max-width:640px;margin-bottom:52px}
.sec-head .kicker{color:var(--amber);font-weight:700;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase}
.sec-head h2{font-size:clamp(1.7rem,3.4vw,2.5rem);margin:10px 0 14px}
.sec-head p{color:var(--muted)}
.alt{background:linear-gradient(180deg,transparent,rgba(11,46,30,.35),transparent)}
/* ---------- SERVICES ---------- */
.svc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:18px}
.svc{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:26px;transition:.25s;position:relative;overflow:hidden}
.svc:hover{transform:translateY(-5px);border-color:rgba(245,179,1,.45)}
.svc .icn{width:46px;height:46px;border-radius:12px;background:rgba(245,179,1,.12);border:1px solid rgba(245,179,1,.28);display:grid;place-items:center;margin-bottom:16px;color:var(--amber)}
.svc h3{font-size:1.05rem;margin-bottom:8px}
.svc p{font-size:.88rem;color:var(--muted)}
.svc .badge{position:absolute;top:14px;right:14px;font-size:.62rem;font-weight:700;letter-spacing:.06em;padding:3px 9px;border-radius:999px;background:rgba(47,191,119,.14);color:var(--green-300);border:1px solid rgba(47,191,119,.3)}
/* ---------- HOW IT WORKS ---------- */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;counter-reset:step}
.step{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:26px 22px;position:relative}
.step::before{counter-increment:step;content:"0" counter(step);font-size:2.2rem;font-weight:800;color:transparent;-webkit-text-stroke:1px rgba(245,179,1,.55);display:block;margin-bottom:12px}
.step h3{font-size:1rem;margin-bottom:8px}
.step p{font-size:.86rem;color:var(--muted)}
/* ---------- HIERARCHY ---------- */
.hier-wrap{display:grid;grid-template-columns:1fr 1.25fr;gap:44px;align-items:start}
.tree{display:flex;flex-direction:column;align-items:center;gap:0}
.node{width:100%;max-width:340px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 18px;cursor:pointer;transition:.2s;display:flex;justify-content:space-between;align-items:center}
.node:hover,.node.active{border-color:var(--amber);background:rgba(245,179,1,.07)}
.node .role{font-weight:700;font-size:.92rem}
.node .code{font-family:Consolas,monospace;font-size:.74rem;color:var(--muted)}
.node.customer{border-style:dashed}
.connector{width:2px;height:20px;background:linear-gradient(var(--green-500),var(--green-400))}
.role-panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:30px;min-height:420px}
.role-panel h3{color:var(--amber);font-size:1.15rem;margin-bottom:4px}
.role-panel .code{font-family:Consolas,monospace;font-size:.8rem;color:var(--muted)}
.role-panel ul{margin:18px 0 0;list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:9px 18px}
.role-panel li{font-size:.87rem;color:var(--muted);padding-left:20px;position:relative}
.role-panel li::before{content:"✓";position:absolute;left:0;color:var(--green-400);font-weight:700}
.earn{margin-top:22px;padding:14px 16px;border-radius:12px;background:rgba(47,191,119,.08);border:1px solid rgba(47,191,119,.25);font-size:.85rem}
.earn b{color:var(--green-300)}
/* ---------- DEMO (referral + lead) ---------- */
.demo-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:30px}
.panel h3{margin-bottom:6px}
.panel .sub{font-size:.85rem;color:var(--muted);margin-bottom:20px}
.field{margin-bottom:14px}
.field label{display:block;font-size:.78rem;color:var(--muted);margin-bottom:6px;letter-spacing:.04em;text-transform:uppercase}
.field input,.field select{width:100%;padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:rgba(0,0,0,.3);color:var(--ink);font-size:.95rem;outline:none;transition:.2s}
.field input:focus,.field select:focus{border-color:var(--green-400)}
.result{margin-top:18px;border-radius:12px;padding:16px;background:rgba(0,0,0,.3);border:1px dashed var(--line);font-family:Consolas,monospace;font-size:.85rem;display:none;white-space:pre-wrap}
.result.show{display:block;animation:fadein .4s}
.result .ok{color:var(--green-300)} .result .warn{color:var(--amber)}
@keyframes fadein{from{opacity:0;transform:translateY(6px)}to{opacity:1}}
.linkbox{display:flex;gap:8px;margin-top:10px}
.linkbox input{flex:1;padding:10px 12px;border-radius:9px;border:1px solid var(--line);background:rgba(0,0,0,.3);color:var(--green-300);font-family:Consolas,monospace;font-size:.8rem}
/* ---------- COMPLIANCE ---------- */
.comp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.comp{border-left:3px solid var(--amber);background:var(--card);border-radius:0 var(--radius) var(--radius) 0;padding:22px}
.comp h3{font-size:.98rem;margin-bottom:8px}
.comp p{font-size:.86rem;color:var(--muted)}
/* ---------- CTA / FOOTER ---------- */
.cta-band{background:linear-gradient(120deg,var(--green-800),var(--green-700));border:1px solid var(--line);border-radius:24px;padding:56px;text-align:center}
.cta-band h2{font-size:clamp(1.6rem,3vw,2.3rem);margin-bottom:12px}
.cta-band p{color:var(--muted);margin-bottom:26px}
footer{border-top:1px solid var(--line);padding:44px 0 30px;color:var(--muted);font-size:.85rem}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:30px;margin-bottom:34px}
.foot-grid h4{color:var(--ink);font-size:.9rem;margin-bottom:12px}
.foot-grid a{display:block;margin-bottom:8px}
.foot-grid a:hover{color:var(--green-300)}
.copy{text-align:center;font-size:.78rem;color:#5f7a6b}
/* ---------- RESPONSIVE ---------- */
@media(max-width:960px){
.hero-grid,.hier-wrap,.demo-grid{grid-template-columns:1fr}
.steps{grid-template-columns:repeat(2,1fr)}
.comp-grid{grid-template-columns:1fr}
.foot-grid{grid-template-columns:1fr 1fr}
.nav-links{display:none;position:absolute;top:68px;left:0;right:0;background:var(--green-900);flex-direction:column;padding:20px 24px;gap:16px;border-bottom:1px solid var(--line)}
.nav-links.open{display:flex}
#hamburger{display:block}
.role-panel ul{grid-template-columns:1fr}
}
@media(max-width:560px){.steps{grid-template-columns:1fr}.foot-grid{grid-template-columns:1fr}.cta-band{padding:36px 22px}}
</style>
<base target="_blank">
</head>
<body>
<!-- ================= NAV ================= -->
<nav>
<div class="wrap nav-inner">
<a class="logo" href="#top"><span class="mark">☀</span>Vaidik <span class="one">SolarOne</span></a>
<div class="nav-links" id="navLinks">
<a href="#solutions">Solutions</a>
<a href="#how">How It Works</a>
<a href="#network">Partner Network</a>
<a href="#demo">Live Demo</a>
<a href="#compliance">Compliance</a>
</div>
<div style="display:flex;gap:10px;align-items:center">
<a href="#demo" class="btn btn-amber">Get Solar Quote</a>
<button id="hamburger" aria-label="Menu">☰</button>
</div>
</div>
</nav>
<!-- ================= HERO ================= -->
<header class="hero" id="top">
<div class="wrap hero-grid">
<div>
<div class="eyebrow"><span class="dot"></span> PM Surya Ghar · C&I Solar · ESS · EV Charging</div>
<h1>One Network.<br><span class="grad">Every Energy Solution.</span></h1>
<p class="lead">Vaidik SolarOne is an omnichannel distributed-energy platform connecting customers, solar partners, EPC teams and finance — from rooftop kilowatts to future megawatt-scale projects.</p>
<div class="hero-cta">
<a href="#demo" class="btn btn-amber">Request a Quotation</a>
<a href="#network" class="btn btn-ghost">Become a Partner</a>
</div>
<div class="hero-stats">
<div class="stat"><div class="num" data-count="7">0</div><div class="lbl">Partner Levels</div></div>
<div class="stat"><div class="num" data-count="10">0</div><div class="lbl">Platform Roles</div></div>
<div class="stat"><div class="num" data-count="30">0</div><div class="lbl">Day Lead Lock</div></div>
<div class="stat"><div class="num" data-count="100">0</div><div class="lbl">% Transaction-Linked</div></div>
</div>
</div>
<div class="hero-card">
<h3><span class="pulse"></span>Live Platform Registry</h3>
<div class="id-chip"><span>Partner <b>VS-000001</b></span><span class="tag">STATE PARTNER</span></div>
<div class="id-chip"><span>Lead <b>LD-2026-000198</b></span><span class="tag">LOCKED · 30D</span></div>
<div class="id-chip"><span>Project <b>SOL-2026-000034</b></span><span class="tag">COMMISSIONING</span></div>
<div class="id-chip"><span>Customer <b>CUS-2026-000034</b></span><span class="tag">NET METERING</span></div>
<p style="font-size:.75rem;color:var(--muted);margin-top:14px">Every partner, lead, project and customer carries a permanent, unique, audit-safe identifier.</p>
</div>
</div>
</header>
<!-- ================= SOLUTIONS ================= -->
<section id="solutions">
<div class="wrap">
<div class="sec-head">
<div class="kicker">What We Deliver</div>
<h2>Solar, storage and energy services — end to end</h2>
<p>From your first electricity-bill upload to final net-metering approval, one platform manages the entire journey.</p>
</div>
<div class="svc-grid">
<div class="svc"><span class="badge">RESIDENTIAL</span><div class="icn">🏠</div><h3>Rooftop Solar</h3><p>Site survey, custom design, subsidy filing and installation for homes — including PM Surya Ghar projects.</p></div>
<div class="svc"><span class="badge">C&I</span><div class="icn">🏭</div><h3>Commercial & Industrial</h3><p>MW-ready engineering for factories, offices and institutions with performance-guaranteed systems.</p></div>
<div class="svc"><span class="badge">STORAGE</span><div class="icn">🔋</div><h3>Solar + Battery / ESS</h3><p>Hybrid inverters and energy-storage systems for backup, peak-shaving and round-the-clock solar.</p></div>
<div class="svc"><span class="badge">LIFECYCLE</span><div class="icn">🛠️</div><h3>Solar O&M</h3><p>Preventive maintenance, performance monitoring and rapid ticket resolution by certified EPC teams.</p></div>
<div class="svc"><span class="badge">FINANCE</span><div class="icn">💳</div><h3>Solar Financing</h3><p>Partnered lenders, easy EMIs and guided subsidy applications — finance tracked in your dashboard.</p></div>
<div class="svc"><span class="badge">MOBILITY</span><div class="icn">⚡</div><h3>EV Charging</h3><p>Solar-powered EV charging solutions for homes, societies and commercial fleets.</p></div>
<div class="svc"><span class="badge">REFERRAL</span><div class="icn">🤝</div><h3>Customer Referrals</h3><p>Refer a neighbour, track their project and earn — every reward tied to a verified installation.</p></div>
<div class="svc"><span class="badge">FUTURE</span><div class="icn">🌅</div><h3>MW-Scale Projects</h3><p>Ground-mounted and open-access solar pipelines, built on the same trusted partner network.</p></div>
</div>
</div>
</section>
<!-- ================= HOW IT WORKS ================= -->
<section id="how" class="alt">
<div class="wrap">
<div class="sec-head">
<div class="kicker">Customer Journey</div>
<h2>From bill to backup power in four steps</h2>
</div>
<div class="steps">
<div class="step"><h3>Upload Your Bill</h3><p>Register and submit your electricity bill — our engine sizes the right system for your usage.</p></div>
<div class="step"><h3>Quote & Survey</h3><p>Receive a transparent quotation, then book a free site survey by a verified partner.</p></div>
<div class="step"><h3>Finance & Subsidy</h3><p>Apply for solar loans and PM Surya Ghar subsidy — every application status tracked live.</p></div>
<div class="step"><h3>Install & Track</h3><p>EPC installation with photo-verified milestones, commissioning documents and net-metering updates.</p></div>
</div>
</div>
</section>
<!-- ================= HIERARCHY ================= -->
<section id="network">
<div class="wrap">
<div class="sec-head">
<div class="kicker">Partner Network</div>
<h2>A compliant, transaction-linked partner hierarchy</h2>
<p>Select any level to see its capabilities and how earnings work. Commissions flow only from verified sales — never from recruitment.</p>
</div>
<div class="hier-wrap">
<div class="tree" id="tree"></div>
<div class="role-panel" id="rolePanel"></div>
</div>
</div>
</section>
<!-- ================= DEMO ================= -->
<section id="demo" class="alt">
<div class="wrap">
<div class="sec-head">
<div class="kicker">Live Demo</div>
<h2>Try the referral & lead engine</h2>
<p>Client-side simulation of the production logic — unique partner slugs, atomic ID counters, duplicate detection and 30-day lead locking.</p>
</div>
<div class="demo-grid">
<div class="panel">
<h3>🪪 Partner Referral Link</h3>
<p class="sub">Enter a partner code to generate recruitment & customer links.</p>
<div class="field"><label>Partner Code</label><input id="pCode" value="VS-000150" maxlength="9"></div>
<button class="btn btn-green" onclick="genLinks()">Generate Links</button>
<div class="result" id="linkResult"></div>
</div>
<div class="panel">
<h3>📋 Submit a Lead</h3>
<p class="sub">Simulates a customer submitting via a partner's link. Try the same mobile twice.</p>
<div class="field"><label>Full Name</label><input id="cName" placeholder="Asha Verma"></div>
<div class="field"><label>Mobile</label><input id="cMobile" placeholder="98XXXXXX01" maxlength="10"></div>
<div class="field"><label>Referral Slug</label><input id="cSlug" value="VS000150"></div>
<button class="btn btn-amber" onclick="submitLead()">Submit Lead</button>
<div class="result" id="leadResult"></div>
</div>
</div>
</div>
</section>
<!-- ================= COMPLIANCE ================= -->
<section id="compliance">
<div class="wrap">
<div class="sec-head">
<div class="kicker">Built In, Not Bolted On</div>
<h2>Compliance is the architecture</h2>
<p>SolarOne is engineered around a single principle: real customer → real product → real sale → real revenue → commission.</p>
</div>
<div class="comp-grid">
<div class="comp"><h3>No recruitment earnings</h3><p>No feature pays a user for adding another user. Partner income exists only when a verified business transaction completes.</p></div>
<div class="comp"><h3>No guaranteed income</h3><p>The platform makes zero income promises. Earnings are a function of actual verified sales performance.</p></div>
<div class="comp"><h3>No duplicate claims</h3><p>Lead locking, existing-customer detection and a full audit trail make double-commission claims impossible by design.</p></div>
<div class="comp"><h3>Admin-controlled overrides</h3><p>Team, area, district and state overrides are configured and approved by company admin — never automatic or self-declared.</p></div>
<div class="comp"><h3>Full audit ledger</h3><p>Every ID, lead event, ownership transfer and payout is permanently logged and traceable.</p></div>
<div class="comp"><h3>Direct-selling compliant</h3><p>A channel-partner structure supporting compliant direct selling, with KYC, agreements and transparent payouts.</p></div>
</div>
</div>
</section>
<!-- ================= CTA ================= -->
<section>
<div class="wrap">
<div class="cta-band">
<h2>Ready to plug into the network?</h2>
<p>Join as a customer, advisor or partner — and power every energy need from one platform.</p>
<div style="display:flex;gap:14px;justify-content:center;flex-wrap:wrap">
<a href="#demo" class="btn btn-amber">Request Solar Quote</a>
<a href="#network" class="btn btn-ghost">Explore Partner Levels</a>
</div>
</div>
</div>
</section>
<!-- ================= FOOTER ================= -->
<footer>
<div class="wrap">
<div class="foot-grid">
<div>
<a class="logo" href="#top" style="margin-bottom:12px"><span class="mark">☀</span>Vaidik <span class="one">SolarOne</span></a>
<p style="font-size:.85rem;margin-top:10px">One Network. Every Energy Solution.<br>Operated by Vaidik Energy / Vaidik Consumers Private Limited.</p>
</div>
<div><h4>Platform</h4><a href="#solutions">Solutions</a><a href="#network">Partner Network</a><a href="#demo">Get a Quote</a></div>
<div><h4>Roles</h4><a href="#network">Solar Advisor</a><a href="#network">Solar Partner</a><a href="#network">EPC & Operations</a><a href="#network">Finance / Admin</a></div>
<div><h4>Trust</h4><a href="#compliance">Compliance</a><a href="#compliance">Audit Trail</a><a href="#compliance">Lead Ownership Rules</a></div>
</div>
<div class="copy">© 2026 Vaidik SolarOne · Vaidik Consumers Private Limited · All transactions verified · No recruitment-based earnings</div>
</div>
</footer>
<script>
/* ---------- Mobile nav ---------- */
document.getElementById('hamburger').onclick = () =>
document.getElementById('navLinks').classList.toggle('open');
document.querySelectorAll('#navLinks a').forEach(a =>
a.onclick = () => document.getElementById('navLinks').classList.remove('open'));
/* ---------- Animated counters ---------- */
const io = new IntersectionObserver(es => es.forEach(e => {
if (!e.isIntersecting) return;
const el = e.target, end = +el.dataset.count, t0 = performance.now();
(function tick(t){ const p = Math.min((t - t0)/1200, 1);
el.textContent = Math.round(end * (1 - Math.pow(1-p, 3))) + (end===100?'%':'+');
if (p < 1) requestAnimationFrame(tick); })(t0);
io.unobserve(el);
}), {threshold:.6});
document.querySelectorAll('[data-count]').forEach(el => io.observe(el));
/* ---------- Hierarchy data ---------- */
const ROLES = [
{role:'CUSTOMER', code:'CUS-2026-XXXXXX', dash:true,
caps:['Register & login','Submit electricity bill','Request quotation','Book site survey','Apply for finance','Track installation & subsidy','Track net metering','Purchase ESS / request O&M','Refer another customer','View invoices & payments'],
earn:'Customers earn referral rewards only when the referred customer completes a verified installation.'},
{role:'SOLAR ADVISOR', code:'VS-000150',
caps:['Register leads','Upload customer electricity bills','Generate quotations','Track & follow up leads','View assigned leads','View commission ledger','Request payout','Access training & marketing material'],
earn:'Entry-level partner. Earns commission on verified sales of assigned leads. No earnings from adding other advisors.'},
{role:'SOLAR PARTNER', code:'VS-000099',
caps:['Everything an Advisor can do','Manage own customers','Track projects end-to-end','Build & monitor a sales team','View team performance','Submit documents','Track incentives'],
earn:'Earns direct-sale commission plus admin-approved incentives tied to verified team transactions.'},
{role:'TEAM LEADER', code:'VS-000042',
caps:['Everything a Solar Partner can do','Manage team & active partners','View team sales & ranking','Train partners','View team commissions','Approved team override'],
earn:'Receives an admin-approved team override calculated only on verified transactions from their subtree.'},
{role:'AREA PARTNER', code:'VS-000027',
caps:['Manage multiple teams','View area sales','Monitor area partners','Run local campaigns','View area performance','Approved area override'],
earn:'Admin-approved area override on verified transactions across the area network. Never on recruitment.'},
{role:'DISTRICT PARTNER', code:'VS-000010',
caps:['Manage district network','View district sales & revenue','View all district teams','Monitor installations','Manage approved campaigns','Approved district incentive'],
earn:'Admin-approved district incentive on verified district-wide transactions.'},
{role:'STATE PARTNER', code:'VS-000001',
caps:['State-wide business visibility','Manage district network','View state sales & revenue','Monitor partner performance','Manage approved campaigns'],
earn:'Top of the channel. Incentives are admin-configured and strictly transaction-linked.'}
];
/* ---------- Render tree ---------- */
const tree = document.getElementById('tree');
ROLES.forEach((r, i) => {
if (i > 0) { const c = document.createElement('div'); c.className = 'connector'; tree.appendChild(c); }
const n = document.createElement('div');
n.className = 'node' + (r.dash ? ' customer' : '');
n.innerHTML = `<span class="role">${r.role}</span><span class="code">${r.code}</span>`;
n.onclick = () => selectRole(i, n);
tree.appendChild(n);
});
function selectRole(i, node) {
document.querySelectorAll('.node').forEach(n => n.classList.remove('active'));
node.classList.add('active');
const r = ROLES[i];
document.getElementById('rolePanel').innerHTML = `
<h3>${r.role}</h3><div class="code">${r.code}</div>
<ul>${r.caps.map(c => `<li>${c}</li>`).join('')}</ul>
<div class="earn">💰 <b>How earnings work:</b> ${r.earn}</div>`;
}
selectRole(1, document.querySelectorAll('.node')[1]);
/* ---------- Demo: atomic counters in localStorage ---------- */
function nextId(key, fmt) {
const k = 'vs1_' + key;
const v = (parseInt(localStorage.getItem(k) || '0', 10) + 1);
localStorage.setItem(k, v);
return fmt(v);
}
function genLinks() {
const raw = document.getElementById('pCode').value.trim().toUpperCase();
const slug = raw.replace(/-/g, '');
const ok = /^VS\d{6}$/.test(slug);
const box = document.getElementById('linkResult');
box.className = 'result show';
box.innerHTML = ok
? `<span class="ok">✓ Partner ${raw} resolved</span>\nRecruit : <span class="ok">vaidiksolar.one/join/${slug}</span>\nCustomer: <span class="ok">vaidiksolar.one/solar/${slug}</span>`
: `<span class="warn">✗ Invalid code. Format: VS-000150</span>`;
}
function submitLead() {
const name = document.getElementById('cName').value.trim();
const mob = document.getElementById('cMobile').value.trim();
const slug = document.getElementById('cSlug').value.trim().toUpperCase();
const box = document.getElementById('leadResult');
box.className = 'result show';
if (!name || !/^\d{10}$/.test(mob)) {
box.innerHTML = `<span class="warn">✗ Enter a name and a valid 10-digit mobile.</span>`; return;
}
const regK = 'vs1_registry';
const reg = JSON.parse(localStorage.getItem(regK) || '{}');
if (reg[mob]) {
box.innerHTML = `<span class="warn">⛔ DUPLICATE BLOCKED</span>\nMobile ${mob} already registered as <span class="warn">${reg[mob].cus}</span>\nOwned by ${reg[mob].slug} · locked until ${reg[mob].lock}\n<span class="warn">No duplicate lead created. No duplicate commission eligibility.</span>`;
return;
}
const cus = nextId('cus', v => 'CUS-2026-' + String(v).padStart(6, '0'));
const ld = nextId('ld', v => 'LD-2026-' + String(v).padStart(6, '0'));
const lock = new Date(Date.now() + 30*864e5).toISOString().slice(0, 10);
reg[mob] = { cus, slug, lock };
localStorage.setItem(regK, JSON.stringify(reg));
box.innerHTML = `<span class="ok">✓ LEAD CREATED</span>\nCustomer : <span class="ok">${cus}</span> (${name})\nLead : <span class="ok">${ld}</span>\nOwner : ${slug} (via /solar/${slug})\nLocked : 30 days → ${lock}\nChain : ${slug} → upline resolvable via hierarchy_path`;
}
</script>
</body>
</html>