<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Sudo — Script Protection</title>
<meta name="description" content="Sudo — lightweight loadstring protection for your scripts." />
<link rel="icon" href="/assets/sudo-logo.jpg" type="image/jpeg" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet" />
<style>
  *,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
  :root{
    --bg:#0a0a0a; --bg2:#050505; --panel:rgba(17,17,17,.4); --panel2:rgba(22,22,22,.4);
    --fg:#e0e0e0; --heading:#ffffff; --muted:#777; --border:#222;
    --accent:#ffffff; --accent2:#ccc;
    --green:#aaa; --cyan:#bbb; --red:#999;
    --radius:8px;
  }
  html{scroll-behavior:smooth;scroll-snap-type:y proximity;scroll-padding-top:60px}
  body{margin:0;background:var(--bg);color:var(--fg);
    font-family:'Fira Code',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}

  .bg-gif{position:fixed;inset:0;z-index:0;width:100vw;height:100vh;object-fit:cover;pointer-events:none;opacity:.25}

  .hero,section{scroll-snap-align:start;min-height:100vh;display:flex;flex-direction:column;justify-content:center;
    opacity:0;transform:translateY(24px);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1)}
  .hero.in,section.in{opacity:1;transform:none}
  section:nth-of-type(odd){background-color:transparent}
  section:nth-of-type(even){background-color:transparent}

  .wrap{max-width:1080px;margin:0 auto;padding:0 22px}
  a{color:var(--accent);text-decoration:none}

  /* ─── NAV ─── */
  nav{position:sticky;top:0;z-index:50;backdrop-filter:blur(14px);
    background:rgba(10,10,10,.45);border-bottom:1px solid rgba(255,255,255,.08)}
  nav .wrap{display:flex;align-items:center;justify-content:space-between;height:56px}
  .nav-center{display:flex;align-items:center;flex:1;justify-content:center}
  .brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;letter-spacing:.02em;color:var(--heading);text-decoration:none}
  .brand .logo{width:28px;height:28px;border-radius:6px;object-fit:cover}
  .nav-links{display:flex;align-items:center;gap:20px}
  .nav-links a{color:var(--muted);font-size:13.5px;font-weight:500;transition:.15s}
  .nav-links a:hover{color:var(--fg)}
  .btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:10px;
    font-weight:600;font-size:13px;border:1px solid var(--border);color:var(--fg);background:var(--panel);
    cursor:pointer;transition:transform .12s,border-color .12s;font-family:inherit;text-decoration:none}
  .btn:hover{transform:translateY(-1px);border-color:var(--accent)}
  .btn.primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#111;border:none}
  .btn.primary:hover{filter:brightness(1.07)}

  /* audio controls in nav */
  .audio-wrap{display:flex;align-items:center;gap:8px}
  .viz{display:flex;align-items:center;gap:2px;height:24px}
  .viz .vbar{width:3px;background:var(--accent);border-radius:2px;min-height:3px;transition:height .08s linear}
  .audio-btn{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;color:var(--muted);transition:.15s}
  .audio-btn:hover{color:var(--fg)}
  .audio-btn svg{width:14px;height:14px;fill:currentColor}
  .vol-slider{-webkit-appearance:none;appearance:none;width:50px;height:3px;background:rgba(255,255,255,.2);border-radius:2px;outline:none;cursor:pointer;border:none}
  .vol-slider::-webkit-slider-thumb{-webkit-appearance:none;width:10px;height:10px;border-radius:50%;background:var(--accent);cursor:pointer;border:none}
  .vol-slider::-moz-range-thumb{width:10px;height:10px;border-radius:50%;background:var(--accent);cursor:pointer;border:none}

  /* hamburger */
  .hamburger{display:none;background:none;border:none;cursor:pointer;padding:6px;color:var(--muted)}
  .hamburger svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2}
  .mobile-menu{display:none;position:fixed;inset:0;z-index:100;background:rgba(17,17,24,.96);backdrop-filter:blur(20px);
    flex-direction:column;align-items:center;justify-content:center;gap:8px}
  .mobile-menu.open{display:flex}
  .mobile-menu a{color:var(--fg);text-decoration:none;font-size:18px;font-weight:600;padding:14px 32px;border-radius:12px;
    transition:.15s;width:80%;max-width:300px;text-align:center}
  .mobile-menu a:hover{background:rgba(255,255,255,.1)}
  .mobile-close{position:absolute;top:20px;right:24px;background:none;border:none;cursor:pointer;color:var(--muted);padding:8px}
  .mobile-close svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:2}

  @media(max-width:768px){
    .nav-links{display:none}.hamburger{display:flex}
    .nav-center{flex:1;justify-content:center}
    .vol-slider{width:40px}
    .hero h1{font-size:clamp(28px,7vw,42px)}
  }

  /* ─── HERO ─── */
  .hero{padding:80px 0 40px;text-align:center;position:relative;overflow:hidden;background:transparent}
  .hero .wrap{position:relative;z-index:2}
  .badge{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);
    border:1px solid var(--border);background:var(--panel);padding:5px 14px;border-radius:999px;margin-bottom:22px}
  .badge .dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green)}
  .hero h1{font-size:clamp(32px,5.4vw,52px);line-height:1.12;margin:0 0 18px;letter-spacing:-.01em;font-weight:700;
    color:var(--heading);font-family:'Inter',system-ui,sans-serif}
  .hero h1 .grad{background:linear-gradient(120deg,var(--accent),var(--accent2));
    -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
  .hero .lede{font-size:clamp(14px,2.2vw,18px);color:var(--muted);max-width:600px;margin:0 auto 30px;line-height:1.7}
  .hero-cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

  /* terminal in hero */
  .term-intro{color:var(--fg);font-size:clamp(12px,1.6vw,14px);margin:34px auto 0;max-width:560px}
  .term{max-width:620px;margin:12px auto 0;text-align:left;
    background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);
    overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.4)}
  .term-bar{display:flex;align-items:center;justify-content:space-between;padding:5px 10px 5px 14px;
    border-bottom:1px solid var(--border);background:#1a1b26}
  .term-bar .ttl{color:var(--muted);font-size:11px}
  .term-bar .dots{display:flex;gap:6px}
  .term-bar .dots span{width:10px;height:10px;border-radius:50%;display:block}
  .term-bar .dots .r{background:#f7768e}
  .term-bar .dots .y{background:#e0af68}
  .term-bar .dots .g{background:#9ece6a}
  .term pre{margin:0;padding:18px 16px;font-size:13px;color:var(--fg);line-height:1.7;white-space:pre-wrap}
  .term .cs{color:var(--green)}
  .term .cm{color:var(--muted)}
  .term .k{color:var(--accent)}
  .term .ok{color:var(--green)}

  /* ─── SECTION HEADINGS (Odysseus eyebrow pattern) ─── */
  section{padding:60px 0}
  .eyebrow{color:var(--accent);font-weight:700;font-size:11px;letter-spacing:.12em;text-transform:uppercase;
    display:inline-flex;align-items:center;gap:6px}
  h2.h{font-size:clamp(19px,2.7vw,26px);margin:8px 0 12px;letter-spacing:-.01em;color:var(--heading);
    font-weight:700;font-family:'Inter',system-ui,sans-serif}
  .sub{color:var(--muted);max-width:620px;font-size:14px;line-height:1.7}
  .center{text-align:center}
  .center .sub{margin:0 auto}

  /* ─── STATS ─── */
  .stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);
    border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin:40px auto 0;max-width:780px}
  .stat{background:var(--panel);padding:22px 14px;text-align:center}
  .stat .val{font-size:26px;font-weight:700;color:var(--accent);margin-bottom:4px;font-family:'Inter',system-ui,sans-serif}
  .stat .lbl{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em}
  @media(max-width:600px){.stats{grid-template-columns:repeat(2,1fr)}}

  /* ─── FEATURES (domino cascade like Odysseus) ─── */
  #features .feature{opacity:0;transform:translateY(16px)}
  #features.in .feature{animation:domino-in .5s cubic-bezier(.2,.7,.2,1) forwards}
  #features.in .feature:nth-child(1){animation-delay:.04s}
  #features.in .feature:nth-child(2){animation-delay:.09s}
  #features.in .feature:nth-child(3){animation-delay:.14s}
  #features.in .feature:nth-child(4){animation-delay:.19s}
  #features.in .feature:nth-child(5){animation-delay:.24s}
  #features.in .feature:nth-child(6){animation-delay:.29s}
  @keyframes domino-in{to{opacity:1;transform:none}}
  .feat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:28px}
  .feature{background:rgba(17,17,17,.35);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.06);border-radius:var(--radius);padding:22px 18px;transition:.2s}
  .feature:hover{border-color:rgba(255,255,255,.15);transform:translateY(-2px)}
  .feature .feat-ic{color:var(--accent);font-size:22px;margin-bottom:10px}
  .feature h3{font-size:14px;font-weight:700;color:var(--heading);margin-bottom:4px;font-family:'Inter',system-ui,sans-serif}
  .feature p{color:var(--muted);font-size:12px;line-height:1.6}
  @media(max-width:820px){.feat-grid{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:520px){.feat-grid{grid-template-columns:1fr}}

  /* ─── CHART ─── */
  .chart-wrap{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:28px 24px;margin-top:28px;max-width:780px}
  .chart-wrap h3{font-size:16px;font-weight:700;color:var(--heading);margin-bottom:4px;font-family:'Inter',system-ui,sans-serif}
  .chart-sub{color:var(--muted);font-size:12px;margin-bottom:20px}
  .chart-row{display:flex;align-items:center;gap:12px;margin-bottom:8px}
  .chart-label{width:120px;flex:none;font-size:12px;color:var(--muted)}
  .chart-bar-bg{flex:1;height:24px;background:rgba(255,255,255,.04);border-radius:4px;overflow:hidden}
  .chart-bar{height:100%;border-radius:4px;display:flex;align-items:center;justify-content:flex-end;
    padding-right:8px;font-size:10px;font-weight:700;animation:barGrow 1.2s cubic-bezier(.22,1,.36,1) forwards;width:var(--w)}
  .chart-bar.purple{background:linear-gradient(90deg,rgba(255,255,255,.08),rgba(255,255,255,.35))}
  .chart-bar.cyan{background:linear-gradient(90deg,rgba(255,255,255,.06),rgba(255,255,255,.25))}
  .chart-val{font-size:11px;font-weight:700;color:var(--muted);width:36px;text-align:right;flex:none}
  @keyframes barGrow{from{width:0}to{width:var(--w)}}

  /* ─── DEMO ─── */
  .demo-term{max-width:700px;margin:28px auto 0;text-align:left;
    background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);
    overflow:hidden;box-shadow:0 16px 48px rgba(0,0,0,.35)}
  .demo-term .term-bar{background:var(--panel)}
  .demo-term pre{margin:0;padding:16px;font-size:12.5px;color:var(--fg);line-height:1.7;white-space:pre-wrap}
  .demo-code{padding:14px 16px;border-bottom:1px solid var(--border);font-size:12.5px;color:var(--muted);line-height:1.7;white-space:pre-wrap;word-break:break-all}
  .demo-code .k{color:var(--accent)}

  /* ─── GETTING STARTED ─── */
  .steps{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:28px;max-width:780px}
  .steps .art{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;min-height:240px;background:#000;display:flex;align-items:center;justify-content:center}
  .steps .art img{width:100%;height:100%;object-fit:cover;display:block}
  .steps .panel{background:rgba(17,17,17,.35);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.06);border-radius:var(--radius);padding:22px 20px}
  .steps .panel h3{font-size:16px;font-weight:700;color:var(--heading);margin-bottom:14px;font-family:'Inter',system-ui,sans-serif}
  .st{display:flex;gap:12px;padding:10px 0;border-top:1px solid var(--border)}
  .st:first-of-type{border-top:0}
  .st .num{color:var(--accent);font-size:11px;font-weight:700;padding-top:2px}
  .st h4{font-size:13px;font-weight:600;color:var(--heading);margin-bottom:2px;font-family:'Inter',system-ui,sans-serif}
  .st p{color:var(--muted);font-size:12px;line-height:1.5}
  @media(max-width:680px){.steps{grid-template-columns:1fr}.steps .art{min-height:180px}}

  /* ─── FAQ ─── */
  .faq{display:flex;flex-direction:column;gap:6px;max-width:700px;margin:28px auto 0}
  .faq details{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
  .faq summary{list-style:none;cursor:pointer;padding:14px 16px;font-size:13px;font-weight:600;color:var(--heading);
    display:flex;align-items:center;justify-content:space-between;gap:12px;font-family:'Inter',system-ui,sans-serif}
  .faq summary::-webkit-details-marker{display:none}
  .faq summary .chev{transition:.2s;color:var(--muted);flex:none;font-size:14px}
  .faq details[open] summary .chev{transform:rotate(180deg)}
  .faq details[open] summary{background:var(--panel2)}
  .faq .ans{padding:0 16px 14px;color:var(--muted);font-size:12.5px;line-height:1.65}

  /* ─── TRUST ─── */
  .trust-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:28px}
  .trust-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);
    padding:22px 18px;text-align:center;transition:.2s}
  .trust-card:hover{border-color:var(--accent);transform:translateY(-2px)}
  .trust-card .trust-icon{font-size:26px;margin-bottom:10px}
  .trust-card h3{font-size:14px;font-weight:700;color:var(--heading);margin-bottom:4px;font-family:'Inter',system-ui,sans-serif}
  .trust-card p{color:var(--muted);font-size:12px;line-height:1.55}
  @media(max-width:680px){.trust-grid{grid-template-columns:1fr}}

  /* ─── FOOTER ─── */
  .foot{border-top:1px solid var(--border);margin-top:0;padding:24px 0;display:flex;align-items:center;
    justify-content:space-between;flex-wrap:wrap;gap:12px}
  .foot .brand{font-size:14px}
  .foot-links{display:flex;gap:16px}
  .foot-links a{color:var(--muted);font-size:12px}
  .foot-links a:hover{color:var(--fg)}
  .foot .cr{color:rgba(255,255,255,.15);font-size:10px;width:100%}
  .foot-tag{text-align:center;padding:20px 0 0;font-weight:700;font-size:13px;color:var(--accent);letter-spacing:.02em}

  /* tags pill row */
  .tags{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:24px}
  .tag{font-size:11px;color:var(--muted);border:1px solid var(--border);padding:5px 12px;border-radius:999px;background:var(--panel)}

  @media(prefers-reduced-motion:reduce){html{scroll-snap-type:none}.hero,section{opacity:1!important;transform:none!important;transition:none}}
