:root {
    --gc-effect-speed-fast: 160ms ease;
    --gc-effect-speed: 240ms ease;
    --gc-effect-speed-slow: 420ms ease;
    --gc-effect-lift-shadow: 0 22px 58px rgba(23, 33, 29, 0.16);
    --gc-effect-border-a: rgba(36, 119, 104, 0.9);
    --gc-effect-border-b: rgba(185, 119, 33, 0.68);
    --gc-effect-border-c: rgba(49, 95, 157, 0.58);
}

:focus-visible {
    outline: 3px solid rgba(36, 119, 104, 0.35);
    outline-offset: 4px;
}

.gc-hover-lift {
    transition: transform var(--gc-effect-speed), box-shadow var(--gc-effect-speed), border-color var(--gc-effect-speed);
    will-change: transform;
}

.gc-hover-lift:hover,
.gc-hover-lift:focus-within {
    box-shadow: var(--gc-effect-lift-shadow);
    transform: translateY(-4px) scale(1.01);
}

.gc-hover-gradient-border {
    position: relative;
    isolation: isolate;
}

.gc-hover-gradient-border::before {
    position: absolute;
    z-index: -1;
    inset: -1px;
    border-radius: inherit;
    background: linear-gradient(135deg, var(--gc-effect-border-a), var(--gc-effect-border-b), var(--gc-effect-border-c));
    content: "";
    opacity: 0;
    transition: opacity var(--gc-effect-speed);
}

.gc-hover-gradient-border:hover::before,
.gc-hover-gradient-border:focus-within::before {
    opacity: 1;
}

.wp-block-button.gc-btn-liquid .wp-block-button__link,
.wp-block-button__link.gc-btn-liquid,
.gconnect-shortcode-placeholder__link.gc-btn-liquid {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    transition: border-color var(--gc-effect-speed), color var(--gc-effect-speed), transform var(--gc-effect-speed);
}

.wp-block-button.gc-btn-liquid .wp-block-button__link::before,
.wp-block-button__link.gc-btn-liquid::before,
.gconnect-shortcode-placeholder__link.gc-btn-liquid::before {
    position: absolute;
    z-index: -1;
    inset: 0;
    background: linear-gradient(120deg, var(--gc-accent-dark), var(--gc-accent), var(--gc-blue));
    content: "";
    opacity: 0;
    transform: translateX(-24%);
    transition: opacity var(--gc-effect-speed), transform var(--gc-effect-speed-slow);
}

.wp-block-button.gc-btn-liquid .wp-block-button__link:hover::before,
.wp-block-button.gc-btn-liquid .wp-block-button__link:focus-visible::before,
.wp-block-button__link.gc-btn-liquid:hover::before,
.wp-block-button__link.gc-btn-liquid:focus-visible::before,
.gconnect-shortcode-placeholder__link.gc-btn-liquid:hover::before,
.gconnect-shortcode-placeholder__link.gc-btn-liquid:focus-visible::before {
    opacity: 1;
    transform: translateX(0);
}

.wp-block-button.gc-btn-liquid .wp-block-button__link:hover,
.wp-block-button.gc-btn-liquid .wp-block-button__link:focus-visible,
.wp-block-button__link.gc-btn-liquid:hover,
.wp-block-button__link.gc-btn-liquid:focus-visible {
    color: #fff;
    transform: translateY(-1px);
}

.gc-link-underline,
.site-nav a {
    position: relative;
}

.gc-link-underline::after,
.site-nav a::after {
    position: absolute;
    right: 10px;
    bottom: 5px;
    left: 10px;
    height: 2px;
    border-radius: 999px;
    background: currentColor;
    content: "";
    opacity: 0;
    transform: scaleX(0);
    transform-origin: left;
    transition: opacity var(--gc-effect-speed-fast), transform var(--gc-effect-speed);
}

.gc-link-underline:hover::after,
.gc-link-underline:focus-visible::after,
.site-nav a:hover::after,
.site-nav a:focus-visible::after {
    opacity: 1;
    transform: scaleX(1);
}

.gc-profile-reveal {
    position: relative;
    overflow: hidden;
}

.gc-profile-reveal .gc-profile-reveal__details {
    opacity: 0.88;
    transition: opacity var(--gc-effect-speed), transform var(--gc-effect-speed);
}

.gc-profile-reveal:hover .gc-profile-reveal__details,
.gc-profile-reveal:focus-within .gc-profile-reveal__details {
    opacity: 1;
    transform: translateY(-2px);
}

.gc-glass-card {
    border: 1px solid rgba(217, 224, 217, 0.72);
    background: rgba(255, 255, 255, 0.78);
    box-shadow: var(--gc-shadow);
}

@supports (backdrop-filter: blur(12px)) {
    .gc-glass-card {
        backdrop-filter: blur(12px);
    }
}

.gc-card-tilt {
    transform-style: preserve-3d;
    transition: transform var(--gc-effect-speed), box-shadow var(--gc-effect-speed);
}

.gc-card-tilt:hover,
.gc-card-tilt:focus-within {
    box-shadow: var(--gc-effect-lift-shadow);
    transform: perspective(900px) rotateX(1deg) rotateY(-1deg) translateY(-4px);
}

.gc-dropdown {
    position: relative;
}

.gc-dropdown > ul,
.gc-dropdown .gc-dropdown__menu {
    opacity: 0;
    pointer-events: none;
    transform: translateY(8px);
    transition: opacity var(--gc-effect-speed), transform var(--gc-effect-speed);
}

.gc-dropdown:hover > ul,
.gc-dropdown:focus-within > ul,
.gc-dropdown:hover .gc-dropdown__menu,
.gc-dropdown:focus-within .gc-dropdown__menu {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
}

.gc-badge-pulse {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.gc-badge-pulse::after {
    position: absolute;
    inset: -4px;
    border: 1px solid currentColor;
    border-radius: inherit;
    content: "";
    opacity: 0;
    animation: gcBadgePulse 3.6s ease-in-out infinite;
}

.gc-ad-hover {
    transition: background-color var(--gc-effect-speed), box-shadow var(--gc-effect-speed), transform var(--gc-effect-speed);
}

.gc-ad-hover:hover,
.gc-ad-hover:focus-within {
    background-color: var(--gc-surface-soft);
    box-shadow: var(--gc-effect-lift-shadow);
    transform: translateY(-3px);
}

@keyframes gcBadgePulse {
    0%,
    72%,
    100% {
        opacity: 0;
        transform: scale(0.98);
    }

    82% {
        opacity: 0.38;
        transform: scale(1.06);
    }
}

@media (hover: none) {
    .gc-hover-lift,
    .gc-card-tilt,
    .gc-ad-hover {
        transform: none;
    }

    .gc-profile-reveal .gc-profile-reveal__details {
        opacity: 1;
        transform: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: 0.001ms !important;
    }
}
