body::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);
    background-size: 36px 36px;
    mask-image: radial-gradient(circle at center, black 35%, transparent 90%);
    opacity: 0.2;
}

main,
header {
    position: relative;
    z-index: 1;
}

.is-loading {
    opacity: 0.7;
    pointer-events: none;
}

.status-panel-success {
    border-color: rgba(16, 185, 129, 0.28);
    background: rgba(16, 185, 129, 0.12);
    color: #d1fae5;
}

.status-panel-error {
    border-color: rgba(248, 113, 113, 0.28);
    background: rgba(248, 113, 113, 0.12);
    color: #fee2e2;
}

.status-panel-info {
    border-color: rgba(56, 189, 248, 0.28);
    background: rgba(56, 189, 248, 0.1);
    color: #e0f2fe;
}

.lift-card {
    transition:
        transform 180ms ease,
        border-color 180ms ease,
        box-shadow 180ms ease;
}

.lift-card:hover {
    transform: translateY(-2px);
    border-color: rgba(125, 211, 252, 0.35);
    box-shadow: 0 24px 60px rgba(2, 132, 199, 0.12);
}

@keyframes pulse-ring {
    0% {
        transform: scale(0.92);
        opacity: 0.65;
    }

    70% {
        transform: scale(1.08);
        opacity: 0;
    }

    100% {
        transform: scale(1.08);
        opacity: 0;
    }
}

.search-ready::after {
    content: "";
    position: absolute;
    inset: -0.45rem;
    border-radius: 1.75rem;
    border: 1px solid rgba(56, 189, 248, 0.32);
    animation: pulse-ring 2.4s infinite;
    pointer-events: none;
}