</style>
</head>
<body>
<img class="bg-gif" src="/public/bg-ripple.gif" alt="" />

<!-- NAV -->
<nav>
  <div class="wrap">
    <a class="brand" href="/"><img class="logo" src="/assets/sudo-logo.jpg" alt="" /> Sudo</a>
    <div class="nav-center">
      <div class="audio-wrap">
        <div class="viz" id="viz"></div>
        <button class="audio-btn" id="audioBtn" title="Pause">
          <svg id="pauseIcon" viewBox="0 0 24 24"><rect x="6" y="4" width="4" height="16" rx="1"/><rect x="14" y="4" width="4" height="16" rx="1"/></svg>
          <svg id="playIcon" viewBox="0 0 24 24" style="display:none"><path d="M8 5v14l11-7z"/></svg>
        </button>
        <input type="range" class="vol-slider" id="volSlider" min="0" max="100" value="5" title="Volume">
      </div>
    </div>
    <div class="nav-links">
      <a href="/purchase">Purchase</a>
      <a href="/terms">Terms</a>
      <a href="https://discord.gg/WtbT9vKFqW" target="_blank" rel="noopener">Discord</a>
      <a class="btn primary" href="/dashboard">Dashboard →</a>
    </div>
    <button class="hamburger" id="menuToggle" aria-label="Menu">
      <svg viewBox="0 0 24 24"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>
    </button>
  </div>
