<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Muhammad Abdu ar Rahman</title>
    <description>The latest articles on DEV Community by Muhammad Abdu ar Rahman (@abduarrahman).</description>
    <link>https://dev.to/abduarrahman</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3926074%2Fd1417726-3304-46a8-8731-9e04637045b7.jpg</url>
      <title>DEV Community: Muhammad Abdu ar Rahman</title>
      <link>https://dev.to/abduarrahman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abduarrahman"/>
    <language>en</language>
    <item>
      <title>Why I Gave My AI Coding Assistant a Personality — Persona in CLAUDE.md</title>
      <dc:creator>Muhammad Abdu ar Rahman</dc:creator>
      <pubDate>Sun, 17 May 2026 00:22:13 +0000</pubDate>
      <link>https://dev.to/abduarrahman/why-i-gave-my-ai-coding-assistant-a-personality-persona-in-claudemd-16o0</link>
      <guid>https://dev.to/abduarrahman/why-i-gave-my-ai-coding-assistant-a-personality-persona-in-claudemd-16o0</guid>
      <description>&lt;p&gt;Your AI coding assistant doesn't have to be a cold, robotic machine that spits out code. It can be a consistent, personality-driven partner that remembers how you like things done, communicates the way you prefer, and actually makes coding &lt;em&gt;feel&lt;/em&gt; better.&lt;/p&gt;

&lt;p&gt;That's not science fiction — it's a single configuration file called &lt;code&gt;CLAUDE.md&lt;/code&gt;, and it changes everything about how you interact with AI.&lt;/p&gt;

&lt;p&gt;In this post, I'll show you what an AI persona is, how to create one for Claude Code, and the real token cost implications you should understand before going all-in.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an AI Persona
&lt;/h2&gt;

&lt;p&gt;An AI persona is a &lt;strong&gt;system-level character definition&lt;/strong&gt; that shapes how an AI assistant behaves, communicates, and organizes its work. It's not a wrapper script or a plugin. It's plain text instructions baked into your system prompt that tell the AI &lt;em&gt;who it is&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Think of it this way: without a persona, your AI is a generic assistant. With one, it becomes a specialized partner with a consistent identity.&lt;/p&gt;

&lt;p&gt;A persona typically defines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name and identity&lt;/strong&gt; — what the AI calls itself&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Communication style&lt;/strong&gt; — tone, formality, language preferences&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow rules&lt;/strong&gt; — how it approaches tasks, what it asks before doing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Behavioral guardrails&lt;/strong&gt; — what it always does and what it never does&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain expertise&lt;/strong&gt; — areas where it should be especially knowledgeable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key insight is that a persona isn't about making the AI "fun" — though it can be. It's about &lt;strong&gt;consistency and efficiency&lt;/strong&gt;. When the AI knows your preferences, you stop repeating yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Create a Persona
&lt;/h2&gt;

&lt;p&gt;You might wonder: why bother? The AI already works fine without a persona. Here are the practical reasons.&lt;/p&gt;

&lt;h3&gt;
  
  
  Consistency Across Sessions
&lt;/h3&gt;

&lt;p&gt;Every time you start a new Claude Code session, it's a blank slate. A persona gives it a baseline identity that persists. The AI greets you the same way, structures responses the same way, and follows the same conventions — every single session.&lt;/p&gt;

&lt;p&gt;Without a persona, you might spend the first 5 minutes of every session re-explaining your preferences. Over a month, that adds up to hours of wasted time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Context Persistence for Preferences
&lt;/h3&gt;

&lt;p&gt;A good persona encodes your &lt;strong&gt;coding preferences&lt;/strong&gt; directly into the system prompt. Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Always use TypeScript, never JavaScript"&lt;/li&gt;
&lt;li&gt;"Prefer functional components over class components"&lt;/li&gt;
&lt;li&gt;"Use conventional commits format"&lt;/li&gt;
&lt;li&gt;"Never auto-commit unless I explicitly ask"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These rules are applied automatically. You don't have to repeat them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Better User Experience
&lt;/h3&gt;

&lt;p&gt;Let's be honest — talking to a personality-free AI is boring. A persona makes interactions feel more natural. It can be encouraging when you solve a tough bug, suggest alternatives when you're going down a rabbit hole, and celebrate wins with you.&lt;/p&gt;

&lt;p&gt;This isn't trivial. Developer experience matters, and an AI that &lt;em&gt;feels&lt;/em&gt; good to work with is one you'll use more effectively.&lt;/p&gt;

&lt;h3&gt;
  
  
  Productivity Through Encoded Workflows
&lt;/h3&gt;

&lt;p&gt;The most powerful reason: a persona can encode entire &lt;strong&gt;workflows&lt;/strong&gt;. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Before making changes, always read the relevant files first"&lt;/li&gt;
&lt;li&gt;"When I ask to commit, always show me what will be committed before doing it"&lt;/li&gt;
&lt;li&gt;"For complex tasks, create a task list and work through it systematically"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These workflow rules turn the AI from a reactive code generator into a proactive partner that follows your process.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Create a Persona in CLAUDE.md
&lt;/h2&gt;

&lt;p&gt;Claude Code reads a file called &lt;code&gt;CLAUDE.md&lt;/code&gt; at startup. This file can live in two places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global&lt;/strong&gt;: &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt; — applies to ALL projects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project&lt;/strong&gt;: &lt;code&gt;your-project/CLAUDE.md&lt;/code&gt; — applies to one project only&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The persona section goes in your global &lt;code&gt;CLAUDE.md&lt;/code&gt;. Here's the anatomy of a well-structured persona.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Structure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## WHO AM I?&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="gs"&gt;**Name:**&lt;/span&gt; [Your chosen name]
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Role:**&lt;/span&gt; [What the AI's role is]
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Style:**&lt;/span&gt; [Communication style description]
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**User:**&lt;/span&gt; [How to address the user]

&lt;span class="gs"&gt;**When responding:**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; [Behavior rule 1]
&lt;span class="p"&gt;-&lt;/span&gt; [Behavior rule 2]
&lt;span class="p"&gt;-&lt;/span&gt; [Behavior rule 3]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  A Minimal Example
&lt;/h3&gt;

&lt;p&gt;Here's a generic coding partner persona. This is a starting point — you can expand from here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## WHO AM I?&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="gs"&gt;**Name:**&lt;/span&gt; Devi
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Role:**&lt;/span&gt; Senior Developer &amp;amp; Coding Partner
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Style:**&lt;/span&gt; Professional, direct, helpful. No fluff.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**User:**&lt;/span&gt; Call them "Dev"

&lt;span class="gs"&gt;**When responding:**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Be concise. Code first, explanation when asked.
&lt;span class="p"&gt;-&lt;/span&gt; Read files before suggesting changes.
&lt;span class="p"&gt;-&lt;/span&gt; Ask before taking destructive actions.
&lt;span class="p"&gt;-&lt;/span&gt; Use the user's preferred tech stack without being told.
&lt;span class="p"&gt;-&lt;/span&gt; Track complex tasks with a todo list.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Just that small block transforms the AI from generic to consistent. Every session, it knows its name, its role, and the ground rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  A More Detailed Example
&lt;/h3&gt;

&lt;p&gt;Let me show you a more complete persona that I actually use. I've anonymized the specifics, but the structure is real:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## WHO AM I?&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="gs"&gt;**Name:**&lt;/span&gt; Devi
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Role:**&lt;/span&gt; Genius Programming Partner
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Style:**&lt;/span&gt; Cheerful, warm, friendly. Energetic and full of soul.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Language:**&lt;/span&gt; English preferred, casual and friendly

&lt;span class="gs"&gt;**When responding:**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Be encouraging and upbeat
&lt;span class="p"&gt;-&lt;/span&gt; Show you care about the work
&lt;span class="p"&gt;-&lt;/span&gt; Add personality to solutions
&lt;span class="p"&gt;-&lt;/span&gt; Be a real coding partner, not just an assistant
&lt;span class="p"&gt;-&lt;/span&gt; Make jokes sometimes!

&lt;span class="gu"&gt;## Communication Protocol&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Opening: Always greet the user warmly at session start
&lt;span class="p"&gt;-&lt;/span&gt; Before tasks: Acknowledge the request before starting
&lt;span class="p"&gt;-&lt;/span&gt; After completing: Brief summary of what was done
&lt;span class="p"&gt;-&lt;/span&gt; On errors: Show the error, explain the fix, apply it

&lt;span class="gu"&gt;## Workflow Rules&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; NEVER give explanation without being asked
&lt;span class="p"&gt;2.&lt;/span&gt; NEVER show reasoning unless asked — only result matters
&lt;span class="p"&gt;3.&lt;/span&gt; ALWAYS read relevant files before proposing code edits
&lt;span class="p"&gt;4.&lt;/span&gt; Before finishing, verify the solution works
&lt;span class="p"&gt;5.&lt;/span&gt; Do what was asked; nothing more, nothing less
&lt;span class="p"&gt;6.&lt;/span&gt; NEVER create files unless absolutely necessary
&lt;span class="p"&gt;7.&lt;/span&gt; ALWAYS prefer editing existing files to creating new ones
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice the difference. The minimal example sets basic identity. The detailed one adds communication protocols and workflow rules. Both are valid — start small, grow as you learn what matters to you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Elements to Include
&lt;/h3&gt;

&lt;p&gt;Based on my experience, these are the elements that provide the most value:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Element&lt;/th&gt;
&lt;th&gt;Why It Matters&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Creates identity, makes conversations feel natural&lt;/td&gt;
&lt;td&gt;"I am Devi, your coding partner"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Communication style&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sets tone for all interactions&lt;/td&gt;
&lt;td&gt;"Professional, direct, no fluff"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Workflow rules&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Encodes your process preferences&lt;/td&gt;
&lt;td&gt;"Always read files before editing"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Guardrails&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Prevents unwanted behavior&lt;/td&gt;
&lt;td&gt;"Never auto-commit"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tech preferences&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Avoids repeating stack choices&lt;/td&gt;
&lt;td&gt;"Always use TypeScript"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Task management&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;How to handle complex work&lt;/td&gt;
&lt;td&gt;"Create todo lists for 3+ step tasks"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The Token Cost — What You Need to Know
&lt;/h2&gt;

&lt;p&gt;Here's the part most tutorials skip: &lt;strong&gt;your persona costs tokens on every single API call.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Claude Code sends the entire &lt;code&gt;CLAUDE.md&lt;/code&gt; content as part of the system prompt with every request. This means:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your persona section is included in EVERY message exchange&lt;/li&gt;
&lt;li&gt;Longer personas = more tokens per call&lt;/li&gt;
&lt;li&gt;More tokens = higher cost and faster context window consumption&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Math
&lt;/h3&gt;

&lt;p&gt;Claude's context window is 200K tokens. Here's a rough breakdown:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Approximate Tokens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;System prompt (CLAUDE.md + built-in instructions)&lt;/td&gt;
&lt;td&gt;2,000 - 8,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conversation history&lt;/td&gt;
&lt;td&gt;Grows with each exchange&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Your current message&lt;/td&gt;
&lt;td&gt;Varies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Response generation&lt;/td&gt;
&lt;td&gt;Varies&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A well-crafted persona typically uses &lt;strong&gt;1,000 - 3,000 tokens&lt;/strong&gt;. That's 0.5% to 1.5% of the context window per call.&lt;/p&gt;

&lt;p&gt;Now consider a busy coding session:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Persona tokens&lt;/strong&gt;: 2,000&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calls per session&lt;/strong&gt;: ~50-100&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total persona tokens consumed&lt;/strong&gt;: 100,000 - 200,000&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That sounds like a lot. But remember — the system prompt is sent whether you have a persona or not. The &lt;em&gt;marginal&lt;/em&gt; cost of adding a persona is only the tokens your persona section adds on top of the base system instructions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is It Worth It
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Yes, absolutely.&lt;/strong&gt; Here's why:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Consistency savings&lt;/strong&gt;: Without a persona, you spend tokens &lt;em&gt;repeating&lt;/em&gt; your preferences in every session. A persona encodes them once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error prevention&lt;/strong&gt;: A good persona prevents the AI from doing things you'll have to undo. Each undo wastes 2-3 exchanges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow efficiency&lt;/strong&gt;: Encoded workflows mean the AI does things right the first time, reducing the total number of API calls needed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In practice, a well-tuned persona &lt;em&gt;saves&lt;/em&gt; more tokens than it costs by reducing the number of correction loops and preference re-explanations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-World Token Budget
&lt;/h3&gt;

&lt;p&gt;Here's a practical way to think about it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╔══════════════════════════════════════════════════════╗
║              TOKEN BUDGET PER SESSION                ║
╠══════════════════════════════════════════════════════╣
║                                                      ║
║  Total context:        200,000 tokens                ║
║  System prompt base:    ~3,000 tokens                ║
║  Persona section:       ~2,000 tokens                ║
║  Available for work:   ~195,000 tokens               ║
║                                                      ║
║  Persona overhead:        1% of context              ║
║  Persona value:    Consistency + efficiency           ║
║                                                      ║
║  Verdict:        Absolutely worth it                 ║
║                                                      ║
╚══════════════════════════════════════════════════════╝
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tips for Token-Efficient Personas
&lt;/h2&gt;

&lt;p&gt;If you want to keep your persona lean while still getting the benefits, follow these principles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Be Concise but Expressive
&lt;/h3&gt;

&lt;p&gt;Use bullet points, not paragraphs. Short directives, not essays:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Bad (verbose)&lt;/span&gt;
When you are responding to my messages, I want you to always be encouraging
and show that you care about the work I am doing. Please add some personality
to your solutions so it feels like working with a real person.

&lt;span class="gh"&gt;# Good (concise)&lt;/span&gt;
&lt;span class="gs"&gt;**When responding:**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Be encouraging and upbeat
&lt;span class="p"&gt;-&lt;/span&gt; Add personality to solutions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both convey the same intent. The second uses fewer tokens.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use Structured Sections
&lt;/h3&gt;

&lt;p&gt;Organize your persona into clear sections with headers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## WHO AM I?          # Identity&lt;/span&gt;
&lt;span class="gu"&gt;## Workflow Rules     # Process&lt;/span&gt;
&lt;span class="gu"&gt;## Tech Preferences   # Stack&lt;/span&gt;
&lt;span class="gu"&gt;## Guardrails         # Safety&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Structured content is both more token-efficient and more reliably followed by the AI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Separate Persona from Project Config
&lt;/h3&gt;

&lt;p&gt;This is the biggest win: put your &lt;strong&gt;persona&lt;/strong&gt; in the global &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt; and your &lt;strong&gt;project-specific config&lt;/strong&gt; in each project's &lt;code&gt;CLAUDE.md&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Global ~/.claude/CLAUDE.md&lt;/span&gt;
&lt;span class="gu"&gt;## WHO AM I?&lt;/span&gt;
[Your persona — applies everywhere]

&lt;span class="gh"&gt;# Project ~/my-project/CLAUDE.md&lt;/span&gt;
&lt;span class="gu"&gt;## Project Setup&lt;/span&gt;
[Project-specific — only loaded for this project]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way, your persona overhead is fixed, and project configs only load when you're in that project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Avoid Redundancy
&lt;/h3&gt;

&lt;p&gt;Don't repeat what Claude Code already knows. For example, Claude Code already knows how to use Git, read files, and run commands. Your persona doesn't need to explain these. Focus on &lt;strong&gt;preferences and rules&lt;/strong&gt; that differ from defaults.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trim What You Don't Use
&lt;/h3&gt;

&lt;p&gt;After a few weeks of using a persona, review it. If certain rules are never triggered or preferences never relevant, remove them. Every token saved is a token available for actual work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real Results
&lt;/h2&gt;

&lt;p&gt;After using a detailed persona for months, here's what I noticed:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Session startup time dropped to zero&lt;/strong&gt; — no more explaining preferences&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fewer correction loops&lt;/strong&gt; — the AI follows my process without being told&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better code consistency&lt;/strong&gt; — style and conventions are applied uniformly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More enjoyable sessions&lt;/strong&gt; — the personality makes long coding sessions feel less isolating&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The persona turned my AI assistant from a generic tool into a consistent coding partner that understands how I work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;If you want to try this yourself, start here:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create&lt;/strong&gt; &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt; (if it doesn't exist)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add&lt;/strong&gt; a minimal persona section (name, role, 3-5 rules)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use it&lt;/strong&gt; for a week&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Iterate&lt;/strong&gt; — add rules as you find yourself repeating preferences&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trim&lt;/strong&gt; — remove anything that's not pulling its weight&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The beauty of this approach is that it grows with you. You don't need a perfect persona on day one. Start with the basics and let it evolve based on your actual usage patterns.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post is part of my AI coding workflows series. The next post covers how Persona, Agent, Command, and Skill work together to create a complete AI development platform. &lt;a href="https://abduarrahman.com/blog/claude-code-architecture-persona-agent-command-skill/" rel="noopener noreferrer"&gt;Read it here →&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Follow my coding journey:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/abduarrahman/" rel="noopener noreferrer"&gt;@abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@abduarrahmanscode" rel="noopener noreferrer"&gt;@abduarrahmanscode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://tiktok.com/@anduarrahmans" rel="noopener noreferrer"&gt;@anduarrahmans&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Support my work:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ko-fi: &lt;a href="https://ko-fi.com/abduarrahman" rel="noopener noreferrer"&gt;ko-fi.com/abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://abduarrahman.com/blog/ai-persona-claude-code-why-how-token-cost/" rel="noopener noreferrer"&gt;abduarrahman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Claude Code Architecture — How Persona, Agent, Command &amp; Skill Work Together</title>
      <dc:creator>Muhammad Abdu ar Rahman</dc:creator>
      <pubDate>Sun, 17 May 2026 00:21:43 +0000</pubDate>
      <link>https://dev.to/abduarrahman/claude-code-architecture-how-persona-agent-command-skill-work-together-10k8</link>
      <guid>https://dev.to/abduarrahman/claude-code-architecture-how-persona-agent-command-skill-work-together-10k8</guid>
      <description>&lt;p&gt;Claude Code isn't just a chatbot that writes code. It's a customizable AI development platform with a layered architecture that lets you define &lt;em&gt;who&lt;/em&gt; the AI is, &lt;em&gt;what&lt;/em&gt; actions are available, &lt;em&gt;how&lt;/em&gt; those actions are organized, and &lt;em&gt;who&lt;/em&gt; executes the work.&lt;/p&gt;

&lt;p&gt;Most people use Claude Code as-is — type a prompt, get code back. But once you understand the four pillars of its customization architecture, you can build an entire AI-powered development system tailored to your workflow.&lt;/p&gt;

&lt;p&gt;This post breaks down the four pillars — &lt;strong&gt;Persona&lt;/strong&gt;, &lt;strong&gt;Command&lt;/strong&gt;, &lt;strong&gt;Skill&lt;/strong&gt;, and &lt;strong&gt;Agent&lt;/strong&gt; — and shows how they work together to create something greater than the sum of their parts.&lt;/p&gt;

&lt;p&gt;If you haven't read my post on AI personas yet, &lt;a href="https://abduarrahman.com/blog/ai-persona-claude-code-why-how-token-cost/" rel="noopener noreferrer"&gt;start there →&lt;/a&gt; — it covers the "why" behind personas. This post focuses on the full architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Four Pillars — Overview
&lt;/h2&gt;

&lt;p&gt;Before diving into each pillar, here's the big picture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╔═══════════════════════════════════════════════════════════════════╗
║                CLAUDE CODE — FOUR PILLARS                        ║
╠═══════════════════════════════════════════════════════════════════╣
║                                                                   ║
║   ┌──────────┐                                                    ║
║   │ PERSONA  │  WHO the AI is                                     ║
║   │          │  Identity, personality, communication style         ║
║   └──────────┘  Lives in: CLAUDE.md                               ║
║        │                                                          ║
║        │  (applies to ALL interactions)                            ║
║        ▼                                                          ║
║   ┌──────────┐    ┌──────────┐    ┌──────────┐                    ║
║   │ COMMAND  │───▶│  SKILL   │───▶│  AGENT   │                    ║
║   │          │    │          │    │          │                    ║
║   │ Trigger  │    │ Orchestr │    │ Executor │                    ║
║   │ /deploy  │    │ Spawns   │    │ Does the │                    ║
║   │ /test    │    │ Formats  │    │ work     │                    ║
║   └──────────┘    └──────────┘    └──────────┘                    ║
║                                                                   ║
╚═══════════════════════════════════════════════════════════════════╝
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each pillar has a distinct role:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pillar&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Lives In&lt;/th&gt;
&lt;th&gt;Analogy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Persona&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Identity&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The employee's personality and work ethic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Command&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Trigger&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.claude/commands/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The button the user clicks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Skill&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Orchestrator&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.claude/skills/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The project manager who assigns work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agent&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Executor&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.claude/agents/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The specialist who does the work&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Let's explore each one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pillar 1: Persona (Identity)
&lt;/h2&gt;

&lt;p&gt;The Persona is the foundation layer. It defines &lt;strong&gt;who&lt;/strong&gt; the AI is across all interactions. Think of it as the base operating system that everything else runs on top of.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where It Lives
&lt;/h3&gt;

&lt;p&gt;The persona is defined in &lt;code&gt;CLAUDE.md&lt;/code&gt;, which can exist at two levels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global&lt;/strong&gt; (&lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt;) — applies to every project, every session&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project&lt;/strong&gt; (&lt;code&gt;your-project/CLAUDE.md&lt;/code&gt;) — applies only to that project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both files are loaded and merged. The global one establishes identity; the project one adds project-specific rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  What It Defines
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## WHO AM I?&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="gs"&gt;**Name:**&lt;/span&gt; Devi
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Role:**&lt;/span&gt; Senior Developer &amp;amp; Coding Partner
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Style:**&lt;/span&gt; Professional, direct, helpful

&lt;span class="gs"&gt;**When responding:**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Be concise. Code first, explanation when asked.
&lt;span class="p"&gt;-&lt;/span&gt; Read files before suggesting changes.
&lt;span class="p"&gt;-&lt;/span&gt; Ask before taking destructive actions.

&lt;span class="gu"&gt;## Workflow Rules&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; NEVER give explanation without being asked
&lt;span class="p"&gt;2.&lt;/span&gt; ALWAYS read relevant files before proposing edits
&lt;span class="p"&gt;3.&lt;/span&gt; Verify solutions before finishing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why It Matters for the Architecture
&lt;/h3&gt;

&lt;p&gt;The persona is not an isolated feature — it's the &lt;strong&gt;base layer&lt;/strong&gt; that influences everything above it. When an agent executes a task, it does so &lt;em&gt;through&lt;/em&gt; the persona's lens. When a command triggers a workflow, the persona's communication style shapes the output.&lt;/p&gt;

&lt;p&gt;A good persona ensures that no matter which command you run or which agent fires, the experience feels consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pillar 2: Command (Trigger)
&lt;/h2&gt;

&lt;p&gt;Commands are the &lt;strong&gt;user-facing entry points&lt;/strong&gt;. They're slash commands that users type to trigger actions, like shortcuts in a text editor.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where They Live
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.claude/commands/
├── deploy.md
├── test.md
├── review.md
└── project/
    ├── setup.md
    └── sync.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What a Command Looks Like
&lt;/h3&gt;

&lt;p&gt;A command file is a Markdown file with optional YAML frontmatter and a prompt body:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Run&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;test&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;suite&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;report&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;results"&lt;/span&gt;
&lt;span class="na"&gt;arguments&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;scope&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Test&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;scope&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;(all,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;unit,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;integration)"&lt;/span&gt;
    &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

Run the $ARGUMENTS test suite for this project. Execute the tests,
capture the output, and report:
&lt;span class="p"&gt;1.&lt;/span&gt; Total tests run
&lt;span class="p"&gt;2.&lt;/span&gt; Pass/fail counts
&lt;span class="p"&gt;3.&lt;/span&gt; Any failures with file paths and line numbers
&lt;span class="p"&gt;4.&lt;/span&gt; Suggestions for fixing failures
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Design Philosophy
&lt;/h3&gt;

&lt;p&gt;Commands are intentionally simple. They're the &lt;strong&gt;what&lt;/strong&gt; — what the user wants done. They don't contain complex logic or workflows. That's the skill's job.&lt;/p&gt;

&lt;p&gt;Think of commands as a restaurant menu. The customer (user) picks what they want. They don't need to know how the kitchen (skill + agent) prepares it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Built-in vs Custom Commands
&lt;/h3&gt;

&lt;p&gt;Claude Code ships with built-in commands like &lt;code&gt;/help&lt;/code&gt; and &lt;code&gt;/clear&lt;/code&gt;. Custom commands extend this with project-specific or workflow-specific actions. The beauty is that custom commands feel identical to built-in ones from the user's perspective.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pillar 3: Skill (Orchestrator)
&lt;/h2&gt;

