.landing-navbar {
    transition: all 0.3s ease;
}
.landing-hero {
    padding: 100px 0;
    background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
}
.feature-icon {
    width: 64px;
    height: 64px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background-color: rgba(var(--bs-primary-rgb), 0.1);
    color: var(--bs-primary);
    font-size: 24px;
    margin-bottom: 20px;
}
/* Footer helpers */
.hover-opacity-100:hover { opacity: 1 !important; }
.transition-all { transition: all 0.2s ease; }
.hover-white:hover { color: #fff !important; }
.btn-icon { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; }
.ls-1 { letter-spacing: 1px; }

/* Extracted from public_base.html */
.page-content-wrapper {
    min-height: calc(100vh - 300px);
}

.footer-bg-pattern {
    background-image: radial-gradient(#6c757d 1px, transparent 1px);
    background-size: 20px 20px;
    pointer-events: none;
}

.footer-desc {
    max-width: 300px;
}

.public-nav-actions .btn {
    transition: transform 0.15s ease, box-shadow 0.15s ease, filter 0.15s ease;
}

.public-nav-actions .btn:hover {
    transform: translateY(-1px);
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.08);
    filter: brightness(0.98);
}

.public-nav-actions .btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.25);
}
