Menu

Tailwind CSS Backdrop Blur

Backdrop Blur allows you to apply blur to the content visible behind an element's backdrop. This feature can enhance your design aesthetics by creating depth, focus, or a frosted glass effect. Tailwind CSS makes working with Backdrop Blur easier by providing a range of utility classes that you can directly integrate into your markup. It uses backdrop-fliter: blue(value) property of CSS to add blur.

From basic blurring functionality to applying custom values, Tailwind ensures flexibility while maintaining approachable syntax. This guide will walk you through different ways to effectively use Backdrop Blur in your Tailwind CSS projects.

ClassPropertiesExample
backdrop-blur-nonebackdrop-filter: ;<div className="backdrop-blur-none"></div>
backdrop-blur-smbackdrop-filter: blur(4px);<div className="backdrop-blur-sm"></div>
backdrop-blurbackdrop-filter: blur(8px);<div className="backdrop-blur"></div>
backdrop-blur-mdbackdrop-filter: blur(12px);<div className="backdrop-blur-md"></div>
backdrop-blur-lgbackdrop-filter: blur(16px);<div className="backdrop-blur-lg"></div>
backdrop-blur-xlbackdrop-filter: blur(24px);<div className="backdrop-blur-xl"></div>
backdrop-blur-2xlbackdrop-filter: blur(40px);<div className="backdrop-blur-2xl"></div>
backdrop-blur-3xlbackdrop-filter: blur(64px);<div className="backdrop-blur-3xl"></div>

Overview of Backdrop Blur

Adding the Backdrop Blur

There are times when you want to create transparency and simultaneously blur the background content behind an element. Tailwind CSS offers specific utility classes to achieve this effect without having to write custom CSS manually.

Here’s how you can use backdrop-blur classes:

This is a live editor. Play around with it!
export default function BackdropBlurComponent() {
  return (
    <div className="h-screen w-screen bg-cover bg-center" style={{ backgroundImage: `url('https://images.unsplash.com/photo-1508873699372-7aeab60b44ab')` }}>
      <div className="backdrop-blur-md bg-white/30 flex items-center justify-center h-screen">
        <p className="text-lg">Frosted Glass Effect</p>
      </div>
    </div>
  );
}

The backdrop-blur-md applies a medium strength blur (blur(12px)). The backdrop-blur-md class eliminates the need for writing custom CSS like backdrop-filter: blur(12px).

Removing Backdrop Filters

If at any point you need to reset or remove the blur effect, Tailwind CSS provides the backdrop-filter-none utility. This ensures the backdrop blur properties are completely turned off.

This is a live editor. Play around with it!
export default function NoBackdropFilter() {
  return (
    <div className="h-screen w-screen bg-cover bg-center" style={{ backgroundImage: `url('https://images.unsplash.com/photo-1508873699372-7aeab60b44ab')` }}>
      <div className="backdrop-filter-none flex items-center justify-center h-screen">
        <p className="text-lg">No Filters Applied</p>
      </div>
    </div>
  );
}

States and Responsiveness

Hover and Focus States

You can make your applications interactive by attaching hover or focus states to the Backdrop Blur. When a user interacts with the element, the blur can become more or less intense depending on your styling needs.

This is a live editor. Play around with it!
export default function HoverBlurEffect() {
  return (
    <div className="h-screen w-screen bg-cover bg-center" style={{ backgroundImage: `url('https://images.unsplash.com/photo-1508873699372-7aeab60b44ab')` }}>
      <div className="hover:backdrop-blur-lg flex items-center justify-center h-screen">
        <p className="text-lg">Hover to make the image blur</p>
      </div>
    </div>
  );
}
  • hover:backdrop-blur-lg: Applies a larger blur (blur(16px)) on hover.

Breakpoint Modifiers

Tailwind allows you to make backdrop-blur responsive by applying breakpoints to different filter intensities. This ensures optimized blurring effects across varying screen sizes.