</nav>

<!-- MOBILE MENU -->
<div class="mobile-menu" id="mobileMenu">
  <button class="mobile-close" id="menuClose" aria-label="Close">
    <svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
  </button>
  <a href="/">Home</a>
  <a href="/purchase">Purchase</a>
  <a href="/terms">Terms</a>
  <a href="https://discord.gg/WtbT9vKFqW" target="_blank" rel="noopener">Discord</a>
  <a href="/dashboard">Dashboard</a>
</div>

<!-- HERO -->
<div class="hero">
  <div class="wrap">
    <span class="badge"><span class="dot"></span> script protection, reimagined</span>
    <h1>Protect <span class="grad">what you build.</span></h1>
    <p class="lede">Turn raw Lua into a locked, key-gated loadstring in seconds. Your source never leaves the vault. Encrypted, single-use, executor-only.</p>
    <div class="hero-cta">
      <a class="btn primary" href="/dashboard">Open Dashboard →</a>
      <a class="btn" href="/getkey">Get a Key</a>
    </div>

    <div class="stats">
      <div class="stat"><div class="val" id="ctr1">9</div><div class="lbl">Security Layers</div></div>
      <div class="stat"><div class="val" id="ctr2">80</div><div class="lbl">Integrity Checks</div></div>
      <div class="stat"><div class="val" id="ctr3">22</div><div class="lbl">Shield Modules</div></div>
      <div class="stat"><div class="val" id="ctr4">&lt;1s</div><div class="lbl">Verification</div></div>
    </div>

    <p class="term-intro center">Your loadstring, authenticating in real time:</p>
    <div class="term">
      <div class="term-bar">
        <div class="dots"><span class="r"></span><span class="y"></span><span class="g"></span></div>
        <span class="ttl">console</span>
      </div>
      <pre id="heroTerm"><span class="cm">-- waiting …</span></pre>
    </div>
  </div>
