KryptonBytes Cloud

Our plans are currently to offer webhosting and possibly cloud storage in the future. Please check back soon!

<!-- ASCII Terminal Banner (drop-in) -->
<div class="ascii-terminal">
  <div class="ascii-header">/usr/bin/krbytes: printing banner...</div>
  <pre id="ascii-output" aria-label="ASCII banner"></pre>
</div>

<style>
  :root {
    --bg: #0b0f14;
    --fg: #c8f6ff;
    --accent: #00e5ff;
    --glow: 0 0 6px #00e5ff, 0 0 12px #00e5ff66, 0 0 24px #00e5ff33;
  }
  .ascii-terminal {
    background: radial-gradient(1200px 600px at 15% 10%, #0d141d 0%, var(--bg) 60%);
    color: var(--fg);
    border: 1px solid #173042;
    border-radius: 10px;
    padding: 16px 18px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.35);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
    overflow: hidden;
  }
  .ascii-header {
    color: #8fd3ff;
    letter-spacing: 0.4px;
    margin-bottom: 8px;
    text-shadow: var(--glow);
    font-size: 0.95rem;
  }
  pre#ascii-output {
    margin: 0;
    white-space: pre;
    line-height: 1.15;
    font-size: 14px;
    text-shadow: var(--glow);
  }
  /* Subtle CRT scanline + vignette */
  .ascii-terminal::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
      linear-gradient(rgba(255,255,255,0.03), rgba(0,0,0,0.07)),
      repeating-linear-gradient(transparent 0 2px, rgba(0,0,0,0.07) 2px 3px);
    mix-blend-mode: soft-light;
  }
</style>

<script>
  // Replace with your ASCII art (keep backticks for multiline)
  const asciiArt = `
  ██╗  ██╗██████╗ ██████╗ ████████╗ ██████╗ ███╗   ██╗██████╗ ██████╗ ██╗   ██╗████████╗███████╗
  ██║ ██╔╝██╔══██╗██╔══██╗╚══██╔══╝██╔═══██╗████╗  ██║██╔══██╗██╔══██╗██║   ██║╚══██╔══╝██╔════╝
  █████╔╝ ██████╔╝██████╔╝   ██║   ██║   ██║██╔██╗ ██║██████╔╝██████╔╝██║   ██║   ██║   ███████╗
  ██╔═██╗ ██╔══██╗██╔══██╗   ██║   ██║   ██║██║╚██╗██║██╔══██╗██╔═══╝ ██║   ██║   ██║   ╚════██║
  ██║  ██╗██║  ██║██║  ██║   ██║   ╚██████╔╝██║ ╚████║██║  ██║██║     ╚██████╔╝   ██║   ███████║
  ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═╝   ╚═╝    ╚═════╝ ╚═╝  ╚═══╝╚═╝  ╚═╝╚═╝      ╚═════╝    ╚═╝   ╚══════╝

  >>> KryptonBytes :: secure • lean • polished
  `;

  // Typewriter effect (simulates C's printf streaming to stdout)
  const el = document.getElementById('ascii-output');
  const speed = 2; // ms per character (lower = faster)
  let i = 0;
  function tick() {
    el.textContent += asciiArt[i];
    i++;
    if (i < asciiArt.length) {
      // Occasional jitter for "terminal" feel
      const jitter = (asciiArt[i] === '\n') ? 30 : 0;
      setTimeout(tick, speed + jitter);
    } else {
      // Blink cursor after completion
      blinkCursor();
    }
  }
  function blinkCursor() {
    let on = true;
    setInterval(() => {
      el.textContent = on ? asciiArt + '▌' : asciiArt + ' ';
      on = !on;
    }, 420);
  }
  // Start on DOM ready
  (document.readyState === 'loading')
    ? document.addEventListener('DOMContentLoaded', tick)
    : tick();
</script>