This is a live editor. Play around with it!
export default function ResponsiveBlur() {
  return (
    <div className="h-screen w-screen bg-cover bg-center" style={{ backgroundImage: `url('https://images.unsplash.com/photo-1508873699372-7aeab60b44ab')` }}>
      <div className="backdrop-blur-none md:backdrop-blur-sm lg:backdrop-blur-xl flex items-center justify-center h-screen">
        <p className="text-lg text-center px-10">The Backdrop Blur will change according to the screen</p>
      </div>
    </div>
  );
}
  • backdrop-blur-none: No blur for smaller screens.
  • md:backdrop-blur-sm: Blurs moderately from medium breakpoint (blur(4px)).
  • lg:backdrop-blur-xl: Maximizes blur for large screens (blur(24px)).

Custom Backdrop Blur

Extending the Theme

Out-of-the-box utilities are good, but for more control, you can tailor Backdrop Blur values by extending your Tailwind config file. Custom definitions make it possible to adjust blur intensity precisely based on the project’s requirements.

Once defined, these classes can be applied like so:

This is a live editor. Play around with it!
import tailwindConfig from "./tailwind.config.js";
tailwind.config = tailwindConfig;

export default function CustomBackdropBlur() {
  return (
    <div className="h-screen w-screen bg-cover bg-center" style={{ backgroundImage: `url('https://images.unsplash.com/photo-1508873699372-7aeab60b44ab')` }}>
      <div className="backdrop-blur-xs bg-black/30 p-8 rounded-md">
        <h1 className="text-2xl text-white">Custom XS Blur</h1>
      </div>
      <div className="backdrop-blur-4xl bg-black/30 p-8 rounded-md mt-4">
        <p className="text-2xl text-white">Custom 3XL Blur</p>
      </div>
    </div>
  );
}

XS Blur applies a very subtle blur effect, while 4XL Blur delivers a prominent one.

Using Arbitrary Values

For quick experimentation or one-off use-cases, Tailwind supports arbitrary values that do not require dedicated key/value additions in the tailwind.config.js file. This method provides on-the-spot solutions without forcing long-term theme modifications.

This is a live editor. Play around with it!
export default function ArbitraryBackdropBlur() {
  return (
    <div className="h-screen w-screen bg-cover bg-center" style={{ backgroundImage: `url('https://images.unsplash.com/photo-1508873699372-7aeab60b44ab')` }}>
      <div className="bg-gray-700/40 backdrop-blur-[6px] p-5 rounded">
        <p className="text-white text-xl">Custom Backdrop Blur Using Arbitrary Value (6px)</p>
      </div>
    </div>
  );
}

Real World Examples

This component creates an image gallery where hovering over images reveals description with a backdrop blur effect.

This is a live editor. Play around with it!
export default function ImageGallery() {
  const galleryImages = [
    {
      id: 1,
      title: "Mountain Sunrise",
      description: "Breathtaking view of sunrise over mountain peaks",
      src: "https://images.unsplash.com/photo-1506905925346-21bda4d32df4",
      alt: "Mountain peaks at sunrise"
    },
    {
      id: 2,
      title: "Ocean Waves",
      description: "Serene ocean waves during golden hour",
      src: "https://images.unsplash.com/photo-1505118380757-91f5f5632de0",
      alt: "Ocean waves crashing"
    },
    {
      id: 3,
      title: "Forest Trail",
      description: "Misty morning on a forest hiking trail",
      src: "https://images.unsplash.com/photo-1441974231531-c6227db76b6e",
      alt: "Foggy forest path"
    },
    {
      id: 4,
      title: "Desert Dunes",
      description: "Rolling sand dunes at sunset",
      src: "https://images.unsplash.com/photo-1509316785289-025f5b846b35",
      alt: "Desert sand dunes"
    },
    {
      id: 5,
      title: "Northern Lights",
      description: "Aurora Borealis dancing in the night sky",
      src: "https://images.unsplash.com/photo-1483347756197-71ef80e95f73",
      alt: "Northern lights display"
    },
    {
      id: 6,
      title: "Tropical Beach",
      description: "Paradise beach with crystal clear waters",
      src: "https://images.unsplash.com/photo-1506953823976-52e1fdc0149a",
      alt: "Tropical beach scene"
    }
  ];

  return (
    <div className="container mx-auto p-8">
      <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
        {galleryImages.map((image) => (
          <div key={image.id} className="relative group overflow-hidden rounded-xl">
            <img 
              src={image.src} 
              alt={image.alt}
              className="w-full h-64 object-cover"
            />
            <div className="absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-300">
              <div className="absolute inset-0 bg-black/40 backdrop-blur-md">
                <div className="absolute bottom-0 p-4 text-white">
                  <h3 className="text-xl font-bold">{image.title}</h3>
                  <p className="mt-2">{image.description}</p>
                </div>
              </div>
            </div>
          </div>
        ))}
      </div>
    </div>
  );
}