</div>

<!-- FEATURES -->
<section id="features">
  <div class="wrap center">
    <span class="eyebrow">&#9670; Capabilities</span>
    <h2 class="h">One app, a lot of protection</h2>
    <p class="sub">Everything your scripts need — fast, private, and always up.</p>
    <div class="feat-grid">
      <div class="feature"><div class="feat-ic">&#9889;</div><h3>Instant validation</h3><p>Sub-second key checks keep your users moving with zero friction.</p></div>
      <div class="feature"><div class="feat-ic">&#128737;</div><h3>Tamper resistant</h3><p>Encrypted end-to-end and only served to verified executors.</p></div>
      <div class="feature"><div class="feat-ic">&#8734;</div><h3>No size limits</h3><p>Paste a one-liner or a 20,000-line project — there is no cap.</p></div>
      <div class="feature"><div class="feat-ic">&#128274;</div><h3>Single-use URLs</h3><p>Every payload link self-destructs after one request. Gone in 60 seconds.</p></div>
      <div class="feature"><div class="feat-ic">&#128640;</div><h3>Always online</h3><p>Distributed worldwide on Cloudflare so your links never go dark.</p></div>
      <div class="feature"><div class="feat-ic">&#128736;</div><h3>Per-request obfuscation</h3><p>Every response is re-randomized — no two downloads are the same.</p></div>
    </div>
  </div>
