<!DOCTYPE html><html lang="pt-BR" data-theme="light" class="scroll-smooth"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><meta name="generator" content="Astro v5.17.1"><!-- Primary Meta Tags --><title>Fabio Luciano - Platform Engineer</title><meta name="title" content="Fabio Luciano - Platform Engineer"><meta name="description" content="Blog sobre Platform Engineering, Kubernetes, GitOps, Observabilidade e Developer Experience"><link rel="canonical" href="https://fabioluciano.com/"><!-- Language alternates --><link rel="alternate" hreflang="pt-BR" href="https://fabioluciano.com/"><link rel="alternate" hreflang="en-US" href="https://fabioluciano.com/?lang=en"><link rel="alternate" hreflang="x-default" href="https://fabioluciano.com/"><!-- Open Graph / Facebook --><meta property="og:type" content="website"><meta property="og:url" content="https://fabioluciano.com/"><meta property="og:title" content="Fabio Luciano - Platform Engineer"><meta property="og:description" content="Blog sobre Platform Engineering, Kubernetes, GitOps, Observabilidade e Developer Experience"><meta property="og:image" content="https://fabioluciano.com/images/photo.jpg"><meta property="og:site_name" content="Fabio Luciano"><meta property="og:locale" content="pt_BR"><!-- Twitter --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:url" content="https://fabioluciano.com/"><meta name="twitter:title" content="Fabio Luciano - Platform Engineer"><meta name="twitter:description" content="Blog sobre Platform Engineering, Kubernetes, GitOps, Observabilidade e Developer Experience"><meta name="twitter:image" content="https://fabioluciano.com/images/photo.jpg"><meta name="twitter:site" content="@fabioluciano"><meta name="twitter:creator" content="@fabioluciano"><!-- RSS Feeds --><link rel="alternate" type="application/rss+xml" title="Fabio Luciano RSS Feed (Português)" href="/rss-pt.xml" hreflang="pt-BR"><link rel="alternate" type="application/rss+xml" title="Fabio Luciano RSS Feed (English)" href="/rss-en.xml" hreflang="en-US"><!-- JSON-LD Structured Data --><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Fabio Luciano","description":"Platform Engineering, Developer Experience & Cloud Native","url":"https://fabioluciano.com","author":{"@type":"Person","name":"Fabio Luciano"}}</script><!-- Preload fonts --><link rel="preconnect" href="https://fonts.googleapis.com" crossorigin="anonymous"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- Theme script (prevents flash) --><script>
      (function () {
        const theme = (() => {
          const stored = localStorage.getItem('theme');
          if (stored) return stored;

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

        document.documentElement.setAttribute('data-theme', theme);
      })();
    </script><link rel="stylesheet" href="/_astro/_slug_.CvfYIKGs.css"></head> <body class="min-h-screen flex flex-col bg-base-100 text-base-content transition-theme"> <!-- Skip to content link --> <a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-50 focus:px-4 focus:py-2 focus:bg-primary focus:text-primary-content focus:rounded-lg"> Pular para o conteúdo </a> <header class="sticky top-0 z-50 w-full border-b border-base-300/50 bg-base-100/90 backdrop-blur-xl shadow-sm"> <div class="container mx-auto px-4"> <div class="flex h-16 items-center justify-between"> <!-- Logo / Site Title --> <a href="/" class="group flex items-center gap-3 text-xl font-bold text-base-content hover:text-primary transition-all duration-300"> <!-- Animated Logo Icon --> <div class="relative flex items-center justify-center w-10 h-10 rounded-xl bg-gradient-to-br from-primary to-secondary shadow-lg shadow-primary/20 group-hover:shadow-primary/40 group-hover:scale-105 transition-all duration-300"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5 text-white" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="4 17 10 11 4 5"></polyline><line x1="12" y1="19" x2="20" y2="19"></line></svg> <div class="absolute inset-0 rounded-xl bg-white/20 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></div> </div> <span class="hidden sm:block"> <span class="text-gradient font-extrabold">Fabio</span> <span class="text-base-content/80 font-semibold"> Luciano</span> </span> </a> <!-- Desktop Navigation --> <nav class="hidden lg:flex items-center gap-1"> <a href="/" class="group relative px-3 py-2 rounded-lg text-sm font-medium transition-all duration-300 overflow-hidden bg-gradient-to-r from-primary to-secondary text-white shadow-lg shadow-primary/25">   <span class="relative z-10 flex items-center gap-1.5"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" aria-hidden="true" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z"></path></svg> Home </span> </a><a href="/blog" class="group relative px-3 py-2 rounded-lg text-sm font-medium transition-all duration-300 overflow-hidden text-base-content/70 hover:text-white">  <span class="absolute inset-0 bg-gradient-to-r from-primary via-secondary to-primary bg-[length:200%_200%] opacity-0 group-hover:opacity-100 group-hover:animate-gradient transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1.5"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" aria-hidden="true" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z" clip-rule="evenodd"></path></svg> Blog </span> </a><a href="/series" class="group relative px-3 py-2 rounded-lg text-sm font-medium transition-all duration-300 overflow-hidden text-base-content/70 hover:text-white">  <span class="absolute inset-0 bg-gradient-to-r from-primary via-secondary to-primary bg-[length:200%_200%] opacity-0 group-hover:opacity-100 group-hover:animate-gradient transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1.5"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" aria-hidden="true" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M7 3a1 1 0 000 2h6a1 1 0 100-2H7zM4 7a1 1 0 011-1h10a1 1 0 110 2H5a1 1 0 01-1-1zM2 11a2 2 0 012-2h12a2 2 0 012 2v4a2 2 0 01-2 2H4a2 2 0 01-2-2v-4z"></path></svg> Séries </span> </a><a href="https://resume.fabioluciano.com" target="_blank" rel="noopener noreferrer" class="group relative px-3 py-2 rounded-lg text-sm font-medium transition-all duration-300 overflow-hidden text-base-content/70 hover:text-white">  <span class="absolute inset-0 bg-gradient-to-r from-primary via-secondary to-primary bg-[length:200%_200%] opacity-0 group-hover:opacity-100 group-hover:animate-gradient transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1.5"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" aria-hidden="true" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z" clip-rule="evenodd"></path></svg> Currículo </span> </a> </nav> <!-- Right side actions --> <div class="flex items-center gap-1"> <!-- Search button --> <button id="search-button" class="btn btn-ghost btn-sm btn-circle hover:bg-primary/10 hover:text-primary transition-all duration-300" aria-label="Buscar"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg> </button> <!-- Language Toggle --> <div class="dropdown dropdown-end"> <button tabindex="0" class="btn btn-ghost btn-sm gap-1" aria-label="Selecionar idioma"> <span class="text-base">🇧🇷</span> <span class="text-xs font-medium uppercase hidden sm:inline">pt</span> <svg xmlns="http://www.w3.org/2000/svg" class="h-3 w-3 opacity-60" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path> </svg> </button> <ul tabindex="0" class="dropdown-content z-[100] menu p-2 shadow-lg bg-base-100 rounded-box w-40 border border-base-300"> <li> <a href="/" class="flex items-center gap-2 active"> <span class="text-base">🇧🇷</span> <span>Português</span> <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 ml-auto text-primary" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path> </svg> </a> </li><li> <a href="/en" class="flex items-center gap-2"> <span class="text-base">🇺🇸</span> <span>English</span>  </a> </li> </ul> </div> <script>
  // Store language preference when visiting a page
  (function() {
    var path = window.location.pathname;
    var isEnglish = path.startsWith('/en/') || path === '/en';
    var locale = isEnglish ? 'en' : 'pt';

    localStorage.setItem('preferred-locale', locale);
    document.cookie = 'preferred-locale=' + locale + ';path=/;max-age=31536000;SameSite=Lax';
  })();
</script> <!-- Theme Toggle --> <button id="theme-toggle" class="btn btn-ghost btn-sm btn-circle" aria-label="Alternar tema" data-astro-cid-efubawbo> <!-- Sun icon (shown in dark mode) --> <svg class="h-5 w-5 hidden dark:block" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-astro-cid-efubawbo> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" data-astro-cid-efubawbo></path> </svg> <!-- Moon icon (shown in light mode) --> <svg class="h-5 w-5 block dark:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-astro-cid-efubawbo> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" data-astro-cid-efubawbo></path> </svg> </button>  <!-- Mobile menu button --> <button id="mobile-menu-button" class="btn btn-ghost btn-sm btn-circle lg:hidden hover:bg-primary/10 hover:text-primary transition-all duration-300" aria-label="Abrir menu" aria-expanded="false"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg> </button> </div> </div> </div> <!-- Mobile Menu --> <div id="mobile-menu" class="hidden lg:hidden border-t border-base-200 bg-base-100"> <nav class="container mx-auto px-4 py-3"> <ul class="space-y-1"> <li> <a href="/" class="group relative flex items-center gap-3 px-4 py-3 rounded-lg text-base font-medium transition-all duration-300 overflow-hidden bg-gradient-to-r from-primary to-secondary text-white shadow-md">  <span class="relative z-10 flex items-center gap-3"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" aria-hidden="true" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z"></path></svg> Home </span> </a> </li><li> <a href="/blog" class="group relative flex items-center gap-3 px-4 py-3 rounded-lg text-base font-medium transition-all duration-300 overflow-hidden text-base-content/70 hover:text-white"> <span class="absolute inset-0 bg-gradient-to-r from-primary via-secondary to-primary bg-[length:200%_200%] opacity-0 group-hover:opacity-100 group-hover:animate-gradient transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-3"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" aria-hidden="true" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z" clip-rule="evenodd"></path></svg> Blog </span> </a> </li><li> <a href="/series" class="group relative flex items-center gap-3 px-4 py-3 rounded-lg text-base font-medium transition-all duration-300 overflow-hidden text-base-content/70 hover:text-white"> <span class="absolute inset-0 bg-gradient-to-r from-primary via-secondary to-primary bg-[length:200%_200%] opacity-0 group-hover:opacity-100 group-hover:animate-gradient transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-3"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" aria-hidden="true" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M7 3a1 1 0 000 2h6a1 1 0 100-2H7zM4 7a1 1 0 011-1h10a1 1 0 110 2H5a1 1 0 01-1-1zM2 11a2 2 0 012-2h12a2 2 0 012 2v4a2 2 0 01-2 2H4a2 2 0 01-2-2v-4z"></path></svg> Séries </span> </a> </li><li> <a href="https://resume.fabioluciano.com" target="_blank" rel="noopener noreferrer" class="group relative flex items-center gap-3 px-4 py-3 rounded-lg text-base font-medium transition-all duration-300 overflow-hidden text-base-content/70 hover:text-white"> <span class="absolute inset-0 bg-gradient-to-r from-primary via-secondary to-primary bg-[length:200%_200%] opacity-0 group-hover:opacity-100 group-hover:animate-gradient transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-3"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" aria-hidden="true" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z" clip-rule="evenodd"></path></svg> Currículo </span> </a> </li> </ul> </nav> </div> </header> <!-- Search Modal --> <!-- Search Modal --><div id="search-modal" class="fixed inset-0 z-[100] hidden" role="dialog" aria-modal="true" aria-labelledby="search-modal-title"> <!-- Backdrop --> <div id="search-backdrop" class="absolute inset-0 bg-black/60 backdrop-blur-sm transition-opacity"></div> <!-- Modal Content --> <div class="relative flex items-start justify-center pt-[10vh] px-4"> <div class="w-full max-w-2xl bg-base-100 rounded-2xl shadow-2xl border border-base-300 overflow-hidden transform transition-all"> <!-- Header --> <div class="flex items-center gap-3 p-4 border-b border-base-300"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5 text-primary" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg> <h2 id="search-modal-title" class="sr-only"> Buscar no site </h2> <input id="search-input" type="text" placeholder="Buscar artigos..." class="flex-1 bg-transparent text-lg outline-none placeholder:text-base-content/40" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"> <button id="search-close" class="btn btn-ghost btn-sm btn-circle" aria-label="Fechar busca"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg> </button> </div> <!-- Results --> <div id="search-results" class="max-h-[60vh] overflow-y-auto p-4"> <div id="search-empty" class="text-center py-8 text-base-content/50"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-12 w-12 mx-auto mb-3 opacity-30" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg> <p>Digite para buscar...</p> </div> <div id="search-results-list" class="space-y-2 hidden"></div> <div id="search-no-results" class="text-center py-8 text-base-content/50 hidden"> <p>Nenhum resultado encontrado</p> </div> </div> <!-- Footer --> <div class="flex items-center justify-between px-4 py-3 border-t border-base-300 bg-base-200/50 text-xs text-base-content/50"> <div class="flex items-center gap-3"> <span class="flex items-center gap-1"> <kbd class="kbd kbd-xs">↑</kbd> <kbd class="kbd kbd-xs">↓</kbd> navegar </span> <span class="flex items-center gap-1"> <kbd class="kbd kbd-xs">↵</kbd> abrir </span> <span class="flex items-center gap-1"> <kbd class="kbd kbd-xs">esc</kbd> fechar </span> </div> <span class="opacity-70">Powered by Pagefind</span> </div> </div> </div> </div> <script>
  var pagefindInstance = null;
  var selectedIndex = -1;

  async function initPagefind() {
    if (pagefindInstance) return pagefindInstance;

    try {
      pagefindInstance = await import('/pagefind/pagefind.js');
      await pagefindInstance.init();
      return pagefindInstance;
    } catch (e) {
      console.warn('Pagefind not available (run build first):', e);
      return null;
    }
  }

  function setupSearch() {
    var modal = document.getElementById('search-modal');
    var backdrop = document.getElementById('search-backdrop');
    var input = document.getElementById('search-input');
    var closeBtn = document.getElementById('search-close');
    var searchBtn = document.getElementById('search-button');
    var resultsContainer = document.getElementById('search-results-list');
    var emptyState = document.getElementById('search-empty');
    var noResults = document.getElementById('search-no-results');

    if (!modal || !input || !resultsContainer) return;

    var searchTimeout;

    function openModal() {
      modal.classList.remove('hidden');
      document.body.style.overflow = 'hidden';
      input.focus();
      initPagefind();
    }

    function closeModal() {
      modal.classList.add('hidden');
      document.body.style.overflow = '';
      input.value = '';
      resultsContainer.innerHTML = '';
      resultsContainer.classList.add('hidden');
      emptyState.classList.remove('hidden');
      noResults.classList.add('hidden');
      selectedIndex = -1;
    }

    function updateSelection() {
      var items = resultsContainer.querySelectorAll('[data-search-result]');
      items.forEach(function(item, i) {
        if (i === selectedIndex) {
          item.classList.add('bg-primary/10', 'border-primary/30');
          item.scrollIntoView({ block: 'nearest' });
        } else {
          item.classList.remove('bg-primary/10', 'border-primary/30');
        }
      });
    }

    async function performSearch(query) {
      if (!query || query.length < 2) {
        resultsContainer.innerHTML = '';
        resultsContainer.classList.add('hidden');
        emptyState.classList.remove('hidden');
        noResults.classList.add('hidden');
        return;
      }

      var pf = await initPagefind();
      if (!pf) return;

      var search = await pf.search(query);
      var results = await Promise.all(
        search.results.slice(0, 10).map(function(r) { return r.data(); })
      );

      emptyState.classList.add('hidden');

      if (results.length === 0) {
        resultsContainer.innerHTML = '';
        resultsContainer.classList.add('hidden');
        noResults.classList.remove('hidden');
        return;
      }

      noResults.classList.add('hidden');
      resultsContainer.classList.remove('hidden');
      selectedIndex = -1;

      resultsContainer.innerHTML = results.map(function(result, i) {
        return '<a href="' + result.url + '" data-search-result="' + i + '" class="block p-3 rounded-lg border border-base-300 hover:border-primary/30 hover:bg-primary/5 transition-all"><h3 class="font-medium text-base-content line-clamp-1">' + (result.meta && result.meta.title ? result.meta.title : result.url) + '</h3><p class="text-sm text-base-content/60 mt-1 line-clamp-2">' + result.excerpt + '</p></a>';
      }).join('');
    }

    if (searchBtn) searchBtn.addEventListener('click', openModal);
    if (closeBtn) closeBtn.addEventListener('click', closeModal);
    if (backdrop) backdrop.addEventListener('click', closeModal);

    input.addEventListener('input', function() {
      clearTimeout(searchTimeout);
      searchTimeout = setTimeout(function() {
        performSearch(input.value);
      }, 200);
    });

    document.addEventListener('keydown', function(e) {
      if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
        e.preventDefault();
        if (modal.classList.contains('hidden')) {
          openModal();
        } else {
          closeModal();
        }
      }

      if (e.key === 'Escape' && !modal.classList.contains('hidden')) {
        closeModal();
      }

      if (!modal.classList.contains('hidden')) {
        var items = resultsContainer.querySelectorAll('[data-search-result]');

        if (e.key === 'ArrowDown') {
          e.preventDefault();
          selectedIndex = Math.min(selectedIndex + 1, items.length - 1);
          updateSelection();
        }

        if (e.key === 'ArrowUp') {
          e.preventDefault();
          selectedIndex = Math.max(selectedIndex - 1, -1);
          updateSelection();
        }

        if (e.key === 'Enter' && selectedIndex >= 0) {
          e.preventDefault();
          var selectedItem = items[selectedIndex];
          if (selectedItem) {
            window.location.href = selectedItem.href;
          }
        }
      }
    });
  }

  setupSearch();
  document.addEventListener('astro:after-swap', setupSearch);
</script> <script type="module">function d(){const e=document.getElementById("mobile-menu-button"),t=document.getElementById("mobile-menu");!e||!t||(e.addEventListener("click",()=>{const n=e.getAttribute("aria-expanded")==="true";e.setAttribute("aria-expanded",(!n).toString()),t.classList.toggle("hidden")}),document.addEventListener("keydown",n=>{n.key==="Escape"&&!t.classList.contains("hidden")&&(e.setAttribute("aria-expanded","false"),t.classList.add("hidden"))}))}d();document.addEventListener("astro:after-swap",d);</script> <main id="main-content" class="flex-1">   <section class="relative py-12 md:py-16 overflow-hidden"> <div class="absolute inset-0 bg-gradient-to-br from-base-100 via-base-200/50 to-primary/5"></div> <div class="absolute top-10 right-10 w-48 h-48 bg-primary/5 rounded-full blur-3xl hidden lg:block"></div> <div class="absolute bottom-10 left-10 w-64 h-64 bg-secondary/5 rounded-full blur-3xl hidden lg:block"></div> <div class="container mx-auto px-4 relative z-10"> <div class="max-w-3xl mx-auto"> <div class="flex flex-col lg:flex-row lg:items-center lg:gap-12"> <div class="flex-1 text-center lg:text-left"> <div class="inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-primary/10 text-primary text-xs font-medium mb-4"> <svg stroke="currentColor" fill="none" stroke-width="1.5" viewBox="0 0 24 24" aria-hidden="true" class="h-3.5 w-3.5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" d="M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z"></path></svg> <span>Platform Engineer &bull; 10+ anos</span> </div> <h1 class="text-3xl md:text-4xl lg:text-5xl font-bold text-base-content mb-3 leading-tight"> <span class="text-gradient">Fabio</span> <span class="text-base-content"> Luciano</span> </h1> <p class="text-base md:text-lg text-base-content/70 mb-2 font-medium"> Platform Engineer </p> <p class="text-sm text-base-content/60 max-w-xl mb-6"> Platform Engineer com mais de 10 anos de experiência em IDPs, Kubernetes, GitOps, Observabilidade e Developer Experience. </p> <div class="flex flex-wrap items-center justify-center lg:justify-start gap-3"> <a href="/blog" class="group btn btn-primary btn-sm text-white shadow-md shadow-primary/20"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg> Blog <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 group-hover:translate-x-0.5 transition-transform" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg> </a> <a href="https://cv.fabioluciano.com" target="_blank" rel="noopener noreferrer" class="btn btn-outline btn-sm"> <svg stroke="currentColor" fill="none" stroke-width="1.5" viewBox="0 0 24 24" aria-hidden="true" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" d="M15.59 14.37a6 6 0 0 1-5.84 7.38v-4.8m5.84-2.58a14.98 14.98 0 0 0 6.16-12.12A14.98 14.98 0 0 0 9.631 8.41m5.96 5.96a14.926 14.926 0 0 1-5.841 2.58m-.119-8.54a6 6 0 0 0-7.381 5.84h4.8m2.581-5.84a14.927 14.927 0 0 0-2.58 5.84m2.699 2.7c-.103.021-.207.041-.311.06a15.09 15.09 0 0 1-2.448-2.448 14.9 14.9 0 0 1 .06-.312m-2.24 2.39a4.493 4.493 0 0 0-1.757 4.306 4.493 4.493 0 0 0 4.306-1.758M16.5 9a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z"></path></svg>
Currículo
</a> <div class="flex gap-1 ml-2"> <a href="https://github.com/fabioluciano" target="_blank" rel="noopener noreferrer" class="btn btn-ghost btn-sm btn-square hover:text-primary" aria-label="GitHub"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path></svg> </a> <a href="https://linkedin.com/in/fabioluciano" target="_blank" rel="noopener noreferrer" class="btn btn-ghost btn-sm btn-square hover:text-primary" aria-label="LinkedIn"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg> </a> <a href="https://twitter.com/fabioluciano" target="_blank" rel="noopener noreferrer" class="btn btn-ghost btn-sm btn-square hover:text-primary" aria-label="Twitter"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"></path></svg> </a> <a href="mailto:me@fabioluciano.com" class="btn btn-ghost btn-sm btn-square hover:text-primary" aria-label="Email"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg> </a> </div> </div> </div> <div class="hidden lg:flex items-center justify-center"> <div class="relative group/photo"> <div class="absolute -inset-2 bg-gradient-to-br from-primary via-secondary to-accent rounded-full blur-md opacity-60 group-hover/photo:opacity-100 group-hover/photo:blur-xl group-hover/photo:-inset-3 group-hover/photo:animate-pulse transition-all duration-300"></div> <div class="relative w-48 h-48 rounded-full overflow-hidden ring-4 ring-base-100 shadow-2xl group-hover/photo:shadow-primary/30 transition-shadow duration-300"> <img src="/images/photo.jpg" alt="Fabio Luciano" class="w-full h-full object-cover saturate-[1.15] contrast-[1.08] brightness-[0.98] sepia-[0.05]"> </div> </div> </div> </div> </div> </div> </section>  <section class="py-10 bg-base-100"> <div class="container mx-auto px-4"> <div class="flex items-center justify-between mb-6"> <div> <h2 class="text-2xl md:text-3xl font-bold text-base-content">Últimos Posts</h2> <p class="text-sm text-base-content/60">
Artigos recentes sobre engenharia de plataforma
</p> </div> <a href="/blog" class="group btn btn-ghost btn-sm gap-1 hover:text-primary"> Ver todos <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3.5 w-3.5 group-hover:translate-x-0.5 transition-transform" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg> </a> </div> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"> <article class="group card bg-base-100 border border-base-300 hover:border-primary/50 hover:shadow-lg transition-all duration-200 overflow-hidden md:col-span-2 lg:col-span-2">  <div class="h-0.5 bg-gradient-to-r from-orange-500 to-amber-500"></div>   <div class="card-body p-4">  <div class="flex items-center justify-between gap-2 text-xs"> <div class="flex items-center gap-2"> <a href="/categories/platform-engineering" class="badge badge-sm bg-gradient-to-r from-orange-500 to-amber-500 text-white border-0"> platform-engineering </a> <span class="badge badge-sm badge-info badge-outline"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-2.5 w-2.5 mr-0.5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg> Série </span> </div> <span class="text-base-content/50 flex items-center gap-1 shrink-0"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> 27 min de leitura </span> </div>  <h2 class="font-semibold text-base-content group-hover:text-primary transition-colors leading-snug text-lg line-clamp-2"> <a href="/por-que-times-produtivos-fracassam-08"> Além das Métricas de Time: Estrutura, Fluxo e a Perspectiva Corporativa </a> </h2>  <p class="text-base-content/60 text-sm line-clamp-2 leading-relaxed"> Team Topologies redesenha a organização para fluxo. Flow Framework conecta engenharia a negócio. Developer Velocity Index mostra como consultorias vendem produtividade. Três lentes que ampliam o que os frameworks anteriores não veem. </p>  <div class="flex items-center justify-between gap-2 mt-auto pt-2"> <div class="flex items-center gap-2 text-xs text-base-content/50"> <time datetime="2026-02-08T00:00:00.000Z" class="flex items-center gap-1"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg> 8 de fevereiro de 2026 </time>  <span class="text-base-content/30">•</span> <div class="flex gap-1"> <a href="/tags/developer-experience" class="hover:text-primary transition-colors">
#developer-experience </a><a href="/tags/platform-engineering" class="hover:text-primary transition-colors">
#platform-engineering </a> <span class="text-base-content/40">+2</span> </div>  </div> <a href="/por-que-times-produtivos-fracassam-08" class="text-primary hover:translate-x-0.5 transition-transform" aria-label="Ler artigo"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg> </a> </div> </div> </article><article class="group card bg-base-100 border border-base-300 hover:border-primary/50 hover:shadow-lg transition-all duration-200 overflow-hidden">  <div class="h-0.5 bg-gradient-to-r from-orange-500 to-amber-500"></div>   <div class="card-body p-4">  <div class="flex items-center justify-between gap-2 text-xs"> <div class="flex items-center gap-2"> <a href="/categories/platform-engineering" class="badge badge-sm bg-gradient-to-r from-orange-500 to-amber-500 text-white border-0"> platform-engineering </a> <span class="badge badge-sm badge-info badge-outline"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-2.5 w-2.5 mr-0.5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg> Série </span> </div> <span class="text-base-content/50 flex items-center gap-1 shrink-0"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> 33 min de leitura </span> </div>  <h2 class="font-semibold text-base-content group-hover:text-primary transition-colors leading-snug text-base line-clamp-2"> <a href="/por-que-times-produtivos-fracassam-07"> DX Core 4: Quando Entender Não Basta e Agir Vira Obrigação </a> </h2>  <p class="text-base-content/60 text-sm line-clamp-2 leading-relaxed"> Depois de DORA, SPACE e DevEx, o diagnóstico está feito. O problema agora é outro: onde exatamente intervir sem quebrar o sistema inteiro? </p>  <div class="flex items-center justify-between gap-2 mt-auto pt-2"> <div class="flex items-center gap-2 text-xs text-base-content/50"> <time datetime="2026-02-07T00:00:00.000Z" class="flex items-center gap-1"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg> 7 de fevereiro de 2026 </time>  <span class="text-base-content/30">•</span> <div class="flex gap-1"> <a href="/tags/developer-experience" class="hover:text-primary transition-colors">
#developer-experience </a><a href="/tags/platform-engineering" class="hover:text-primary transition-colors">
#platform-engineering </a> <span class="text-base-content/40">+2</span> </div>  </div> <a href="/por-que-times-produtivos-fracassam-07" class="text-primary hover:translate-x-0.5 transition-transform" aria-label="Ler artigo"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg> </a> </div> </div> </article><article class="group card bg-base-100 border border-base-300 hover:border-primary/50 hover:shadow-lg transition-all duration-200 overflow-hidden">  <div class="h-0.5 bg-gradient-to-r from-primary to-secondary"></div>   <div class="card-body p-4">  <div class="flex items-center justify-between gap-2 text-xs"> <div class="flex items-center gap-2"> <a href="/categories/developer-experience" class="badge badge-sm bg-gradient-to-r from-primary to-secondary text-white border-0"> developer-experience </a>  </div> <span class="text-base-content/50 flex items-center gap-1 shrink-0"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> 36 min de leitura </span> </div>  <h2 class="font-semibold text-base-content group-hover:text-primary transition-colors leading-snug text-base line-clamp-2"> <a href="/4-horas-de-build-anatomia-de-um-colapso-de-developer-experience"> 4 Horas de Build: Anatomia de um Colapso de Developer Experience </a> </h2>  <p class="text-base-content/60 text-sm line-clamp-2 leading-relaxed"> Quando milhares de testes, centenas de GB de RAM e uma cultura tóxica se encontram: a anatomia completa de um desastre de developer experience </p>  <div class="flex items-center justify-between gap-2 mt-auto pt-2"> <div class="flex items-center gap-2 text-xs text-base-content/50"> <time datetime="2026-02-04T00:00:00.000Z" class="flex items-center gap-1"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg> 4 de fevereiro de 2026 </time>  <span class="text-base-content/30">•</span> <div class="flex gap-1"> <a href="/tags/devex" class="hover:text-primary transition-colors">
#devex </a><a href="/tags/dora" class="hover:text-primary transition-colors">
#dora </a> <span class="text-base-content/40">+2</span> </div>  </div> <a href="/4-horas-de-build-anatomia-de-um-colapso-de-developer-experience" class="text-primary hover:translate-x-0.5 transition-transform" aria-label="Ler artigo"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg> </a> </div> </div> </article><article class="group card bg-base-100 border border-base-300 hover:border-primary/50 hover:shadow-lg transition-all duration-200 overflow-hidden">  <div class="h-0.5 bg-gradient-to-r from-orange-500 to-amber-500"></div>   <div class="card-body p-4">  <div class="flex items-center justify-between gap-2 text-xs"> <div class="flex items-center gap-2"> <a href="/categories/platform-engineering" class="badge badge-sm bg-gradient-to-r from-orange-500 to-amber-500 text-white border-0"> platform-engineering </a> <span class="badge badge-sm badge-info badge-outline"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-2.5 w-2.5 mr-0.5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg> Série </span> </div> <span class="text-base-content/50 flex items-center gap-1 shrink-0"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> 44 min de leitura </span> </div>  <h2 class="font-semibold text-base-content group-hover:text-primary transition-colors leading-snug text-base line-clamp-2"> <a href="/por-que-times-produtivos-fracassam-06"> DevEx: Fluxo, Feedback e a Carga Que Ninguém Mede </a> </h2>  <p class="text-base-content/60 text-sm line-clamp-2 leading-relaxed"> O framework DevEx propõe que experiência é variável técnica — não subjetiva. Três dimensões (fluxo, feedback, carga cognitiva) capturam o que DORA e SPACE não veem. </p>  <div class="flex items-center justify-between gap-2 mt-auto pt-2"> <div class="flex items-center gap-2 text-xs text-base-content/50"> <time datetime="2026-02-02T00:00:00.000Z" class="flex items-center gap-1"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg> 2 de fevereiro de 2026 </time>  <span class="text-base-content/30">•</span> <div class="flex gap-1"> <a href="/tags/developer-experience" class="hover:text-primary transition-colors">
#developer-experience </a><a href="/tags/platform-engineering" class="hover:text-primary transition-colors">
#platform-engineering </a> <span class="text-base-content/40">+2</span> </div>  </div> <a href="/por-que-times-produtivos-fracassam-06" class="text-primary hover:translate-x-0.5 transition-transform" aria-label="Ler artigo"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg> </a> </div> </div> </article><article class="group card bg-base-100 border border-base-300 hover:border-primary/50 hover:shadow-lg transition-all duration-200 overflow-hidden">  <div class="h-0.5 bg-gradient-to-r from-orange-500 to-amber-500"></div>   <div class="card-body p-4">  <div class="flex items-center justify-between gap-2 text-xs"> <div class="flex items-center gap-2"> <a href="/categories/platform-engineering" class="badge badge-sm bg-gradient-to-r from-orange-500 to-amber-500 text-white border-0"> platform-engineering </a> <span class="badge badge-sm badge-info badge-outline"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-2.5 w-2.5 mr-0.5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg> Série </span> </div> <span class="text-base-content/50 flex items-center gap-1 shrink-0"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> 24 min de leitura </span> </div>  <h2 class="font-semibold text-base-content group-hover:text-primary transition-colors leading-snug text-base line-clamp-2"> <a href="/por-que-times-produtivos-fracassam-05"> SPACE: Produtividade Não É um Número — É um Sistema Humano em Tensão </a> </h2>  <p class="text-base-content/60 text-sm line-clamp-2 leading-relaxed"> SPACE não oferece respostas rápidas. Ele oferece fricção intelectual. Entenda por que produtividade em software exige aceitar tensões irresolvíveis. </p>  <div class="flex items-center justify-between gap-2 mt-auto pt-2"> <div class="flex items-center gap-2 text-xs text-base-content/50"> <time datetime="2026-02-01T00:00:00.000Z" class="flex items-center gap-1"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg> 1 de fevereiro de 2026 </time>  <span class="text-base-content/30">•</span> <div class="flex gap-1"> <a href="/tags/developer-experience" class="hover:text-primary transition-colors">
#developer-experience </a><a href="/tags/platform-engineering" class="hover:text-primary transition-colors">
#platform-engineering </a> <span class="text-base-content/40">+3</span> </div>  </div> <a href="/por-que-times-produtivos-fracassam-05" class="text-primary hover:translate-x-0.5 transition-transform" aria-label="Ler artigo"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg> </a> </div> </div> </article><article class="group card bg-base-100 border border-base-300 hover:border-primary/50 hover:shadow-lg transition-all duration-200 overflow-hidden">  <div class="h-0.5 bg-gradient-to-r from-orange-500 to-amber-500"></div>   <div class="card-body p-4">  <div class="flex items-center justify-between gap-2 text-xs"> <div class="flex items-center gap-2"> <a href="/categories/platform-engineering" class="badge badge-sm bg-gradient-to-r from-orange-500 to-amber-500 text-white border-0"> platform-engineering </a> <span class="badge badge-sm badge-info badge-outline"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-2.5 w-2.5 mr-0.5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg> Série </span> </div> <span class="text-base-content/50 flex items-center gap-1 shrink-0"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> 24 min de leitura </span> </div>  <h2 class="font-semibold text-base-content group-hover:text-primary transition-colors leading-snug text-base line-clamp-2"> <a href="/por-que-times-produtivos-fracassam-04"> DORA: Métricas de Fluxo, Capacidades Invisíveis e o Que Realmente Sustenta a Entrega Contínua </a> </h2>  <p class="text-base-content/60 text-sm line-clamp-2 leading-relaxed"> DORA não mede produtividade. Mede sintomas. E o que realmente importa está nas 24 capacidades que ninguém lembra de implementar. </p>  <div class="flex items-center justify-between gap-2 mt-auto pt-2"> <div class="flex items-center gap-2 text-xs text-base-content/50"> <time datetime="2026-01-30T00:00:00.000Z" class="flex items-center gap-1"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg> 30 de janeiro de 2026 </time>  <span class="text-base-content/30">•</span> <div class="flex gap-1"> <a href="/tags/developer-experience" class="hover:text-primary transition-colors">
#developer-experience </a><a href="/tags/platform-engineering" class="hover:text-primary transition-colors">
#platform-engineering </a> <span class="text-base-content/40">+2</span> </div>  </div> <a href="/por-que-times-produtivos-fracassam-04" class="text-primary hover:translate-x-0.5 transition-transform" aria-label="Ler artigo"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg> </a> </div> </div> </article> </div> </div> </section>  <section class="py-10 bg-base-200/30"> <div class="container mx-auto px-4"> <div class="flex items-center justify-between mb-6"> <div> <h2 class="text-2xl md:text-3xl font-bold text-base-content">
Explore por Tags
</h2> <p class="text-sm text-base-content/60">
Navegue pelos tópicos que mais te interessam
</p> </div> <span class="badge badge-primary badge-outline">31 tags</span> </div> <div class="flex flex-wrap gap-2 justify-center"> <a href="/tags/admission" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-pink-500 to-rose-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> admission </span> </a><a href="/tags/authentication" class="group relative px-3 py-1.5 rounded-full text-sm font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-purple-500 to-violet-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> authentication </span> </a><a href="/tags/authorization" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-blue-500 to-indigo-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> authorization </span> </a><a href="/tags/automacao" class="group relative px-3 py-1.5 rounded-full text-sm font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-cyan-500 to-blue-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> automacao </span> </a><a href="/tags/build-pipeline" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-teal-500 to-emerald-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> build-pipeline </span> </a><a href="/tags/burnout" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-green-500 to-lime-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> burnout </span> </a><a href="/tags/ci-cd" class="group relative px-3 py-1.5 rounded-full text-sm font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-amber-500 to-orange-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> ci-cd </span> </a><a href="/tags/cka" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-orange-500 to-red-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> cka </span> </a><a href="/tags/ckad" class="group relative px-3 py-1.5 rounded-full text-sm font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-pink-500 to-rose-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> ckad </span> </a><a href="/tags/ckad-exam" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-purple-500 to-violet-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> ckad-exam </span> </a><a href="/tags/cks" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-blue-500 to-indigo-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> cks </span> </a><a href="/tags/cognitive-load" class="group relative px-3 py-1.5 rounded-full text-sm font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-cyan-500 to-blue-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> cognitive-load </span> </a><a href="/tags/developer-experience" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-teal-500 to-emerald-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> developer-experience </span> </a><a href="/tags/devex" class="group relative px-3 py-1.5 rounded-full text-sm font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-green-500 to-lime-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> devex </span> </a><a href="/tags/devops" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-amber-500 to-orange-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> devops </span> </a><a href="/tags/dora" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-orange-500 to-red-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> dora </span> </a><a href="/tags/dx-core-4" class="group relative px-3 py-1.5 rounded-full text-sm font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-pink-500 to-rose-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> dx-core-4 </span> </a><a href="/tags/flow-framework" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-purple-500 to-violet-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> flow-framework </span> </a><a href="/tags/helm" class="group relative px-3 py-1.5 rounded-full text-sm font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-blue-500 to-indigo-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> helm </span> </a><a href="/tags/introducao" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-cyan-500 to-blue-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> introducao </span> </a><a href="/tags/kcna-exam" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-teal-500 to-emerald-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> kcna-exam </span> </a><a href="/tags/kcsa" class="group relative px-3 py-1.5 rounded-full text-sm font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-green-500 to-lime-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> kcsa </span> </a><a href="/tags/kubeconfig" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-amber-500 to-orange-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> kubeconfig </span> </a><a href="/tags/kubectl" class="group relative px-3 py-1.5 rounded-full text-sm font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-orange-500 to-red-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> kubectl </span> </a><a href="/tags/kubernetes" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-pink-500 to-rose-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> kubernetes </span> </a><a href="/tags/metricas" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-purple-500 to-violet-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> metricas </span> </a><a href="/tags/platform-engineering" class="group relative px-3 py-1.5 rounded-full text-sm font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-blue-500 to-indigo-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> platform-engineering </span> </a><a href="/tags/produtividade" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-cyan-500 to-blue-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> produtividade </span> </a><a href="/tags/space" class="group relative px-3 py-1.5 rounded-full text-sm font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-teal-500 to-emerald-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> space </span> </a><a href="/tags/team-topologies" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-green-500 to-lime-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> team-topologies </span> </a><a href="/tags/toil" class="group relative px-3 py-1.5 rounded-full text-xs font-medium transition-all duration-300 overflow-hidden bg-base-100 border border-base-300 hover:border-transparent hover:text-white hover:shadow-lg"> <span class="absolute inset-0 bg-gradient-to-r from-amber-500 to-orange-500 opacity-0 group-hover:opacity-100 transition-opacity duration-300"></span> <span class="relative z-10 flex items-center gap-1"> <span class="text-base-content/50 group-hover:text-white/80">#</span> toil </span> </a> </div> </div> </section> <section class="py-10 bg-base-200/50"> <div class="container mx-auto px-4"> <div class="flex items-center justify-between mb-6"> <div> <h2 class="text-2xl md:text-3xl font-bold text-base-content">Séries</h2> <p class="text-sm text-base-content/60">Coleções de posts relacionados para aprendizado aprofundado</p> </div> <a href="/series" class="group btn btn-ghost btn-sm gap-1 hover:text-primary"> Ver todos <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3.5 w-3.5 group-hover:translate-x-0.5 transition-transform" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg> </a> </div> <div class="grid grid-cols-1 md:grid-cols-3 gap-4"> <a href="/series/kubernetes-triple-a" class="group card bg-base-100 border border-base-300 hover:border-primary/50 hover:shadow-lg transition-all duration-200 overflow-hidden"> <div class="h-0.5 bg-gradient-to-r from-primary to-secondary"></div> <div class="card-body p-4"> <div class="flex items-center gap-3"> <div class="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center shrink-0"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5 text-primary" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg> </div> <div class="flex-1 min-w-0"> <h3 class="font-semibold text-base-content group-hover:text-primary transition-colors truncate"> Kubernetes Triple A </h3> <p class="text-xs text-base-content/50"> 2 posts </p> </div> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 text-primary opacity-0 group-hover:opacity-100 transition-opacity shrink-0" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg> </div> </div> </a><a href="/series/por-que-times-produtivos-fracassam" class="group card bg-base-100 border border-base-300 hover:border-primary/50 hover:shadow-lg transition-all duration-200 overflow-hidden"> <div class="h-0.5 bg-gradient-to-r from-primary to-secondary"></div> <div class="card-body p-4"> <div class="flex items-center gap-3"> <div class="w-10 h-10 rounded-lg bg-primary/10 flex items-center justify-center shrink-0"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5 text-primary" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg> </div> <div class="flex-1 min-w-0"> <h3 class="font-semibold text-base-content group-hover:text-primary transition-colors truncate"> Por Que Times Produtivos Fracassam </h3> <p class="text-xs text-base-content/50"> 8 posts </p> </div> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 text-primary opacity-0 group-hover:opacity-100 transition-opacity shrink-0" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg> </div> </div> </a> </div> </div> </section> </main> <footer class="border-t border-base-300/50 bg-gradient-to-b from-base-100 to-base-200"> <div class="container mx-auto px-4 py-16"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-12"> <!-- Brand & About --> <div class="lg:col-span-2 space-y-6"> <a href="/" class="group inline-flex items-center gap-3"> <div class="w-10 h-10 rounded-xl bg-gradient-to-br from-primary to-secondary flex items-center justify-center shadow-lg group-hover:scale-105 transition-transform duration-300"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5 text-white" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="4 17 10 11 4 5"></polyline><line x1="12" y1="19" x2="20" y2="19"></line></svg> </div> <span class="text-xl font-bold"> <span class="text-gradient">Fabio</span> <span class="text-base-content/80"> Luciano</span> </span> </a> <p class="text-base-content/60 max-w-md leading-relaxed"> Platform Engineering, Developer Experience &amp; Cloud Native </p> <!-- Tech stack badges --> <div class="flex items-center gap-3"> <span class="text-xs text-base-content/40 uppercase tracking-wider">Especialista em:</span> <div class="flex items-center gap-2"> <div class="p-1.5 rounded-lg bg-base-300/50 text-base-content/60 hover:text-primary hover:bg-primary/10 transition-colors"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" role="img" viewBox="0 0 24 24" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10.204 14.35l.007.01-.999 2.413a5.171 5.171 0 0 1-2.075-2.597l2.578-.437.004.005a.44.44 0 0 1 .484.606zm-.833-2.129a.44.44 0 0 0 .173-.756l.002-.011L7.585 9.7a5.143 5.143 0 0 0-.73 3.255l2.514-.725.002-.009zm1.145-1.98a.44.44 0 0 0 .699-.337l.01-.005.15-2.62a5.144 5.144 0 0 0-3.01 1.442l2.147 1.523.004-.002zm.76 2.75l.723.349.722-.347.18-.78-.5-.623h-.804l-.5.623.179.779zm1.5-3.095a.44.44 0 0 0 .7.336l.008.003 2.134-1.513a5.188 5.188 0 0 0-2.992-1.442l.148 2.615.002.001zm10.876 5.97l-5.773 7.181a1.6 1.6 0 0 1-1.248.594l-9.261.003a1.6 1.6 0 0 1-1.247-.596l-5.776-7.18a1.583 1.583 0 0 1-.307-1.34L2.1 5.573c.108-.47.425-.864.863-1.073L11.305.513a1.606 1.606 0 0 1 1.385 0l8.345 3.985c.438.209.755.604.863 1.073l2.062 8.955c.108.47-.005.963-.308 1.34zm-3.289-2.057c-.042-.01-.103-.026-.145-.034-.174-.033-.315-.025-.479-.038-.35-.037-.638-.067-.895-.148-.105-.04-.18-.165-.216-.216l-.201-.059a6.45 6.45 0 0 0-.105-2.332 6.465 6.465 0 0 0-.936-2.163c.052-.047.15-.133.177-.159.008-.09.001-.183.094-.282.197-.185.444-.338.743-.522.142-.084.273-.137.415-.242.032-.024.076-.062.11-.089.24-.191.295-.52.123-.736-.172-.216-.506-.236-.745-.045-.034.027-.08.062-.111.088-.134.116-.217.23-.33.35-.246.25-.45.458-.673.609-.097.056-.239.037-.303.033l-.19.135a6.545 6.545 0 0 0-4.146-2.003l-.012-.223c-.065-.062-.143-.115-.163-.25-.022-.268.015-.557.057-.905.023-.163.061-.298.068-.475.001-.04-.001-.099-.001-.142 0-.306-.224-.555-.5-.555-.275 0-.499.249-.499.555l.001.014c0 .041-.002.092 0 .128.006.177.044.312.067.475.042.348.078.637.056.906a.545.545 0 0 1-.162.258l-.012.211a6.424 6.424 0 0 0-4.166 2.003 8.373 8.373 0 0 1-.18-.128c-.09.012-.18.04-.297-.029-.223-.15-.427-.358-.673-.608-.113-.12-.195-.234-.329-.349-.03-.026-.077-.062-.111-.088a.594.594 0 0 0-.348-.132.481.481 0 0 0-.398.176c-.172.216-.117.546.123.737l.007.005.104.083c.142.105.272.159.414.242.299.185.546.338.743.522.076.082.09.226.1.288l.16.143a6.462 6.462 0 0 0-1.02 4.506l-.208.06c-.055.072-.133.184-.215.217-.257.081-.546.11-.895.147-.164.014-.305.006-.48.039-.037.007-.09.02-.133.03l-.004.002-.007.002c-.295.071-.484.342-.423.608.061.267.349.429.645.365l.007-.001.01-.003.129-.029c.17-.046.294-.113.448-.172.33-.118.604-.217.87-.256.112-.009.23.069.288.101l.217-.037a6.5 6.5 0 0 0 2.88 3.596l-.09.218c.033.084.069.199.044.282-.097.252-.263.517-.452.813-.091.136-.185.242-.268.399-.02.037-.045.095-.064.134-.128.275-.034.591.213.71.248.12.556-.007.69-.282v-.002c.02-.039.046-.09.062-.127.07-.162.094-.301.144-.458.132-.332.205-.68.387-.897.05-.06.13-.082.215-.105l.113-.205a6.453 6.453 0 0 0 4.609.012l.106.192c.086.028.18.042.256.155.136.232.229.507.342.84.05.156.074.295.145.457.016.037.043.09.062.129.133.276.442.402.69.282.247-.118.341-.435.213-.71-.02-.039-.045-.096-.065-.134-.083-.156-.177-.261-.268-.398-.19-.296-.346-.541-.443-.793-.04-.13.007-.21.038-.294-.018-.022-.059-.144-.083-.202a6.499 6.499 0 0 0 2.88-3.622c.064.01.176.03.213.038.075-.05.144-.114.28-.104.266.039.54.138.87.256.154.06.277.128.448.173.036.01.088.019.13.028l.009.003.007.001c.297.064.584-.098.645-.365.06-.266-.128-.537-.423-.608zM16.4 9.701l-1.95 1.746v.005a.44.44 0 0 0 .173.757l.003.01 2.526.728a5.199 5.199 0 0 0-.108-1.674A5.208 5.208 0 0 0 16.4 9.7zm-4.013 5.325a.437.437 0 0 0-.404-.232.44.44 0 0 0-.372.233h-.002l-1.268 2.292a5.164 5.164 0 0 0 3.326.003l-1.27-2.296h-.01zm1.888-1.293a.44.44 0 0 0-.27.036.44.44 0 0 0-.214.572l-.003.004 1.01 2.438a5.15 5.15 0 0 0 2.081-2.615l-2.6-.44-.004.005z"></path></svg> </div> <div class="p-1.5 rounded-lg bg-base-300/50 text-base-content/60 hover:text-primary hover:bg-primary/10 transition-colors"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" role="img" viewBox="0 0 24 24" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M13.983 11.078h2.119a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.119a.185.185 0 00-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 00.186-.186V3.574a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m0 2.716h2.118a.187.187 0 00.186-.186V6.29a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 00.184-.186V6.29a.185.185 0 00-.185-.185H8.1a.185.185 0 00-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 00.185-.186V6.29a.185.185 0 00-.185-.185H5.136a.186.186 0 00-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 00.185-.185V9.006a.185.185 0 00-.184-.186h-2.12a.186.186 0 00-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51-.338.001-.676.03-1.01.087-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199-.226.327c-.284.438-.49.922-.612 1.43-.23.97-.09 1.882.403 2.661-.595.332-1.55.413-1.744.42H.751a.751.751 0 00-.75.748 11.376 11.376 0 00.692 4.062c.545 1.428 1.355 2.48 2.41 3.124 1.18.723 3.1 1.137 5.275 1.137.983.003 1.963-.086 2.93-.266a12.248 12.248 0 003.823-1.389c.98-.567 1.86-1.288 2.61-2.136 1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009.309-.293.55-.65.707-1.046l.098-.288Z"></path></svg> </div> <div class="p-1.5 rounded-lg bg-base-300/50 text-base-content/60 hover:text-primary hover:bg-primary/10 transition-colors"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" role="img" viewBox="0 0 24 24" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M1.44 0v7.575l6.561 3.79V3.787zm21.12 4.227l-6.561 3.791v7.574l6.56-3.787zM8.72 4.23v7.575l6.561 3.787V8.018zm0 8.405v7.575L15.28 24v-7.578z"></path></svg> </div> </div> </div> <!-- Social links --> <div class="flex gap-2"> <a href="https://github.com/fabioluciano" target="_blank" rel="noopener noreferrer" class="btn btn-ghost btn-sm btn-circle hover:bg-primary/10 hover:text-primary transition-all duration-300" aria-label="GitHub"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path></svg> </a> <a href="https://linkedin.com/in/fabioluciano" target="_blank" rel="noopener noreferrer" class="btn btn-ghost btn-sm btn-circle hover:bg-primary/10 hover:text-primary transition-all duration-300" aria-label="LinkedIn"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg> </a> <a href="https://twitter.com/fabioluciano" target="_blank" rel="noopener noreferrer" class="btn btn-ghost btn-sm btn-circle hover:bg-primary/10 hover:text-primary transition-all duration-300" aria-label="Twitter"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"></path></svg> </a> <a href="mailto:me@fabioluciano.com" class="btn btn-ghost btn-sm btn-circle hover:bg-primary/10 hover:text-primary transition-all duration-300" aria-label="Email"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg> </a> </div> </div> <!-- Quick Links --> <div class="space-y-6"> <h3 class="text-sm font-semibold uppercase tracking-wider text-base-content flex items-center gap-2"> <div class="w-1 h-4 bg-gradient-to-b from-primary to-secondary rounded-full"></div> Navegação </h3> <ul class="space-y-3"> <li> <a href="/blog" class="group flex items-center gap-2 text-sm text-base-content/60 hover:text-primary transition-colors"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 text-base-content/40 group-hover:text-primary transition-colors" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg> <span>Blog</span> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3 opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"></polyline></svg> </a> </li><li> <a href="/series" class="group flex items-center gap-2 text-sm text-base-content/60 hover:text-primary transition-colors"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 text-base-content/40 group-hover:text-primary transition-colors" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg> <span>Séries</span> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3 opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"></polyline></svg> </a> </li><li> <a href="/tags" class="group flex items-center gap-2 text-sm text-base-content/60 hover:text-primary transition-colors"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 text-base-content/40 group-hover:text-primary transition-colors" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7.01" y2="7"></line></svg> <span>Tags</span> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3 opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"></polyline></svg> </a> </li><li> <a href="https://cv.fabioluciano.com" target="_blank" rel="noopener noreferrer" class="group flex items-center gap-2 text-sm text-base-content/60 hover:text-primary transition-colors"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 text-base-content/40 group-hover:text-primary transition-colors" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg> <span>Currículo</span> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3 opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"></polyline></svg> </a> </li><li> <a href="/rss-pt.xml" class="group flex items-center gap-2 text-sm text-base-content/60 hover:text-primary transition-colors"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 text-base-content/40 group-hover:text-primary transition-colors" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle></svg> <span>RSS Feed (PT)</span> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3 opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"></polyline></svg> </a> </li><li> <a href="/rss-en.xml" class="group flex items-center gap-2 text-sm text-base-content/60 hover:text-primary transition-colors"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 text-base-content/40 group-hover:text-primary transition-colors" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle></svg> <span>RSS Feed (EN)</span> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-3 w-3 opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"></polyline></svg> </a> </li> </ul> </div> <!-- Contact CTA --> <div class="space-y-6"> <h3 class="text-sm font-semibold uppercase tracking-wider text-base-content flex items-center gap-2"> <div class="w-1 h-4 bg-gradient-to-b from-secondary to-accent rounded-full"></div> Contato </h3> <p class="text-sm text-base-content/60 leading-relaxed"> Interessado em discutir sobre Platform Engineering ou Cloud Native? </p> <a href="mailto:me@fabioluciano.com" class="group inline-flex items-center gap-2 btn btn-primary btn-sm text-white shadow-lg shadow-primary/20 hover:shadow-primary/40 hover:scale-105 transition-all duration-300"> <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg> Entre em contato <svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="h-4 w-4 group-hover:translate-x-1 transition-transform" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg> </a> </div> </div> <!-- Copyright --> <div class="mt-16 pt-8 border-t border-base-300/50"> <div class="flex flex-col md:flex-row items-center justify-between gap-4"> <p class="text-sm text-base-content/50 flex items-center gap-1">
&copy; 2026 Fabio Luciano.
Todos os direitos reservados. </p> </div> </div> </div> </footer> <!-- Theme toggle script --> <script type="module">function m(){const e=document.getElementById("theme-toggle");e&&e.addEventListener("click",()=>{const t=document.documentElement,n=t.getAttribute("data-theme")==="dark"?"light":"dark";t.setAttribute("data-theme",n),localStorage.setItem("theme",n)})}m();document.addEventListener("astro:after-swap",m);</script> </body> </html>