Profile Card Grid with Blur Hover

This component shows a grid of profile cards with blur effects on hover.

This is a live editor. Play around with it!
export default function ProfileCardGrid() {
  const profiles = [
    {
      id: 1,
      name: "Emma Wilson",
      role: "Senior Developer",
      src: "https://images.unsplash.com/photo-1494790108377-be9c29b29330",
      alt: "Emma Wilson profile picture",
      bio: "Full-stack developer with 8 years of experience"
    },
    {
      id: 2,
      name: "James Chen",
      role: "UX Designer",
      src: "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d",
      alt: "James Chen profile picture",
      bio: "Creating beautiful user experiences for 5+ years"
    },
    {
      id: 3,
      name: "Sarah Johnson",
      role: "Product Manager",
      src: "https://images.unsplash.com/photo-1438761681033-6461ffad8d80",
      alt: "Sarah Johnson profile picture",
      bio: "Passionate about building great products"
    },
    {
      id: 4,
      name: "Michael Brown",
      role: "DevOps Engineer",
      src: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e",
      alt: "Michael Brown profile picture",
      bio: "Infrastructure and automation specialist"
    },
    {
      id: 5,
      name: "Lisa Zhang",
      role: "Data Scientist",
      src: "https://images.unsplash.com/photo-1517841905240-472988babdf9",
      alt: "Lisa Zhang profile picture",
      bio: "Turning data into meaningful insights"
    },
    {
      id: 6,
      name: "David Kim",
      role: "Marketing Lead",
      src: "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e",
      alt: "David Kim profile picture",
      bio: "Digital marketing strategist and growth expert"
    }
  ];

  return (
    <div className="container mx-auto p-8">
      <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
        {profiles.map((profile) => (
          <div
            key={profile.id}
            className="relative group rounded-xl overflow-hidden"
          >
            <img 
              src={profile.src} 
              alt={profile.alt}
              className="w-full h-72 object-cover"
            />
            <div className="absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-300">
              <div className="absolute inset-0 bg-black/50 backdrop-blur-sm">
                <div className="absolute bottom-0 p-6 text-white">
                  <h3 className="text-xl font-bold">{profile.name}</h3>
                  <p className="text-sm text-gray-200">{profile.role}</p>
                  <p className="mt-2 text-sm">{profile.bio}</p>
                </div>
              </div>
            </div>
          </div>
        ))}
      </div>
    </div>
  );
}

This component showcases a product gallery with a blurred backdrop effect when hovering over items.

This is a live editor. Play around with it!
export default function ProductGallery() {
  const products = [
    {
      id: 1,
      name: "Premium Leather Backpack",
      price: "$129.99",
      src: "https://images.unsplash.com/photo-1548036328-c9fa89d128fa",
      alt: "Brown leather backpack"
    },
    {
      id: 2,
      name: "Vintage Camera",
      price: "$299.99",
      src: "https://images.unsplash.com/photo-1516035069371-29a1b244cc32",
      alt: "Classic vintage camera"
    },
    {
      id: 3,
      name: "Mechanical Watch",
      price: "$449.99",
      src: "https://images.unsplash.com/photo-1524592094714-0f0654e20314",
      alt: "Luxury mechanical watch"
    },
    {
      id: 4,
      name: "Designer Sunglasses",
      price: "$179.99",
      src: "https://images.unsplash.com/photo-1511499767150-a48a237f0083",
      alt: "Stylish sunglasses"
    },
    {
      id: 5,
      name: "Wireless Headphones",
      price: "$199.99",
      src: "https://images.unsplash.com/photo-1505740420928-5e560c06d30e",
      alt: "Premium headphones"
    },
    {
      id: 6,
      name: "Smart Watch",
      price: "$299.99",
      src: "https://images.unsplash.com/photo-1579586337278-3befd40fd17a",
      alt: "Modern smart watch"
    }
  ];

  return (
    <div className="grid grid-cols-1 gap-4 p-6">
      {products.map((product) => (
        <div key={product.id} className="relative group">
          <img 
            src={product.src} 
            alt={product.alt}
            className="w-full h-64 object-cover rounded-lg"
          />
          <div className="absolute inset-0 bg-black/30 backdrop-blur-sm opacity-0 group-hover:opacity-100 transition-opacity duration-300 rounded-lg">
            <div className="absolute bottom-4 left-4 text-white">
              <h3 className="text-xl font-bold">{product.name}</h3>
              <p className="text-lg">{product.price}</p>
            </div>
          </div>
        </div>
      ))}
    </div>
  );
}