</section>

<!-- SECURITY CHART -->
<section>
  <div class="wrap center">
    <span class="eyebrow">&#9670; Security</span>
    <h2 class="h">Protection strength</h2>
    <p class="sub">How Sudo's engine scores — randomized per request, multi-layer.</p>
    <div class="chart-wrap">
      <div class="chart-row"><span class="chart-label">Security layers</span><div class="chart-bar-bg"><div class="chart-bar purple" style="--w:90%"></div></div><span class="chart-val">9</span></div>
      <div class="chart-row"><span class="chart-label">Integrity checks</span><div class="chart-bar-bg"><div class="chart-bar purple" style="--w:95%"></div></div><span class="chart-val">80</span></div>
      <div class="chart-row"><span class="chart-label">Shield modules</span><div class="chart-bar-bg"><div class="chart-bar purple" style="--w:85%"></div></div><span class="chart-val">22</span></div>
      <div class="chart-row"><span class="chart-label">Depth per layer</span><div class="chart-bar-bg"><div class="chart-bar cyan" style="--w:75%"></div></div><span class="chart-val">12-18</span></div>
      <div class="chart-row"><span class="chart-label">Complexity level</span><div class="chart-bar-bg"><div class="chart-bar cyan" style="--w:60%"></div></div><span class="chart-val">3 lvl</span></div>
      <div class="chart-row"><span class="chart-label">Relay steps</span><div class="chart-bar-bg"><div class="chart-bar cyan" style="--w:50%"></div></div><span class="chart-val">4</span></div>
    </div>
  </div>
</section>

