:root {
    --reveal-offset: 40px;
    --reveal-duration: 0.8s;
}

body {
    background-color: #fafaf9;
    color: #09090b;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
}

::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: #fafaf9; }
::-webkit-scrollbar-thumb { background: #d6d3d1; border-radius: 10px; }
::-webkit-scrollbar-thumb:hover { background: #dc2626; }

.text-balance { text-wrap: balance; }

.btn-physics {
    transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275), background-color 0.2s ease;
}
.btn-physics:active {
    transform: scale(0.96) translateY(2px);
}

.fade-up-element {
    opacity: 0;
    transform: translateY(var(--reveal-offset));
    transition: opacity var(--reveal-duration) cubic-bezier(0.16, 1, 0.3, 1),
                transform var(--reveal-duration) cubic-bezier(0.16, 1, 0.3, 1);
}
.fade-up-element.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.stagger-group > * {
    opacity: 0;
    transform: translateY(20px);
    transition: all 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
.stagger-group.is-visible > * {
    opacity: 1;
    transform: translateY(0);
}
.stagger-group.is-visible > *:nth-child(1) { transition-delay: 100ms; }
.stagger-group.is-visible > *:nth-child(2) { transition-delay: 200ms; }
.stagger-group.is-visible > *:nth-child(3) { transition-delay: 300ms; }
.stagger-group.is-visible > *:nth-child(4) { transition-delay: 400ms; }

.liquid-glass {
    background: rgba(255, 255, 255, 0.03);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255, 255, 255, 0.1);
    box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.2);
}

@keyframes subtle-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%      { opacity: 0.7; transform: scale(0.95); }
}
.alert-dot {
    animation: subtle-pulse 2s infinite ease-in-out;
}

.dark-input {
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: #fff;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.dark-input:focus {
    outline: none;
    border-color: #f87171;
    box-shadow: 0 0 0 2px rgba(248, 113, 113, 0.25);
}

.custom-radio-label {
    cursor: pointer;
    transition: all 0.2s ease;
}
.custom-radio-input:checked + .custom-radio-box {
    background-color: #dc2626;
    border-color: #dc2626;
}

.pest-row {
    transition: background 0.3s ease, padding-left 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.1);
}
.pest-row:hover {
    background: rgba(220, 38, 38, 0.04);
    padding-left: 1rem;
}
.pest-row:hover .pest-arrow {
    opacity: 1;
    transform: translateX(0);
}
.pest-arrow {
    opacity: 0;
    transform: translateX(-10px);
    transition: all 0.3s ease;
}
