ミシェルみたいだけど, ‘R’が入ってる感じ!

What am I working on?

I like to make event graphics for my friends, just for fun! Check out my Instagram to see what I’ve done so far.


Work in progress: a custom theme for Kagi search results! It’s Vaporwave-themed. Dark and light mode supported. If you’re a Kagi user, just go to this link and paste the CSS code, which I’ve provided below: https://kagi.com/settings/custom_css

I’m tweaking the CSS when I have a spare moment, but if you find anything you’d like to see or change let me know!

Here’s what it looks like “in the wild”:

Click the Copy button on the top right corner of the code snippet box to copy the entire code!

HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Neon Cascade — Vaporwave Theme for Kagi & Orion</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;800&family=VT323&family=Outfit:wght@300;400;500;600&display=swap" rel="stylesheet">

<style>
/* ======================================================
   PREVIEW PAGE STYLES (this file's own UI)
   ====================================================== */
* { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --preview-bg: #0D0221;
  --preview-panel: #190535;
  --preview-text: #F8F8FF;
  --preview-muted: #C8B8DB;
  --preview-cyan: #27F5DA;
  --preview-pink: #FF71CE;
  --preview-purple: #B967FF;
}

html, body {
  background: var(--preview-bg);
  color: var(--preview-text);
  font-family: 'Outfit', -apple-system, sans-serif;
  min-height: 100vh;
  background-image:
    radial-gradient(ellipse at top left, rgba(185, 103, 255, 0.15), transparent 50%),
    radial-gradient(ellipse at bottom right, rgba(39, 245, 218, 0.1), transparent 50%),
    linear-gradient(rgba(39, 245, 218, 0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(39, 245, 218, 0.04) 1px, transparent 1px);
  background-size: 100% 100%, 100% 100%, 40px 40px, 40px 40px;
  background-attachment: fixed;
}

.page-header {
  text-align: center;
  padding: 3rem 1.5rem 1.5rem;
  max-width: 1000px;
  margin: 0 auto;
}

.page-header h1 {
  font-family: 'Orbitron', monospace;
  font-weight: 800;
  font-size: clamp(1.8rem, 5vw, 3rem);
  letter-spacing: 0.08em;
  background: linear-gradient(90deg, #27F5DA, #B967FF, #FF71CE);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  text-shadow: 0 0 40px rgba(39, 245, 218, 0.3);
  margin-bottom: 0.5rem;
}

.page-header .tagline {
  font-family: 'VT323', monospace;
  font-size: 1.3rem;
  color: var(--preview-cyan);
  letter-spacing: 0.1em;
}

.page-header .tagline::before { content: '// '; opacity: 0.6; }
.page-header .tagline::after  { content: ' //'; opacity: 0.6; }

.theme-toggle {
  display: flex;
  justify-content: center;
  gap: 0.5rem;
  margin: 2rem auto 1rem;
  max-width: 400px;
  padding: 0 1rem;
}

.theme-toggle button {
  font-family: 'Orbitron', monospace;
  font-weight: 600;
  font-size: 0.8rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  background: transparent;
  color: var(--preview-muted);
  border: 1px solid rgba(185, 103, 255, 0.3);
  padding: 0.7rem 1.2rem;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.25s ease;
  flex: 1;
}

.theme-toggle button:hover {
  color: var(--preview-cyan);
  border-color: var(--preview-cyan);
}

.theme-toggle button.active {
  background: linear-gradient(135deg, rgba(39, 245, 218, 0.15), rgba(255, 113, 206, 0.15));
  color: var(--preview-cyan);
  border-color: var(--preview-cyan);
  box-shadow: 0 0 20px rgba(39, 245, 218, 0.3);
}

/* Container that holds the demo + its iframe-like preview frame */
.demo-frame {
  max-width: 1100px;
  margin: 1.5rem auto;
  padding: 0 1rem;
}

.demo-browser {
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid rgba(185, 103, 255, 0.3);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5), 0 0 40px rgba(39, 245, 218, 0.15);
}

.demo-browser-bar {
  background: #0a0118;
  padding: 0.8rem 1rem;
  display: flex;
  gap: 0.5rem;
  align-items: center;
  border-bottom: 1px solid rgba(185, 103, 255, 0.2);
}

.demo-browser-bar .dot {
  width: 12px; height: 12px; border-radius: 50%;
}
.demo-browser-bar .dot:nth-child(1) { background: #FF71CE; }
.demo-browser-bar .dot:nth-child(2) { background: #FFFB96; }
.demo-browser-bar .dot:nth-child(3) { background: #27F5DA; }

.demo-browser-bar .url {
  flex: 1;
  margin-left: 1rem;
  font-family: 'VT323', monospace;
  font-size: 1rem;
  color: rgba(200, 184, 219, 0.5);
  letter-spacing: 0.05em;
}

/* ======================================================
   THE ACTUAL VAPORWAVE THEME (applied inside .vw-scope)
   These are the rules you'd paste into Kagi/Orion.
   ====================================================== */

/* DARK MODE — default */
.vw-scope {
  /* Palette */
  --vw-cyan:     #27F5DA;
  --vw-pink:     #FF71CE;
  --vw-purple:   #B967FF;
  --vw-yellow:   #FFFB96;

  --bg-void:     #0D0221;
  --bg-deep:     #190535;
  --bg-mid:      #2D1B4E;
  --bg-raised:   #3A2370;

  --text-primary: #F8F8FF;
  --text-muted:   #C8B8DB;
  --text-dim:     #8A7CA8;

  --border-glow: rgba(39, 245, 218, 0.3);
  --border-soft: rgba(185, 103, 255, 0.25);

  --shadow-cyan: 0 0 20px rgba(39, 245, 218, 0.4);
  --shadow-pink: 0 0 20px rgba(255, 113, 206, 0.3);
  --shadow-dual: 0 0 20px rgba(39, 245, 218, 0.35), 0 0 40px rgba(255, 113, 206, 0.2);

  --grid-color:  rgba(39, 245, 218, 0.07);

  --font-display: 'Orbitron', 'Courier New', monospace;
  --font-retro:   'VT323', monospace;
  --font-body:    'Outfit', -apple-system, BlinkMacSystemFont, sans-serif;
}

/* LIGHT MODE — vaporwave pastel */
.vw-scope.vw-light {
  --vw-cyan:     #0BB8A4;
  --vw-pink:     #D1208A;
  --vw-purple:   #8A3FC8;
  --vw-yellow:   #D4A200;

  --bg-void:     #FFF0F5;
  --bg-deep:     #F7E5FA;
  --bg-mid:      #ECD4F0;
  --bg-raised:   #DCC2EB;

  --text-primary: #1A0A2E;
  --text-muted:   #4A3570;
  --text-dim:     #7A6595;

  --border-glow: rgba(11, 184, 164, 0.45);
  --border-soft: rgba(138, 63, 200, 0.25);

  --shadow-cyan: 0 4px 16px rgba(11, 184, 164, 0.22);
  --shadow-pink: 0 4px 16px rgba(209, 32, 138, 0.18);
  --shadow-dual: 0 4px 16px rgba(11, 184, 164, 0.25), 0 0 30px rgba(138, 63, 200, 0.12);

  --grid-color:  rgba(138, 63, 200, 0.09);
}

/* Scope styles — apply theme to the demo */
.vw-scope {
  background: var(--bg-void);
  color: var(--text-primary);
  font-family: var(--font-body);
  padding: 2rem 1.5rem;
  min-height: 600px;
  background-image:
    linear-gradient(var(--grid-color) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid-color) 1px, transparent 1px);
  background-size: 40px 40px;
  transition: background 0.3s ease, color 0.3s ease;
}

.vw-scope .kagi-header {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 2rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid var(--border-soft);
}

.vw-scope .kagi-logo {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 1.4rem;
  letter-spacing: 0.1em;
  background: linear-gradient(90deg, var(--vw-cyan), var(--vw-pink));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.vw-scope .search-box {
  flex: 1;
  display: flex;
  gap: 0.5rem;
}

.vw-scope input[type="search"],
.vw-scope input[type="text"] {
  flex: 1;
  background: var(--bg-deep);
  color: var(--text-primary);
  border: 1px solid var(--border-soft);
  border-radius: 8px;
  padding: 0.75rem 1rem;
  font-family: var(--font-body);
  font-size: 0.95rem;
  transition: all 0.2s ease;
}

.vw-scope input[type="search"]:focus,
.vw-scope input[type="text"]:focus {
  outline: none;
  border-color: var(--vw-cyan);
  box-shadow: var(--shadow-cyan);
}

.vw-scope button.primary-btn {
  background: linear-gradient(135deg, var(--vw-cyan), var(--vw-pink));
  color: var(--bg-void);
  border: none;
  padding: 0.75rem 1.4rem;
  border-radius: 8px;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 0.8rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.25s ease;
}

.vw-scope button.primary-btn:hover {
  box-shadow: var(--shadow-dual);
  transform: translateY(-1px);
}

.vw-scope .filters {
  display: flex;
  gap: 0.6rem;
  margin-bottom: 1.5rem;
  flex-wrap: wrap;
}

.vw-scope .filter-chip {
  font-family: var(--font-retro);
  font-size: 1rem;
  padding: 0.3rem 0.8rem;
  background: var(--bg-deep);
  color: var(--text-muted);
  border: 1px solid var(--border-soft);
  border-radius: 20px;
  cursor: pointer;
  transition: all 0.2s ease;
  letter-spacing: 0.05em;
}

.vw-scope .filter-chip:hover,
.vw-scope .filter-chip.active {
  color: var(--vw-cyan);
  border-color: var(--border-glow);
  background: rgba(39, 245, 218, 0.08);
}

.vw-scope .result-meta {
  font-family: var(--font-retro);
  font-size: 1rem;
  color: var(--text-dim);
  margin-bottom: 1.5rem;
  letter-spacing: 0.05em;
}

.vw-scope .search-result {
  background: var(--bg-deep);
  border: 1px solid var(--border-soft);
  border-radius: 10px;
  padding: 1.25rem 1.5rem;
  margin-bottom: 1rem;
  transition: all 0.25s ease;
  position: relative;
  overflow: hidden;
}

.vw-scope .search-result::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 3px;
  background: linear-gradient(180deg, var(--vw-cyan), var(--vw-purple));
  opacity: 0;
  transition: opacity 0.25s ease;
}

.vw-scope .search-result:hover {
  border-color: var(--border-glow);
  box-shadow: var(--shadow-cyan);
  transform: translateY(-2px);
}

.vw-scope .search-result:hover::before {
  opacity: 1;
}

.vw-scope .result-url {
  font-family: var(--font-retro);
  font-size: 1rem;
  color: var(--vw-purple);
  letter-spacing: 0.03em;
  margin-bottom: 0.3rem;
}

.vw-scope .search-result h3 {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 1.1rem;
  margin-bottom: 0.5rem;
  letter-spacing: 0.01em;
}

.vw-scope .search-result h3 a {
  color: var(--vw-cyan);
  text-decoration: none;
  text-shadow: 0 0 8px rgba(39, 245, 218, 0.2);
  transition: all 0.2s ease;
}

.vw-scope.vw-light .search-result h3 a {
  text-shadow: none;
}

.vw-scope .search-result h3 a:hover {
  color: var(--vw-pink);
  text-shadow: 0 0 12px rgba(255, 113, 206, 0.4);
}

.vw-scope.vw-light .search-result h3 a:hover {
  text-shadow: none;
}

.vw-scope .search-result p {
  color: var(--text-muted);
  font-size: 0.92rem;
  line-height: 1.55;
}

.vw-scope .search-result p em {
  color: var(--vw-cyan);
  font-style: normal;
  font-weight: 500;
  background: rgba(39, 245, 218, 0.08);
  padding: 0 3px;
  border-radius: 3px;
}

.vw-scope.vw-light .search-result p em {
  background: rgba(11, 184, 164, 0.12);
}

.vw-scope .result-actions {
  display: flex;
  gap: 1rem;
  margin-top: 0.7rem;
  font-family: var(--font-retro);
  font-size: 0.95rem;
  color: var(--text-dim);
  letter-spacing: 0.05em;
}

.vw-scope .result-actions span {
  cursor: pointer;
  transition: color 0.2s ease;
}

.vw-scope .result-actions span:hover {
  color: var(--vw-pink);
}

/* ======================================================
   CODE OUTPUT SECTION
   ====================================================== */
.code-section {
  max-width: 1100px;
  margin: 3rem auto;
  padding: 0 1rem;
}

.code-section h2 {
  font-family: 'Orbitron', monospace;
  font-weight: 600;
  font-size: 1.3rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--preview-cyan);
  margin-bottom: 0.5rem;
  display: flex;
  align-items: center;
  gap: 0.8rem;
}

.code-section h2::before {
  content: '';
  width: 30px;
  height: 2px;
  background: linear-gradient(90deg, var(--preview-cyan), transparent);
}

.code-section p.instructions {
  color: var(--preview-muted);
  margin-bottom: 1.2rem;
  max-width: 700px;
  line-height: 1.6;
  font-size: 0.95rem;
}

.code-section p.instructions code {
  background: rgba(39, 245, 218, 0.1);
  color: var(--preview-cyan);
  padding: 2px 6px;
  border-radius: 3px;
  font-family: 'VT323', monospace;
  font-size: 1.05rem;
}

.code-wrapper {
  position: relative;
  background: #0a0118;
  border: 1px solid rgba(185, 103, 255, 0.3);
  border-radius: 8px;
  overflow: hidden;
  margin-bottom: 2rem;
}

.code-wrapper .copy-btn {
  position: absolute;
  top: 0.8rem;
  right: 0.8rem;
  background: linear-gradient(135deg, var(--preview-cyan), var(--preview-pink));
  color: #0a0118;
  border: none;
  padding: 0.5rem 1rem;
  border-radius: 4px;
  font-family: 'Orbitron', monospace;
  font-weight: 600;
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.2s ease;
  z-index: 2;
}

.code-wrapper .copy-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 0 15px rgba(39, 245, 218, 0.4);
}

.code-wrapper pre {
  margin: 0;
  padding: 1.5rem;
  padding-top: 3rem;
  overflow-x: auto;
  font-family: 'VT323', 'Courier New', monospace;
  font-size: 1rem;
  line-height: 1.5;
  color: #C8B8DB;
  max-height: 500px;
}

.code-wrapper pre::-webkit-scrollbar { width: 8px; height: 8px; }
.code-wrapper pre::-webkit-scrollbar-track { background: #0a0118; }
.code-wrapper pre::-webkit-scrollbar-thumb {
  background: linear-gradient(var(--preview-cyan), var(--preview-purple));
  border-radius: 4px;
}

.code-wrapper pre .c-comment { color: #7A6595; font-style: italic; }
.code-wrapper pre .c-selector { color: #FF71CE; }
.code-wrapper pre .c-prop { color: #27F5DA; }
.code-wrapper pre .c-val { color: #FFFB96; }
.code-wrapper pre .c-var { color: #B967FF; }

.footer-note {
  max-width: 1100px;
  margin: 2rem auto 3rem;
  padding: 1.5rem;
  text-align: center;
  color: var(--preview-muted);
  font-family: 'VT323', monospace;
  font-size: 1.1rem;
  letter-spacing: 0.05em;
  border-top: 1px solid rgba(185, 103, 255, 0.2);
}

.footer-note span {
  color: var(--preview-cyan);
}
</style>
</head>
<body>

<header class="page-header">
  <h1>NEON CASCADE</h1>
  <p class="tagline">Dark Vaporwave Theme · Base #27F5DA</p>
</header>

<div class="theme-toggle">
  <button id="btn-dark" class="active" onclick="setTheme('dark')">â—¾ Dark Mode</button>
  <button id="btn-light" onclick="setTheme('light')">â—½ Light Mode</button>
</div>

<div class="demo-frame">
  <div class="demo-browser">
    <div class="demo-browser-bar">
      <div class="dot"></div>
      <div class="dot"></div>
      <div class="dot"></div>
      <div class="url">kagi.com/search?q=vaporwave+aesthetic</div>
    </div>

    <div class="vw-scope" id="vwDemo">
      <div class="kagi-header">
        <div class="kagi-logo">KAGI</div>
        <div class="search-box">
          <input type="search" value="vaporwave aesthetic origins">
          <button class="primary-btn">Search</button>
        </div>
      </div>

      <div class="filters">
        <span class="filter-chip active">● All</span>
        <span class="filter-chip">Images</span>
        <span class="filter-chip">Videos</span>
        <span class="filter-chip">News</span>
        <span class="filter-chip">Maps</span>
        <span class="filter-chip">Podcasts</span>
      </div>

      <div class="result-meta">> Found 8,420 results in 0.42 seconds</div>

      <article class="search-result">
        <div class="result-url">https://en.wikipedia.org › wiki › Vaporwave</div>
        <h3><a href="#">Vaporwave — A Microgenre of Electronic Music and Visual Art</a></h3>
        <p><em>Vaporwave</em> is a microgenre that emerged in the early 2010s, characterized by a nostalgic fascination with 80s and 90s consumer culture, ambient muzak, and the aesthetics of early computer graphics.</p>
        <div class="result-actions">
          <span>↗ Open</span>
          <span>☆ Save</span>
          <span>â—‡ Similar</span>
        </div>
      </article>

      <article class="search-result">
        <div class="result-url">https://dummyjournal.com › articles › aesthetic-origins</div>
        <h3><a href="#">The Visual Language of Vaporwave: Grids, Statues & Neon</a></h3>
        <p>From Roman busts floating in digital space to the Windows 95 startup chime, the <em>vaporwave</em> movement remixes forgotten artifacts of the early internet era into dreamlike compositions that feel simultaneously familiar and alien.</p>
        <div class="result-actions">
          <span>↗ Open</span>
          <span>☆ Save</span>
          <span>â—‡ Similar</span>
        </div>
      </article>

      <article class="search-result">
        <div class="result-url">https://retrowavedigest.net › palette-theory</div>
        <h3><a href="#">Why That Cyan-and-Pink Palette Just Works</a></h3>
        <p>The signature <em>vaporwave</em> palette — cyan, hot pink, and purple on a deep void background — triggers nostalgia for CRT monitors, early web design, and the golden age of Miami Vice-era design.</p>
        <div class="result-actions">
          <span>↗ Open</span>
          <span>☆ Save</span>
          <span>â—‡ Similar</span>
        </div>
      </article>
    </div>
  </div>
</div>

<section class="code-section">
  <h2>The CSS — Drop it in</h2>
  <p class="instructions">
    This is the full theme. Paste it into <strong>Kagi → Settings → Appearance → Custom CSS</strong>, or into Orion's <strong>Web Inspector → User Style Sheets</strong> (or any CSS injection extension). The theme uses CSS variables so tweaking colors later is a single-line change. It auto-switches via <code>prefers-color-scheme</code>, and you can also force a mode by adding <code>.vw-light</code> or <code>.vw-dark</code> to <code><html></code>.
  </p>

  <div class="code-wrapper">
    <button class="copy-btn" onclick="copyCode(this)">Copy</button>
    <pre id="css-output"></pre>
  </div>
</section>

<div class="footer-note">
  Based on <span>#27F5DA</span> · Typography: Orbitron + VT323 + Outfit · <span>♡</span> Made for Desert Lotus
</div>

<script>
/* Theme toggle for the preview */
function setTheme(mode) {
  const demo = document.getElementById('vwDemo');
  const darkBtn = document.getElementById('btn-dark');
  const lightBtn = document.getElementById('btn-light');

  if (mode === 'light') {
    demo.classList.add('vw-light');
    lightBtn.classList.add('active');
    darkBtn.classList.remove('active');
  } else {
    demo.classList.remove('vw-light');
    darkBtn.classList.add('active');
    lightBtn.classList.remove('active');
  }
}

/* The actual CSS the user will copy */
const cssCode = `/* =========================================================
   NEON CASCADE — Vaporwave Theme
   Base color: #27F5DA
   For Kagi Search & Orion Browser
   ========================================================= */

@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;800&family=VT323&family=Outfit:wght@300;400;500;600&display=swap');

/* ---------- DARK MODE (default) ---------- */
:root {
  --vw-cyan:    #27F5DA;
  --vw-pink:    #FF71CE;
  --vw-purple:  #B967FF;
  --vw-yellow:  #FFFB96;

  --bg-void:    #0D0221;
  --bg-deep:    #190535;
  --bg-mid:     #2D1B4E;
  --bg-raised:  #3A2370;

  --text-primary: #F8F8FF;
  --text-muted:   #C8B8DB;
  --text-dim:     #8A7CA8;

  --border-glow: rgba(39, 245, 218, 0.3);
  --border-soft: rgba(185, 103, 255, 0.25);

  --shadow-cyan: 0 0 20px rgba(39, 245, 218, 0.4);
  --shadow-pink: 0 0 20px rgba(255, 113, 206, 0.3);
  --shadow-dual: 0 0 20px rgba(39, 245, 218, 0.35),
                 0 0 40px rgba(255, 113, 206, 0.2);

  --grid-color: rgba(39, 245, 218, 0.07);

  --font-display: 'Orbitron', 'Courier New', monospace;
  --font-retro:   'VT323', monospace;
  --font-body:    'Outfit', -apple-system, sans-serif;
}

/* ---------- LIGHT MODE (auto) ---------- */
@media (prefers-color-scheme: light) {
  :root {
    --vw-cyan:    #0BB8A4;
    --vw-pink:    #D1208A;
    --vw-purple:  #8A3FC8;
    --vw-yellow:  #D4A200;

    --bg-void:    #FFF0F5;
    --bg-deep:    #F7E5FA;
    --bg-mid:     #ECD4F0;
    --bg-raised:  #DCC2EB;

    --text-primary: #1A0A2E;
    --text-muted:   #4A3570;
    --text-dim:     #7A6595;

    --border-glow: rgba(11, 184, 164, 0.45);
    --border-soft: rgba(138, 63, 200, 0.25);

    --shadow-cyan: 0 4px 16px rgba(11, 184, 164, 0.22);
    --shadow-pink: 0 4px 16px rgba(209, 32, 138, 0.18);
    --shadow-dual: 0 4px 16px rgba(11, 184, 164, 0.25),
                   0 0 30px rgba(138, 63, 200, 0.12);

    --grid-color: rgba(138, 63, 200, 0.09);
  }
}

/* ---------- Manual override classes ---------- */
html.vw-light { /* force light — paste the light values above here if you want */ }
html.vw-dark  { /* force dark */ }

/* =========================================================
   GLOBAL STYLES
   ========================================================= */
body {
  background-color: var(--bg-void);
  color: var(--text-primary);
  font-family: var(--font-body);
  background-image:
    linear-gradient(var(--grid-color) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid-color) 1px, transparent 1px);
  background-size: 40px 40px;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  color: var(--text-primary);
  letter-spacing: 0.02em;
}

a {
  color: var(--vw-cyan);
  text-decoration: none;
  text-shadow: 0 0 8px rgba(39, 245, 218, 0.2);
  transition: all 0.2s ease;
}
a:hover {
  color: var(--vw-pink);
  text-shadow: 0 0 12px rgba(255, 113, 206, 0.4);
}
a:visited { color: var(--vw-purple); }

/* =========================================================
   KAGI SEARCH SELECTORS
   (Kagi's class names — tweak if yours differ)
   ========================================================= */
.search-result,
.sri,
.search_item,
._0_result {
  background: var(--bg-deep);
  border: 1px solid var(--border-soft);
  border-radius: 10px;
  padding: 1.25rem 1.5rem;
  margin-bottom: 1rem;
  transition: all 0.25s ease;
  position: relative;
  overflow: hidden;
}

.search-result:hover,
.sri:hover,
._0_result:hover {
  border-color: var(--border-glow);
  box-shadow: var(--shadow-cyan);
  transform: translateY(-2px);
}

/* Search result title */
.search-result h3 a,
.__sri-title a {
  color: var(--vw-cyan);
  text-shadow: 0 0 8px rgba(39, 245, 218, 0.2);
}

.search-result h3 a:hover { color: var(--vw-pink); }

/* URL display */
.__sri-url,
.result-url,
.__sri_url_box {
  color: var(--vw-purple);
  font-family: var(--font-retro);
  font-size: 0.95rem;
}

/* Snippet / description */
.__sri-desc,
.result-snippet {
  color: var(--text-muted);
}

/* Highlighted query term */
.__sri-desc em,
.search-result em,
mark {
  color: var(--vw-cyan);
  font-style: normal;
  font-weight: 500;
  background: rgba(39, 245, 218, 0.1);
  padding: 0 3px;
  border-radius: 3px;
}

/* =========================================================
   FORMS & INPUTS
   ========================================================= */
input[type="search"],
input[type="text"],
input[type="email"],
textarea {
  background: var(--bg-deep);
  color: var(--text-primary);
  border: 1px solid var(--border-soft);
  border-radius: 8px;
  padding: 0.75rem 1rem;
  font-family: var(--font-body);
  transition: all 0.2s ease;
}

input:focus, textarea:focus {
  outline: none;
  border-color: var(--vw-cyan);
  box-shadow: var(--shadow-cyan);
}

/* =========================================================
   BUTTONS
   ========================================================= */
button,
.btn,
input[type="submit"] {
  background: linear-gradient(135deg, var(--vw-cyan), var(--vw-pink));
  color: var(--bg-void);
  border: none;
  padding: 0.7rem 1.4rem;
  border-radius: 8px;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 0.8rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.25s ease;
}

button:hover {
  box-shadow: var(--shadow-dual);
  transform: translateY(-1px);
}

/* =========================================================
   SCROLLBAR (WebKit / Chromium-based, works in Orion)
   ========================================================= */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--bg-void); }
::-webkit-scrollbar-thumb {
  background: linear-gradient(var(--vw-cyan), var(--vw-purple));
  border-radius: 5px;
  border: 2px solid var(--bg-void);
}
::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(var(--vw-pink), var(--vw-cyan));
}

/* =========================================================
   SELECTION
   ========================================================= */
::selection {
  background: var(--vw-pink);
  color: var(--bg-void);
  text-shadow: none;
}

/* =========================================================
   FOCUS RING (accessibility)
   ========================================================= */
:focus-visible {
  outline: 2px solid var(--vw-cyan);
  outline-offset: 2px;
}
`;

/* Inject CSS into the code block with simple syntax highlighting */
function highlightCSS(css) {
  return css
    .replace(/&/g, '&')
    .replace(/</g, '<')
    .replace(/>/g, '>')
    .replace(/(\/\*[\s\S]*?\*\/)/g, '<span class="c-comment">$1</span>')
    .replace(/(--[\w-]+)(?=:)/g, '<span class="c-var">$1</span>')
    .replace(/(#[0-9A-Fa-f]{3,8})/g, '<span class="c-val">$1</span>')
    .replace(/(^|\n)([.:#@][\w\-\s,.\[\]:()='"*~+&>]+)(?=\s*\{)/g, '$1<span class="c-selector">$2</span>');
}

document.getElementById('css-output').innerHTML = highlightCSS(cssCode);

/* Copy-to-clipboard */
function copyCode(btn) {
  navigator.clipboard.writeText(cssCode).then(() => {
    const original = btn.textContent;
    btn.textContent = '✓ Copied';
    btn.style.background = 'linear-gradient(135deg, #FFFB96, #27F5DA)';
    setTimeout(() => {
      btn.textContent = original;
      btn.style.background = '';
    }, 1800);
  });
}
</script>

</body>
</html>

I’ll post more projects on this page soon!