<!-- LIVE DEMO -->
<section>
  <div class="wrap center">
    <span class="eyebrow">&#9670; Live Demo</span>
    <h2 class="h">See it run</h2>
    <p class="sub">A real protected loadstring, authenticating live in the executor console.</p>
    <div class="demo-term">
      <div class="term-bar">
        <div class="dots"><span class="r"></span><span class="y"></span><span class="g"></span></div>
        <span class="ttl">executor</span>
      </div>
      <div class="demo-code"><span class="k">_G.SudoKey</span> = <span class="cs">"sudo-demo-7f3a"</span>
<span class="k">loadstring</span>(game:HttpGet(<span class="cs">"https://hashbrownalt.pages.dev/obf/e/25722d986f5e067170ab24c3cda9456b.lua"</span>))()</div>
      <pre><span id="demoLine1" class="cm">-- waiting …</span>
<span id="demoLine2" class="ok"></span>
<span id="demoLine3" class="cm"></span></pre>
    </div>
  </div>
</section>

<!-- GETTING STARTED -->
<section>
  <div class="wrap center">
    <span class="eyebrow">&#9670; Quick Start</span>
    <h2 class="h">Built to be effortless</h2>
    <p class="sub">Drop-in protection for your Lua — no config, no friction, executor-agnostic.</p>
    <div class="steps">
      <div class="art"><img src="/assets/hand.gif" alt="" loading="lazy" /></div>
      <div class="panel">
        <h3>Getting started</h3>
        <div class="st"><span class="num">01</span><div><h4>Grab a key</h4><p>Claim a license from your dashboard.</p></div></div>
        <div class="st"><span class="num">02</span><div><h4>Upload</h4><p>Drop your raw Lua straight into the Sudo dashboard.</p></div></div>
        <div class="st"><span class="num">03</span><div><h4>Generate</h4><p>Get a clean, tokenless loadstring back in seconds.</p></div></div>
        <div class="st"><span class="num">04</span><div><h4>Protected</h4><p>Obfuscation and executor-only delivery switch on automatically.</p></div></div>
      </div>
    </div>
  </div>
</section>

<!-- FAQ -->
<section>
  <div class="wrap center">
    <span class="eyebrow">&#9670; FAQ</span>
    <h2 class="h">Got questions?</h2>
    <p class="sub">The things people ask most before locking their scripts down with Sudo.</p>
    <div class="faq">
      <details open><summary>Which executors does Sudo work with?<span class="chev">&#8964;</span></summary><div class="ans">Any executor with a standard <code>game:HttpGet</code> — Synapse, Script-Ware, KRNL and friends. The loader auto-detects the available fetch and console APIs, so you don't configure anything per-executor.</div></details>
      <details><summary>Is my source code ever exposed?<span class="chev">&#8964;</span></summary><div class="ans">Your script is fully encrypted at rest and is only handed to verified executors through a one-time link. Browsers and grabbers get bounced to the homepage instead of code.</div></details>
      <details><summary>How fast is key verification?<span class="chev">&#8964;</span></summary><div class="ans">Sub-second. Keys validate in well under a second — so it stays fast even under heavy load.</div></details>
      <details><summary>Can I update a script without breaking its loadstring?<span class="chev">&#8964;</span></summary><div class="ans">Yes. Editing a script keeps the same hash, so every loadstring you've already handed out keeps working — no need to re-share anything.</div></details>
      <details><summary>Is there a size limit?<span class="chev">&#8964;</span></summary><div class="ans">No hard cap. From a one-line snippet to a large multi-thousand-line project, it packs and serves the same way.</div></details>
      <details><summary>Is this truly unbreakable?<span class="chev">&#8964;</span></summary><div class="ans">No honest tool is. Your script runs identically to the original, and the multi-layered security system with short-lived one-time URLs raises the bar extremely hard against grabbers — but a determined attacker is always possible. We won't pretend otherwise.</div></details>
    </div>
  </div>
</section>