Image Card with Content Overlay

An image card component with a blurred content overlay.

This is a live editor. Play around with it!
export default function ImageCards() {
  const articles = [
    {
      id: 1,
      title: "Mountain Adventure",
      description: "Explore the majestic peaks of the Alps",
      src: "https://images.unsplash.com/photo-1464822759023-fed622ff2c3b",
      alt: "Mountain peaks",
      author: "John Doe"
    },
    {
      id: 2,
      title: "Urban Photography",
      description: "Capturing city life in black and white",
      src: "https://images.unsplash.com/photo-1449824913935-59a10b8d2000",
      alt: "City skyline",
      author: "Jane Smith"
    },
    {
      id: 3,
      title: "Ocean Exploration",
      description: "Diving deep into marine life",
      src: "https://images.unsplash.com/photo-1518837695005-2083093ee35b",
      alt: "Ocean underwater",
      author: "Mike Johnson"
    },
    {
      id: 4,
      title: "Desert Safari",
      description: "Adventures in the Sahara",
      src: "https://images.unsplash.com/photo-1509316785289-025f5b846b35",
      alt: "Desert dunes",
      author: "Sarah Wilson"
    },
    {
      id: 5,
      title: "Forest Trails",
      description: "Hidden paths through ancient woods",
      src: "https://images.unsplash.com/photo-1448375240586-882707db888b",
      alt: "Forest path",
      author: "Tom Brown"
    },
    {
      id: 6,
      title: "Arctic Wonders",
      description: "Exploring the frozen north",
      src: "https://images.unsplash.com/photo-1517783999520-f068d7431a60",
      alt: "Arctic landscape",
      author: "Emma Davis"
    }
  ];

  return (
    <div className="grid grid-cols-1 gap-6 p-8">
      {articles.map((article) => (
        <div key={article.id} className="relative h-96 rounded-xl overflow-hidden">
          <img
            src={article.src}
            alt={article.alt}
            className="w-full h-full object-cover"
          />
          <div className="absolute inset-0 bg-gradient-to-t from-black/70 to-transparent backdrop-blur-[2px]">
            <div className="absolute bottom-0 p-6 text-white">
              <h3 className="text-2xl font-bold mb-2">{article.title}</h3>
              <p className="mb-4">{article.description}</p>
              <span className="text-sm">By {article.author}</span>
            </div>
          </div>
        </div>
      ))}
    </div>
  );
}

Hero Section with Blurred Text Overlay

A hero section with a blurred text overlay that creates depth and improves readability.

This is a live editor. Play around with it!
export default function HeroSection() {
  const heroData = {
    title: "Discover Nature's Beauty",
    subtitle: "Explore the world's most breathtaking landscapes",
    cta: "Start Adventure",
    backgroundImage: "https://images.unsplash.com/photo-1506744038136-46273834b3fb",
    stats: [
      { id: 1, label: "Destinations", value: "100+" },
      { id: 2, label: "Tours", value: "500+" },
      { id: 3, label: "Travelers", value: "10k+" },
      { id: 4, label: "Reviews", value: "2k+" },
      { id: 5, label: "Countries", value: "25+" },
      { id: 6, label: "Guides", value: "50+" }
    ]
  };

  return (
    <div className="relative min-h-screen py-10">
      <img
        src={heroData.backgroundImage}
        alt="Nature landscape"
        className="absolute inset-0 w-full h-full object-cover"
      />
      <div className="absolute inset-0 bg-black/40" />
      <div className="relative h-full flex items-center justify-center text-center">
        <div className="max-w-3xl px-4">
          <h1 className="text-4xl md:text-6xl font-bold text-white mb-4">
            {heroData.title}
          </h1>
          <p className="text-xl text-white mb-8 px-6 py-4 bg-black/30 backdrop-blur-sm rounded-lg">
            {heroData.subtitle}
          </p>
          <button className="bg-white text-gray-900 px-8 py-3 rounded-lg font-semibold hover:bg-gray-100 transition">
            {heroData.cta}
          </button>
          <div className="mt-12 grid grid-cols-2 md:grid-cols-3 gap-4">
            {heroData.stats.map((stat) => (
              <div
                key={stat.id}
                className="bg-white/10 backdrop-blur-md p-4 rounded-lg"
              >
                <div className="text-2xl font-bold text-white">{stat.value}</div>
                <div className="text-sm text-white/80">{stat.label}</div>
              </div>
            ))}
          </div>
        </div>
      </div>
    </div>
  );
}

