<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, minimal-ui">
  <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
  <link rel="shortcut icon" href="/favicon.ico" />
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
  <meta name="apple-mobile-web-app-title" content="tensa" />
  <link rel="manifest" href="/site.webmanifest" />
  <title>tensa</title>
  
  <meta property="og:title" content="tensa">
  <meta property="og:description" content="tensa.dev">
  <meta property="og:url" content="https://tensa.dev">
  <meta property="og:type" content="website">

  <link rel="dns-prefetch" href="https://yogpd.tensa.dev/">
  <link rel="preconnect" href="https://yogpd.tensa.dev/" crossorigin>
  
  <style>
  :root {
    --bg-primary: #121212;
    --bg-secondary: #1e1e1e;
    --text-primary: #e0e0e0;
    --text-secondary: #a0a0a0;
    --accent: #f0f0f0;
    --border: #333;
    --accent-hover: #ff6b6b;
    --transition-speed: 0.3s;
  }

  :root[data-theme='dark'] {
    --bg-primary: #f4f4f4;
    --bg-secondary: #e0e0e0;
    --text-primary: #333;
    --text-secondary: #666;
    --accent: #4a4a4a;
    --border: #d0d0d0;
    --accent-hover: #ff4757;
  }

  * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    transition: 
      background-color var(--transition-speed), 
      color var(--transition-speed),
      transform var(--transition-speed),
      box-shadow var(--transition-speed);
  }

  @keyframes fadeIn {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
  }

  @keyframes float {
    0% { transform: translateY(0px); }
    50% { transform: translateY(-10px); }
    100% { transform: translateY(0px); }
  }

  html, body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
    line-height: 1.6;
    background-color: var(--bg-primary);
    color: var(--text-primary);
    height: 100%;
    scroll-behavior: smooth;
    overflow-x: hidden;
  }

  body {
    display: flex;
    flex-direction: column;
    max-width: 800px;
    margin: 0 auto;
    padding: 2rem 1rem;
    animation: fadeIn 0.4s ease;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--accent) var(--bg-secondary);
  }

  body::-webkit-scrollbar {
    width: 8px;
  }

  body::-webkit-scrollbar-track {
    background: var(--bg-secondary);
  }

  body::-webkit-scrollbar-thumb {
    background-color: var(--accent);
    border-radius: 20px;
    border: 2px solid var(--bg-secondary);
  }

  .theme-toggle {
    position: fixed;
    top: 1rem;
    right: 1rem;
    background: var(--bg-secondary);
    border: 1px solid var(--border);
    color: var(--text-primary);
    padding: 0.5rem 1rem;
    cursor: pointer;
    border-radius: 4px;
    z-index: 10;
    transition: all var(--transition-speed);
  }

  .theme-toggle:hover {
    transform: scale(1.1);
    background: var(--accent);
    color: var(--bg-primary);
  }

  .profile {
    text-align: center;
    margin-bottom: 2rem;
    padding-bottom: 2rem;
    border-bottom: 1px solid var(--border);
    perspective: 1000px;
  }

  .profile-image {
    border-radius: 50%;
    border: 4px solid var(--accent);
    margin-bottom: 1rem;
    transition: all 0.5s ease;
    will-change: transform;
  }

  .profile-image:hover {
    transform: 
      rotateY(20deg) 
      scale(1.05) 
      translateZ(50px);
    box-shadow: 0 15px 30px rgba(0,0,0,0.3);
    animation: float 2s ease-in-out infinite;
  }

  .profile-name {
    font-size: 2rem;
    margin-bottom: 1rem;
    color: var(--accent);
    transition: transform var(--transition-speed);
  }

  .profile-name:hover {
    transform: scale(1.1) skew(-5deg);
  }

  .social-links {
    display: flex;
    justify-content: center;
    gap: 1rem;
    flex-wrap: wrap;
  }

  .social-links a {
    color: var(--text-secondary);
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    transition: all var(--transition-speed);
    position: relative;
    overflow: hidden;
  }

  .social-links a::before {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 0;
    height: 2px;
    background-color: var(--accent-hover);
    transition: width var(--transition-speed) ease;
  }

  .social-links a:hover {
    color: var(--accent-hover);
    transform: translateY(-5px);
  }

  .social-links a:hover::before {
    width: 100%;
  }

  .section {
    margin-bottom: 2rem;
    opacity: 0;
    transform: translateY(20px);
    transition: 
      opacity var(--transition-speed), 
      transform var(--transition-speed);
  }

  .section.appear {
    opacity: 1;
    transform: translateY(0);
  }

  .section-title {
    border-bottom: 2px solid var(--accent);
    padding-bottom: 0.5rem;
    margin-bottom: 1rem;
    color: var(--accent);
    transition: color var(--transition-speed);
  }

  .section-title:hover {
    color: var(--accent-hover);
  }

  .entry {
    background-color: var(--bg-secondary);
    padding: 1rem;
    border-radius: 4px;
    margin-bottom: 0.5rem;
    border-left: 4px solid var(--accent);
    transition: all var(--transition-speed);
    position: relative;
    overflow: hidden;
  }

  .entry::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(
      120deg, 
      transparent, 
      rgba(255,255,255,0.1), 
      transparent
    );
    transition: all var(--transition-speed);
  }

  .entry:hover {
    transform: scale(1.02) translateX(10px);
    box-shadow: 0 10px 20px rgba(0,0,0,0.2);
  }

  .entry:hover::before {
    left: 100%;
  }

  a {
    color: var(--accent);
    text-decoration: none;
    transition: color var(--transition-speed);
  }

  a:hover {
    text-decoration: underline;
    color: var(--accent-hover);
  }

  @media (max-width: 600px) {
    body {
      padding: 1rem;
    }
    .social-links {
      flex-direction: column;
      align-items: center;
    }
  }
  </style>