<!-- TRUST -->
<section>
  <div class="wrap center">
    <span class="eyebrow">&#9670; Reliability</span>
    <h2 class="h">Why trust Sudo?</h2>
    <p class="sub">Built by one developer who ships, tests, and improves the platform every single day.</p>
    <div class="trust-grid">
      <div class="trust-card"><div class="trust-icon">&#9203;</div><h3>Hours of daily coding</h3><p>Sudo isn't a side project. It gets hours of active development every single day.</p></div>
      <div class="trust-card"><div class="trust-icon">&#128736;</div><h3>Constant updates</h3><p>The protection engine is updated continuously. Every obfuscation layer, every integrity check — always evolving.</p></div>
      <div class="trust-card"><div class="trust-icon">&#128300;</div><h3>Relentless testing</h3><p>Every change is tested across multiple executors and environments before it goes live.</p></div>
    </div>

    <div class="tags">
      <span class="tag">Encrypted</span>
      <span class="tag">Executor-only</span>
      <span class="tag">Single-use URLs</span>
      <span class="tag">Per-request</span>
      <span class="tag">No telemetry</span>
      <span class="tag">Key-gated</span>
    </div>

    <div class="foot-tag">fuck skids</div>
    <div class="foot">
      <a class="brand" href="/"><img class="logo" src="/assets/sudo-logo.jpg" alt="" /> Sudo</a>
      <div class="foot-links">
        <a href="/purchase">Purchase</a>
        <a href="/terms">Terms</a>
        <a href="/dashboard">Dashboard</a>
        <a href="https://discord.gg/WtbT9vKFqW" target="_blank" rel="noopener">Discord</a>
      </div>
      <div class="cr">&copy; 2026 Sudo — All rights reserved.</div>
    </div>
  </div>
</section>

<!-- disable-devtool -->
<script disable-devtool-auto src="https://cdn.jsdelivr.net/npm/disable-devtool"></script>

<!-- scroll reveal (Odysseus-style domino) -->
<script>
(function(){
  var els=document.querySelectorAll('.hero, section');
  var obs=new IntersectionObserver(function(entries){
    entries.forEach(function(e){if(e.isIntersecting)e.target.classList.add('in')});
  },{threshold:0.15});
  els.forEach(function(el){obs.observe(el)});
})();
</script>

<!-- hamburger -->
<script>
(function(){
  var t=document.getElementById('menuToggle'),m=document.getElementById('mobileMenu'),c=document.getElementById('menuClose');
  t.addEventListener('click',function(){m.classList.add('open')});
  c.addEventListener('click',function(){m.classList.remove('open')});
  m.querySelectorAll('a').forEach(function(a){a.addEventListener('click',function(){m.classList.remove('open')})});
})();
</script>

<!-- hero terminal animation -->
<script>
(function(){
  var pre=document.getElementById('heroTerm');
  if(!pre)return;
  var STEPS=18,FILL='\u2588';
  function bar(n){return FILL.repeat(n)+' '.repeat(STEPS-n)}
  function run(){
    var i=0;
    var t=setInterval(function(){
      var pct=Math.round(i*100/STEPS);
      pre.innerHTML='<span class="cm">[Sudo ~ whitelist]</span> authenticating... ['+bar(i)+'] '+pct+'%';
      if(i>=STEPS){
        clearInterval(t);
        var secs=(0.55+Math.random()*0.35).toFixed(7);
        setTimeout(function(){
          pre.innerHTML='<span class="cm">[Sudo ~ whitelist]</span> authenticating... ['+bar(STEPS)+'] 100%\n<span class="ok">[Sudo ~ whitelist] authenticated successfully in '+secs+'s</span>\n<span class="cs">\u00bb sudo-demo-7f3a loaded</span>';
        },180);
        setTimeout(run,4200);
      }
      i++;
    },70);
  }
  run();
})();
</script>

<!-- demo console animation -->
<script>
(function(){
  var l1=document.getElementById('demoLine1'),l2=document.getElementById('demoLine2'),l3=document.getElementById('demoLine3');
  if(!l1)return;
  var STEPS=18,FILL='\u2588';
  function bar(n){return FILL.repeat(n)+' '.repeat(STEPS-n)}
  function run(){
    l2.textContent='';l3.textContent='';
    var i=0;
    var t=setInterval(function(){
      var pct=Math.round(i*100/STEPS);
      l1.innerHTML='[Sudo ~ whitelist] authenticating... ['+bar(i)+'] '+pct+'%';
      if(i>=STEPS){
        clearInterval(t);
        var secs=(0.55+Math.random()*0.35).toFixed(7);
        setTimeout(function(){
          l2.textContent='[Sudo ~ whitelist] authenticated successfully in '+secs+'s';
          l3.textContent='\u00bb sudo-demo-7f3a loaded';
        },180);
        setTimeout(run,4200);
      }
      i++;
    },70);
  }
  run();
})();
</script>