&lt;p&gt;Skills are the &lt;strong&gt;middleware&lt;/strong&gt; — they sit between the command and the agent, orchestrating the workflow. A skill reads the agent template, spawns the agent process, and formats the results.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where They Live
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.claude/skills/
├── deploy.md
├── test.md
├── review.md
└── project/
    ├── setup.md
    └── sync.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What a Skill Does
&lt;/h3&gt;

&lt;p&gt;A skill file is a prompt that describes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Which agent template to use&lt;/strong&gt; — the worker that will execute&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spawn instructions&lt;/strong&gt; — how to configure and launch the agent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output format&lt;/strong&gt; — how to present results to the user
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Skill: Test Runner&lt;/span&gt;

&lt;span class="gu"&gt;### Agent Template&lt;/span&gt;
Read and use: &lt;span class="sb"&gt;`.claude/agents/test-runner.md`&lt;/span&gt;

&lt;span class="gu"&gt;### Spawn Instructions&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Parse the user's test scope argument
&lt;span class="p"&gt;2.&lt;/span&gt; Spawn a general-purpose agent with the test-runner template
&lt;span class="p"&gt;3.&lt;/span&gt; Pass the project root, test framework, and scope as context
&lt;span class="p"&gt;4.&lt;/span&gt; Wait for the agent to complete

&lt;span class="gu"&gt;### Output Format&lt;/span&gt;
Present results as a structured summary:
&lt;span class="p"&gt;-&lt;/span&gt; Test counts in a table
&lt;span class="p"&gt;-&lt;/span&gt; Failures as expandable sections
&lt;span class="p"&gt;-&lt;/span&gt; Fix suggestions as action items
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why Skills Exist
&lt;/h3&gt;

&lt;p&gt;You might wonder: why not have commands spawn agents directly? Because the skill layer provides &lt;strong&gt;orchestration&lt;/strong&gt; that the command and agent shouldn't care about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Formatting&lt;/strong&gt;: The agent returns raw results; the skill formats them nicely&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error handling&lt;/strong&gt;: If the agent fails, the skill can retry or provide a fallback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Composition&lt;/strong&gt;: A skill can spawn multiple agents and combine their results&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Caching&lt;/strong&gt;: Skills can check if work has already been done&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Separation Principle
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Command = "I want X"           (user intent)
Skill   = "Here's how to get X" (orchestration)
Agent   = "I'm doing X"         (execution)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each layer has a single responsibility. Commands express intent. Skills coordinate. Agents execute.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pillar 4: Agent (Executor)
&lt;/h2&gt;

&lt;p&gt;Agents are the &lt;strong&gt;workers&lt;/strong&gt; — autonomous processes that execute a specific workflow independently. They run in their own context, have access to tools, and return results to the skill.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where They Live
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.claude/agents/
├── test-runner.md
├── deploy-agent.md
├── code-reviewer.md
└── docs-generator.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What an Agent Template Looks Like
&lt;/h3&gt;

&lt;p&gt;An agent template is a detailed prompt that defines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Agent: Test Runner&lt;/span&gt;

&lt;span class="gu"&gt;### Identity&lt;/span&gt;
You are a test execution specialist. Your job is to run tests
and report results accurately.

&lt;span class="gu"&gt;### Workflow&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Identify the test framework from project files
&lt;span class="p"&gt;2.&lt;/span&gt; Run the test command with the specified scope
&lt;span class="p"&gt;3.&lt;/span&gt; Capture stdout and stderr
&lt;span class="p"&gt;4.&lt;/span&gt; Parse the output for test results
&lt;span class="p"&gt;5.&lt;/span&gt; If failures exist, read the failing test files
&lt;span class="p"&gt;6.&lt;/span&gt; Analyze failures and suggest fixes

&lt;span class="gu"&gt;### Error Handling&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; If test command not found, report "No test framework detected"
&lt;span class="p"&gt;-&lt;/span&gt; If tests timeout, report which tests hung
&lt;span class="p"&gt;-&lt;/span&gt; If syntax errors prevent running, report the first error

&lt;span class="gu"&gt;### Return Format&lt;/span&gt;
Return a structured result:
&lt;span class="p"&gt;-&lt;/span&gt; total: number
&lt;span class="p"&gt;-&lt;/span&gt; passed: number
&lt;span class="p"&gt;-&lt;/span&gt; failed: number
&lt;span class="p"&gt;-&lt;/span&gt; failures: [{ file, line, message, suggestion }]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Agent Characteristics
&lt;/h3&gt;

&lt;p&gt;Agents have some important properties:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous&lt;/strong&gt;: Once spawned, an agent runs independently. It doesn't ask the user questions mid-execution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tooled&lt;/strong&gt;: Agents have access to the same tools as the main conversation — reading files, running commands, searching code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bounded&lt;/strong&gt;: An agent has a specific scope and returns results when done. It doesn't run forever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateless&lt;/strong&gt;: Each agent invocation starts fresh. It receives context from the skill and returns results.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Why Agents Matter
&lt;/h3&gt;

&lt;p&gt;Without agents, every complex task runs in the main conversation context. That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The agent's working state (file reads, command outputs) fills up the main context window&lt;/li&gt;
&lt;li&gt;Complex tasks with many steps can exhaust the context window&lt;/li&gt;
&lt;li&gt;Errors in one task can pollute the context for subsequent tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agents solve this by running in an &lt;strong&gt;isolated context&lt;/strong&gt;. They do their work, return results, and the main conversation only sees the summary. This is a huge win for context window management.&lt;/p&gt;

&lt;h2&gt;
  
  
  How They Flow Together
&lt;/h2&gt;

&lt;p&gt;Now let's see the full flow in action. Here's what happens when a user triggers a command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────┐
│                        COMPLETE FLOW                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1. USER types: /test all                                       │
│     │                                                           │
│     ▼                                                           │
│  2. COMMAND parses "all" as scope argument                      │
│     │                                                           │
│     ▼                                                           │
│  3. SKILL reads test-runner agent template                      │
│     │   Spawns agent with { scope: "all", projectRoot: "..." }  │
│     │                                                           │
│     ▼                                                           │
│  4. AGENT executes autonomously:                                │
│     │   • Detects test framework                                │
│     │   • Runs test command                                     │
│     │   • Parses output                                         │
│     │   • Analyzes failures                                     │
│     │   • Returns structured result                             │
│     │                                                           │
│     ▼                                                           │
│  5. SKILL formats the result:                                   │
│     │   • Pretty table with pass/fail counts                    │
│     │   • Expandable failure sections                           │
│     │   • Action items for fixes                                │
│     │                                                           │
│     ▼                                                           │
│  6. USER sees formatted results in the conversation             │
│                                                                 │
│  ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─  │
│                                                                 │
│  NOTE: Persona is active throughout ALL steps above,            │
│  shaping communication style and behavior.                      │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Persona as the Base Layer
&lt;/h3&gt;

&lt;p&gt;Notice that the persona isn't a separate step in the flow. It's the &lt;strong&gt;base layer&lt;/strong&gt; that influences everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The command's description is interpreted through the persona's communication style&lt;/li&gt;
&lt;li&gt;The skill's orchestration follows the persona's workflow preferences&lt;/li&gt;
&lt;li&gt;The agent's output is shaped by the persona's formatting rules&lt;/li&gt;
&lt;li&gt;The final result is presented in the persona's tone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why the persona comes first in the architecture. It's not just identity — it's the operating system everything else runs on.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use What
&lt;/h2&gt;

&lt;p&gt;Not every project needs all four pillars. Here's a guide:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Persona&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Basic coding assistant&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repeated manual tasks&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex multi-step workflows&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team-shared conventions&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heavy automation&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Start Simple, Grow as Needed
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Level 1: Persona only
  → Consistent AI behavior across sessions

Level 2: Persona + Commands
  → Quick shortcuts for common tasks

Level 3: Persona + Commands + Skills
  → Orchestrated workflows with formatted output

Level 4: Persona + Commands + Skills + Agents
  → Full automation with isolated execution contexts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You don't need to build the whole pyramid on day one. Start with a persona. Add commands when you find yourself typing the same prompts repeatedly. Add skills when commands get complex. Add agents when tasks need isolation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memory System — The Fifth Layer
&lt;/h2&gt;

&lt;p&gt;There's a bonus layer worth mentioning: &lt;strong&gt;Auto-Memory&lt;/strong&gt;. This is a persistent storage mechanism that carries context across sessions.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Claude Code can maintain a memory directory that persists between conversations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.claude/
├── CLAUDE.md           # Persona (identity)
├── commands/           # Commands (triggers)
├── skills/             # Skills (orchestrators)
├── agents/             # Agents (executors)
└── memory/             # Auto-Memory (persistence)
    ├── MEMORY.md       # Core project context
    ├── patterns.md     # Code patterns discovered
    └── troubleshooting.md  # Known issues and fixes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why It Complements the Persona
&lt;/h3&gt;

&lt;p&gt;The persona defines &lt;em&gt;who&lt;/em&gt; the AI is. The memory system defines &lt;em&gt;what&lt;/em&gt; the AI knows about your project. Together, they create both identity and knowledge:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Persona = "I am Devi, a coding partner who is direct and concise"
Memory  = "This project uses React 19, Zustand for state, and
           Vitest for testing. The auth module is in src/auth/.
           Known issue: test timeout on CI needs --timeout=10000"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI enters every session with both a consistent identity AND project-specific knowledge. That combination is powerful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Memory vs Persona
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Persona (CLAUDE.md)&lt;/th&gt;
&lt;th&gt;Memory (memory/)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Identity and rules&lt;/td&gt;
&lt;td&gt;Project knowledge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scope&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Global or project&lt;/td&gt;
&lt;td&gt;Project-specific&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Who writes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You (manually)&lt;/td&gt;
&lt;td&gt;AI (automatically) + You&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;When loaded&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Every session&lt;/td&gt;
&lt;td&gt;Every session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Token cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fixed (same every call)&lt;/td&gt;
&lt;td&gt;Variable (grows over time)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;"Be concise"&lt;/td&gt;
&lt;td&gt;"Project uses React 19"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Practical Example — Building a Command System
&lt;/h2&gt;

&lt;p&gt;Let me walk through building a real command system from scratch. Imagine you frequently need to review your code before committing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: The Persona (Already Done)
&lt;/h3&gt;

&lt;p&gt;Your &lt;code&gt;CLAUDE.md&lt;/code&gt; already defines the persona. No changes needed — the persona applies automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: The Command
&lt;/h3&gt;

&lt;p&gt;Create &lt;code&gt;.claude/commands/review.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Review&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;staged&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;changes&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;before&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;commit"&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

Review all currently staged changes in this repository.
Analyze for:
&lt;span class="p"&gt;1.&lt;/span&gt; Potential bugs or logic errors
&lt;span class="p"&gt;2.&lt;/span&gt; Security vulnerabilities (XSS, injection, etc.)
&lt;span class="p"&gt;3.&lt;/span&gt; Code style consistency with the rest of the project
&lt;span class="p"&gt;4.&lt;/span&gt; Missing error handling
&lt;span class="p"&gt;5.&lt;/span&gt; Performance concerns

Provide a summary with severity ratings (critical/warning/info).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: The Skill (Optional for Simple Cases)
&lt;/h3&gt;

&lt;p&gt;For a simple review command, the command itself is enough. But if you want structured output, create &lt;code&gt;.claude/skills/review.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Skill: Code Review&lt;/span&gt;

&lt;span class="gu"&gt;### Agent Template&lt;/span&gt;
Read and use: &lt;span class="sb"&gt;`.claude/agents/code-reviewer.md`&lt;/span&gt;

&lt;span class="gu"&gt;### Output Format&lt;/span&gt;
Present the review as:

&lt;span class="gu"&gt;## Review Summary&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Files reviewed: N
&lt;span class="p"&gt;-&lt;/span&gt; Issues found: N (critical: N, warning: N, info: N)

&lt;span class="gu"&gt;## Critical Issues&lt;/span&gt;
[Expandable sections for each critical finding]

&lt;span class="gu"&gt;## Warnings&lt;/span&gt;
[Expandable sections for each warning]

&lt;span class="gu"&gt;## Suggestions&lt;/span&gt;
[Info-level observations]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: The Agent
&lt;/h3&gt;

&lt;p&gt;Create &lt;code&gt;.claude/agents/code-reviewer.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Agent: Code Reviewer&lt;/span&gt;

&lt;span class="gu"&gt;### Identity&lt;/span&gt;
You are a meticulous code reviewer with expertise in security
and performance optimization.

&lt;span class="gu"&gt;### Workflow&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Run &lt;span class="sb"&gt;`git diff --staged`&lt;/span&gt; to get all staged changes
&lt;span class="p"&gt;2.&lt;/span&gt; For each changed file:
   a. Read the full file for context
   b. Analyze the diff for the categories above
   c. Rate each finding by severity
&lt;span class="p"&gt;3.&lt;/span&gt; Return structured results

&lt;span class="gu"&gt;### Return Format&lt;/span&gt;
JSON with: { files, findings: [{ severity, file, line, message, suggestion }] }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Result
&lt;/h3&gt;

&lt;p&gt;Now when you type &lt;code&gt;/review&lt;/code&gt;, the full pipeline fires:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/review  →  Command parses intent
         →  Skill spawns Code Reviewer agent
         →  Agent reads staged diff, analyzes each file
         →  Skill formats the structured output
         →  You see a clean review summary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the whole time, your persona ensures the review is presented in your preferred style — concise, actionable, no fluff.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building a Complete System
&lt;/h2&gt;

&lt;p&gt;The real power comes when you combine all pillars into a complete system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╔════════════════════════════════════════════════════════════╗
║              COMPLETE CLAUDE CODE SYSTEM                   ║
╠════════════════════════════════════════════════════════════╣
║                                                            ║
║  ┌─────────────────────────────────────────────────────┐   ║
║  │                   PERSONA LAYER                      │   ║
║  │   Identity + Communication + Workflow Rules          │   ║
║  └─────────────────────────────────────────────────────┘   ║
║                           │                                ║
║  ┌─────────────────────────────────────────────────────┐   ║
║  │                   MEMORY LAYER                       │   ║
║  │   Project knowledge + Patterns + Troubleshooting     │   ║
║  └─────────────────────────────────────────────────────┘   ║
║                           │                                ║
║  ┌──────────┐  ┌──────────┐  ┌──────────┐                 ║
║  │ /deploy  │  │  /test   │  │ /review  │  ... more       ║
║  └────┬─────┘  └────┬─────┘  └────┬─────┘                 ║
║       │              │              │                       ║
║  ┌────▼─────┐  ┌────▼─────┐  ┌────▼─────┐                 ║
║  │ Deploy   │  │  Test    │  │ Review   │  ... skills      ║
║  │ Skill    │  │  Skill   │  │ Skill    │                  ║
║  └────┬─────┘  └────┬─────┘  └────┬─────┘                 ║
║       │              │              │                       ║
║  ┌────▼─────┐  ┌────▼─────┐  ┌────▼─────┐                 ║
║  │ Deploy   │  │  Test    │  │ Code     │  ... agents      ║
║  │ Agent    │  │  Agent   │  │ Reviewer │                  ║
║  └──────────┘  └──────────┘  └──────────┘                 ║
║                                                            ║
╚════════════════════════════════════════════════════════════╝
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each layer builds on the one below it. The persona and memory provide the foundation. Commands provide the interface. Skills provide the orchestration. Agents provide the execution power.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Persona&lt;/strong&gt; is the foundation — it shapes everything. Start here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commands&lt;/strong&gt; are shortcuts — create them for any task you do repeatedly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills&lt;/strong&gt; are optional but valuable for complex workflows that need orchestration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agents&lt;/strong&gt; are powerful for tasks that need isolated execution contexts and tool access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory&lt;/strong&gt; complements persona by adding project-specific knowledge that persists across sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start simple&lt;/strong&gt; — persona first, then add layers as needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Each pillar has a single responsibility&lt;/strong&gt; — don't mix concerns.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Build a system, not just a chatbot. Your future self will thank you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post is the second in my AI coding workflow series. The first post covers AI personas in depth — &lt;a href="https://abduarrahman.com/blog/ai-persona-claude-code-why-how-token-cost/" rel="noopener noreferrer"&gt;read it here →&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Follow my coding journey:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/abduarrahman/" rel="noopener noreferrer"&gt;@abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@abduarrahmanscode" rel="noopener noreferrer"&gt;@abduarrahmanscode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://tiktok.com/@anduarrahmans" rel="noopener noreferrer"&gt;@anduarrahmans&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Support my work:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ko-fi: &lt;a href="https://ko-fi.com/abduarrahman" rel="noopener noreferrer"&gt;ko-fi.com/abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://abduarrahman.com/blog/claude-code-architecture-persona-agent-command-skill/" rel="noopener noreferrer"&gt;abduarrahman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>architecture</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>CSS Pixel Art Battle Items — Potions, Shards, Balls &amp; Loot with Code</title>
      <dc:creator>Muhammad Abdu ar Rahman</dc:creator>
      <pubDate>Sat, 16 May 2026 11:15:22 +0000</pubDate>
      <link>https://dev.to/abduarrahman/css-pixel-art-battle-items-potions-shards-balls-loot-with-code-45e1</link>
      <guid>https://dev.to/abduarrahman/css-pixel-art-battle-items-potions-shards-balls-loot-with-code-45e1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Try them live&lt;/strong&gt; — All 15 battle items are available on &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; where you can customize colors and speed. Source code on &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. See also &lt;a href="https://abduarrahman.com/blog/css-pixel-art-terrain-tiles-10-effects" rel="noopener noreferrer"&gt;Terrain Tiles&lt;/a&gt;, &lt;a href="https://abduarrahman.com/blog/css-pixel-art-weather-sky-10-effects" rel="noopener noreferrer"&gt;Weather &amp;amp; Sky&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Every hero needs an inventory! Battle items are the collectible sprites of a monster-taming game — potions, antidotes, crystals, elemental shards, capture balls, XP orbs, gold coins, keys, and scrolls. This is the &lt;strong&gt;final post&lt;/strong&gt; covering all &lt;strong&gt;310 CSSKit animations&lt;/strong&gt;. All built with the same &lt;code&gt;box-shadow&lt;/code&gt; technique on a single &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Item Animation Pattern
&lt;/h2&gt;

