:root {
    --accent: 34 197 94; /* teal-500 as rgb */
    --bg-1: 7 89 133;
    --bg-2: 14 165 233;
}

/* Page background */
.page-bg {
    background: radial-gradient(
            circle at 10% 20%,
            rgba(var(--bg-2), 0.06),
            transparent 12%
        ),
        radial-gradient(
            circle at 90% 80%,
            rgba(var(--bg-1), 0.04),
            transparent 14%
        ),
        linear-gradient(
            120deg,
            rgba(var(--bg-1), 0.07),
            rgba(var(--bg-2), 0.04)
        );
    min-height: 100vh;
}

/* Animated people grid (SVG-based) */
.people-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    width: 100%;
    height: 100%;
    padding: 18px;
}

.person-card {
    background: linear-gradient(
        180deg,
        rgba(255, 255, 255, 0.9),
        rgba(250, 250, 250, 0.9)
    );
    border-radius: 16px;
    padding: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 8px 30px rgba(2, 6, 23, 0.06);
    overflow: hidden;
    position: relative;
    transition: transform 400ms cubic-bezier(0.2, 0.9, 0.3, 1), box-shadow 300ms;
}

.person-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 20px 45px rgba(2, 6, 23, 0.08);
}

/* Animate individual SVG groups with slight delay variations */
@keyframes bob {
    0% {
        transform: translateY(0) rotate(0deg);
    }
    50% {
        transform: translateY(-8px) rotate(-1deg);
    }
    100% {
        transform: translateY(0) rotate(0deg);
    }
}
.person-card .svg-wrap {
    animation: bob 5.4s ease-in-out infinite;
    transform-origin: center;
}

/* subtle floating image animation (used for full-section image) */
@keyframes float-slow {
    0%,
    100% {
        transform: scale(1) translateY(0);
    }
    50% {
        transform: scale(1.03) translateY(-4px);
    }
}
.float-slow {
    animation: float-slow 8s ease-in-out infinite;
}

/* subtle pulse for button hover */
@keyframes pulse-glow {
    0%,
    100% {
        box-shadow: 0 0 0 rgba(20, 184, 166, 0);
    }
    50% {
        box-shadow: 0 0 18px rgba(20, 184, 166, 0.28);
    }
}

/* remove mobile tap highlight */
* {
    -webkit-tap-highlight-color: transparent;
}

/* small screens: 2 columns in mini grids */
@media (max-width: 900px) {
    .people-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 10px;
    }
}
@media (max-width: 560px) {
    .people-grid {
        grid-template-columns: repeat(1, 1fr);
        gap: 8px;
    }
}

/* accessibility - focus visuals */
.no-outline:focus {
    outline: none;
}
.focus-ring:focus-visible {
    box-shadow: 0 0 0 4px rgba(var(--accent), 0.12);
    border-radius: 12px;
}

.left-image {
    width: 100%;
    height: 100%;
    position: relative;
}
/* default desktop: let the left column take full height of the grid cell */
@media (min-width: 1024px) {
    .left-image {
        min-height: calc(74vh - 32px);
    } /* keep consistent with md:h-[74vh] grid */
}
/* tablet: slightly shorter */
@media (min-width: 640px) and (max-width: 1023px) {
    .left-image {
        min-height: 40vh;
    }
}
/* mobile: image above form with controlled height */
@media (max-width: 639px) {
    .left-image {
        min-height: 36vh;
    } /* fills top portion but leaves space for form */
}

/*footer*/
.ink-underline {
    position: relative;
    display: inline-block;
}
.ink-underline::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: -3px;
    width: 0;
    height: 2px;
    border-radius: 9999px;
    background: linear-gradient(90deg, #facc15, #fde047, #facc15);
    transform: translateX(-50%);
    transition: width 0.42s cubic-bezier(0.22, 1, 0.36, 1),
        height 0.42s cubic-bezier(0.22, 1, 0.36, 1);
}
.ink-underline:hover::after,
.ink-underline:focus-visible::after {
    width: 100%;
    height: 3px;
}

[data-reveal] {
    opacity: 0;
    will-change: transform, opacity;
}
@keyframes revealLeft {
    from {
        opacity: 0;
        transform: translateX(-40px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}
@keyframes revealRight {
    from {
        opacity: 0;
        transform: translateX(40px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

.is-inview[data-reveal="left"] {
    animation: revealLeft 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.is-inview[data-reveal="right"] {
    animation: revealRight 0.7s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.is-inview {
    animation-delay: var(--rv-delay, 0s);
}

@media (prefers-reduced-motion: reduce) {
    .ink-underline::after {
        transition: none;
    }
    [data-reveal] {
        opacity: 1 !important;
        transform: none !important;
        animation: none !important;
    }
}