Customization Examples

Dynamic Product Card with Variable Blur Effects

This example demonstrates a product card with different blur intensities based on hover states and product availability.

This is a live editor. Play around with it!
import { useState } from "react";
  import tailwindConfig from "./tailwind.config.js";
tailwind.config = tailwindConfig;

// App.js
export default function ProductCard() {
  const [isHovered, setIsHovered] = useState(false);

  return (
    <div className="relative w-80 mx-5 my-2 h-96 rounded-xl overflow-hidden"
         onMouseEnter={() => setIsHovered(true)}
         onMouseLeave={() => setIsHovered(false)}>
      <img
        src="https://images.unsplash.com/photo-1542291026-7eec264c27ff"
        alt="Product"
        className="w-full h-full object-cover"
      />
      <div className={`absolute inset-0 transition-all duration-300 ${
        isHovered 
          ? 'backdrop-blur-intense bg-black/30' 
          : 'backdrop-blur-subtle bg-black/20'
      }`}>
        <div className="p-6 text-white">
          <h2 className="text-2xl font-bold">Premium Sneakers</h2>
          <p className="mt-2">Limited Edition Collection</p>
          <button className="mt-4 px-6 py-2 bg-white text-black rounded-lg">
            View Details
          </button>
        </div>
      </div>
    </div>
  );
}

Weather Widget with Adaptive Blur Background

A weather widget that adjusts backdrop blur based on weather conditions.

This is a live editor. Play around with it!
import tailwindConfig from "./tailwind.config.js";
tailwind.config = tailwindConfig;

// App.js
export default function WeatherWidget() {
  const weatherType = 'cloudy'; // This could be dynamic based on API data

  const getBlurClass = (weather) => {
    const blurMap = {
      sunny: 'backdrop-blur-weather',
      cloudy: 'backdrop-blur-fog',
      rainy: 'backdrop-blur-rain'
    };
    return blurMap[weather] || 'backdrop-blur-weather';
  };

  return (
    <div className="relative w-96 h-64 rounded-2xl overflow-hidden">
      <img
        src="https://images.unsplash.com/photo-1534088568595-a066f410bcda"
        alt="Sky background"
        className="w-full h-full object-cover"
      />
      <div className={`absolute inset-0 ${getBlurClass(weatherType)} bg-gradient-to-b from-black/20 to-black/60`}>
        <div className="p-8 text-white">
          <div className="text-5xl font-light">23°C</div>
          <div className="mt-4 text-xl">San Francisco</div>
          <div className="mt-2 text-sm opacity-80">Partly Cloudy</div>
          <div className="mt-4 flex gap-4">
            <div className="text-center">
              <div className="text-sm">Humidity</div>
              <div className="font-medium">65%</div>
            </div>
            <div className="text-center">
              <div className="text-sm">Wind</div>
              <div className="font-medium">12 mph</div>
            </div>
          </div>
        </div>
      </div>
    </div>
  );
}

A modal component that uses different blur intensities to create depth perception.

This is a live editor. Play around with it!
import tailwindConfig from "./tailwind.config.js";
tailwind.config = tailwindConfig;

