.homelab-section { margin-top: var(--space-md); padding: var(--space-xl) var(--space-lg); background: rgba(20, 20, 30, 0.10); backdrop-filter: blur(48px); -webkit-backdrop-filter: blur(48px); border-radius: var(--border-radius-large); box-shadow: var(--shadow-md), var(--inset-shadow); border: 1px solid var(--glass-border); min-width: 26rem; max-width: 26rem; align-self: stretch; display: flex; flex-direction: column; gap: var(--space-md); position: relative; overflow: hidden; text-align: center; transition: transform var(--dur-med) var(--ease-out-soft), border-color var(--dur-med) var(--ease-out-soft), box-shadow var(--dur-med) var(--ease-out-soft); } .homelab-section::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 2px; background: var(--accent-gradient); opacity: 0.5; transition: opacity var(--dur-med) var(--ease-out-soft), box-shadow var(--dur-med) var(--ease-out-soft); z-index: 2; } .homelab-section:hover { transform: translateY(-2px); border-color: rgba(79, 195, 247, 0.25); box-shadow: var(--shadow-lg), var(--accent-glow-ring); } .homelab-section:hover::before { opacity: 1; box-shadow: 0 0 8px var(--primary-500); } /* Calm aurora background — single tasteful radial + fine grid overlay */ .homelab-background { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; background: radial-gradient(120% 140% at 15% 10%, rgba(79, 195, 247, 0.16) 0%, rgba(6, 18, 38, 0) 50%), radial-gradient(120% 140% at 85% 90%, rgba(118, 75, 162, 0.16) 0%, rgba(10, 6, 24, 0) 55%), linear-gradient(135deg, rgba(10, 14, 30, 0.92) 0%, rgba(12, 22, 44, 0.88) 50%, rgba(14, 10, 36, 0.9) 100%); background-size: 160% 160%, 170% 170%, 100% 100%; animation: homelab-aurora 14s ease-in-out infinite; filter: saturate(1.1); transition: opacity var(--dur-med) var(--ease-out-soft), filter var(--dur-med) var(--ease-out-soft); } .homelab-section:hover .homelab-background { opacity: 0.95; filter: saturate(1.25) brightness(1.05); } .homelab-background::after { content: ""; position: absolute; inset: 0; background: repeating-linear-gradient( 120deg, rgba(120, 220, 255, 0.035) 0px, rgba(120, 220, 255, 0.035) 1px, rgba(10, 12, 24, 0) 1px, rgba(10, 12, 24, 0) 12px ); mix-blend-mode: screen; opacity: 0.5; animation: homelab-grid 32s linear infinite; pointer-events: none; } .homelab-background::before { content: ""; position: absolute; inset: 0; background: radial-gradient(80% 80% at 50% 50%, rgba(8, 12, 24, 0) 0%, rgba(8, 12, 24, 0.4) 70%, rgba(8, 12, 24, 0.7) 100%); pointer-events: none; } @keyframes homelab-aurora { 0% { background-position: 0% 50%, 100% 40%, 0% 0%; } 50% { background-position: 80% 40%, 20% 50%, 0% 0%; } 100% { background-position: 0% 50%, 100% 40%, 0% 0%; } } @keyframes homelab-grid { 0% { transform: translate3d(0, 0, 0); } 100% { transform: translate3d(6%, 0, 0); } } @keyframes gradient-animation { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } /* Consolidated animated gradient title — shared utility across sections */ .homelab-title { font-size: var(--text-lg); font-weight: 700; margin: 0 auto; letter-spacing: 0.03em; background: linear-gradient(270deg, var(--primary-500), var(--secondary-500), var(--tertiary-500), var(--primary-color-light), var(--primary-500), var(--secondary-500), var(--tertiary-500)); background-size: 800% 800%; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; animation: gradient-animation 25s ease infinite; } .homelab-buttons { display: flex; gap: var(--space-sm); flex-wrap: wrap; justify-content: center; margin-top: auto; z-index: 2; } .homelab-buttons > a.homelab-btn { display: inline-flex; align-items: center; justify-content: center; padding: var(--space-sm) var(--space-md); border: 1px solid var(--surface-divider); border-radius: var(--radius-md); color: var(--text-color); font-weight: 600; text-decoration: none; min-height: 44px; font-size: var(--text-sm); background: var(--button-gradient); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: var(--shadow-sm), var(--inset-shadow); transition: background var(--dur-fast) var(--ease-out-soft), border-color var(--dur-fast) var(--ease-out-soft), transform var(--dur-fast) var(--ease-out-soft), box-shadow var(--dur-fast) var(--ease-out-soft); } .homelab-buttons > a.homelab-btn i { margin-right: var(--space-xs); font-size: 1.1em; transition: transform var(--dur-fast) var(--ease-out-soft); } .homelab-buttons > a.homelab-btn:hover, .homelab-buttons > a.homelab-btn:focus-visible { background: var(--button-hover-gradient); border-color: rgba(79, 195, 247, 0.4); transform: translateY(-1px) scale(1.012); box-shadow: var(--shadow-md), var(--accent-glow-ring); } .homelab-buttons > a.homelab-btn:hover i, .homelab-buttons > a.homelab-btn:focus-visible i { transform: translateX(1px) scale(1.1); } /* ------------------------------------------------------------------ */ /* Responsive */ /* ------------------------------------------------------------------ */ @media (max-width: 768px) { .homelab-section { padding: var(--space-xl) var(--space-md); } .homelab-title { font-size: var(--text-md); } .homelab-buttons { justify-content: center; } } @media (max-width: 480px) { .homelab-section { padding: var(--space-lg) var(--space-md); gap: var(--space-md); } .homelab-title { font-size: var(--text-md); } .homelab-buttons { gap: var(--space-sm); flex-direction: column; align-items: center; } .homelab-btn { width: 100%; max-width: 200px; justify-content: center; } }