<!-- audio player -->
<script>
(function(){
  function volCurve(x){return x*x*x}
  var savedSlider=localStorage.getItem('dopamineSlider');
  var sliderVal=savedSlider!==null?parseFloat(savedSlider):5;
  var audio=new Audio('/assets/dopamine.mp3');
  audio.loop=true;audio.volume=volCurve(sliderVal/100);
  var volSlider=document.getElementById('volSlider');
  volSlider.value=sliderVal;
  volSlider.addEventListener('input',function(){var s=this.value;audio.volume=volCurve(s/100);localStorage.setItem('dopamineSlider',s);});
  window.addEventListener('storage',function(e){if(e.key==='dopamineSlider'&&e.newValue!==null){var s=parseFloat(e.newValue);audio.volume=volCurve(s/100);volSlider.value=s;}});
  audio.addEventListener('timeupdate',function(){localStorage.setItem('dopamineTime',audio.currentTime)});
  var savedTime=parseFloat(localStorage.getItem('dopamineTime')||'0');
  if(savedTime>0)audio.currentTime=savedTime;
  var ctx,analyser,src,bars=16,vizEl=document.getElementById('viz');
  var btnEl=document.getElementById('audioBtn'),pauseIcon=document.getElementById('pauseIcon'),playIcon=document.getElementById('playIcon');
  var playing=false;
  for(var i=0;i<bars;i++){var b=document.createElement('div');b.className='vbar';b.style.height='3px';vizEl.appendChild(b)}
  var vbars=vizEl.querySelectorAll('.vbar');
  function initAudio(){if(ctx)return;ctx=new(window.AudioContext||window.webkitAudioContext)();analyser=ctx.createAnalyser();analyser.fftSize=64;src=ctx.createMediaElementSource(audio);src.connect(analyser);analyser.connect(ctx.destination)}
  function draw(){if(!playing)return;requestAnimationFrame(draw);var data=new Uint8Array(analyser.frequencyBinCount);analyser.getByteFrequencyData(data);for(var i=0;i<bars;i++){vbars[i].style.height=Math.max(3,(data[i]||0)/255*22)+'px'}}
  function tryPlay(){initAudio();if(ctx.state==='suspended')ctx.resume();audio.play().then(function(){playing=true;pauseIcon.style.display='';playIcon.style.display='none';draw()}).catch(function(){})}
  btnEl.addEventListener('click',function(){if(playing){audio.pause();playing=false;pauseIcon.style.display='none';playIcon.style.display='';for(var i=0;i<bars;i++)vbars[i].style.height='3px'}else tryPlay()});
  function onInteract(){tryPlay();document.removeEventListener('click',onInteract);document.removeEventListener('keydown',onInteract);document.removeEventListener('scroll',onInteract);document.removeEventListener('touchstart',onInteract);document.removeEventListener('mousemove',onInteract)}
  document.addEventListener('click',onInteract);document.addEventListener('keydown',onInteract);document.addEventListener('scroll',onInteract);document.addEventListener('touchstart',onInteract);document.addEventListener('mousemove',onInteract);
  tryPlay();
})();
</script>

<!-- animated stat counters -->
<script>
(function(){
  var targets=[{id:'ctr1',end:9},{id:'ctr2',end:80},{id:'ctr3',end:22},{id:'ctr4',text:'<1s'}];
  var done=false;
  function anim(){
    if(done)return;done=true;
    targets.forEach(function(t){
      var el=document.getElementById(t.id);if(!el)return;
      if(t.text){el.textContent=t.text;return}
      var dur=1200,st=performance.now();
      function step(now){var p=Math.min((now-st)/dur,1);var ease=1-Math.pow(1-p,3);el.textContent=Math.round(ease*t.end);if(p<1)requestAnimationFrame(step)}
      el.textContent='0';requestAnimationFrame(step);
    });
  }
  var obs=new IntersectionObserver(function(entries){entries.forEach(function(e){if(e.isIntersecting)anim()})},{threshold:0.3});
  var s=document.querySelector('.stats');if(s)obs.observe(s);
})();
</script>
<!-- Cloudflare Pages Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "052b84d583f24ae2858851e309abac8b"}'></script><!-- Cloudflare Pages Analytics --></body>
</html>