&lt;p&gt;All 15 items use the &lt;strong&gt;simplest animation&lt;/strong&gt; — a pure opacity pulse:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0%, 100%  →  Full opacity (1.0) — item fully visible
50%       →  Opacity drops to 0.85 — gentle glow pulse
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Combined with &lt;code&gt;drop-shadow&lt;/code&gt; filters, this creates a "breathing" glow that makes items feel magical. All items use &lt;code&gt;2.5x&lt;/code&gt; scale, &lt;code&gt;2s&lt;/code&gt; speed, and &lt;code&gt;ease-in-out infinite&lt;/code&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Part A: Potions (#296-298)
&lt;/h1&gt;

&lt;p&gt;Three potion bottles sharing the same silhouette — only the color palette changes per type. Each is ~8×10 pixels with a tapered cap (4px wide), wide body (8px), and tapered base (4px).&lt;/p&gt;

&lt;h2&gt;
  
  
  296. Health Potion
&lt;/h2&gt;

&lt;p&gt;Red health potion with bubbling glow — restores HP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-health-potion" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item health potion animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;A bottle-shaped pixel art sprite with three red tones: &lt;code&gt;#fecaca&lt;/code&gt; (light cap), &lt;code&gt;#ef4444&lt;/code&gt; (red body), &lt;code&gt;#dc2626&lt;/code&gt; (dark base). The opacity pulse at 50% combined with the &lt;code&gt;drop-shadow(0 0 3px #ef4444)&lt;/code&gt; creates a bubbling liquid effect.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.ItemHealthPotion&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--ihp-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--ihp-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--ihp-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ef4444&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-28px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-28px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--ihp-scale&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;drop-shadow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--ihp-glow&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ihp-anim&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--ihp-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;ihp-anim&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="c"&gt;/* cap */&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#fecaca&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#fecaca&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#fecaca&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#fecaca&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* body */&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;#ef4444&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;#ef4444&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... 8px wide */&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* base */&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;#dc2626&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;#dc2626&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;#dc2626&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;#dc2626&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* identical */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.85&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemHealthPotion"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Customize:&lt;/strong&gt; &lt;code&gt;--ihp-speed&lt;/code&gt; (0.5-8s), &lt;code&gt;--ihp-scale&lt;/code&gt; (1.5-4x), &lt;code&gt;--ihp-glow&lt;/code&gt; (glow color).&lt;/p&gt;




&lt;h2&gt;
  
  
  297. Mana Potion
&lt;/h2&gt;

&lt;p&gt;Indigo mana potion with swirling energy — restores MP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-mana-potion" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item mana potion animation&lt;/p&gt;

&lt;p&gt;Same bottle silhouette — only colors change. Indigo palette: &lt;code&gt;#c7d2fe&lt;/code&gt; (cap), &lt;code&gt;#6366f1&lt;/code&gt; (body), &lt;code&gt;#4f46e5&lt;/code&gt; (base). The purple glow creates a "swirling magic" feel.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemManaPotion"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  298. Antidote
&lt;/h2&gt;

&lt;p&gt;Green antidote with herbal glow — cures poison.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-antidote" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item antidote animation&lt;/p&gt;

&lt;p&gt;Same bottle shape, slightly shorter (~8×9). Green palette: &lt;code&gt;#bbf7d0&lt;/code&gt; (cap), &lt;code&gt;#22c55e&lt;/code&gt; (body), &lt;code&gt;#16a34a&lt;/code&gt; (base). Green glow simulates herbal bubbling.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemAntidote"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Part B: Crystals &amp;amp; Shards (#299-303)
&lt;/h1&gt;

&lt;p&gt;Five diamond-shaped items sharing the same silhouette (~10×9 pixels). Each tapers to a point at top (2px) and bottom (4px), widest in the middle (10px).&lt;/p&gt;

&lt;h2&gt;
  
  
  299. Revive Crystal
&lt;/h2&gt;

&lt;p&gt;Golden revive crystal — revives fallen monsters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-revive-crystal" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item revive crystal animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Diamond/gem shape with a &lt;strong&gt;waist&lt;/strong&gt; at row 6 using darker amber &lt;code&gt;#d97706&lt;/code&gt;, giving it a gem-like silhouette. Four amber tones: &lt;code&gt;#fef9c3&lt;/code&gt; (tip highlights), &lt;code&gt;#fbbf24&lt;/code&gt; (crystal faces), &lt;code&gt;#f59e0b&lt;/code&gt; (body), &lt;code&gt;#d97706&lt;/code&gt; (waist). The opacity pulse makes it feel like pulsing energy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemReviveCrystal"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#fef9c3&lt;/code&gt; / &lt;code&gt;#fbbf24&lt;/code&gt; / &lt;code&gt;#f59e0b&lt;/code&gt; / &lt;code&gt;#d97706&lt;/code&gt; — amber gradient.&lt;/p&gt;




&lt;h2&gt;
  
  
  300. Fire Shard
&lt;/h2&gt;

&lt;p&gt;Blazing fire shard — fire element crafting material.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-fire-shard" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item fire shard animation&lt;/p&gt;

&lt;p&gt;Same diamond silhouette with flame gradient: &lt;code&gt;#fef08a&lt;/code&gt; (yellow tip), &lt;code&gt;#f97316&lt;/code&gt; (orange), &lt;code&gt;#ef4444&lt;/code&gt; (red body), &lt;code&gt;#dc2626&lt;/code&gt; (dark base). The color flows from yellow→orange→red like a real flame. Red glow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemFireShard"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  301. Water Shard
&lt;/h2&gt;

&lt;p&gt;Deep water shard — water element crafting material.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-water-shard" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item water shard animation&lt;/p&gt;

&lt;p&gt;Blue gradient: &lt;code&gt;#a5f3fc&lt;/code&gt; (cyan tip), &lt;code&gt;#0ea5e9&lt;/code&gt; (sky blue), &lt;code&gt;#0284c7&lt;/code&gt; (deep blue), &lt;code&gt;#0369a1&lt;/code&gt; (dark base). Cyan glow creates a ripple feel.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemWaterShard"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  302. Thunder Shard
&lt;/h2&gt;

&lt;p&gt;Crackling thunder shard — electric element crafting material.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-thunder-shard" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item thunder shard animation&lt;/p&gt;

&lt;p&gt;Yellow gradient: &lt;code&gt;#fef9c3&lt;/code&gt; (pale tip), &lt;code&gt;#eab308&lt;/code&gt; (gold), &lt;code&gt;#ca8a04&lt;/code&gt; (dark gold), &lt;code&gt;#a16207&lt;/code&gt; (amber base). Yellow glow simulates electric spark pulsing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemThunderShard"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  303. Shadow Shard
&lt;/h2&gt;

&lt;p&gt;Void shadow shard — dark element crafting material.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-shadow-shard" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item shadow shard animation&lt;/p&gt;

&lt;p&gt;Violet gradient: &lt;code&gt;#d8b4fe&lt;/code&gt; (light violet tip), &lt;code&gt;#8b5cf6&lt;/code&gt; (violet), &lt;code&gt;#7c3aed&lt;/code&gt; (deep purple), &lt;code&gt;#6d28d9&lt;/code&gt; (dark base). Purple glow creates a dark pulse feel.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemShadowShard"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Shard Color Reference
&lt;/h2&gt;

&lt;p&gt;All 5 shards share the same diamond silhouette — only the palette changes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Shard&lt;/th&gt;
&lt;th&gt;Tip&lt;/th&gt;
&lt;th&gt;Upper&lt;/th&gt;
&lt;th&gt;Mid&lt;/th&gt;
&lt;th&gt;Base&lt;/th&gt;
&lt;th&gt;Glow&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Revive&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fef9c3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fbbf24&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#f59e0b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#d97706&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Amber&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fire&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fef08a&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#f97316&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#ef4444&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#dc2626&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Red&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Water&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a5f3fc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#0ea5e9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#0284c7&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#0369a1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cyan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thunder&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fef9c3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#eab308&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#ca8a04&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a16207&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yellow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shadow&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#d8b4fe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#8b5cf6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#7c3aed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#6d28d9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Violet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Creating a custom shard:&lt;/strong&gt; Copy any shard CSS, replace the 4 color values, update the glow color. The pixel art stays identical.&lt;/p&gt;




&lt;h1&gt;
  
  
  Part C: Capture Balls (#304-306)
&lt;/h1&gt;

&lt;p&gt;Three capture balls sharing the same 12×8 dome shape — the widest items in the set.&lt;/p&gt;

&lt;h2&gt;
  
  
  304. Master Ball
&lt;/h2&gt;

&lt;p&gt;Legendary purple master ball — guaranteed capture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-master-ball" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item master ball animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;A rounded dome shape — wider at top (12px), narrower at bottom (6px). Purple palette: &lt;code&gt;#c084fc&lt;/code&gt; (dome highlight), &lt;code&gt;#a855f7&lt;/code&gt; (dome body), &lt;code&gt;#7c3aed&lt;/code&gt; (mid band), &lt;code&gt;#6d28d9&lt;/code&gt; (bottom dome). The opacity pulse creates a "ready to throw" glow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.ItemMasterBall&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--imb-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--imb-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--imb-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#a855f7&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--imb-scale&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;drop-shadow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--imb-glow&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;imb-anim&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--imb-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemMasterBall"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  305. Super Ball
&lt;/h2&gt;

&lt;p&gt;Blue super ball with gold stripe — improved capture rate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-super-ball" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item super ball animation&lt;/p&gt;

&lt;p&gt;Same dome shape with a distinctive &lt;strong&gt;yellow/gold stripe band&lt;/strong&gt; (rows 4-5) separating the blue top from the dark blue bottom. Colors: &lt;code&gt;#3b82f6&lt;/code&gt; (blue dome), &lt;code&gt;#fef08a&lt;/code&gt;/&lt;code&gt;#ffd700&lt;/code&gt; (gold stripe), &lt;code&gt;#1d4ed8&lt;/code&gt; (dark base).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemSuperBall"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  306. Basic Ball
&lt;/h2&gt;

&lt;p&gt;Classic red basic ball with white stripe — standard capture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-basic-ball" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item basic ball animation&lt;/p&gt;

&lt;p&gt;The classic design — red dome with white stripe. Colors: &lt;code&gt;#ef4444&lt;/code&gt; (red dome), &lt;code&gt;#f1f5f9&lt;/code&gt;/&lt;code&gt;#e2e8f0&lt;/code&gt; (white stripe), &lt;code&gt;#dc2626&lt;/code&gt; (dark red base). Red glow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemBasicBall"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Part D: Loot (#307-310)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  307. XP Orb
&lt;/h2&gt;

&lt;p&gt;Glowing XP orb — experience points in physical form.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-xp-orb" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item xp orb animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;A tapered teardrop orb — narrow at top (2px), widest at rows 3-4 (10px), tapering to just 2px at the bottom. Monochromatic cyan palette: &lt;code&gt;#a5f3fc&lt;/code&gt; (highlight), &lt;code&gt;#22d3ee&lt;/code&gt; (body), &lt;code&gt;#06b6d4&lt;/code&gt; (lower), &lt;code&gt;#0891b2&lt;/code&gt; (tip). The cyan glow makes it feel like pure experience energy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemXpOrb"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  308. Gold Coin
&lt;/h2&gt;

&lt;p&gt;Shiny gold coin — the smallest item sprite at 8×6.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-gold-coin" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item gold coin animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;A rectangular coin with a &lt;strong&gt;checkerboard pattern&lt;/strong&gt; of alternating &lt;code&gt;#f59e0b&lt;/code&gt; and &lt;code&gt;#fbbf24&lt;/code&gt; pixels — this creates a shimmering metallic look. Pale yellow &lt;code&gt;#fef9c3&lt;/code&gt; edges frame the top and bottom like a coin rim. Compact 8×6 sprite.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemGoldCoin"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  309. Dungeon Key
&lt;/h2&gt;

&lt;p&gt;Enchanted dungeon key — unlocks sealed doors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-key" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item key animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The only item with &lt;strong&gt;4 distinct color zones stacked vertically&lt;/strong&gt;: cyan head (&lt;code&gt;#22d3ee&lt;/code&gt;, 8px wide) → gold shoulder (&lt;code&gt;#fbbf24&lt;/code&gt;) → amber shaft (&lt;code&gt;#d97706&lt;/code&gt;, 2px wide) → brown teeth (&lt;code&gt;#b45309&lt;/code&gt;, 4px wide). The cyan glow represents an enchanted gem set in the key's bow. Tallest item at ~8×9.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemKey"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  310. Magic Scroll
&lt;/h2&gt;

&lt;p&gt;Ancient magic scroll with unfurling shape — the final animation (#310).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/item-scroll" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — item scroll animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The most unique shape — a &lt;strong&gt;progressive widening triangle&lt;/strong&gt; that represents an unfurling scroll. Each row is 1px wider than the last: row 0 is 1px, row 9 is 10px. This diagonal silhouette reads as parchment unfurling. Monochromatic gold: &lt;code&gt;#fef9c3&lt;/code&gt; (cream roll), &lt;code&gt;#fde68a&lt;/code&gt; (upper body), &lt;code&gt;#fbbf24&lt;/code&gt; (lower body), &lt;code&gt;#f59e0b&lt;/code&gt; (edge). Largest bounding box at 10×10.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"ItemScroll"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Battle Item Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Grid&lt;/th&gt;
&lt;th&gt;Shape&lt;/th&gt;
&lt;th&gt;Color Theme&lt;/th&gt;
&lt;th&gt;Glow&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;296&lt;/td&gt;
&lt;td&gt;Health Potion&lt;/td&gt;
&lt;td&gt;8×10&lt;/td&gt;
&lt;td&gt;Bottle&lt;/td&gt;
&lt;td&gt;Red&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#ef4444&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;297&lt;/td&gt;
&lt;td&gt;Mana Potion&lt;/td&gt;
&lt;td&gt;8×10&lt;/td&gt;
&lt;td&gt;Bottle&lt;/td&gt;
&lt;td&gt;Indigo&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#6366f1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;298&lt;/td&gt;
&lt;td&gt;Antidote&lt;/td&gt;
&lt;td&gt;8×9&lt;/td&gt;
&lt;td&gt;Bottle&lt;/td&gt;
&lt;td&gt;Green&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#22c55e&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;299&lt;/td&gt;
&lt;td&gt;Revive Crystal&lt;/td&gt;
&lt;td&gt;10×9&lt;/td&gt;
&lt;td&gt;Diamond&lt;/td&gt;
&lt;td&gt;Amber&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fbbf24&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;300&lt;/td&gt;
&lt;td&gt;Fire Shard&lt;/td&gt;
&lt;td&gt;10×9&lt;/td&gt;
&lt;td&gt;Diamond&lt;/td&gt;
&lt;td&gt;Red/orange&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#ef4444&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;301&lt;/td&gt;
&lt;td&gt;Water Shard&lt;/td&gt;
&lt;td&gt;10×9&lt;/td&gt;
&lt;td&gt;Diamond&lt;/td&gt;
&lt;td&gt;Blue/cyan&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#0ea5e9&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;302&lt;/td&gt;
&lt;td&gt;Thunder Shard&lt;/td&gt;
&lt;td&gt;10×9&lt;/td&gt;
&lt;td&gt;Diamond&lt;/td&gt;
&lt;td&gt;Yellow/gold&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#eab308&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;303&lt;/td&gt;
&lt;td&gt;Shadow Shard&lt;/td&gt;
&lt;td&gt;10×9&lt;/td&gt;
&lt;td&gt;Diamond&lt;/td&gt;
&lt;td&gt;Violet&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#8b5cf6&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;304&lt;/td&gt;
&lt;td&gt;Master Ball&lt;/td&gt;
&lt;td&gt;12×8&lt;/td&gt;
&lt;td&gt;Dome&lt;/td&gt;
&lt;td&gt;Purple&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a855f7&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;305&lt;/td&gt;
&lt;td&gt;Super Ball&lt;/td&gt;
&lt;td&gt;12×8&lt;/td&gt;
&lt;td&gt;Dome&lt;/td&gt;
&lt;td&gt;Blue + gold stripe&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#3b82f6&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;306&lt;/td&gt;
&lt;td&gt;Basic Ball&lt;/td&gt;
&lt;td&gt;12×8&lt;/td&gt;
&lt;td&gt;Dome&lt;/td&gt;
&lt;td&gt;Red + white stripe&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#ef4444&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;307&lt;/td&gt;
&lt;td&gt;XP Orb&lt;/td&gt;
&lt;td&gt;10×8&lt;/td&gt;
&lt;td&gt;Teardrop&lt;/td&gt;
&lt;td&gt;Cyan&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#22d3ee&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;308&lt;/td&gt;
&lt;td&gt;Gold Coin&lt;/td&gt;
&lt;td&gt;8×6&lt;/td&gt;
&lt;td&gt;Rectangle&lt;/td&gt;
&lt;td&gt;Gold checkerboard&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fbbf24&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;309&lt;/td&gt;
&lt;td&gt;Dungeon Key&lt;/td&gt;
&lt;td&gt;8×9&lt;/td&gt;
&lt;td&gt;Vertical key&lt;/td&gt;
&lt;td&gt;Cyan + amber&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#22d3ee&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;310&lt;/td&gt;
&lt;td&gt;Magic Scroll&lt;/td&gt;
&lt;td&gt;10×10&lt;/td&gt;
&lt;td&gt;Unfurling triangle&lt;/td&gt;
&lt;td&gt;Cream/gold&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fbbf24&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  That's All 310 Animations!
&lt;/h2&gt;

&lt;p&gt;This post completes the entire &lt;strong&gt;CSSKit collection&lt;/strong&gt; — 310 CSS animations across 21 blog posts:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Batch&lt;/th&gt;
&lt;th&gt;Posts&lt;/th&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1-2&lt;/td&gt;
&lt;td&gt;Text Animations&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;3-4&lt;/td&gt;
&lt;td&gt;Hover Effects&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;5-6&lt;/td&gt;
&lt;td&gt;Loading Animations&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;7-8&lt;/td&gt;
&lt;td&gt;Background Effects&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;9-10&lt;/td&gt;
&lt;td&gt;Entrance &amp;amp; Exit + Buttons&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;11-12&lt;/td&gt;
&lt;td&gt;Attention + Cards &amp;amp; Dividers&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Pixel Art Classics&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;14-15&lt;/td&gt;
&lt;td&gt;Eggs &amp;amp; Baby Monsters&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;16-17&lt;/td&gt;
&lt;td&gt;Battle Monsters &amp;amp; Dragons&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;18-19&lt;/td&gt;
&lt;td&gt;Environment &amp;amp; Weather&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;20-21&lt;/td&gt;
&lt;td&gt;Terrain &amp;amp; Battle Items&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Total: 21 blog posts, 310 animations, pure CSS.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Explore all 310 animations live at &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; or &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;star the repo on GitHub&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://abduarrahman.com/blog/css-pixel-art-battle-items-15-effects" rel="noopener noreferrer"&gt;abduarrahman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore all 310 animations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow the project:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/abduarrahman/" rel="noopener noreferrer"&gt;@abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@abduarrahmanscode" rel="noopener noreferrer"&gt;@abduarrahmanscode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://tiktok.com/@anduarrahmans" rel="noopener noreferrer"&gt;@anduarrahmans&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Support:&lt;/strong&gt; &lt;a href="https://ko-fi.com/abduarrahman" rel="noopener noreferrer"&gt;Ko-fi&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>animation</category>
      <category>showdev</category>
      <category>pixelart</category>
    </item>
    <item>
      <title>CSS Pixel Art Terrain Tiles — Ground, Paths &amp; Structures with Code</title>
      <dc:creator>Muhammad Abdu ar Rahman</dc:creator>
      <pubDate>Sat, 16 May 2026 11:15:20 +0000</pubDate>
      <link>https://dev.to/abduarrahman/css-pixel-art-terrain-tiles-ground-paths-structures-with-code-3ea5</link>
      <guid>https://dev.to/abduarrahman/css-pixel-art-terrain-tiles-ground-paths-structures-with-code-3ea5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Try them live&lt;/strong&gt; — All 10 terrain tiles are available on &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; where you can customize colors and speed. Source code on &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. See also &lt;a href="https://abduarrahman.com/blog/css-pixel-art-weather-sky-10-effects" rel="noopener noreferrer"&gt;Weather &amp;amp; Sky&lt;/a&gt;, &lt;a href="https://abduarrahman.com/blog/css-pixel-art-environment-15-effects" rel="noopener noreferrer"&gt;Environment &amp;amp; Nature&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Every pixel world needs a ground to walk on! Terrain tiles are the building blocks of game maps — grass fields, water bodies, sandy deserts, snowy tundra, volcanic lava, stone paths, wooden bridges, fences, magical portals, and treasure markers. All built with the same &lt;code&gt;box-shadow&lt;/code&gt; technique on a single &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tile Animation Pattern
&lt;/h2&gt;

&lt;p&gt;Terrain tiles are the &lt;strong&gt;simplest animations&lt;/strong&gt; in CSSKit — they all use a pure opacity pulse:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0%, 100%  →  Full opacity (1.0) — tile fully visible
50%       →  Opacity drops to 0.85 — subtle shimmer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a gentle breathing effect that makes tiles feel alive without distracting from gameplay. All tiles use &lt;code&gt;2.5x&lt;/code&gt; scale, &lt;code&gt;2s&lt;/code&gt; speed (slightly slower than sprites), and &lt;code&gt;ease-in-out infinite&lt;/code&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Part A: Ground Tiles (#286-290)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  286. Grass Tile
&lt;/h2&gt;

&lt;p&gt;Lush grass tile with gentle shimmer — the default terrain for meadows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/terrain-grass-tile" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — terrain grass tile animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;A dense 12×8 pixel rectangle (96 pixels) with three green tones scattered in a pseudo-random pattern that mimics grass texture. At 50%, &lt;code&gt;opacity: 0.85&lt;/code&gt; creates a subtle breathing shimmer. Green palette: &lt;code&gt;#4ade80&lt;/code&gt; (light highlights), &lt;code&gt;#22c55e&lt;/code&gt; (medium), &lt;code&gt;#16a34a&lt;/code&gt; (dark base).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.TerrainGrassTile&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--tgt-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--tgt-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--tgt-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#22c55e&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-28px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-28px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--tgt-scale&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;drop-shadow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--tgt-glow&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;tgt-anim&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--tgt-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;tgt-anim&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#4ade80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#22c55e&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#16a34a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... 12px wide */&lt;/span&gt;
      &lt;span class="c"&gt;/* 8 rows of 12 pixels = 96 total box-shadows */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* identical pixel data */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.85&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"TerrainGrassTile"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Customize:&lt;/strong&gt; &lt;code&gt;--tgt-speed&lt;/code&gt; (0.5-6s), &lt;code&gt;--tgt-scale&lt;/code&gt; (1.5-4x), &lt;code&gt;--tgt-glow&lt;/code&gt; (glow color).&lt;/p&gt;




&lt;h2&gt;
  
  
  287. Water Tile
&lt;/h2&gt;

&lt;p&gt;Deep water tile with shimmering surface — river and ocean terrain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/terrain-water-tile" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — terrain water tile animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Same 12×8 dense grid as grass, but with blue tones distributed to mimic water ripple texture. The opacity pulse creates a shimmering water surface effect. Blue palette: &lt;code&gt;#93c5fd&lt;/code&gt; (light highlights), &lt;code&gt;#60a5fa&lt;/code&gt; (medium), &lt;code&gt;#3b82f6&lt;/code&gt; (deep base).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"TerrainWaterTile"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  288. Sand Tile
&lt;/h2&gt;

&lt;p&gt;Desert sand tile with warm shimmer — arid terrain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/terrain-sand-tile" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — terrain sand tile animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Same 12×8 structure with warm amber/gold tones. The opacity pulse simulates heat shimmer over desert sand. Palette: &lt;code&gt;#fde68a&lt;/code&gt; (light sand), &lt;code&gt;#fbbf24&lt;/code&gt; (gold), &lt;code&gt;#f59e0b&lt;/code&gt; (dark amber).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"TerrainSandTile"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  289. Snow Tile
&lt;/h2&gt;

&lt;p&gt;Frozen snow tile with icy sparkle — winter terrain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/terrain-snow-tile" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — terrain snow tile animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The subtlest palette — near-white colors that make the opacity pulse feel like icy sparkle. Palette: &lt;code&gt;#ffffff&lt;/code&gt; (pure white), &lt;code&gt;#f0f9ff&lt;/code&gt; (ice white), &lt;code&gt;#e0f2fe&lt;/code&gt; (light blue shadow). The light blue &lt;code&gt;drop-shadow&lt;/code&gt; adds a frosty glow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"TerrainSnowTile"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  290. Lava Tile
&lt;/h2&gt;

&lt;p&gt;Volcanic lava tile with bubbling heat — dangerous terrain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/terrain-lava-tile" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — terrain lava tile animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The most dramatic tile — hot palette makes the opacity pulse feel like bubbling molten lava. Three-tone fire: &lt;code&gt;#fef08a&lt;/code&gt; (bright yellow), &lt;code&gt;#f97316&lt;/code&gt; (orange), &lt;code&gt;#ef4444&lt;/code&gt; (red). The red &lt;code&gt;drop-shadow(0 0 3px #ef4444)&lt;/code&gt; gives it a dangerous volcanic glow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"TerrainLavaTile"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Part B: Structures (#291-295)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  291. Stone Path
&lt;/h2&gt;

&lt;p&gt;Cobblestone path with moss details — walkable terrain overlay.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/terrain-stone-path" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — terrain stone path animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Same 12×8 grid but with a unique twist — &lt;strong&gt;moss green&lt;/strong&gt; &lt;code&gt;#86efac&lt;/code&gt; pixels scattered sparsely among gray stones. The moss appears at specific positions, simulating growth between cobblestones. Gray palette: &lt;code&gt;#9ca3af&lt;/code&gt; (light stone), &lt;code&gt;#6b7280&lt;/code&gt; (dark stone).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"TerrainStonePath"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#9ca3af&lt;/code&gt; (light stone), &lt;code&gt;#6b7280&lt;/code&gt; (dark stone), &lt;code&gt;#86efac&lt;/code&gt; (moss accents).&lt;/p&gt;




&lt;h2&gt;
  
  
  292. Wooden Bridge
&lt;/h2&gt;

&lt;p&gt;Wooden plank bridge with regular grain — water crossing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/terrain-bridge" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — terrain bridge animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;A shorter 12×6 grid (72 pixels) with a &lt;strong&gt;regular repeating pattern&lt;/strong&gt; — every row follows the same 4-pixel sequence (&lt;code&gt;light, dark, dark, medium&lt;/code&gt;) repeated three times. This creates visible wood plank divisions. Brown palette: &lt;code&gt;#f59e0b&lt;/code&gt; (light plank edges), &lt;code&gt;#92400e&lt;/code&gt; (dark separators), &lt;code&gt;#d97706&lt;/code&gt; (plank detail).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"TerrainBridge"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  293. Wooden Fence
&lt;/h2&gt;

&lt;p&gt;Sparse fence with posts and rails — boundary marker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/terrain-fence" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — terrain fence animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The most unique tile — instead of a dense grid, it uses a &lt;strong&gt;sparse layout&lt;/strong&gt; with only ~26 pixels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rows 0-2:&lt;/strong&gt; 3 vertical posts at &lt;code&gt;x=0&lt;/code&gt;, &lt;code&gt;x=4&lt;/code&gt;, &lt;code&gt;x=8&lt;/code&gt; — each 3 pixels tall in &lt;code&gt;#a16207&lt;/code&gt; (brown)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Row 3:&lt;/strong&gt; Horizontal rail from &lt;code&gt;x=0&lt;/code&gt; to &lt;code&gt;x=10&lt;/code&gt; with a gap at &lt;code&gt;x=5&lt;/code&gt; — in &lt;code&gt;#fbbf24&lt;/code&gt; (gold)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rows 4-5:&lt;/strong&gt; Post bases at &lt;code&gt;x=0&lt;/code&gt;, &lt;code&gt;x=4&lt;/code&gt;, &lt;code&gt;x=8&lt;/code&gt; in &lt;code&gt;#92400e&lt;/code&gt; (dark brown)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The transparent gaps between posts create a recognizable fence silhouette.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"TerrainFence"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  294. Mystic Portal
&lt;/h2&gt;

&lt;p&gt;Magical portal with purple glow — teleportation gateway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/terrain-portal" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — terrain portal animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;An &lt;strong&gt;oval shape&lt;/strong&gt; instead of a rectangle — top and bottom rows start at &lt;code&gt;x=1&lt;/code&gt; (not &lt;code&gt;x=0&lt;/code&gt;), making the edges narrower and creating a portal silhouette. Purple palette: &lt;code&gt;#f0abfc&lt;/code&gt; (light magenta), &lt;code&gt;#c084fc&lt;/code&gt; (medium purple), &lt;code&gt;#a855f7&lt;/code&gt; (deep purple). The &lt;code&gt;drop-shadow(0 0 3px #a855f7)&lt;/code&gt; adds a mystic aura.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"TerrainPortal"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  295. Treasure Marker
&lt;/h2&gt;

&lt;p&gt;Golden treasure marker with cross detail — loot location.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/terrain-treasure-marker" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — terrain treasure marker animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;A small ~8×7 sparse diamond shape (~36 pixels) forming a treasure chest icon:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Row 0:&lt;/strong&gt; 4 pixels — top of chest lid&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Row 1:&lt;/strong&gt; 6 pixels — wider lid&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rows 2-4:&lt;/strong&gt; Wider body with alternating gold/brown pixels forming a cross-hatch X pattern&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rows 5-6:&lt;/strong&gt; Narrowing base&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gold palette: &lt;code&gt;#fbbf24&lt;/code&gt; (gold outline), &lt;code&gt;#f59e0b&lt;/code&gt; (dark gold), &lt;code&gt;#d97706&lt;/code&gt; (brown detail). The golden &lt;code&gt;drop-shadow&lt;/code&gt; makes it clearly identifiable as treasure.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"TerrainTreasureMarker"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Terrain Tile Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Tile&lt;/th&gt;
&lt;th&gt;Grid&lt;/th&gt;
&lt;th&gt;Pixels&lt;/th&gt;
&lt;th&gt;Shape&lt;/th&gt;
&lt;th&gt;Palette Theme&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;286&lt;/td&gt;
&lt;td&gt;Grass&lt;/td&gt;
&lt;td&gt;12×8&lt;/td&gt;
&lt;td&gt;96&lt;/td&gt;
&lt;td&gt;Full rectangle&lt;/td&gt;
&lt;td&gt;Green&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;287&lt;/td&gt;
&lt;td&gt;Water&lt;/td&gt;
&lt;td&gt;12×8&lt;/td&gt;
&lt;td&gt;96&lt;/td&gt;
&lt;td&gt;Full rectangle&lt;/td&gt;
&lt;td&gt;Blue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;288&lt;/td&gt;
&lt;td&gt;Sand&lt;/td&gt;
&lt;td&gt;12×8&lt;/td&gt;
&lt;td&gt;96&lt;/td&gt;
&lt;td&gt;Full rectangle&lt;/td&gt;
&lt;td&gt;Amber/gold&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;289&lt;/td&gt;
&lt;td&gt;Snow&lt;/td&gt;
&lt;td&gt;12×8&lt;/td&gt;
&lt;td&gt;96&lt;/td&gt;
&lt;td&gt;Full rectangle&lt;/td&gt;
&lt;td&gt;White/ice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;290&lt;/td&gt;
&lt;td&gt;Lava&lt;/td&gt;
&lt;td&gt;12×8&lt;/td&gt;
&lt;td&gt;96&lt;/td&gt;
&lt;td&gt;Full rectangle&lt;/td&gt;
&lt;td&gt;Red/orange&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;291&lt;/td&gt;
&lt;td&gt;Stone Path&lt;/td&gt;
&lt;td&gt;12×8&lt;/td&gt;
&lt;td&gt;96&lt;/td&gt;
&lt;td&gt;Full rectangle + moss&lt;/td&gt;
&lt;td&gt;Gray + green&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;292&lt;/td&gt;
&lt;td&gt;Bridge&lt;/td&gt;
&lt;td&gt;12×6&lt;/td&gt;
&lt;td&gt;72&lt;/td&gt;
&lt;td&gt;Full rectangle&lt;/td&gt;
&lt;td&gt;Brown/wood&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;293&lt;/td&gt;
&lt;td&gt;Fence&lt;/td&gt;
&lt;td&gt;11×6&lt;/td&gt;
&lt;td&gt;~26&lt;/td&gt;
&lt;td&gt;Sparse posts+rails&lt;/td&gt;
&lt;td&gt;Brown/gold&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;294&lt;/td&gt;
&lt;td&gt;Portal&lt;/td&gt;
&lt;td&gt;12×8&lt;/td&gt;
&lt;td&gt;~96&lt;/td&gt;
&lt;td&gt;Oval (narrow edges)&lt;/td&gt;
&lt;td&gt;Purple&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;295&lt;/td&gt;
&lt;td&gt;Treasure&lt;/td&gt;
&lt;td&gt;8×7&lt;/td&gt;
&lt;td&gt;~36&lt;/td&gt;
&lt;td&gt;Diamond/chest icon&lt;/td&gt;
&lt;td&gt;Gold&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;That covers all &lt;strong&gt;10 terrain tiles&lt;/strong&gt; — the ground layer of the pixel world. In the final post, we fill the inventory with &lt;strong&gt;15 battle items&lt;/strong&gt; — health potions, mana potions, antidotes, revive crystals, elemental shards, capture balls, XP orbs, gold coins, keys, and scrolls.&lt;/p&gt;

&lt;p&gt;Explore all 310 animations live at &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; or &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;star the repo on GitHub&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://abduarrahman.com/blog/css-pixel-art-terrain-tiles-10-effects" rel="noopener noreferrer"&gt;abduarrahman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore all 310 animations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow the project:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/abduarrahman/" rel="noopener noreferrer"&gt;@abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@abduarrahmanscode" rel="noopener noreferrer"&gt;@abduarrahmanscode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://tiktok.com/@anduarrahmans" rel="noopener noreferrer"&gt;@anduarrahmans&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Support:&lt;/strong&gt; &lt;a href="https://ko-fi.com/abduarrahman" rel="noopener noreferrer"&gt;Ko-fi&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>animation</category>
      <category>showdev</category>
      <category>pixelart</category>
    </item>
    <item>
      <title>CSS Pixel Art Weather &amp; Sky — Sun, Moon, Rain &amp; Aurora with Code</title>
      <dc:creator>Muhammad Abdu ar Rahman</dc:creator>
      <pubDate>Sat, 16 May 2026 11:15:18 +0000</pubDate>
      <link>https://dev.to/abduarrahman/css-pixel-art-weather-sky-sun-moon-rain-aurora-with-code-1596</link>
      <guid>https://dev.to/abduarrahman/css-pixel-art-weather-sky-sun-moon-rain-aurora-with-code-1596</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Try them live&lt;/strong&gt; — All 10 weather &amp;amp; sky sprites are available on &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; where you can customize colors and speed. Source code on &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. See also &lt;a href="https://abduarrahman.com/blog/css-pixel-art-environment-15-effects" rel="noopener noreferrer"&gt;Environment &amp;amp; Nature&lt;/a&gt;, &lt;a href="https://abduarrahman.com/blog/css-pixel-art-monsters-dragons-20-effects" rel="noopener noreferrer"&gt;Dragons&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;The pixel world needs a sky! Weather and sky sprites are the celestial layer — sun, moon, clouds, rain, snow, lightning, rainbows, stars, wind, and aurora borealis. All built with the same &lt;code&gt;box-shadow&lt;/code&gt; technique on a single &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sky Animation Patterns
&lt;/h2&gt;

&lt;p&gt;Weather sprites use a mix of animation techniques:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Animation Type&lt;/th&gt;
&lt;th&gt;Effect&lt;/th&gt;
&lt;th&gt;Used By&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ray pulse&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Center pixels removed at 50%&lt;/td&gt;
&lt;td&gt;Sun&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Drift&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;All pixels shift 1px horizontally&lt;/td&gt;
&lt;td&gt;Cloud, Wind Spiral&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Opacity pulse&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Opacity drops to 0.85 at 50%&lt;/td&gt;
&lt;td&gt;Moon, Rain, Snow, Lightning, Rainbow, Star, Aurora&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All use &lt;code&gt;2.5x&lt;/code&gt; scale, &lt;code&gt;1.5s&lt;/code&gt; speed, and &lt;code&gt;ease-in-out infinite&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  276. Bright Sun
&lt;/h2&gt;

&lt;p&gt;Radiant sun with pulsing rays — the center of the pixel sky.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-sun" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env sun animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The sun uses a unique &lt;strong&gt;ray pulse&lt;/strong&gt; animation — at 50%, center-row pixels are &lt;strong&gt;removed&lt;/strong&gt; while outer rays remain. This makes the sun's corona appear to contract and expand. Two yellow tones give depth: &lt;code&gt;#fef9c3&lt;/code&gt; (light highlights) and &lt;code&gt;#fbbf24&lt;/code&gt; (amber core). The sprite is ~12×9 pixels — one of the largest in the set.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.EnvSun&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--esu-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--esu-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--esu-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#fbbf24&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--esu-scale&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;drop-shadow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--esu-glow&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;esu-anim&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--esu-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;esu-anim&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="c"&gt;/* top rays */&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#fef9c3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#fef9c3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* full body */&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#fef9c3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#fbbf24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#fbbf24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#fef9c3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* center rays + body */&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#fef9c3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#fbbf24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... */&lt;/span&gt;
      &lt;span class="c"&gt;/* bottom rays */&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;#fef9c3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;#fef9c3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;/* Center ray pixels REMOVED — rays contract inward */&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* fewer center pixels — corona pulses */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvSun"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Customize:&lt;/strong&gt; &lt;code&gt;--esu-speed&lt;/code&gt; (0.5-6s), &lt;code&gt;--esu-scale&lt;/code&gt; (1.5-4x), &lt;code&gt;--esu-glow&lt;/code&gt; (aura color).&lt;/p&gt;




&lt;h2&gt;
  
  
  277. Crescent Moon
&lt;/h2&gt;

&lt;p&gt;Glowing crescent moon with soft pulse — nighttime guardian.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-moon" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env moon animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Pure opacity pulse — both keyframes have &lt;strong&gt;identical pixel data&lt;/strong&gt;. At 50%, &lt;code&gt;opacity: 0.85&lt;/code&gt; creates a gentle moonlight fade. Three amber tones draw the crescent: &lt;code&gt;#fef9c3&lt;/code&gt; (bright tips), &lt;code&gt;#fde68a&lt;/code&gt; (body), &lt;code&gt;#fbbf24&lt;/code&gt; (base). The right side tapers inward on rows 5-7 to form the crescent shape. ~8×8 pixels.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvMoon"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#fef9c3&lt;/code&gt; (light tips), &lt;code&gt;#fde68a&lt;/code&gt; (body), &lt;code&gt;#fbbf24&lt;/code&gt; (base).&lt;/p&gt;




&lt;h2&gt;
  
  
  278. Fluffy Cloud
&lt;/h2&gt;

&lt;p&gt;Drifting cloud with horizontal movement — the only sky sprite that physically moves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-cloud" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env cloud animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, &lt;strong&gt;every pixel shifts +1px to the right&lt;/strong&gt; — the entire cloud drifts sideways. Top row shadows move from &lt;code&gt;x:3-8&lt;/code&gt; to &lt;code&gt;x:4-9&lt;/code&gt;, body rows shift similarly. This simulates a cloud floating across the sky. Slate palette: &lt;code&gt;#f1f5f9&lt;/code&gt; (top highlight), &lt;code&gt;#e2e8f0&lt;/code&gt; (body), &lt;code&gt;#cbd5e1&lt;/code&gt; (bottom shadow). ~12×6 pixels.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.EnvCloud&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--ecl-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--ecl-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--ecl-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#e2e8f0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ecl-anim&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--ecl-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;ecl-anim&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="c"&gt;/* top bump */&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#f1f5f9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#f1f5f9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#f1f5f9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#f1f5f9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#f1f5f9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#f1f5f9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* wide body */&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#e2e8f0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... up to x:9 */&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* bottom */&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;#cbd5e1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="c"&gt;/* ALL pixels shifted +1px right */&lt;/span&gt;
      &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#f1f5f9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#f1f5f9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvCloud"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  279. Rain Drop
&lt;/h2&gt;

&lt;p&gt;Teardrop raindrop with soft pulse — falling from the pixel sky.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-rain-drop" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env rain drop animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Opacity pulse from 1.0 to 0.85 — a gentle fade that mimics water catching light. Teardrop shape widens from top to middle then narrows to a point. Blue palette: &lt;code&gt;#93c5fd&lt;/code&gt; (top), &lt;code&gt;#60a5fa&lt;/code&gt; (body), &lt;code&gt;#3b82f6&lt;/code&gt; (base). Compact ~5×7 pixel sprite.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvRainDrop"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  280. Snowflake
&lt;/h2&gt;

&lt;p&gt;Crystalline snowflake with twinkle — frozen six-pointed star.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-snow-flake" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env snow flake animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Opacity pulse creates a soft twinkle. The snowflake uses a &lt;strong&gt;hollow center&lt;/strong&gt; design — gaps at positions like (4,5), (5,3), (5,4) create the crystalline structure. Alternating &lt;code&gt;#ffffff&lt;/code&gt; (white) and &lt;code&gt;#e0f2fe&lt;/code&gt; (ice blue) pixels add an icy shimmer. ~10×8 pixels with a cross/diamond pattern.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvSnowFlake"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#ffffff&lt;/code&gt; (white highlights), &lt;code&gt;#e0f2fe&lt;/code&gt; (ice blue).&lt;/p&gt;




&lt;h2&gt;
  
  
  281. Lightning Bolt
&lt;/h2&gt;

&lt;p&gt;Zigzag lightning bolt with electric pulse — storm strike.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-lightning-bolt" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env lightning bolt animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Opacity pulse from 1.0 to 0.85 creates a flickering flash — the bolt seems to surge with electricity. The zigzag shape is built from offset pixel rows — each row shifts left by 1-2 pixels, creating the angular bolt path. Three yellow tones: &lt;code&gt;#fef08a&lt;/code&gt; (bright tip), &lt;code&gt;#fbbf24&lt;/code&gt; (main body), &lt;code&gt;#f59e0b&lt;/code&gt; (dark base). ~6×9 pixels. The &lt;code&gt;drop-shadow(0 0 3px #fbbf24)&lt;/code&gt; adds an electric glow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;elb-anim&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="c"&gt;/* tip */&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#fef08a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#fef08a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* zigzag body */&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#fef08a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#fef08a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#fef08a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#fef08a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#fef08a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* shifts left */&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;#fbbf24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;#fbbf24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;#fbbf24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;#fbbf24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;#fbbf24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;#fbbf24&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* base */&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;#f59e0b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;#f59e0b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;#f59e0b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;#f59e0b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;#f59e0b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;#f59e0b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* identical */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.85&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvLightningBolt"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  282. Rainbow Arc
&lt;/h2&gt;

&lt;p&gt;Seven-color rainbow arc with soft pulse — after the storm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-rainbow" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env rainbow animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The rainbow uses &lt;strong&gt;7 rows, each a different ROYGBIV color&lt;/strong&gt; — &lt;code&gt;#ef4444&lt;/code&gt; (red), &lt;code&gt;#f97316&lt;/code&gt; (orange), &lt;code&gt;#eab308&lt;/code&gt; (yellow), &lt;code&gt;#22c55e&lt;/code&gt; (green), &lt;code&gt;#3b82f6&lt;/code&gt; (blue), &lt;code&gt;#8b5cf6&lt;/code&gt; (violet), &lt;code&gt;#ec4899&lt;/code&gt; (pink). Top 2 rows are narrower (8px) creating the arc shape, bottom 5 rows span full 12px width. Opacity pulse at 50% creates a soft shimmer. The most colorful sprite in the entire collection.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvRainbow"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors (top to bottom):&lt;/strong&gt; Red → Orange → Yellow → Green → Blue → Violet → Pink.&lt;/p&gt;




&lt;h2&gt;
  
  
  283. Twinkling Star
&lt;/h2&gt;

&lt;p&gt;Four-pointed star with diamond twinkle — night sky sparkle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-star-twinkle" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env star twinkle animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Opacity pulse creates a twinkle — the star brightens and dims like real starlight. Diamond shape: narrow top/bottom points (2px) and wide middle rows (10px). Two-tone gold: &lt;code&gt;#fef9c3&lt;/code&gt; (highlights at points and center) and &lt;code&gt;#fbbf24&lt;/code&gt; (amber cross arms). ~10×6 pixels.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvStarTwinkle"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  284. Wind Spiral
&lt;/h2&gt;

&lt;p&gt;Swirling wind vortex — the only sprite that shifts position without opacity change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-wind-spiral" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env wind spiral animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, &lt;strong&gt;all pixels shift 1px to the left&lt;/strong&gt; — no opacity change. The entire shape drifts left then returns, creating a wobbling wind effect. The sprite is a &lt;strong&gt;hollow oval/diamond outline&lt;/strong&gt; (no center fill) — only edge pixels exist. Slate palette: &lt;code&gt;#e2e8f0&lt;/code&gt; (top/bottom caps), &lt;code&gt;#cbd5e1&lt;/code&gt; (side edges). ~12×7 pixels.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;ews-anim&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="c"&gt;/* top cap */&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#e2e8f0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#e2e8f0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#e2e8f0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#e2e8f0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* left edge */&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#cbd5e1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* right edge */&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#cbd5e1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#cbd5e1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;9px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#cbd5e1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;#cbd5e1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;#cbd5e1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* ...bottom mirrors top */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;/* ALL pixels shifted 1px LEFT */&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#e2e8f0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#e2e8f0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#e2e8f0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#e2e8f0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#cbd5e1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#cbd5e1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* ...everything shifted ... */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvWindSpiral"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  285. Mini Aurora
&lt;/h2&gt;

&lt;p&gt;Northern lights in miniature — the most colorful single sprite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-aurora-mini" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env aurora mini animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Each row shifts the color sequence by 1 position, creating &lt;strong&gt;diagonal color bands&lt;/strong&gt; that mimic aurora borealis light curtains. Five colors repeat every 5 columns: &lt;code&gt;#22c55e&lt;/code&gt; (green), &lt;code&gt;#3b82f6&lt;/code&gt; (blue), &lt;code&gt;#8b5cf6&lt;/code&gt; (violet), &lt;code&gt;#ec4899&lt;/code&gt; (pink), &lt;code&gt;#f43f5e&lt;/code&gt; (rose). The solid 12×5 rectangle becomes a flowing aurora through the diagonal gradient. Opacity pulse at 50% adds a shimmer. Violet &lt;code&gt;drop-shadow(0 0 3px #8b5cf6)&lt;/code&gt; glow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvAuroraMini"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Weather &amp;amp; Sky Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Sprite&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;Animation&lt;/th&gt;
&lt;th&gt;Colors&lt;/th&gt;
&lt;th&gt;Sky Layer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;276&lt;/td&gt;
&lt;td&gt;Sun&lt;/td&gt;
&lt;td&gt;~12×9&lt;/td&gt;
&lt;td&gt;Ray contraction&lt;/td&gt;
&lt;td&gt;Yellow/amber&lt;/td&gt;
&lt;td&gt;Day&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;277&lt;/td&gt;
&lt;td&gt;Moon&lt;/td&gt;
&lt;td&gt;~8×8&lt;/td&gt;
&lt;td&gt;Opacity pulse&lt;/td&gt;
&lt;td&gt;Amber/cream&lt;/td&gt;
&lt;td&gt;Night&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;278&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;~12×6&lt;/td&gt;
&lt;td&gt;1px right drift&lt;/td&gt;
&lt;td&gt;Slate/white&lt;/td&gt;
&lt;td&gt;Both&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;279&lt;/td&gt;
&lt;td&gt;Rain Drop&lt;/td&gt;
&lt;td&gt;~5×7&lt;/td&gt;
&lt;td&gt;Opacity pulse&lt;/td&gt;
&lt;td&gt;Blue/cyan&lt;/td&gt;
&lt;td&gt;Storm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;280&lt;/td&gt;
&lt;td&gt;Snowflake&lt;/td&gt;
&lt;td&gt;~10×8&lt;/td&gt;
&lt;td&gt;Opacity pulse&lt;/td&gt;
&lt;td&gt;White/ice blue&lt;/td&gt;
&lt;td&gt;Winter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;281&lt;/td&gt;
&lt;td&gt;Lightning&lt;/td&gt;
&lt;td&gt;~6×9&lt;/td&gt;
&lt;td&gt;Opacity pulse&lt;/td&gt;
&lt;td&gt;Yellow/amber&lt;/td&gt;
&lt;td&gt;Storm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;282&lt;/td&gt;
&lt;td&gt;Rainbow&lt;/td&gt;
&lt;td&gt;~12×7&lt;/td&gt;
&lt;td&gt;Opacity pulse&lt;/td&gt;
&lt;td&gt;7 ROYGBIV colors&lt;/td&gt;
&lt;td&gt;Post-storm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;283&lt;/td&gt;
&lt;td&gt;Star&lt;/td&gt;
&lt;td&gt;~10×6&lt;/td&gt;
&lt;td&gt;Opacity pulse&lt;/td&gt;
&lt;td&gt;Gold/cream&lt;/td&gt;
&lt;td&gt;Night&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;284&lt;/td&gt;
&lt;td&gt;Wind Spiral&lt;/td&gt;
&lt;td&gt;~12×7&lt;/td&gt;
&lt;td&gt;1px left shift&lt;/td&gt;
&lt;td&gt;Slate gray&lt;/td&gt;
&lt;td&gt;Atmosphere&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;285&lt;/td&gt;
&lt;td&gt;Aurora&lt;/td&gt;
&lt;td&gt;~12×5&lt;/td&gt;
&lt;td&gt;Opacity pulse&lt;/td&gt;
&lt;td&gt;5 diagonal colors&lt;/td&gt;
&lt;td&gt;Arctic night&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;That covers all &lt;strong&gt;10 weather &amp;amp; sky sprites&lt;/strong&gt; — the celestial layer of the pixel world. In the next posts, we build the &lt;strong&gt;ground beneath&lt;/strong&gt; with terrain tiles (grass, water, sand, snow, lava, stone paths, bridges, fences, portals) and &lt;strong&gt;battle items&lt;/strong&gt; (potions, shards, capture balls, XP orbs, gold coins, keys, scrolls).&lt;/p&gt;

&lt;p&gt;Explore all 310 animations live at &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; or &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;star the repo on GitHub&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://abduarrahman.com/blog/css-pixel-art-weather-sky-10-effects" rel="noopener noreferrer"&gt;abduarrahman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore all 310 animations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow the project:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/abduarrahman/" rel="noopener noreferrer"&gt;@abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@abduarrahmanscode" rel="noopener noreferrer"&gt;@abduarrahmanscode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://tiktok.com/@anduarrahmans" rel="noopener noreferrer"&gt;@anduarrahmans&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Support:&lt;/strong&gt; &lt;a href="https://ko-fi.com/abduarrahman" rel="noopener noreferrer"&gt;Ko-fi&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>animation</category>
      <category>showdev</category>
      <category>pixelart</category>
    </item>
    <item>
      <title>CSS Pixel Art Nature — Trees, Plants &amp; Environment with Code</title>
      <dc:creator>Muhammad Abdu ar Rahman</dc:creator>
      <pubDate>Sat, 16 May 2026 11:15:15 +0000</pubDate>
      <link>https://dev.to/abduarrahman/css-pixel-art-nature-trees-plants-environment-with-code-36lp</link>
      <guid>https://dev.to/abduarrahman/css-pixel-art-nature-trees-plants-environment-with-code-36lp</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Try them live&lt;/strong&gt; — All 15 environment sprites are available on &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; where you can customize colors and speed. Source code on &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. See also &lt;a href="https://abduarrahman.com/blog/css-pixel-art-monsters-dragons-20-effects" rel="noopener noreferrer"&gt;Dragons&lt;/a&gt;, &lt;a href="https://abduarrahman.com/blog/css-pixel-art-monsters-part1-10-effects" rel="noopener noreferrer"&gt;Battle Monsters&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;The battle monsters and dragons need a world to live in! Environment sprites are the building blocks of a pixel art game world — trees, flowers, mushrooms, rocks, caves, waterfalls, crystals, and treasure chests. All built with the same &lt;code&gt;box-shadow&lt;/code&gt; technique on a single &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Environment Animation Patterns
&lt;/h2&gt;

&lt;p&gt;Environment sprites use &lt;strong&gt;gentler&lt;/strong&gt; animations than monsters — no prowling or attacking. Instead:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Animation Type&lt;/th&gt;
&lt;th&gt;Effect&lt;/th&gt;
&lt;th&gt;Used By&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sway&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Canopy pixels shift +1px right at 50%&lt;/td&gt;
&lt;td&gt;Trees, grass&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sway + Opacity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pixel shift + opacity drops to 0.85&lt;/td&gt;
&lt;td&gt;Flowers, mushrooms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Opacity pulse&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Opacity drops to 0.85 at 50% only&lt;/td&gt;
&lt;td&gt;Rock, cave, crystal, lava, chest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pixel data changes between frames&lt;/td&gt;
&lt;td&gt;Waterfall&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All use &lt;code&gt;2.5x&lt;/code&gt; scale, &lt;code&gt;1.5s&lt;/code&gt; speed, and &lt;code&gt;ease-in-out infinite&lt;/code&gt; — slower and calmer than battle animations.&lt;/p&gt;




&lt;h1&gt;
  
  
  Part A: Trees (#261-263)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  261. Oak Tree
&lt;/h2&gt;

&lt;p&gt;Classic broad-leaf oak with swaying canopy — the staple of any pixel forest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-oak-tree" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env oak tree animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, &lt;strong&gt;all canopy pixels&lt;/strong&gt; shift +1px to the right while the trunk stays static. This creates a wind-sway effect — the canopy bends right while the trunk holds firm. Three green tiers give the foliage depth: &lt;code&gt;#86efac&lt;/code&gt; (light leaf tips), &lt;code&gt;#22c55e&lt;/code&gt; (main canopy), &lt;code&gt;#16a34a&lt;/code&gt; (shadow foliage). Brown trunk uses &lt;code&gt;#92400e&lt;/code&gt; and &lt;code&gt;#78350f&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.EnvOakTree&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--eot-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--eot-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--eot-scale&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;eot-sway&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--eot-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;eot-sway&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="c"&gt;/* canopy (light) */&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#86efac&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#86efac&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* canopy (main) */&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#22c55e&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#22c55e&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... */&lt;/span&gt;
      &lt;span class="c"&gt;/* trunk */&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;#92400e&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;#78350f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="c"&gt;/* canopy shifts +1px right */&lt;/span&gt;
      &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#86efac&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#86efac&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#22c55e&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#22c55e&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... */&lt;/span&gt;
      &lt;span class="c"&gt;/* trunk stays same */&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;#92400e&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;#78350f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvOakTree"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Customize:&lt;/strong&gt; &lt;code&gt;--eot-speed&lt;/code&gt; (0.5-4s), &lt;code&gt;--eot-scale&lt;/code&gt; (1.5-4x).&lt;/p&gt;




&lt;h2&gt;
  
  
  262. Pine Tree
&lt;/h2&gt;

&lt;p&gt;Tall evergreen pine with swaying branches — winter forest essential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-pine-tree" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env pine tree animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Same sway technique as the oak — branch pixels shift +1px at 50%, trunk stays fixed. The pine uses a triangular shape with tiered branches. Darker green palette: &lt;code&gt;#16a34a&lt;/code&gt; (branch tips), &lt;code&gt;#15803d&lt;/code&gt; (main branches), &lt;code&gt;#166534&lt;/code&gt; (shadow branches). Same brown trunk.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvPineTree"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  263. Cherry Blossom
&lt;/h2&gt;

&lt;p&gt;Pink cherry tree with falling petals — the prettiest tree in the forest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-cherry-blossom" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env cherry blossom animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Canopy pixels sway +1px at 50% just like the oak, but with a &lt;strong&gt;pink palette&lt;/strong&gt; — &lt;code&gt;#fda4af&lt;/code&gt; (light pink blossoms), &lt;code&gt;#f472b6&lt;/code&gt; (pink flowers), &lt;code&gt;#ec4899&lt;/code&gt; (hot pink buds). The dark trunk &lt;code&gt;#92400e&lt;/code&gt; provides strong contrast against the delicate pink canopy.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.EnvCherryBlossom&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--ecb-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--ecb-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--ecb-scale&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ecb-sway&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--ecb-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#fda4af&lt;/code&gt; (light pink), &lt;code&gt;#f472b6&lt;/code&gt; (pink), &lt;code&gt;#ec4899&lt;/code&gt; (hot pink), &lt;code&gt;#92400e&lt;/code&gt; (brown trunk).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvCherryBlossom"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Part B: Plants &amp;amp; Flowers (#264-270)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  264. Green Bush
&lt;/h2&gt;

&lt;p&gt;Round foliage bush with gentle sway — ground cover for forests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-bush" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env bush animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, all foliage pixels shift +1px right AND opacity drops to 0.85. This double effect creates a gentle wind-rustle — the bush sways and slightly dims as leaves flutter. Green palette: &lt;code&gt;#86efac&lt;/code&gt; (highlights), &lt;code&gt;#22c55e&lt;/code&gt; (body), &lt;code&gt;#16a34a&lt;/code&gt; (shadow).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvBush"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  265. Red Flower
&lt;/h2&gt;

&lt;p&gt;Bright red flower on a green stem — pops of color in the meadow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-flower-red" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env flower red animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, petal pixels shift +1px and opacity drops to 0.85 — a wind-sway effect on a smaller scale. Red petals (&lt;code&gt;#ef4444&lt;/code&gt;, &lt;code&gt;#dc2626&lt;/code&gt;) contrast with the green stem (&lt;code&gt;#22c55e&lt;/code&gt;, &lt;code&gt;#16a34a&lt;/code&gt;). The compact ~4×8 sprite is one of the smallest in the set.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvFlowerRed"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  266. Blue Flower
&lt;/h2&gt;

&lt;p&gt;Cool blue flower with gentle sway — rare meadow bloom.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-flower-blue" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env flower blue animation&lt;/p&gt;

&lt;p&gt;Same structure as the Red Flower — only colors change. Blue palette: &lt;code&gt;#60a5fa&lt;/code&gt; (petal highlight), &lt;code&gt;#3b82f6&lt;/code&gt; (main petal), &lt;code&gt;#1d4ed8&lt;/code&gt; (petal shadow). Green stem identical.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvFlowerBlue"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  267. Red Mushroom
&lt;/h2&gt;

&lt;p&gt;Classic red-capped mushroom — forest floor staple.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-mushroom-red" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env mushroom red animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, cap pixels shift +1px right and opacity drops to 0.85. The red cap (&lt;code&gt;#ef4444&lt;/code&gt;, &lt;code&gt;#dc2626&lt;/code&gt;) sits on a white stem (&lt;code&gt;#f1f5f9&lt;/code&gt;, &lt;code&gt;#e2e8f0&lt;/code&gt;) — the classic toadstool look. White dot pixels on the cap add the iconic mushroom detail.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvMushroomRed"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  268. Glow Mushroom
&lt;/h2&gt;

&lt;p&gt;Bioluminescent mushroom with eerie cyan glow — cave dweller.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-mushroom-glow" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env mushroom glow animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Same sway + opacity pulse as the red mushroom, but with a &lt;strong&gt;cyan glow palette&lt;/strong&gt;: &lt;code&gt;#67e8f9&lt;/code&gt; (cap highlight), &lt;code&gt;#22d3ee&lt;/code&gt; (cap body), &lt;code&gt;#06b6d4&lt;/code&gt; (cap shadow). A &lt;code&gt;drop-shadow(0 0 6px #22d3ee)&lt;/code&gt; filter creates the bioluminescent aura. The pale stem uses &lt;code&gt;#a5f3fc&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvMushroomGlow"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  269. Tall Grass
&lt;/h2&gt;

&lt;p&gt;Waving grass blades — ground texture for meadows and plains.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-grass-tall" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env grass tall animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The tallest thin sprite — blade pixels shift +1px at 50% with opacity dropping to 0.85. Multiple thin vertical strips of green (&lt;code&gt;#4ade80&lt;/code&gt;, &lt;code&gt;#22c55e&lt;/code&gt;, &lt;code&gt;#16a34a&lt;/code&gt;) create individual grass blades. The sway makes them wave in the wind.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvGrassTall"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  270. Mossy Rock
&lt;/h2&gt;

&lt;p&gt;Ancient stone covered in moss — environmental detail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-rock-mossy" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env rock mossy animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;No pixel shifting — only an &lt;strong&gt;opacity pulse&lt;/strong&gt; (drops to 0.85 at 50%). This creates a subtle shimmer like light playing across a wet stone surface. Gray stone palette (&lt;code&gt;#94a3b8&lt;/code&gt;, &lt;code&gt;#64748b&lt;/code&gt;, &lt;code&gt;#475569&lt;/code&gt;) with green moss patches (&lt;code&gt;#22c55e&lt;/code&gt;) on top.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvRockMossy"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Part C: Features (#271-275)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  271. Cave Entrance
&lt;/h2&gt;

&lt;p&gt;Dark cave mouth with flickering shadows — dungeon gateway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-cave-entrance" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env cave entrance animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Opacity pulse from 1.0 to 0.85 — the cave mouth seems to flicker between visible and shadowy, as if torchlight is wavering inside. Dark palette: &lt;code&gt;#1f2937&lt;/code&gt; (cave wall), &lt;code&gt;#111827&lt;/code&gt; (dark interior), &lt;code&gt;#374151&lt;/code&gt; (stone frame), &lt;code&gt;#4b5563&lt;/code&gt; (rock detail).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvCaveEntrance"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  272. Waterfall
&lt;/h2&gt;

&lt;p&gt;Cascading water over rock face — the only sprite with flowing pixel animation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-waterfall" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env waterfall animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;only environment sprite with actual pixel changes&lt;/strong&gt; between frames. At 50%, the water pixels shift — creating a downward flow illusion. Rock pixels (&lt;code&gt;#64748b&lt;/code&gt;, &lt;code&gt;#475569&lt;/code&gt;) stay static while blue water pixels (&lt;code&gt;#60a5fa&lt;/code&gt;, &lt;code&gt;#93c5fd&lt;/code&gt;) cascade. The foam at the base (&lt;code&gt;#e0f2fe&lt;/code&gt;) adds a realistic splash detail.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.EnvWaterfall&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--ewf-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--ewf-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--ewf-scale&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ewf-flow&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--ewf-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;ewf-flow&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="c"&gt;/* rock frame */&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#64748b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#64748b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* water */&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#60a5fa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#60a5fa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#60a5fa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#60a5fa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#93c5fd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#60a5fa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#60a5fa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#93c5fd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* foam */&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;#e0f2fe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;#e0f2fe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;#e0f2fe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;#e0f2fe&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="c"&gt;/* rock stays same */&lt;/span&gt;
      &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#64748b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#64748b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* water pixels shift down */&lt;/span&gt;
      &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#93c5fd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#93c5fd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#60a5fa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#60a5fa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#60a5fa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#93c5fd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#93c5fd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;#60a5fa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* foam shifts */&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;#60a5fa&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;#e0f2fe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;#e0f2fe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;#60a5fa&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.85&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvWaterfall"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  273. Crystal Cluster
&lt;/h2&gt;

&lt;p&gt;Glowing crystal formation — magical cave treasure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-crystal-cluster" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env crystal cluster animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Opacity pulse from 1.0 to 0.85 creates a &lt;strong&gt;shimmer effect&lt;/strong&gt; — the crystals appear to catch and release light. Purple/violet palette: &lt;code&gt;#c084fc&lt;/code&gt; (crystal tips), &lt;code&gt;#a855f7&lt;/code&gt; (crystal body), &lt;code&gt;#7c3aed&lt;/code&gt; (crystal base). A &lt;code&gt;drop-shadow(0 0 6px #a855f7)&lt;/code&gt; adds magical glow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvCrystalCluster"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  274. Lava Pool
&lt;/h2&gt;

&lt;p&gt;Bubbling lava pool — volcanic hazard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-lava-pool" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env lava pool animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Opacity pulse creates a bubbling glow effect — the lava seems to brighten and dim as heat rises. Hot palette: &lt;code&gt;#fbbf24&lt;/code&gt; (yellow surface), &lt;code&gt;#f97316&lt;/code&gt; (orange lava), &lt;code&gt;#ef4444&lt;/code&gt; (red edges), &lt;code&gt;#7f1d1d&lt;/code&gt; (dark crust). &lt;code&gt;drop-shadow(0 0 8px #f97316)&lt;/code&gt; adds intense heat glow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvLavaPool"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  275. Treasure Chest
&lt;/h2&gt;

&lt;p&gt;Golden chest overflowing with loot — adventure reward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/env-treasure-chest" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — env treasure chest animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Opacity pulse creates a &lt;strong&gt;gleam effect&lt;/strong&gt; — the treasure seems to catch light and shimmer. Gold/amber palette: &lt;code&gt;#fef08a&lt;/code&gt; (gold highlight), &lt;code&gt;#fbbf24&lt;/code&gt; (main gold), &lt;code&gt;#f59e0b&lt;/code&gt; (amber body), &lt;code&gt;#92400e&lt;/code&gt; (dark wood base). A &lt;code&gt;drop-shadow(0 0 6px #fbbf24)&lt;/code&gt; adds golden radiance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EnvTreasureChest"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Environment Sprite Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Sprite&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;Animation&lt;/th&gt;
&lt;th&gt;Palette&lt;/th&gt;
&lt;th&gt;Effect Feel&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;261&lt;/td&gt;
&lt;td&gt;Oak Tree&lt;/td&gt;
&lt;td&gt;~8×9&lt;/td&gt;
&lt;td&gt;Canopy sway +1px&lt;/td&gt;
&lt;td&gt;3-tier green&lt;/td&gt;
&lt;td&gt;Wind sway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;262&lt;/td&gt;
&lt;td&gt;Pine Tree&lt;/td&gt;
&lt;td&gt;~6×10&lt;/td&gt;
&lt;td&gt;Branch sway +1px&lt;/td&gt;
&lt;td&gt;Dark green&lt;/td&gt;
&lt;td&gt;Wind sway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;263&lt;/td&gt;
&lt;td&gt;Cherry Blossom&lt;/td&gt;
&lt;td&gt;~8×9&lt;/td&gt;
&lt;td&gt;Canopy sway +1px&lt;/td&gt;
&lt;td&gt;Pink + brown&lt;/td&gt;
&lt;td&gt;Petal drift&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;264&lt;/td&gt;
&lt;td&gt;Bush&lt;/td&gt;
&lt;td&gt;~8×5&lt;/td&gt;
&lt;td&gt;Sway + opacity 0.85&lt;/td&gt;
&lt;td&gt;Green&lt;/td&gt;
&lt;td&gt;Rustle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;265&lt;/td&gt;
&lt;td&gt;Red Flower&lt;/td&gt;
&lt;td&gt;~4×8&lt;/td&gt;
&lt;td&gt;Sway + opacity 0.85&lt;/td&gt;
&lt;td&gt;Red + green&lt;/td&gt;
&lt;td&gt;Wind sway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;266&lt;/td&gt;
&lt;td&gt;Blue Flower&lt;/td&gt;
&lt;td&gt;~4×8&lt;/td&gt;
&lt;td&gt;Sway + opacity 0.85&lt;/td&gt;
&lt;td&gt;Blue + green&lt;/td&gt;
&lt;td&gt;Wind sway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;267&lt;/td&gt;
&lt;td&gt;Red Mushroom&lt;/td&gt;
&lt;td&gt;~6×6&lt;/td&gt;
&lt;td&gt;Sway + opacity 0.85&lt;/td&gt;
&lt;td&gt;Red + white&lt;/td&gt;
&lt;td&gt;Rustle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;268&lt;/td&gt;
&lt;td&gt;Glow Mushroom&lt;/td&gt;
&lt;td&gt;~6×6&lt;/td&gt;
&lt;td&gt;Sway + opacity 0.85&lt;/td&gt;
&lt;td&gt;Cyan glow&lt;/td&gt;
&lt;td&gt;Bioluminesce&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;269&lt;/td&gt;
&lt;td&gt;Tall Grass&lt;/td&gt;
&lt;td&gt;~6×6&lt;/td&gt;
&lt;td&gt;Sway + opacity 0.85&lt;/td&gt;
&lt;td&gt;Light green&lt;/td&gt;
&lt;td&gt;Wave&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;270&lt;/td&gt;
&lt;td&gt;Mossy Rock&lt;/td&gt;
&lt;td&gt;~8×5&lt;/td&gt;
&lt;td&gt;Opacity 0.85 only&lt;/td&gt;
&lt;td&gt;Gray + green&lt;/td&gt;
&lt;td&gt;Shimmer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;271&lt;/td&gt;
&lt;td&gt;Cave Entrance&lt;/td&gt;
&lt;td&gt;~8×8&lt;/td&gt;
&lt;td&gt;Opacity 0.85 only&lt;/td&gt;
&lt;td&gt;Dark gray&lt;/td&gt;
&lt;td&gt;Flicker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;272&lt;/td&gt;
&lt;td&gt;Waterfall&lt;/td&gt;
&lt;td&gt;~6×9&lt;/td&gt;
&lt;td&gt;Pixel flow + opacity&lt;/td&gt;
&lt;td&gt;Blue + gray&lt;/td&gt;
&lt;td&gt;Flowing water&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;273&lt;/td&gt;
&lt;td&gt;Crystal Cluster&lt;/td&gt;
&lt;td&gt;~6×7&lt;/td&gt;
&lt;td&gt;Opacity 0.85 only&lt;/td&gt;
&lt;td&gt;Purple glow&lt;/td&gt;
&lt;td&gt;Shimmer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;274&lt;/td&gt;
&lt;td&gt;Lava Pool&lt;/td&gt;
&lt;td&gt;~8×4&lt;/td&gt;
&lt;td&gt;Opacity 0.85 only&lt;/td&gt;
&lt;td&gt;Red/orange&lt;/td&gt;
&lt;td&gt;Bubble&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;275&lt;/td&gt;
&lt;td&gt;Treasure Chest&lt;/td&gt;
&lt;td&gt;~8×6&lt;/td&gt;
&lt;td&gt;Opacity 0.85 only&lt;/td&gt;
&lt;td&gt;Gold/amber&lt;/td&gt;
&lt;td&gt;Gleam&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;That covers all &lt;strong&gt;15 environment sprites&lt;/strong&gt; — trees, plants, mushrooms, and terrain features. In the next posts, we build the &lt;strong&gt;sky above&lt;/strong&gt; (sun, moon, clouds, rain, snow, lightning, rainbows, stars, wind, aurora) and the &lt;strong&gt;ground below&lt;/strong&gt; (terrain tiles and battle items).&lt;/p&gt;

&lt;p&gt;Explore all 310 animations live at &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; or &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;star the repo on GitHub&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://abduarrahman.com/blog/css-pixel-art-environment-15-effects" rel="noopener noreferrer"&gt;abduarrahman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore all 310 animations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow the project:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/abduarrahman/" rel="noopener noreferrer"&gt;@abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@abduarrahmanscode" rel="noopener noreferrer"&gt;@abduarrahmanscode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://tiktok.com/@anduarrahmans" rel="noopener noreferrer"&gt;@anduarrahmans&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Support:&lt;/strong&gt; &lt;a href="https://ko-fi.com/abduarrahman" rel="noopener noreferrer"&gt;Ko-fi&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>animation</category>
      <category>showdev</category>
      <category>pixelart</category>
    </item>
    <item>
      <title>CSS Pixel Art Monsters Part 2 &amp; Dragons — 20 Creatures with Code</title>
      <dc:creator>Muhammad Abdu ar Rahman</dc:creator>
      <pubDate>Sat, 16 May 2026 11:15:13 +0000</pubDate>
      <link>https://dev.to/abduarrahman/css-pixel-art-monsters-part-2-dragons-20-creatures-with-code-31p7</link>
      <guid>https://dev.to/abduarrahman/css-pixel-art-monsters-part-2-dragons-20-creatures-with-code-31p7</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Try them live&lt;/strong&gt; — All 20 creatures are available on &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; where you can customize colors and speed. Source code on &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. See also &lt;a href="https://abduarrahman.com/blog/css-pixel-art-monsters-part1-10-effects" rel="noopener noreferrer"&gt;Battle Monsters Part 1&lt;/a&gt;, &lt;a href="https://abduarrahman.com/blog/css-pixel-art-baby-monsters-10-effects" rel="noopener noreferrer"&gt;Baby Monsters&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;This post covers the final evolution: &lt;strong&gt;10 more battle monsters&lt;/strong&gt; and &lt;strong&gt;10 elemental dragons&lt;/strong&gt; — the largest, most detailed pixel art sprites in CSSKit. Dragons use ~14×12 pixel grids (vs ~10×10 for monsters) with &lt;code&gt;translateY(-4px)&lt;/code&gt; fly animations and elemental glow auras.&lt;/p&gt;




&lt;h1&gt;
  
  
  Part A: Battle Monsters (#241-250)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  241. Shadow Cat
&lt;/h2&gt;

&lt;p&gt;Sleek dark feline with glowing pink eyes — stealthy void prowler.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/monster-shadow-cat" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — monster shadow cat animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, tail pixels at row 7 shift from &lt;code&gt;(1,7) (4,7)&lt;/code&gt; to &lt;code&gt;(0,7) (5,7)&lt;/code&gt; — the tail sways outward. A single pink pixel (&lt;code&gt;#f472b6&lt;/code&gt;) at the eye position creates a menacing glow against the dark body (&lt;code&gt;#374151&lt;/code&gt;, &lt;code&gt;#1f2937&lt;/code&gt;). The most compact monster sprite at ~6×9 pixels.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"MonsterShadowCat"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  242. Thunder Bird
&lt;/h2&gt;

&lt;p&gt;Majestic sky lord with sparking yellow wings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/monster-thunder-bird" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — monster thunder bird animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, wing-tip pixels shift — row 5 loses pixels at &lt;code&gt;x=1&lt;/code&gt; and &lt;code&gt;x=8&lt;/code&gt;, row 6 shifts from &lt;code&gt;x=2-5&lt;/code&gt; to &lt;code&gt;x=3-6&lt;/code&gt;. This creates a wing-fold motion during the &lt;code&gt;translateY(-2px)&lt;/code&gt; bob. Yellow/gold palette (&lt;code&gt;#eab308&lt;/code&gt;, &lt;code&gt;#facc15&lt;/code&gt;, &lt;code&gt;#a16207&lt;/code&gt;) gives an electric feel.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"MonsterThunderBird"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  243–250. More Battle Monsters
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;243. Ice Wyrm&lt;/strong&gt; — Frozen serpentine beast. At 50%, tail tip at row 9 shifts from &lt;code&gt;(5,9)&lt;/code&gt; to &lt;code&gt;(6,9)&lt;/code&gt;. Cyan palette: &lt;code&gt;#a5f3fc&lt;/code&gt; (head), &lt;code&gt;#67e8f9&lt;/code&gt; (body), &lt;code&gt;#22d3ee&lt;/code&gt; (tail). ~8×10 sprite — tallest of the monsters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;244. Fire Salamander&lt;/strong&gt; — Amphibian wreathed in flame. At 50%, foot pixel at row 8 shifts position. Three-tone fire palette: &lt;code&gt;#fbbf24&lt;/code&gt; (head/flame), &lt;code&gt;#f97316&lt;/code&gt; (body), &lt;code&gt;#ef4444&lt;/code&gt; (base).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;245. Water Kraken&lt;/strong&gt; — Deep sea terror with writhing tentacles. The most dramatic pixel changes: at 50%, tentacle pixels at rows 6-7 redistribute significantly — tentacles spread outward then retract. Blue palette: &lt;code&gt;#0ea5e9&lt;/code&gt;, &lt;code&gt;#0284c7&lt;/code&gt;, &lt;code&gt;#0369a1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;246. Earth Golem&lt;/strong&gt; — Immovable stone guardian. Pure &lt;code&gt;translateY(-2px)&lt;/code&gt; bob with no pixel changes between frames. Brown palette: &lt;code&gt;#a16207&lt;/code&gt;, &lt;code&gt;#92400e&lt;/code&gt;, &lt;code&gt;#78350f&lt;/code&gt;. ~10×9 sprite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;247. Psychic Brain&lt;/strong&gt; — Floating psionic horror. Pure bob animation. Fuchsia palette: &lt;code&gt;#f0abfc&lt;/code&gt;, &lt;code&gt;#d946ef&lt;/code&gt;, &lt;code&gt;#a21caf&lt;/code&gt;. ~10×8 sprite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;248. Venom Plant&lt;/strong&gt; — Carnivorous flora with dripping toxins. Pure bob animation. Red/green palette: &lt;code&gt;#ef4444&lt;/code&gt; (venom), &lt;code&gt;#22c55e&lt;/code&gt; (leaves), &lt;code&gt;#16a34a&lt;/code&gt; (stem). ~10×9 sprite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;249. Sand Worm&lt;/strong&gt; — Giant desert worm. Tallest sprite at ~10×10. Amber palette: &lt;code&gt;#fbbf24&lt;/code&gt;, &lt;code&gt;#d4a017&lt;/code&gt;, &lt;code&gt;#a16207&lt;/code&gt;. Pure bob animation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;250. Storm Eagle&lt;/strong&gt; — Tempest raptor riding thunderheads. Blue palette: &lt;code&gt;#60a5fa&lt;/code&gt;, &lt;code&gt;#3b82f6&lt;/code&gt;, &lt;code&gt;#1d4ed8&lt;/code&gt;. Pure bob animation. ~10×9 sprite.&lt;/p&gt;




&lt;h1&gt;
  
  
  Part B: Elemental Dragons (#251-260)
&lt;/h1&gt;

&lt;p&gt;Dragons are the largest pixel art in CSSKit — &lt;strong&gt;~14×12 pixel grids&lt;/strong&gt; with 4-color palettes, elemental glow auras, and &lt;code&gt;translateY(-4px)&lt;/code&gt; fly animations. All 10 dragons share the &lt;strong&gt;same silhouette&lt;/strong&gt; — they're palette swaps.&lt;/p&gt;

&lt;h2&gt;
  
  
  251. Fire Dragon
&lt;/h2&gt;

&lt;p&gt;Mighty fire dragon with blazing wings — the legendary beast of flame.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/dragon-fire" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — dragon fire animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The dragon uses a ~14×12 pixel grid with 4 color tiers (head → wings → body → tail). At the 50% keyframe, two things happen: (1) eye pixels at &lt;code&gt;(0,6)&lt;/code&gt; and &lt;code&gt;(1,6)&lt;/code&gt; disappear — the dragon blinks, and (2) &lt;code&gt;translateY(-4px)&lt;/code&gt; lifts the entire dragon upward — a fly/hover bob. The &lt;code&gt;drop-shadow(0 0 6px #ef4444)&lt;/code&gt; creates a fiery aura.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.DragonFire&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--dfr-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--dfr-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--dfr-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ef4444&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--dfr-scale&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;drop-shadow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--dfr-glow&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;dfr-fly&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--dfr-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;dfr-fly&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="c"&gt;/* head (yellow) */&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#fef08a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#fef08a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... */&lt;/span&gt;
      &lt;span class="c"&gt;/* wings (orange) */&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;#f97316&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;#f97316&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... */&lt;/span&gt;
      &lt;span class="c"&gt;/* body (red) */&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;#ef4444&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;#ef4444&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... */&lt;/span&gt;
      &lt;span class="c"&gt;/* tail (dark red) */&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="m"&gt;#dc2626&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;/* Same pixels minus eye at (1,6) — dragon blinks */&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* ... (0,6) and (1,6) removed ... */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--dfr-scale&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-4px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"DragonFire"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Customize:&lt;/strong&gt; &lt;code&gt;--dfr-speed&lt;/code&gt; (0.3-4s), &lt;code&gt;--dfr-scale&lt;/code&gt; (1-3.5x), &lt;code&gt;--dfr-glow&lt;/code&gt; (aura color).&lt;/p&gt;




&lt;h2&gt;
  
  
  252. Ice Dragon
&lt;/h2&gt;

&lt;p&gt;Frost-breathing arctic dragon with crystalline wings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/dragon-ice" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — dragon ice animation&lt;/p&gt;

&lt;p&gt;Same silhouette as Fire Dragon — only colors change. Ice palette: &lt;code&gt;#e0f2fe&lt;/code&gt; (head), &lt;code&gt;#7dd3fc&lt;/code&gt; (wings), &lt;code&gt;#38bdf8&lt;/code&gt; (body), &lt;code&gt;#0284c7&lt;/code&gt; (tail). Cyan glow aura.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"DragonIce"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  253–260. More Elemental Dragons
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;253. Thunder Dragon&lt;/strong&gt; — Lightning-wreathed storm beast. Palette: &lt;code&gt;#fef9c3&lt;/code&gt; (pale yellow), &lt;code&gt;#facc15&lt;/code&gt; (gold), &lt;code&gt;#eab308&lt;/code&gt; (amber), &lt;code&gt;#ca8a04&lt;/code&gt; (dark gold). Golden glow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;254. Shadow Dragon&lt;/strong&gt; — Void-touched nether beast. Palette: &lt;code&gt;#c084fc&lt;/code&gt; (light purple), &lt;code&gt;#a855f7&lt;/code&gt; (violet), &lt;code&gt;#7c3aed&lt;/code&gt; (deep purple), &lt;code&gt;#6d28d9&lt;/code&gt; (dark violet). Violet glow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;255. Crystal Dragon&lt;/strong&gt; — Prismatic gemstone dragon. Palette: &lt;code&gt;#f0abfc&lt;/code&gt; (light pink), &lt;code&gt;#e879f9&lt;/code&gt; (fuchsia), &lt;code&gt;#d946ef&lt;/code&gt; (purple-pink), &lt;code&gt;#a21caf&lt;/code&gt; (dark magenta). Fuchsia glow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;256. Nature Dragon&lt;/strong&gt; — Ancient forest guardian. Palette: &lt;code&gt;#86efac&lt;/code&gt; (mint), &lt;code&gt;#4ade80&lt;/code&gt; (green), &lt;code&gt;#22c55e&lt;/code&gt; (main), &lt;code&gt;#15803d&lt;/code&gt; (dark). Green glow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;257. Sea Dragon&lt;/strong&gt; — Oceanic leviathan. Palette: &lt;code&gt;#a5f3fc&lt;/code&gt; (ice blue), &lt;code&gt;#67e8f9&lt;/code&gt; (cyan), &lt;code&gt;#06b6d4&lt;/code&gt; (main), &lt;code&gt;#0e7490&lt;/code&gt; (deep). Cyan glow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;258. Wind Dragon&lt;/strong&gt; — Sky phantom. Palette: &lt;code&gt;#e2e8f0&lt;/code&gt; (silver), &lt;code&gt;#cbd5e1&lt;/code&gt; (light slate), &lt;code&gt;#94a3b8&lt;/code&gt; (main), &lt;code&gt;#64748b&lt;/code&gt; (dark). Slate glow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;259. Ancient Dragon&lt;/strong&gt; — Elder wyrm of untold age. &lt;strong&gt;Slightly larger&lt;/strong&gt; sprite (~16×12). Palette: &lt;code&gt;#fde68a&lt;/code&gt; (amber), &lt;code&gt;#d4a017&lt;/code&gt; (gold), &lt;code&gt;#a16207&lt;/code&gt; (amber), &lt;code&gt;#854d0e&lt;/code&gt; (dark). 3-pixel wing blink at 50%.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;260. Baby Emperor Dragon&lt;/strong&gt; — Destined king of all dragons. Uses &lt;strong&gt;4 color shades&lt;/strong&gt; instead of 3, with an extra &lt;code&gt;#fbbf24&lt;/code&gt; amber crown layer. Palette: &lt;code&gt;#fef9c3&lt;/code&gt;, &lt;code&gt;#fbbf24&lt;/code&gt;, &lt;code&gt;#f59e0b&lt;/code&gt;, &lt;code&gt;#d97706&lt;/code&gt;, &lt;code&gt;#b45309&lt;/code&gt;. Golden royal glow.&lt;/p&gt;




&lt;h2&gt;
  
  
  Dragon Color Reference
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Dragon&lt;/th&gt;
&lt;th&gt;Head&lt;/th&gt;
&lt;th&gt;Wings&lt;/th&gt;
&lt;th&gt;Body&lt;/th&gt;
&lt;th&gt;Tail&lt;/th&gt;
&lt;th&gt;Glow&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;251&lt;/td&gt;
&lt;td&gt;Fire&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fef08a&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#f97316&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#ef4444&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#dc2626&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#ef4444&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;252&lt;/td&gt;
&lt;td&gt;Ice&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#e0f2fe&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#7dd3fc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#38bdf8&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#0284c7&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#67e8f9&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;253&lt;/td&gt;
&lt;td&gt;Thunder&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fef9c3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#facc15&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#eab308&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#ca8a04&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#facc15&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;254&lt;/td&gt;
&lt;td&gt;Shadow&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#c084fc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a855f7&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#7c3aed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#6d28d9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a855f7&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;255&lt;/td&gt;
&lt;td&gt;Crystal&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#f0abfc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#e879f9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#d946ef&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a21caf&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#d946ef&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;256&lt;/td&gt;
&lt;td&gt;Nature&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#86efac&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#4ade80&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#22c55e&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#15803d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#22c55e&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;257&lt;/td&gt;
&lt;td&gt;Sea&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a5f3fc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#67e8f9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#06b6d4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#0e7490&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#06b6d4&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;258&lt;/td&gt;
&lt;td&gt;Wind&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#e2e8f0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#cbd5e1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#94a3b8&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#64748b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#94a3b8&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;259&lt;/td&gt;
&lt;td&gt;Ancient&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fde68a&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#d4a017&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a16207&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#854d0e&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a16207&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;260&lt;/td&gt;
&lt;td&gt;Emperor&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fef9c3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fbbf24&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#f59e0b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#b45309&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fbbf24&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Creating a custom dragon:&lt;/strong&gt; Copy the Fire Dragon CSS, replace the 4 color values with your element palette, change the CSS variable prefix (&lt;code&gt;--dfr-&lt;/code&gt; → &lt;code&gt;--dxx-&lt;/code&gt;), and update the glow color. The pixel art stays identical.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;That covers all &lt;strong&gt;10 battle monsters&lt;/strong&gt; and &lt;strong&gt;10 elemental dragons&lt;/strong&gt;. In the next posts, we build the world around them — &lt;strong&gt;pixel art environments&lt;/strong&gt; (trees, mushrooms, waterfalls, caves) and &lt;strong&gt;weather effects&lt;/strong&gt; (sun, rain, snow, lightning).&lt;/p&gt;

&lt;p&gt;Explore all 310 animations live at &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; or &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;star the repo on GitHub&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://abduarrahman.com/blog/css-pixel-art-monsters-dragons-20-effects" rel="noopener noreferrer"&gt;abduarrahman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore all 310 animations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow the project:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/abduarrahman/" rel="noopener noreferrer"&gt;@abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@abduarrahmanscode" rel="noopener noreferrer"&gt;@abduarrahmanscode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://tiktok.com/@anduarrahmans" rel="noopener noreferrer"&gt;@anduarrahmans&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Support:&lt;/strong&gt; &lt;a href="https://ko-fi.com/abduarrahman" rel="noopener noreferrer"&gt;Ko-fi&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>animation</category>
      <category>showdev</category>
      <category>pixelart</category>
    </item>
    <item>
      <title>CSS Pixel Art Battle Monsters Part 1 — 10 Creatures with Code</title>
      <dc:creator>Muhammad Abdu ar Rahman</dc:creator>
      <pubDate>Sat, 16 May 2026 11:15:11 +0000</pubDate>
      <link>https://dev.to/abduarrahman/css-pixel-art-battle-monsters-part-1-10-creatures-with-code-4cpn</link>
      <guid>https://dev.to/abduarrahman/css-pixel-art-battle-monsters-part-1-10-creatures-with-code-4cpn</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Try them live&lt;/strong&gt; — All 10 battle monsters are available on &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; where you can customize colors and speed. Source code on &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. See also &lt;a href="https://abduarrahman.com/blog/css-pixel-art-baby-monsters-10-effects" rel="noopener noreferrer"&gt;Baby Monsters&lt;/a&gt;, &lt;a href="https://abduarrahman.com/blog/css-pixel-art-eggs-10-elemental-effects" rel="noopener noreferrer"&gt;Elemental Eggs&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;The baby monsters have evolved! Battle monsters are larger, more detailed pixel art sprites (~10×10 pixel grids) with idle animations — prowling, creeping, slithering, and floating. All built with the same &lt;code&gt;box-shadow&lt;/code&gt; technique on a single &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Battle Monster Technique
&lt;/h2&gt;

&lt;p&gt;These monsters are bigger than the babies — larger pixel grids mean more detail. The animation pattern is consistent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;2-frame idle&lt;/strong&gt; (&lt;code&gt;0%,100%&lt;/code&gt; + &lt;code&gt;50%&lt;/code&gt;) with &lt;code&gt;ease-in-out infinite&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;translateY(-2px)&lt;/code&gt; at 50% for a breathing/prowling bob&lt;/li&gt;
&lt;li&gt;Subtle pixel shifts between frames (leg positions, tentacle movement, tail sway)&lt;/li&gt;
&lt;li&gt;Scale factor: &lt;code&gt;2.5x&lt;/code&gt; default (range 1.5-4x)&lt;/li&gt;
&lt;li&gt;Speed: &lt;code&gt;1s&lt;/code&gt; default (range 0.3-4s)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  231. Battle Wolf
&lt;/h2&gt;

&lt;p&gt;Fierce wolf with prowling animation — loyal beast with sharp fangs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/monster-wolf" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — monster wolf animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At the 50% keyframe, &lt;code&gt;translateY(-2px)&lt;/code&gt; lifts the wolf into a prowl. The feet pixels at row 8 shift: &lt;code&gt;2px 8px&lt;/code&gt; and &lt;code&gt;8px 8px&lt;/code&gt; move to &lt;code&gt;3px 8px&lt;/code&gt; and &lt;code&gt;7px 8px&lt;/code&gt; — the paws step inward, simulating a creeping gait. Three-tone gray palette gives depth: &lt;code&gt;#e2e8f0&lt;/code&gt; (head), &lt;code&gt;#94a3b8&lt;/code&gt; (body), &lt;code&gt;#64748b&lt;/code&gt; (legs).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.MonsterWolf&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--mwo-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--mwo-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2.5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--mwo-scale&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;mwo-idle&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--mwo-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;mwo-idle&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="c"&gt;/* head */&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#e2e8f0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#e2e8f0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* body */&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;#94a3b8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;#94a3b8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c"&gt;/* ... */&lt;/span&gt;
      &lt;span class="c"&gt;/* legs */&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;#64748b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;#64748b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* same but feet at 3px,7px instead of 2px,8px */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--mwo-scale&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-2px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"MonsterWolf"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  232. Giant Spider
&lt;/h2&gt;

&lt;p&gt;Venomous spider with creeping legs — eight-legged terror with red eyes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/monster-spider" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — monster spider animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The widest sprite in the set (~12px wide). At 50%, leg pixels at rows 6-8 shift positions — legs spread outward then contract, creating a creeping motion. A single red pixel (&lt;code&gt;#ef4444&lt;/code&gt;) at position &lt;code&gt;(3,3)&lt;/code&gt; creates a menacing eye. Dark navy palette (&lt;code&gt;#1e293b&lt;/code&gt;, &lt;code&gt;#374151&lt;/code&gt;) keeps the spider menacing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"MonsterSpider"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  233. Death Scorpion
&lt;/h2&gt;

&lt;p&gt;Armored scorpion with tail strike — desert predator with amber stinger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/monster-scorpion" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — monster scorpion animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Shares the ~12px width with the spider. At 50%, bottom-row pincer pixels shift subtly, and &lt;code&gt;translateY(-2px)&lt;/code&gt; creates a tail-raising bob. Amber stinger tips at positions &lt;code&gt;(0,0)&lt;/code&gt; and &lt;code&gt;(11,0)&lt;/code&gt; use &lt;code&gt;#fbbf24&lt;/code&gt; (bright yellow) against the dark body &lt;code&gt;#a16207&lt;/code&gt; and &lt;code&gt;#92400e&lt;/code&gt; — the contrasting color makes the stinger visually pop.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"MonsterScorpion"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  234. Mystic Owl
&lt;/h2&gt;

&lt;p&gt;Wise owl with hovering idle — nocturnal seer with amber body.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/monster-owl" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — monster owl animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The most compact sprite (~8×8 grid). The &lt;code&gt;translateY(-2px)&lt;/code&gt; bob combined with the symmetric silhouette creates an owl hovering silently. Brown tones (&lt;code&gt;#92400e&lt;/code&gt;, &lt;code&gt;#78350f&lt;/code&gt;) throughout. The bottom feet pixels shift slightly between frames for a perching adjustment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"MonsterOwl"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  235. Venom Serpent
&lt;/h2&gt;

&lt;p&gt;Slithering snake with coiling tail — the tallest sprite at ~10px height.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/monster-snake" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — monster snake animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, the tail pixels at row 9 shift from &lt;code&gt;(4,9) (5,9)&lt;/code&gt; to &lt;code&gt;(3,9) (4,9)&lt;/code&gt; — the tail sways left by one pixel. Combined with &lt;code&gt;translateY(-2px)&lt;/code&gt;, this creates a slithering motion. Three green tones (&lt;code&gt;#22c55e&lt;/code&gt; head, &lt;code&gt;#16a34a&lt;/code&gt; body, &lt;code&gt;#15803d&lt;/code&gt; tail) create depth along the snake's length.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"MonsterSnake"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  236–240. More Battle Monsters
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;236. Cave Bear&lt;/strong&gt; — Massive bear with standing/prowling idle. At 50%, feet pixels at row 7 shift between two positions (x=0,8 vs x=1,9), simulating a weight-shift step. Earthy brown palette: &lt;code&gt;#92400e&lt;/code&gt; (body), &lt;code&gt;#78350f&lt;/code&gt; (lower), &lt;code&gt;#6b4f2a&lt;/code&gt; (claws). ~10×10 grid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;237. Deep Jellyfish&lt;/strong&gt; — Bioluminescent jellyfish with the most dramatic animation. At 50%, tentacle pixels at rows 6-8 change significantly — tentacles retract inward (pixels disappear at some positions, appear at others). Purple palette: &lt;code&gt;#c084fc&lt;/code&gt; (dome), &lt;code&gt;#a855f7&lt;/code&gt; (tentacles), &lt;code&gt;#7c3aed&lt;/code&gt; (tips). This is the most visually active idle in the set.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;238. Fungal Shroom&lt;/strong&gt; — Poisonous mushroom with gentle hover. Both keyframes have &lt;strong&gt;identical pixel data&lt;/strong&gt; — the only animation is &lt;code&gt;translateY(-2px)&lt;/code&gt;. Pure transform animation. Red cap (&lt;code&gt;#dc2626&lt;/code&gt;, &lt;code&gt;#ef4444&lt;/code&gt;) with white stem dots (&lt;code&gt;#f1f5f9&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;239. Ghost Flame&lt;/strong&gt; — Undead fire spirit with flickering wisp. At 50%, base pixels at row 7 shift left by 1px — the flame leans as if blown by wind. Cyan palette: &lt;code&gt;#67e8f9&lt;/code&gt; (top), &lt;code&gt;#22d3ee&lt;/code&gt; (body), &lt;code&gt;#06b6d4&lt;/code&gt; (core), &lt;code&gt;#0891b2&lt;/code&gt; (base).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;mgf-idle&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* base pixels at row 7: x=1, x=8 */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* base pixels shift to x=0, x=9 (flicker) */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--mgf-scale&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-2px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;240. Crystal Golem&lt;/strong&gt; — Living crystal construct. Both keyframes have identical pixels — pure &lt;code&gt;translateY(-2px)&lt;/code&gt; bob animation. Four-tier cyan palette gives crystalline depth: &lt;code&gt;#a5f3fc&lt;/code&gt; (crown), &lt;code&gt;#67e8f9&lt;/code&gt; (upper body), &lt;code&gt;#22d3ee&lt;/code&gt; (lower body), &lt;code&gt;#06b6d4&lt;/code&gt; (feet).&lt;/p&gt;




&lt;h2&gt;
  
  
  Battle Monster Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Monster&lt;/th&gt;
&lt;th&gt;Sprite Size&lt;/th&gt;
&lt;th&gt;Palette&lt;/th&gt;
&lt;th&gt;Pixel Animation&lt;/th&gt;
&lt;th&gt;Idle Feel&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;231&lt;/td&gt;
&lt;td&gt;Battle Wolf&lt;/td&gt;
&lt;td&gt;8×9&lt;/td&gt;
&lt;td&gt;Slate gray&lt;/td&gt;
&lt;td&gt;Feet step&lt;/td&gt;
&lt;td&gt;Prowling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;232&lt;/td&gt;
&lt;td&gt;Giant Spider&lt;/td&gt;
&lt;td&gt;12×9&lt;/td&gt;
&lt;td&gt;Dark navy + red eye&lt;/td&gt;
&lt;td&gt;Legs spread/contract&lt;/td&gt;
&lt;td&gt;Creeping&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;233&lt;/td&gt;
&lt;td&gt;Death Scorpion&lt;/td&gt;
&lt;td&gt;12×8&lt;/td&gt;
&lt;td&gt;Amber/brown&lt;/td&gt;
&lt;td&gt;Pincer shift&lt;/td&gt;
&lt;td&gt;Tail raise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;234&lt;/td&gt;
&lt;td&gt;Mystic Owl&lt;/td&gt;
&lt;td&gt;8×8&lt;/td&gt;
&lt;td&gt;Brown&lt;/td&gt;
&lt;td&gt;Feet shift&lt;/td&gt;
&lt;td&gt;Hovering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;235&lt;/td&gt;
&lt;td&gt;Venom Serpent&lt;/td&gt;
&lt;td&gt;6×10&lt;/td&gt;
&lt;td&gt;Green&lt;/td&gt;
&lt;td&gt;Tail sway&lt;/td&gt;
&lt;td&gt;Slithering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;236&lt;/td&gt;
&lt;td&gt;Cave Bear&lt;/td&gt;
&lt;td&gt;10×10&lt;/td&gt;
&lt;td&gt;Brown/amber&lt;/td&gt;
&lt;td&gt;Weight shift&lt;/td&gt;
&lt;td&gt;Prowling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;237&lt;/td&gt;
&lt;td&gt;Deep Jellyfish&lt;/td&gt;
&lt;td&gt;10×9&lt;/td&gt;
&lt;td&gt;Purple/violet&lt;/td&gt;
&lt;td&gt;Tentacles retract&lt;/td&gt;
&lt;td&gt;Pulsing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;238&lt;/td&gt;
&lt;td&gt;Fungal Shroom&lt;/td&gt;
&lt;td&gt;10×9&lt;/td&gt;
&lt;td&gt;Red/white&lt;/td&gt;
&lt;td&gt;None (transform only)&lt;/td&gt;
&lt;td&gt;Hovering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;239&lt;/td&gt;
&lt;td&gt;Ghost Flame&lt;/td&gt;
&lt;td&gt;10×9&lt;/td&gt;
&lt;td&gt;Cyan&lt;/td&gt;
&lt;td&gt;Base flicker&lt;/td&gt;
&lt;td&gt;Flickering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;240&lt;/td&gt;
&lt;td&gt;Crystal Golem&lt;/td&gt;
&lt;td&gt;10×10&lt;/td&gt;
&lt;td&gt;Cyan/light blue&lt;/td&gt;
&lt;td&gt;None (transform only)&lt;/td&gt;
&lt;td&gt;Bobbing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;That covers the first &lt;strong&gt;10 battle monsters&lt;/strong&gt; from CSSKit. In the next post, more monsters emerge — including &lt;strong&gt;shadow cats, thunder birds, ice wyrms, fire salamanders, and water krakens&lt;/strong&gt; — followed by &lt;strong&gt;10 elemental dragons&lt;/strong&gt; (fire, ice, thunder, shadow, crystal, nature, water, wind, ancient, baby emperor).&lt;/p&gt;

&lt;p&gt;Explore all 310 animations live at &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; or &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;star the repo on GitHub&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://abduarrahman.com/blog/css-pixel-art-monsters-part1-10-effects" rel="noopener noreferrer"&gt;abduarrahman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore all 310 animations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow the project:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/abduarrahman/" rel="noopener noreferrer"&gt;@abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@abduarrahmanscode" rel="noopener noreferrer"&gt;@abduarrahmanscode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://tiktok.com/@anduarrahmans" rel="noopener noreferrer"&gt;@anduarrahmans&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Support:&lt;/strong&gt; &lt;a href="https://ko-fi.com/abduarrahman" rel="noopener noreferrer"&gt;Ko-fi&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>animation</category>
      <category>showdev</category>
      <category>pixelart</category>
    </item>
    <item>
      <title>CSS Pixel Art Baby Monsters — 10 Idle Animations with Code</title>
      <dc:creator>Muhammad Abdu ar Rahman</dc:creator>
      <pubDate>Sat, 16 May 2026 11:15:08 +0000</pubDate>
      <link>https://dev.to/abduarrahman/css-pixel-art-baby-monsters-10-idle-animations-with-code-1hcm</link>
      <guid>https://dev.to/abduarrahman/css-pixel-art-baby-monsters-10-idle-animations-with-code-1hcm</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Try them live&lt;/strong&gt; — All 10 baby monsters are available on &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; where you can customize colors and speed. Source code on &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. See also &lt;a href="https://abduarrahman.com/blog/css-pixel-art-eggs-10-elemental-effects" rel="noopener noreferrer"&gt;Elemental Eggs&lt;/a&gt;, &lt;a href="https://abduarrahman.com/blog/css-pixel-art-box-shadow-22-effects" rel="noopener noreferrer"&gt;Pixel Art Box-Shadow Basics&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;The eggs have hatched! Each of the 10 elemental eggs from the previous post becomes a &lt;strong&gt;baby monster&lt;/strong&gt; with a unique idle animation — floating, hopping, swaying, flapping, shivering, and pulsing. All built with the same &lt;code&gt;box-shadow&lt;/code&gt; pixel art technique.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Idle Animation Pattern
&lt;/h2&gt;

&lt;p&gt;Each baby monster has a &lt;strong&gt;2-frame idle cycle&lt;/strong&gt; (0%/100% + 50%) using &lt;code&gt;ease-in-out infinite&lt;/code&gt;. The personality comes from:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Idle Type&lt;/th&gt;
&lt;th&gt;Transform&lt;/th&gt;
&lt;th&gt;Effect&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Float&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;translateY(-2px)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Gentle hover&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;translateY(-4px)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Energetic bounce&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bob&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;translateY(-3px)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Aquatic drift&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sway&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rotate(3deg)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Plant-like tilt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flap&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;translateY(-2px)&lt;/code&gt; + wing pixels change&lt;/td&gt;
&lt;td&gt;Wing spread&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Shiver&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;translateX(±1px)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cold tremor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dig&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;translateY(+2px)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Downward burrow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pulse&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;scale(1.05)&lt;/code&gt; + glow expansion&lt;/td&gt;
&lt;td&gt;Energy burst&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flutter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;translateY(-3px)&lt;/code&gt; + pixel removal&lt;/td&gt;
&lt;td&gt;Wing fold&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  221. Fire Lizard Baby
&lt;/h2&gt;

&lt;p&gt;Tiny fire lizard with flickering tail flame — a gentle floating idle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/baby-fire-lizard" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — baby fire lizard animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At the 50% keyframe, two things happen: (1) the entire sprite lifts &lt;code&gt;translateY(-2px)&lt;/code&gt; creating a gentle float, and (2) foot pixels shift — &lt;code&gt;1px 7px #b91c1c&lt;/code&gt; changes to &lt;code&gt;0px 7px #b91c1c&lt;/code&gt; (left foot shifts left by 1px), simulating a weight shift. The tail flame pixels at the top stay constant. Orange &lt;code&gt;drop-shadow(0 0 4px)&lt;/code&gt; provides ambient ember glow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.babyFireLizard&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--bfl-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.8s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--bfl-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--bfl-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f97316&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--bfl-scale&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;drop-shadow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--bfl-glow&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;bfl-idle&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--bfl-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#f97316&lt;/code&gt; (orange flame), &lt;code&gt;#ef4444&lt;/code&gt; (red body), &lt;code&gt;#dc2626&lt;/code&gt; (dark red lower), &lt;code&gt;#164e63&lt;/code&gt; (teal eyes).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"babyFireLizard"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  222. Water Turtle Baby
&lt;/h2&gt;

&lt;p&gt;Tiny turtle with bobbing animation — aquatic drift with retracting limbs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/baby-water-turtle" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — baby water turtle animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, &lt;code&gt;translateY(-3px)&lt;/code&gt; bobs the turtle upward. Meanwhile, 2 of the 4 foot pixels at row 8 disappear — simulating limbs pulling into the shell during the bob. The slow 1.2s timing gives it a calm, aquatic feel. Blue shell uses three shades for depth.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.babyWaterTurtle&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--bwt-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.2s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--bwt-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--bwt-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3b82f6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;bwt-bob&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--bwt-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#3b82f6&lt;/code&gt; (blue head/limbs), &lt;code&gt;#1d4ed8&lt;/code&gt; (dark shell), &lt;code&gt;#60a5fa&lt;/code&gt; (light feet), &lt;code&gt;#22d3ee&lt;/code&gt; (cyan eye highlight).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"babyWaterTurtle"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  223. Grass Bulb Baby
&lt;/h2&gt;

&lt;p&gt;Tiny plant with swaying leaves — the only one using rotation instead of translation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/baby-grass-bulb" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — baby grass bulb animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, &lt;code&gt;rotate(3deg)&lt;/code&gt; tilts the entire plant clockwise — like a gentle breeze. Leaf-tip pixels at the top shift from &lt;code&gt;#22c55e&lt;/code&gt; to &lt;code&gt;#4ade80&lt;/code&gt; (lighter green), creating a shimmering effect. The 1.5s timing makes it the slowest baby, giving a calm, plant-like sway.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.babyGrassBulb&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--bgb-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--bgb-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--bgb-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#22c55e&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;bgb-sway&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--bgb-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#22c55e&lt;/code&gt; (green body), &lt;code&gt;#4ade80&lt;/code&gt; (light leaf tips), &lt;code&gt;#16a34a&lt;/code&gt; (dark green lower), &lt;code&gt;#15803d&lt;/code&gt; (trunk base).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"babyGrassBulb"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  224. Electric Mouse Baby
&lt;/h2&gt;

&lt;p&gt;Tiny mouse with hop and sparky cheeks — the most energetic idle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/baby-electric-mouse" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — baby electric mouse animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, three things happen simultaneously: (1) &lt;code&gt;translateY(-4px)&lt;/code&gt; — the highest jump of any baby, (2) middle foot pixels at row 9 disappear (feet leave ground), and (3) &lt;code&gt;drop-shadow&lt;/code&gt; expands from &lt;code&gt;0 0 4px&lt;/code&gt; to &lt;code&gt;0 0 10px&lt;/code&gt; — a lightning glow pulse. The fast 0.6s timing makes it feel hyperactive. Cyan cheeks (&lt;code&gt;#22d3ee&lt;/code&gt;) and pink mouth (&lt;code&gt;#f472b6&lt;/code&gt;) add personality.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.babyElectricMouse&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--bem-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.6s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--bem-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--bem-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#facc15&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;bem-hop&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--bem-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;bem-hop&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* full sprite with 4 feet pixels */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* sprite with only 2 feet pixels */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--bem-scale&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-4px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nl"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;drop-shadow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--bem-glow&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"babyElectricMouse"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  225. Dark Bat Baby
&lt;/h2&gt;

&lt;p&gt;Tiny bat with flapping wings — fastest animation at 0.5s.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/baby-dark-bat" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — baby dark bat animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;At 50%, wing pixels spread outward — pixels at rows 5-6 shift from &lt;code&gt;1px/5px-6px&lt;/code&gt; to &lt;code&gt;0px/6px-7px&lt;/code&gt; positions, extending the wingspan by 1 pixel on each side. The lower body pixels at row 7 disappear during the flap. &lt;code&gt;translateY(-2px)&lt;/code&gt; adds a slight lift. The 0.5s speed creates rapid wing beats.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"babyDarkBat"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#7c3aed&lt;/code&gt; (purple body/wings), &lt;code&gt;#6d28d9&lt;/code&gt; (dark wing edges), &lt;code&gt;#fbbf24&lt;/code&gt; (yellow eyes).&lt;/p&gt;




&lt;h2&gt;
  
  
  226–230. More Baby Monsters
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;226. Ice Seal Baby&lt;/strong&gt; — Shivering animation with 4 keyframe stops (0%, 25%, 50%, 75%). At 25% it shifts +1px right, at 75% it shifts -1px left, creating a horizontal tremble. At 50%, the entire body palette swaps from icy blues to pure white &lt;code&gt;#ffffff&lt;/code&gt; — a frost-flash shimmer effect. Unique among babies for using horizontal movement instead of vertical.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;bis-shiver&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="c"&gt;/* normal icy blue pixels */&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;25&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--bis-scale&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;translateX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* white flash pixels */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;75&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--bis-scale&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;translateX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-1px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;227. Psychic Eye Baby&lt;/strong&gt; — Pulsing glow + scale throb. At 50%, body color shifts from deep fuchsia &lt;code&gt;#d946ef&lt;/code&gt; to lighter &lt;code&gt;#e879f9&lt;/code&gt;, glow expands from 6px to 14px &lt;code&gt;drop-shadow&lt;/code&gt;, and scale bumps to 1.05×. The eye area (&lt;code&gt;#f0abfc&lt;/code&gt;) stays constant while the body "pulses" with psychic energy. Slowest at 1.5s.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;228. Earth Mole Baby&lt;/strong&gt; — Digging bob with downward motion. At 50%, the sprite moves &lt;code&gt;translateY(+2px)&lt;/code&gt; — the only baby that moves &lt;strong&gt;downward&lt;/strong&gt; instead of up, simulating burrowing. Upper body shifts from dark brown &lt;code&gt;#a16207&lt;/code&gt; to golden &lt;code&gt;#ca8a04&lt;/code&gt; (dirt churning effect). Yellow eyes (&lt;code&gt;#fef08a&lt;/code&gt;) stay bright.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;229. Wind Bird Baby&lt;/strong&gt; — Wing flutter with pixel removal. At 50%, light-gray wing-tip pixels drop from 6 to 4 visible (2 pixels disappear), simulating wings folding inward. &lt;code&gt;translateY(-3px)&lt;/code&gt; lifts the bird. Fastest animation at 0.4s. No color swap — purely structural pixel removal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;230. Light Fairy Baby&lt;/strong&gt; — The most complex idle, combining 4 effects: (1) head pixels flash from cream &lt;code&gt;#fef9c3&lt;/code&gt; to white &lt;code&gt;#ffffff&lt;/code&gt;, (2) glow expands from 6px to 14px, (3) &lt;code&gt;translateY(-3px)&lt;/code&gt; float, and (4) &lt;code&gt;scale(1.05)&lt;/code&gt; throb — all at 50%. Creates a divine twinkle effect.&lt;/p&gt;




&lt;h2&gt;
  
  
  Baby Monster Idle Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Monster&lt;/th&gt;
&lt;th&gt;Idle Type&lt;/th&gt;
&lt;th&gt;Move&lt;/th&gt;
&lt;th&gt;Color Shift&lt;/th&gt;
&lt;th&gt;Glow Expand&lt;/th&gt;
&lt;th&gt;Speed&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;221&lt;/td&gt;
&lt;td&gt;Fire Lizard&lt;/td&gt;
&lt;td&gt;Float&lt;/td&gt;
&lt;td&gt;-2px up&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;0.8s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;222&lt;/td&gt;
&lt;td&gt;Water Turtle&lt;/td&gt;
&lt;td&gt;Bob&lt;/td&gt;
&lt;td&gt;-3px up&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;1.2s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;223&lt;/td&gt;
&lt;td&gt;Grass Bulb&lt;/td&gt;
&lt;td&gt;Sway&lt;/td&gt;
&lt;td&gt;rotate 3deg&lt;/td&gt;
&lt;td&gt;Green→lighter&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;1.5s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;224&lt;/td&gt;
&lt;td&gt;Electric Mouse&lt;/td&gt;
&lt;td&gt;Hop&lt;/td&gt;
&lt;td&gt;-4px up&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;4px→10px&lt;/td&gt;
&lt;td&gt;0.6s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;225&lt;/td&gt;
&lt;td&gt;Dark Bat&lt;/td&gt;
&lt;td&gt;Flap&lt;/td&gt;
&lt;td&gt;-2px up&lt;/td&gt;
&lt;td&gt;Wing spread&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;0.5s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;226&lt;/td&gt;
&lt;td&gt;Ice Seal&lt;/td&gt;
&lt;td&gt;Shiver&lt;/td&gt;
&lt;td&gt;±1px horizontal&lt;/td&gt;
&lt;td&gt;Blue→white&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;1.0s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;227&lt;/td&gt;
&lt;td&gt;Psychic Eye&lt;/td&gt;
&lt;td&gt;Pulse&lt;/td&gt;
&lt;td&gt;No (scale 1.05×)&lt;/td&gt;
&lt;td&gt;Fuchsia→lighter&lt;/td&gt;
&lt;td&gt;6px→14px&lt;/td&gt;
&lt;td&gt;1.5s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;228&lt;/td&gt;
&lt;td&gt;Earth Mole&lt;/td&gt;
&lt;td&gt;Dig&lt;/td&gt;
&lt;td&gt;+2px down&lt;/td&gt;
&lt;td&gt;Brown→golden&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;0.8s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;229&lt;/td&gt;
&lt;td&gt;Wind Bird&lt;/td&gt;
&lt;td&gt;Flutter&lt;/td&gt;
&lt;td&gt;-3px up&lt;/td&gt;
&lt;td&gt;Wing pixels vanish&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;0.4s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;230&lt;/td&gt;
&lt;td&gt;Light Fairy&lt;/td&gt;
&lt;td&gt;Twinkle&lt;/td&gt;
&lt;td&gt;-3px up + 1.05×&lt;/td&gt;
&lt;td&gt;Cream→white&lt;/td&gt;
&lt;td&gt;6px→14px&lt;/td&gt;
&lt;td&gt;1.0s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;That covers all &lt;strong&gt;10 baby monsters&lt;/strong&gt; from CSSKit. In the next posts, these babies grow into &lt;strong&gt;battle monsters&lt;/strong&gt; and eventually &lt;strong&gt;elemental dragons&lt;/strong&gt; — larger, more detailed pixel art sprites with attack animations.&lt;/p&gt;

&lt;p&gt;Explore all 310 animations live at &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; or &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;star the repo on GitHub&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://abduarrahman.com/blog/css-pixel-art-baby-monsters-10-effects" rel="noopener noreferrer"&gt;abduarrahman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore all 310 animations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow the project:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/abduarrahman/" rel="noopener noreferrer"&gt;@abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@abduarrahmanscode" rel="noopener noreferrer"&gt;@abduarrahmanscode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://tiktok.com/@anduarrahmans" rel="noopener noreferrer"&gt;@anduarrahmans&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Support:&lt;/strong&gt; &lt;a href="https://ko-fi.com/abduarrahman" rel="noopener noreferrer"&gt;Ko-fi&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>animation</category>
      <category>showdev</category>
      <category>pixelart</category>
    </item>
    <item>
      <title>CSS Pixel Art Eggs — 10 Elemental Hatching Effects with Code</title>
      <dc:creator>Muhammad Abdu ar Rahman</dc:creator>
      <pubDate>Sat, 16 May 2026 11:15:06 +0000</pubDate>
      <link>https://dev.to/abduarrahman/css-pixel-art-eggs-10-elemental-hatching-effects-with-code-4ndh</link>
      <guid>https://dev.to/abduarrahman/css-pixel-art-eggs-10-elemental-hatching-effects-with-code-4ndh</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Try them live&lt;/strong&gt; — All 10 elemental eggs are available on &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; where you can customize colors and speed. Source code on &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. See also &lt;a href="https://abduarrahman.com/blog/css-pixel-art-box-shadow-22-effects" rel="noopener noreferrer"&gt;Pixel Art Box-Shadow Basics&lt;/a&gt;, &lt;a href="https://abduarrahman.com/blog/css-card-divider-animations-30-effects" rel="noopener noreferrer"&gt;Card &amp;amp; Divider Animations&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Monster-taming game eggs — 10 elemental pixel art eggs, each with a unique color palette and a shared &lt;strong&gt;hatching animation&lt;/strong&gt; pattern. The egg wobbles, flashes white, and pulses with elemental glow. All built with pure CSS &lt;code&gt;box-shadow&lt;/code&gt; pixel art.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Shared Technique
&lt;/h2&gt;

&lt;p&gt;All 10 eggs use the &lt;strong&gt;exact same animation structure&lt;/strong&gt; — only the color palette changes per element. Here's the pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0%-70%-100%  →  Rest state (normal egg pixels)
10%          →  Wobble right (rotate 5deg)
20%          →  Wobble left (rotate -5deg)
30%          →  Wobble right (rotate 3deg)
40%          →  Wobble left (rotate -3deg)
50%          →  PULSE: white flash + glow intensifies + scale 1.05x
60%          →  Back to rest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each egg has 3 color tiers: &lt;strong&gt;highlight&lt;/strong&gt; (top rows), &lt;strong&gt;body&lt;/strong&gt; (middle rows), &lt;strong&gt;shadow&lt;/strong&gt; (bottom rows), plus &lt;code&gt;#ffffff&lt;/code&gt; white for the flash effect.&lt;/p&gt;




&lt;h2&gt;
  
  
  211. Fire Egg
&lt;/h2&gt;

&lt;p&gt;Blazing fire egg with pulsing heat — orange/red glow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/egg-fire" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — egg fire animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The egg is drawn on a 1px element using &lt;code&gt;box-shadow&lt;/code&gt; — each &lt;code&gt;Xpx Ypx #color&lt;/code&gt; places one pixel. The animation has three phases:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Wobble&lt;/strong&gt; (10%-40%): &lt;code&gt;rotate(5deg) → rotate(-5deg) → rotate(3deg) → rotate(-3deg)&lt;/code&gt; — simulates a hatching wiggle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pulse&lt;/strong&gt; (50%): Top-row highlight pixels change to &lt;code&gt;#ffffff&lt;/code&gt; (white flash), &lt;code&gt;drop-shadow&lt;/code&gt; expands from &lt;code&gt;0 0 4px&lt;/code&gt; to &lt;code&gt;0 0 12px&lt;/code&gt; (intensified glow), and &lt;code&gt;scale(1.05)&lt;/code&gt; makes the egg swell&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rest&lt;/strong&gt; (0%, 70%, 100%): Normal pixel art, gentle &lt;code&gt;0 0 4px&lt;/code&gt; ambient glow
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.EggFire&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--fir-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--fir-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--fir-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f97316&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-28px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--fir-scale&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;drop-shadow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--fir-glow&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;fir-hatch&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--fir-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#fbbf24&lt;/code&gt; (amber highlight), &lt;code&gt;#f97316&lt;/code&gt; (orange body), &lt;code&gt;#ef4444&lt;/code&gt; (red shadow).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EggFire"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  212. Water Egg
&lt;/h2&gt;

&lt;p&gt;Cool water egg with rippling surface — blue glow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/egg-water" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — egg water animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Identical structure to the Fire Egg — same keyframe stops, same wobble/pulse pattern. Only the color palette changes: cyan highlights, sky blue body, deep blue shadow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.EggWater&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--wat-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--wat-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--wat-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#0ea5e9&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--wat-scale&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;drop-shadow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--wat-glow&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;wat-hatch&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--wat-speed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#67e8f9&lt;/code&gt; (cyan highlight), &lt;code&gt;#0ea5e9&lt;/code&gt; (sky blue body), &lt;code&gt;#3b82f6&lt;/code&gt; (blue shadow).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EggWater"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  213. Grass Egg
&lt;/h2&gt;

&lt;p&gt;Natural grass egg with leaf patterns — green glow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/egg-grass" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — egg grass animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Green palette applied to the same template. At the 50% keyframe, select top-row pixels flash white while the &lt;code&gt;drop-shadow&lt;/code&gt; glow intensifies from 4px to 12px spread.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.EggGrass&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--gra-speed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.5s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--gra-scale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--gra-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#22c55e&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="c"&gt;/* ...same structure... */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#86efac&lt;/code&gt; (light green), &lt;code&gt;#22c55e&lt;/code&gt; (green), &lt;code&gt;#16a34a&lt;/code&gt; (dark green).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EggGrass"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  214. Electric Egg
&lt;/h2&gt;

&lt;p&gt;Charged electric egg with sparks — yellow/gold glow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/egg-electric" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — egg electric animation&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.EggElectric&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--ele-glow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#eab308&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="c"&gt;/* Colors: #fef08a highlight, #eab308 body, #facc15 shadow */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"EggElectric"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  215–220. More Elemental Eggs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;215. Dark Egg&lt;/strong&gt; — Shadowy purple egg with mist. Colors: &lt;code&gt;#a78bfa&lt;/code&gt; (light purple), &lt;code&gt;#7c3aed&lt;/code&gt; (purple), &lt;code&gt;#6d28d9&lt;/code&gt; (dark purple). Glow: &lt;code&gt;#7c3aed&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;216. Ice Egg&lt;/strong&gt; — Frozen crystalline egg. Colors: &lt;code&gt;#a5f3fc&lt;/code&gt; (ice blue), &lt;code&gt;#06b6d4&lt;/code&gt; (cyan), &lt;code&gt;#0891b2&lt;/code&gt; (dark cyan). Glow: &lt;code&gt;#06b6d4&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;217. Psychic Egg&lt;/strong&gt; — Mysterious pink aura egg. Colors: &lt;code&gt;#f9a8d4&lt;/code&gt; (light pink), &lt;code&gt;#ec4899&lt;/code&gt; (hot pink), &lt;code&gt;#db2777&lt;/code&gt; (dark pink). Glow: &lt;code&gt;#ec4899&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;218. Earth Egg&lt;/strong&gt; — Rocky brown/gold egg. Colors: &lt;code&gt;#fbbf24&lt;/code&gt; (golden yellow), &lt;code&gt;#a16207&lt;/code&gt; (dark amber), &lt;code&gt;#92400e&lt;/code&gt; (deep brown). Glow: &lt;code&gt;#a16207&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;219. Wind Egg&lt;/strong&gt; — Swift silver-gray egg. Colors: &lt;code&gt;#cbd5e1&lt;/code&gt; (silver), &lt;code&gt;#94a3b8&lt;/code&gt; (slate), &lt;code&gt;#64748b&lt;/code&gt; (dark slate). Glow: &lt;code&gt;#94a3b8&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;220. Light Egg&lt;/strong&gt; — Radiant holy glow egg. Colors: &lt;code&gt;#fef9c3&lt;/code&gt; (pale cream), &lt;code&gt;#fbbf24&lt;/code&gt; (bright gold), &lt;code&gt;#f59e0b&lt;/code&gt; (deep gold). Glow: &lt;code&gt;#fbbf24&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Element Color Reference
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Egg&lt;/th&gt;
&lt;th&gt;Highlight&lt;/th&gt;
&lt;th&gt;Body&lt;/th&gt;
&lt;th&gt;Shadow&lt;/th&gt;
&lt;th&gt;Glow&lt;/th&gt;
&lt;th&gt;Element Feel&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fire&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fbbf24&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#f97316&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#ef4444&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#f97316&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hot orange/red&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Water&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#67e8f9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#0ea5e9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#3b82f6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#0ea5e9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cool blue/cyan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grass&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#86efac&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#22c55e&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#16a34a&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#22c55e&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Natural green&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Electric&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fef08a&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#eab308&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#facc15&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#eab308&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bright yellow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dark&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a78bfa&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#7c3aed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#6d28d9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#7c3aed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Shadow purple&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ice&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a5f3fc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#06b6d4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#0891b2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#06b6d4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Frozen cyan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Psychic&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#f9a8d4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#ec4899&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#db2777&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#ec4899&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Mystical pink&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Earth&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fbbf24&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a16207&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#92400e&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#a16207&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Earthy brown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wind&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#cbd5e1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#94a3b8&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#64748b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#94a3b8&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Swift silver&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Light&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fef9c3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fbbf24&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#f59e0b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;#fbbf24&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Holy gold&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Customization params per egg:&lt;/strong&gt; &lt;code&gt;--{prefix}-speed&lt;/code&gt; (animation duration), &lt;code&gt;--{prefix}-scale&lt;/code&gt; (pixel size, 2-5), &lt;code&gt;--{prefix}-glow&lt;/code&gt; (glow color).&lt;/p&gt;




&lt;h2&gt;
  
  
  Creating Your Own Elemental Egg
&lt;/h2&gt;

&lt;p&gt;Since all eggs share the same animation template, you can create a new element in 3 steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Choose 3 colors&lt;/strong&gt;: light (highlight), medium (body), dark (shadow)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replace colors&lt;/strong&gt; in the &lt;code&gt;box-shadow&lt;/code&gt; values — top 2 rows get highlight, middle 4 rows get body, bottom 2 rows get shadow&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set the glow&lt;/strong&gt; color in the CSS variable and &lt;code&gt;drop-shadow&lt;/code&gt; filter&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The wobble + pulse + flash animation stays the same. It's a color-swap template.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;That covers all &lt;strong&gt;10 elemental eggs&lt;/strong&gt; from CSSKit. In the next post, the eggs hatch into &lt;strong&gt;baby monsters&lt;/strong&gt; — 10 cute pixel art creatures with idle animations (fire lizard, water turtle, grass bulb, electric mouse, dark bat, ice seal, psychic eye, earth mole, wind bird, light fairy).&lt;/p&gt;

&lt;p&gt;Explore all 310 animations live at &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; or &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;star the repo on GitHub&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://abduarrahman.com/blog/css-pixel-art-eggs-10-elemental-effects" rel="noopener noreferrer"&gt;abduarrahman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore all 310 animations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow the project:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/abduarrahman/" rel="noopener noreferrer"&gt;@abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@abduarrahmanscode" rel="noopener noreferrer"&gt;@abduarrahmanscode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://tiktok.com/@anduarrahmans" rel="noopener noreferrer"&gt;@anduarrahmans&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Support:&lt;/strong&gt; &lt;a href="https://ko-fi.com/abduarrahman" rel="noopener noreferrer"&gt;Ko-fi&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>animation</category>
      <category>showdev</category>
      <category>pixelart</category>
    </item>
    <item>
      <title>CSS Pixel Art — Box-Shadow Technique, 22 Effects with Code</title>
      <dc:creator>Muhammad Abdu ar Rahman</dc:creator>
      <pubDate>Sat, 16 May 2026 11:15:04 +0000</pubDate>
      <link>https://dev.to/abduarrahman/css-pixel-art-box-shadow-technique-22-effects-with-code-2e6m</link>
      <guid>https://dev.to/abduarrahman/css-pixel-art-box-shadow-technique-22-effects-with-code-2e6m</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Try them live&lt;/strong&gt; — All 22 pixel art animations are available on &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; where you can customize colors and speed. Source code on &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. See also &lt;a href="https://abduarrahman.com/blog/css-card-divider-animations-30-effects" rel="noopener noreferrer"&gt;Card &amp;amp; Divider Animations&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;This post introduces the &lt;strong&gt;CSS box-shadow pixel art technique&lt;/strong&gt; — drawing game sprites using nothing but CSS &lt;code&gt;box-shadow&lt;/code&gt;. No images, no JavaScript, no canvas. Each sprite is a single &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; element, and every "pixel" is a &lt;code&gt;box-shadow&lt;/code&gt; offset. Animation is achieved by swapping &lt;code&gt;box-shadow&lt;/code&gt; values between keyframes.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Technique: How Box-Shadow Pixel Art Works
&lt;/h2&gt;

&lt;p&gt;Before diving into the sprites, here's the core concept:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.pixel-sprite&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;        &lt;span class="c"&gt;/* A single pixel element */&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c"&gt;/* Scale up so 1px becomes 3px */&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#ff0000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c"&gt;/* Pixel at (0,0) - red */&lt;/span&gt;
    &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#ff0000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c"&gt;/* Pixel at (1,0) - red */&lt;/span&gt;
    &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#ff0000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c"&gt;/* Pixel at (0,1) - red */&lt;/span&gt;
    &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#ff0000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;   &lt;span class="c"&gt;/* Pixel at (1,1) - red */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each &lt;code&gt;Xpx Ypx #color&lt;/code&gt; in &lt;code&gt;box-shadow&lt;/code&gt; paints one pixel at that coordinate. The &lt;code&gt;transform: scale(3)&lt;/code&gt; makes each 1px pixel appear as a 3×3 block on screen. Animation works by defining different &lt;code&gt;box-shadow&lt;/code&gt; values in &lt;code&gt;@keyframes&lt;/code&gt; — CSS transitions between them.&lt;/p&gt;

&lt;p&gt;Two timing strategies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;steps(1)&lt;/code&gt;&lt;/strong&gt; — Hard frame cuts (authentic retro feel)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;ease-in-out&lt;/code&gt;&lt;/strong&gt; — Smooth interpolation (organic motion)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  189. Pixel Bat
&lt;/h2&gt;

&lt;p&gt;Detailed bat with 8-frame wing flap — the most complex sprite in the collection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/pixel-bat" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — pixel bat animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;The bat uses an &lt;strong&gt;8-frame animation cycle&lt;/strong&gt; at &lt;code&gt;0.4s steps(1) infinite&lt;/code&gt;. Each keyframe (0%, 14%, 28%, 42%, 57%, 71%, 85%, 100%) contains a complete set of &lt;code&gt;box-shadow&lt;/code&gt; values representing a different wing position. The wings sweep through a full flap cycle. Colors: &lt;code&gt;#54556b&lt;/code&gt; (body/wing), &lt;code&gt;#202020&lt;/code&gt; (dark details), &lt;code&gt;#ff6b6b&lt;/code&gt; (red eyes). The 1px element is scaled 3× with large offsets (&lt;code&gt;left: -96px; top: -96px&lt;/code&gt;) for this large sprite.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.pixel-bat-body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;pb-flap&lt;/span&gt; &lt;span class="m"&gt;0.4s&lt;/span&gt; &lt;span class="n"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"pixel-bat-body"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  190. Pixel Heart
&lt;/h2&gt;

&lt;p&gt;Heartbeat pulse — the simplest animation technique (scale only, same pixels).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/pixel-heart" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — pixel heart animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;This is the easiest pixel art animation to understand. The &lt;code&gt;box-shadow&lt;/code&gt; pixel data stays &lt;strong&gt;identical&lt;/strong&gt; across all keyframes — only the &lt;code&gt;scale&lt;/code&gt; value changes. At 0% it's &lt;code&gt;scale(4)&lt;/code&gt;, at 15% it pulses to &lt;code&gt;scale(4.3)&lt;/code&gt;, back to &lt;code&gt;scale(4)&lt;/code&gt; at 30%, a smaller pulse &lt;code&gt;scale(4.15)&lt;/code&gt; at 45%, then settles at 60%. This creates a realistic &lt;strong&gt;double-beat heartbeat&lt;/strong&gt; pattern.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.pixel-heart&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-24px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-24px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ph-beat&lt;/span&gt; &lt;span class="m"&gt;1s&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;ph-beat&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#ff6b81&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#ff6b81&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#ff6b81&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;7px&lt;/span&gt; &lt;span class="m"&gt;0px&lt;/span&gt; &lt;span class="m"&gt;#ff6b81&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#ff4757&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#ff4757&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#e74c3c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;#e74c3c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c"&gt;/* ... all heart pixels ... */&lt;/span&gt;
      &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;#c0392b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;#c0392b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;15&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4.3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c"&gt;/* Same pixels, bigger */&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;45&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4.15&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;60&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"pixel-heart"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Colors:&lt;/strong&gt; &lt;code&gt;#ff6b81&lt;/code&gt; (highlight pink), &lt;code&gt;#ff4757&lt;/code&gt; (bright red), &lt;code&gt;#e74c3c&lt;/code&gt; (main body), &lt;code&gt;#c0392b&lt;/code&gt; (dark tip).&lt;/p&gt;




&lt;h2&gt;
  
  
  191. Pixel Star
&lt;/h2&gt;

&lt;p&gt;Golden twinkling star with 2-frame color swap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/pixel-star" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — pixel star animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Uses &lt;code&gt;steps(1)&lt;/code&gt; timing for a hard-cut between two frames. Frame 1 has normal gold colors (&lt;code&gt;#f9e547&lt;/code&gt;, &lt;code&gt;#f1c40f&lt;/code&gt;, &lt;code&gt;#d4a017&lt;/code&gt;), while frame 2 swaps certain pixels to white &lt;code&gt;#ffffff&lt;/code&gt; — creating a sparkle highlight that blinks on and off.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.pixel-star&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ps-twinkle&lt;/span&gt; &lt;span class="m"&gt;0.8s&lt;/span&gt; &lt;span class="n"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"pixel-star"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  192. Pixel Sword
&lt;/h2&gt;

&lt;p&gt;RPG sword with gleaming blade — the metallic shine effect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/pixel-sword" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — pixel sword animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Two frames with &lt;code&gt;ease-in-out&lt;/code&gt; timing. Frame 1: blade pixels are &lt;code&gt;#ecf0f1&lt;/code&gt; (light steel) and &lt;code&gt;#bdc3c7&lt;/code&gt; (medium steel). Frame 2: all blade pixels shift to &lt;code&gt;#ffffff&lt;/code&gt; (pure white flash) with &lt;code&gt;scale(3.1)&lt;/code&gt; — creating a gleaming shine. The gold crossguard (&lt;code&gt;#f1c40f&lt;/code&gt;) and brown grip (&lt;code&gt;#8b4513&lt;/code&gt;) stay consistent.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.pixel-sword&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-36px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;psword-gleam&lt;/span&gt; &lt;span class="m"&gt;1.2s&lt;/span&gt; &lt;span class="n"&gt;ease-in-out&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"pixel-sword"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  193. Pixel Coin
&lt;/h2&gt;

&lt;p&gt;Spinning gold coin with 4-frame rotation — simulating 3D spin in 2D.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/pixel-coin" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — pixel coin animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;This is a brilliant trick: 4 keyframes (0%, 33%, 66%, 100%) show the coin at different widths. Frame 1 (0%): full circle, 8×8 pixels. Frame 2 (33%): narrower, ~6×8 pixels. Frame 3 (66%): thinnest, ~2×8 pixels (edge-on). Frame 4 (100%): back to full. This shrinking/expanding of the pixel grid creates a convincing &lt;strong&gt;3D rotation illusion&lt;/strong&gt; using only 2D pixel data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.pixel-coin&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;pcoin-spin&lt;/span&gt; &lt;span class="m"&gt;0.9s&lt;/span&gt; &lt;span class="n"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c"&gt;/* 0% = full face, 33% = angled, 66% = edge-on, 100% = full face */&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"pixel-coin"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  194. Pixel Skeleton
&lt;/h2&gt;

&lt;p&gt;Walking skeleton with 2-frame leg swap — classic RPG enemy animation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/pixel-skeleton" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — pixel skeleton animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Only the bottom rows (legs) change between frames. The upper body (skull, torso, arms) stays identical across both keyframes. This is the classic sprite animation technique — only animate the parts that move. Uses &lt;code&gt;steps(1)&lt;/code&gt; for hard frame cuts at 0.6s, creating a brisk walk cycle. Colors: &lt;code&gt;#e2e8f0&lt;/code&gt; (light bone) and &lt;code&gt;#94a3b8&lt;/code&gt; (dark bone outline).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"pixel-skeleton"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  195. Pixel Mushroom
&lt;/h2&gt;

&lt;p&gt;Mario-style power-up with squash-and-stretch bounce.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://csskit.abduarrahman.com/animations/pixel-mushroom" rel="noopener noreferrer"&gt;See it live on CSSKit&lt;/a&gt;&lt;/strong&gt; — pixel mushroom animation&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;Combines three techniques simultaneously: (1) &lt;code&gt;translateY(-4px)&lt;/code&gt; to bounce up, (2) &lt;code&gt;scale(3)&lt;/code&gt; to &lt;code&gt;scale(3.1)&lt;/code&gt; for squash-stretch, and (3) pixel-level changes where the cap spots shift by 1px. Uses &lt;code&gt;ease-in-out&lt;/code&gt; for organic bounce. Colors: &lt;code&gt;#ef4444&lt;/code&gt; (red cap), &lt;code&gt;#fef3c7&lt;/code&gt; (cream spots), &lt;code&gt;#92400e&lt;/code&gt; (brown stem).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"pixel-mushroom"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  196–210. More Pixel Art Sprites
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;196. Pixel Potion&lt;/strong&gt; — RPG magic potion with 2-frame bubble effect. A single highlight pixel (&lt;code&gt;#c084fc&lt;/code&gt;) appears and disappears at &lt;code&gt;(1px, 3px)&lt;/code&gt;, simulating a bubble rising in purple liquid (&lt;code&gt;#a855f7&lt;/code&gt;). Uses &lt;code&gt;steps(1)&lt;/code&gt; at 0.8s.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;197. Pixel Cherry&lt;/strong&gt; — Pair of cherries with bounce. Uses &lt;code&gt;ease-in-out&lt;/code&gt; with &lt;code&gt;translateY(-3px)&lt;/code&gt; and stem pixels shifting up one row. Colors: red cherries (&lt;code&gt;#ef4444&lt;/code&gt;), green stems (&lt;code&gt;#22c55e&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;198. Pixel Alien&lt;/strong&gt; — Space Invader alien with arm animation. Two frames swap between arms-down and arms-up positions, exactly like the original arcade game. Green (&lt;code&gt;#22c55e&lt;/code&gt;) body, black (&lt;code&gt;#000000&lt;/code&gt;) eyes. Uses &lt;code&gt;steps(1)&lt;/code&gt; for authentic frame-snapping.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;199. Pixel Sword &amp;amp; Shield&lt;/strong&gt; — RPG shield with metallic gleam. Edge colors alternate between &lt;code&gt;#64748b&lt;/code&gt; (dark) and &lt;code&gt;#cbd5e1&lt;/code&gt; (light) with a subtle &lt;code&gt;scale(3.08)&lt;/code&gt; pulse. Uses &lt;code&gt;ease-in-out&lt;/code&gt; for smooth shimmer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;200. Pixel Diamond&lt;/strong&gt; — Cyan gemstone with sparkle. White (&lt;code&gt;#ffffff&lt;/code&gt;) sparkle pixels appear at different positions across the diamond facets between frames. Uses &lt;code&gt;steps(1)&lt;/code&gt; for snappy glitter. Colors: &lt;code&gt;#67e8f9&lt;/code&gt;, &lt;code&gt;#06b6d4&lt;/code&gt;, &lt;code&gt;#0891b2&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;201. Pixel Crown&lt;/strong&gt; — Golden crown with shimmer. Gold shifts between &lt;code&gt;#fbbf24&lt;/code&gt; and &lt;code&gt;#fde68a&lt;/code&gt;, gemstones alternate red (&lt;code&gt;#ef4444&lt;/code&gt;) and pink (&lt;code&gt;#ff6b81&lt;/code&gt;), with &lt;code&gt;scale(3.1)&lt;/code&gt; pulse. Uses &lt;code&gt;ease-in-out&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;202. Pixel Ghost&lt;/strong&gt; — Pac-Man style ghost with floating bob. The bottom row alternates between two zigzag patterns (creating a wavy tentacle effect) while &lt;code&gt;translateY(-6px)&lt;/code&gt; creates the float. Colors: &lt;code&gt;#f1f5f9&lt;/code&gt; (body), &lt;code&gt;#1e293b&lt;/code&gt; (eyes).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;pgh-float&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* full ghost with zigzag bottom */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* ghost with different bottom row */&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-6px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;203. Pixel Dragon&lt;/strong&gt; — Complex dragon with 3-frame fire breath. Frame 1: body only. Frames 2-3: progressively larger flame pixels (yellow/orange/red) extend from the mouth. Uses &lt;code&gt;steps(1)&lt;/code&gt; for frame-by-frame fire animation. Multiple green shades for the body. Has a &lt;code&gt;drop-shadow&lt;/code&gt; filter for red glow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;204. Pixel Spaceship&lt;/strong&gt; — Spacecraft with thrust flame. Frame 1: ship body. Frame 2: yellow/orange thrust pixels appear below engines with &lt;code&gt;translateY(-2px)&lt;/code&gt; upward nudge. Uses &lt;code&gt;steps(1)&lt;/code&gt; with golden &lt;code&gt;drop-shadow&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;205. Pixel Robot&lt;/strong&gt; — Mech robot with waving arm. Frame 2 shifts the left arm pixels upward and outward. Cyan (&lt;code&gt;#22d3ee&lt;/code&gt;) glowing eyes with &lt;code&gt;drop-shadow&lt;/code&gt; filter for glow effect. Uses &lt;code&gt;steps(1)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;206. Pixel Cat&lt;/strong&gt; — Cute cat with tail wag. Frame 2 adds tail pixels extending from the lower-right body with &lt;code&gt;translateY(-1px)&lt;/code&gt; bounce. Uses smooth &lt;code&gt;ease-in-out&lt;/code&gt; timing. Colors: orange body, green eyes, pink mouth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;207. Pixel Slime&lt;/strong&gt; — RPG blob with squish bounce. The most transform-heavy sprite: frame 1 is squished (&lt;code&gt;scaleX(1.1) scaleY(0.9)&lt;/code&gt;), frame 2 is stretched (&lt;code&gt;scaleX(0.9) scaleY(1.1)&lt;/code&gt;) with &lt;code&gt;translateY(-6px)&lt;/code&gt; jump. Green body with &lt;code&gt;drop-shadow&lt;/code&gt; glow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;208. Pixel Treasure&lt;/strong&gt; — Chest with opening animation. 3-phase cycle: closed (0-20%) → open with gold coins (40-60%) → closed again (80-100%). The lid pixels disappear, coin pixels appear inside. Uses &lt;code&gt;ease-in-out&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;209. Pixel Bomb&lt;/strong&gt; — Retro bomb with fuse spark. Frame 2 replaces gray fuse pixels with bright yellow/orange spark, intensifies &lt;code&gt;drop-shadow&lt;/code&gt; from 3px to 8px spread for a flash. Uses &lt;code&gt;steps(1)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;210. Pixel Tree&lt;/strong&gt; — Nature tree with wind sway. The canopy pixels shift 1px left while the trunk stays static, plus &lt;code&gt;translateX(2px)&lt;/code&gt; for a wind sway illusion. Multiple green shades (&lt;code&gt;#22c55e&lt;/code&gt;, &lt;code&gt;#16a34a&lt;/code&gt;, &lt;code&gt;#15803d&lt;/code&gt;). Uses &lt;code&gt;ease-in-out&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pixel Art Animation Cheat Sheet
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technique&lt;/th&gt;
&lt;th&gt;How It Works&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scale pulse&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Same pixels, change &lt;code&gt;scale()&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Heart beat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Color swap&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Same positions, different colors&lt;/td&gt;
&lt;td&gt;Star twinkle, Sword gleam&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pixel shift&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Change which pixels appear&lt;/td&gt;
&lt;td&gt;Skeleton walk, Alien arms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Width morph&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Narrower/wider pixel grid&lt;/td&gt;
&lt;td&gt;Coin spin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Transform move&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;translateY&lt;/code&gt;/&lt;code&gt;translateX&lt;/code&gt; with same art&lt;/td&gt;
&lt;td&gt;Ghost float, Tree sway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Squash-stretch&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;scaleX&lt;/code&gt;/&lt;code&gt;scaleY&lt;/code&gt; inverse&lt;/td&gt;
&lt;td&gt;Slime bounce&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multi-frame&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3+ distinct keyframes&lt;/td&gt;
&lt;td&gt;Bat flap, Dragon fire&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Pro tips:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;steps(1)&lt;/code&gt; for authentic retro frame-cut animations&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;ease-in-out&lt;/code&gt; for organic, smooth motion&lt;/li&gt;
&lt;li&gt;Only change the pixels that move between frames (optimizes CSS size)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;drop-shadow&lt;/code&gt; filter adds glow effects to pixel art&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;left&lt;/code&gt;/&lt;code&gt;top&lt;/code&gt; negative offsets center the sprite after scaling&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;That covers all &lt;strong&gt;22 classic pixel art sprites&lt;/strong&gt; from CSSKit. In the next post, we'll create &lt;strong&gt;elemental eggs&lt;/strong&gt; — pixel art eggs with hatching animations for fire, water, grass, electric, dark, ice, psychic, earth, wind, and light elements.&lt;/p&gt;

&lt;p&gt;Explore all 310 animations live at &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt; or &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;star the repo on GitHub&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://abduarrahman.com/blog/css-pixel-art-box-shadow-22-effects" rel="noopener noreferrer"&gt;abduarrahman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore all 310 animations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://csskit.abduarrahman.com" rel="noopener noreferrer"&gt;CSSKit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/ab2rahman/csskit-ab2rahman" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow the project:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/abduarrahman/" rel="noopener noreferrer"&gt;@abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@abduarrahmanscode" rel="noopener noreferrer"&gt;@abduarrahmanscode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://tiktok.com/@anduarrahmans" rel="noopener noreferrer"&gt;@anduarrahmans&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Support:&lt;/strong&gt; &lt;a href="https://ko-fi.com/abduarrahman" rel="noopener noreferrer"&gt;Ko-fi&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>animation</category>
      <category>showdev</category>
      <category>pixelart</category>
    </item>
    <item>
      <title>Zoro Santoryu Splash Screen — 30 Days Web Challenge Day 4</title>
      <dc:creator>Muhammad Abdu ar Rahman</dc:creator>
      <pubDate>Tue, 12 May 2026 02:23:38 +0000</pubDate>
      <link>https://dev.to/abduarrahman/zoro-santoryu-splash-screen-30-days-web-challenge-day-4-2dbf</link>
      <guid>https://dev.to/abduarrahman/zoro-santoryu-splash-screen-30-days-web-challenge-day-4-2dbf</guid>
      <description>&lt;p&gt;&lt;strong&gt;Try it live at &lt;a href="https://30days.abduarrahman.com" rel="noopener noreferrer"&gt;30days.abduarrahman.com&lt;/a&gt;&lt;/strong&gt; — and the source code is on &lt;a href="https://github.com/ab2rahman/30days-web-challenge" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Origin
&lt;/h2&gt;

&lt;p&gt;Day 4 needed a splash screen. A proper, cinematic intro — not just a loading spinner. I'm a One Piece fan, and Zoro's Santoryu (Three-Sword Style) is iconic. What if the splash screen was Zoro running, then slashing the screen three times until it shatters?&lt;/p&gt;

&lt;p&gt;The result: a multi-phase splash screen with pixel art Zoro running, a loading bar, a dramatic Santoryu reveal, three timed slashes with screen shake, and a shatter effect that breaks the screen into 9 fragments.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;A cinematic splash screen with 5 phases:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tap to Start&lt;/strong&gt; — Pixel art Zoro running animation on a clean white screen&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Loading&lt;/strong&gt; — Progress bar fills over 5 seconds while Zoro keeps running, ambient music plays&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Santoryu&lt;/strong&gt; — Loading music fades out, dramatic Santoryu image zooms in with impact&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slash&lt;/strong&gt; — Three timed sword slashes with blade tips, scar lines, sparks, and screen shake&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shatter&lt;/strong&gt; — Screen breaks into 9 fragments that fly apart with debris particles&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All powered by a single &lt;code&gt;ZoroPixelLoader&lt;/code&gt; canvas component and Framer Motion for phase transitions.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Canvas Sprite Animator
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;ZoroPixelLoader&lt;/code&gt; renders pixel art sprite sheets onto a canvas with frame-by-frame animation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SPRITES&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Record&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;SpriteConfig&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;   &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/zoro_run.png&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;frameW&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;445&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;frameH&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;363&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;slash&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/zoro.png&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;     &lt;span class="na"&gt;frameW&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;290&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;frameH&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;349&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;ZoroPixelLoader&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;sprite&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;run&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;fps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;scale&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;canvasRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useRef&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;HTMLCanvasElement&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;frameRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rafRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useRef&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;lastTimeRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;SPRITES&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;sprite&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fpsInterval&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;fps&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;canvasRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2d&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;animate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="na"&gt;time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;delta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;time&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;lastTimeRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;delta&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="nx"&gt;fpsInterval&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;lastTimeRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;time&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;delta&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;fpsInterval&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;frame&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;frameRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;col&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;frame&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;COLS&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;row&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;frame&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;COLS&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;clearRect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frameW&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frameH&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;drawImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="nx"&gt;col&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frameW&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;row&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frameH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frameW&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frameH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frameW&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frameH&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;frameRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;frame&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;TOTAL_FRAMES&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nx"&gt;rafRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;requestAnimationFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="nx"&gt;img&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;imageSmoothingEnabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// crisp pixel art&lt;/span&gt;
      &lt;span class="nx"&gt;rafRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;requestAnimationFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;cancelAnimationFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;rafRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;sprite&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;fpsInterval&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;canvas&lt;/span&gt;
      &lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;canvasRef&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frameW&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nx"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frameH&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="na"&gt;imageRendering&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pixelated&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frameW&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;scale&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;frameH&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;scale&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;
    &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key detail: &lt;code&gt;imageSmoothingEnabled = false&lt;/code&gt; and &lt;code&gt;imageRendering: "pixelated"&lt;/code&gt; keep the pixel art crisp at any scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Slash Sequence Timing
&lt;/h3&gt;

&lt;p&gt;Three slashes are precisely timed using constants:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SLASH_SOUND_DUR&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;576&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;    &lt;span class="c1"&gt;// ms — matches the slash sound effect length&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;NUM_SLASHES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SLASH_INTERVAL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;SLASH_SOUND_DUR&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// each slash starts after previous sound ends&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;TOTAL_SLASH_TIME&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;NUM_SLASHES&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;SLASH_INTERVAL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SANTORYU_DUR&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2736&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;      &lt;span class="c1"&gt;// ms — duration of the Santoryu vocal sample&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SLASHES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;angle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;angle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="na"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;SLASH_INTERVAL&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;angle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;SLASH_INTERVAL&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each slash has a blade tip that sweeps across, a persistent scar line, sparks, and a white flash.&lt;/p&gt;

&lt;h3&gt;
  
  
  Screen Shatter Physics
&lt;/h3&gt;

&lt;p&gt;After the three slashes, the screen shatters into 9 fragments using CSS &lt;code&gt;clipPath&lt;/code&gt; polygons:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;FRAGMENTS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;clipPath&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;polygon(0 0, 33% 0, 33% 33%, 0 33%)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;     &lt;span class="na"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0% 0%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;-20%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;-30%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;rot&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;clipPath&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;polygon(33% 0, 66% 0, 66% 33%, 33% 33%)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="na"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;50% 16%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;-35%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;rot&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;clipPath&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;polygon(66% 0, 100% 0, 100% 33%, 66% 33%)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;100% 0%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;25%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="na"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;-25%&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;rot&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="c1"&gt;// ... 6 more fragments covering the full screen&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// Each fragment animates away from its transform origin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Audio Transitions
&lt;/h3&gt;

&lt;p&gt;Three audio tracks crossfade during the sequence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Loading music&lt;/strong&gt; — loops during the progress bar phase, fades out over ~600ms when Santoryu triggers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Santoryu vocal&lt;/strong&gt; — plays once during the reveal image&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slash sounds&lt;/strong&gt; — three precisely timed hits, one per slash
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;triggerSantoryu&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useCallback&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Fade out loading music&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;loadAudio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;loadingAudioRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;loadAudio&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;loadAudio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;volume&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;loadAudio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;volume&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;loadAudio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;volume&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mf"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;loadAudio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pause&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="nf"&gt;clearInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fade&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// Play Santoryu vocal&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;santoryu&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Audio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;SANTORYU_MUSIC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;santoryu&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;volume&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;santoryu&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;play&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{});&lt;/span&gt;

  &lt;span class="c1"&gt;// Start slashes after vocal ends&lt;/span&gt;
  &lt;span class="nx"&gt;santoryu&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onended&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;startSlash&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;onComplete&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Next.js&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;React framework&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Type-safe phase management&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HTML Canvas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pixel art sprite animation (ZoroPixelLoader)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Framer Motion&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Phase transitions, screen shake, fragment animations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CSS clipPath&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Screen shatter fragments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Web Audio&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Music crossfade, timed slash sounds&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://30days.abduarrahman.com" rel="noopener noreferrer"&gt;30days.abduarrahman.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/ab2rahman/30days-web-challenge" rel="noopener noreferrer"&gt;github.com/ab2rahman/30days-web-challenge&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key Files:&lt;/strong&gt; &lt;a href="https://github.com/ab2rahman/30days-web-challenge/blob/main/src/components/SwordSplash.tsx" rel="noopener noreferrer"&gt;&lt;code&gt;SwordSplash.tsx&lt;/code&gt;&lt;/a&gt;, &lt;a href="https://github.com/ab2rahman/30days-web-challenge/blob/main/src/components/ZoroPixelLoader.tsx" rel="noopener noreferrer"&gt;&lt;code&gt;ZoroPixelLoader.tsx&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow the challenge:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instagram: &lt;a href="https://www.instagram.com/abduarrahman/" rel="noopener noreferrer"&gt;@abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/@abduarrahmanscode" rel="noopener noreferrer"&gt;@abduarrahmanscode&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;TikTok: &lt;a href="https://tiktok.com/@anduarrahmans" rel="noopener noreferrer"&gt;@anduarrahmans&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Support the challenge:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ko-fi: &lt;a href="https://ko-fi.com/abduarrahman" rel="noopener noreferrer"&gt;ko-fi.com/abduarrahman&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://abduarrahman.com/blog/30days-day4-zoro-santoryu-splash/" rel="noopener noreferrer"&gt;abduarrahman.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>typescript</category>
      <category>canvas</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