// App.js
export default function ModalDialog() {
  return (
    <div className="relative min-h-screen flex items-center justify-center">
      {/* Background */}
      <img
        src="https://images.unsplash.com/photo-1579546929518-9e396f3cc809"
        alt="Background"
        className="absolute inset-0 w-full h-full object-cover"
      />
      
      {/* Overlay */}
      <div className="absolute inset-0 backdrop-blur-overlay bg-black/30" />
      
      {/* Modal */}
      <div className="relative w-96 rounded-2xl overflow-hidden">
        <div className="backdrop-blur-dialog bg-white/70 p-8">
          <h2 className="text-2xl font-bold text-gray-800">Update Available</h2>
          <p className="mt-4 text-gray-600">
            A new version of the application is available. Would you like to update now?
          </p>
          
          {/* Action Buttons */}
          <div className="mt-8 flex gap-4">
            <button className="px-6 py-2 rounded-lg backdrop-blur-accent bg-black/80 text-white">
              Update Now
            </button>
            <button className="px-6 py-2 rounded-lg backdrop-blur-accent bg-white/50 text-gray-800">
              Later
            </button>
          </div>
        </div>
      </div>
    </div>
  );
}

Best Practices

Maintain Design Consistency

When implementing Backdrop Blur in your projects, strive for a consistent visual style across all UI components. Consistency fosters a cohesive user experience and ensures your application delivers a professional design throughout. For instance, if you're using a specific intensity of Backdrop Blur for navigation menus, retain that same intensity for modals or similar elements to create continuity. Tailwind CSS makes this approach effortless by leveraging utility classes like backdrop-blur-md or custom extended values.

Additionally, always evaluate where blurring contributes value to the design. For interfaces with hierarchical layers, such as dashboards or content-heavy pages, consider applying consistent blur levels to modal backdrops, sidebars, or dropdown menus to subtly separate content layers. You should take advantage of Tailwind's configuration system to define unified blur values globally in your tailwind.config.js for reusability.

Leverage Utility Combinations

Tailwind CSS allows chaining multiple utility classes to achieve sophisticated designs without adding extra complexity. By thoughtfully combining Backdrop Blur with other utilities such as opacity, z-index, or box-shadow, you can create elegant frosted glass effects or layered interfaces. These combinations are particularly useful when designing elements like popups, cards, or headers.

Accessibility Considerations

Enhance Readability and Navigability

When using Backdrop Blur effects, prioritize the clarity and accessibility of content displayed in the foreground. Overly strong blur effects can diminish text or image visibility, especially for users with visual impairments. Tailwind’s low-opacity color utilities (bg-white/50, bg-gray-900/40) help establish proper contrast when combined with blur utilities.

Always test readability by overlaying text on blurred backdrops. Use Tailwind’s typography utilities (font-semibold, text-lg, shadow-text) to ensure your text remains legible against the background.

This is a live editor. Play around with it!
export default function AccessibleOverlay() {
  return (
    <div className="relative bg-cover bg-center h-screen w-screen" style={{ backgroundImage: `url('https://images.unsplash.com/photo-1508873699372-7aeab60b44ab')` }}>
      <div className="absolute inset-0 bg-black/60 backdrop-blur-md flex items-center justify-center">
        <p className="text-white font-semibold text-3xl">Accessible Content on Blurred Background</p>
      </div>
    </div>
  );
}

Support Accessible Interactive Elements

Interactive elements, such as buttons, links, or tabs, can benefit from subtle blur effects to enhance focus and provide accessibility-friendly visual cues. Use hover and focus modifiers to apply dynamic Backdrop Blur styles that visually respond to user actions.

When designing such components, always respect accessibility best practices by including proper aria-label attributes and ensuring the elements are keyboard-navigable. Ensure that the blurred backdrop does not obscure focus outlines, which are critical for navigation.

This is a live editor. Play around with it!
export default function InteractiveBlurButton() {
  return (
    <div className="h-screen w-screen flex items-center justify-center bg-cover bg-center" style={{ backgroundImage: `url('https://images.unsplash.com/photo-1508873699372-7aeab60b44ab')` }}>
      <button className="bg-white/50 backdrop-blur-md hover:backdrop-blur-lg hover:bg-gray-100 px-6 py-3 rounded shadow-lg text-gray-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-400">
        Accessible Blur Button
      </button>
    </div>
  );
}