</head>
<body data-theme="<%= @theme %>">
  <button class="theme-toggle" onclick="toggleTheme()">
    <i class="fas fa-adjust"></i> Switch Theme
  </button>

  <main>
    <section class="profile">
      <img 
        src="https://cdn.discordapp.com/avatars/1266530258522345574/adff6139dce70786e91d6812b6334397.png?size=2048" 
        alt="pfp" 
        class="profile-image" 
        loading="lazy" 
        width="150" 
        height="150"
      >
      <h1 class="profile-name">tensa</h1>
      <nav class="social-links">
        <a href="https://discord.com/users/1266530258522345574/" target="_blank" rel="noopener noreferrer">
          <i class="fab fa-discord"></i> Discord
        </a>
        <a href="https://www.youtube.com/@tensa-dev/" target="_blank" rel="noopener noreferrer">
          <i class="fab fa-youtube"></i> YouTube
        </a>
        <a href="https://github.com/serathinite" target="_blank" rel="noopener noreferrer">
          <i class="fab fa-github"></i> GitHub
        </a>
        <a href="https://yogpd.tensa.dev/?from=https://tensa.dev/" target="" rel="noopener noreferrer">
        <i class="fa-solid fa-globe"></i> YoGPD
        </a>      
      </nav>
    </section>

    <div>
      <section class="section">
        <h2 class="section-title">Bio</h2>
        <%= @bio %>
      </section>

      <section class="section">
        <h2 class="section-title">Blog</h2>
        <div class="entry">
          <p>Thursday, December 5, 2024 PT: Updated CSS.</p>
        </div>
        <div class="entry">
          <p>Monday, December 2, 2024 PT: Did some site optimizations.</p>
        </div>
        <div class="entry">
          <p>Sunday, December 1, 2024 PT: Site created.</p>
        </div>
      </section>
    </div>
  </main>

  <link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
  <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
  <noscript>
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600&display=swap">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css">
  </noscript>

  <script>
  (function() {
    function detectTheme() {
      const savedTheme = localStorage.getItem('site-theme');
      if (savedTheme) return savedTheme;

      return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'light' : 'dark';
    }

    function setTheme(theme) {
      const body = document.documentElement;
      body.setAttribute('data-theme', theme);
      localStorage.setItem('site-theme', theme);
    }

    function initTheme() {
      const initialTheme = detectTheme();
      setTheme(initialTheme);
    }

    function handleScrollAnimations() {
      const sections = document.querySelectorAll('.section');
      const options = {
        threshold: 0.1
      };

      const observer = new IntersectionObserver((entries, observer) => {
        entries.forEach(entry => {
          if (entry.isIntersecting) {
            entry.target.classList.add('appear');
          } else {
            entry.target.classList.remove('appear');
          }
        });
      }, options);

      sections.forEach(section => {
        observer.observe(section);
      });
    }

    window.toggleTheme = function() {
      const currentTheme = document.documentElement.getAttribute('data-theme');
      const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
      setTheme(newTheme);
    };

    document.addEventListener('DOMContentLoaded', () => {
      initTheme();
      handleScrollAnimations();
    });

    window.matchMedia('(prefers-color-scheme: dark)').addListener(e => {
      setTheme(e.matches ? 'light' : 'dark');
    });
  })();
</script>
</body>
</html>