:root {
    --glass-border: rgba(255, 255, 255, 0.15);
    --glass-bg: rgba(255, 255, 255, 0.05);
    --glass-glow: rgba(255, 255, 255, 0.02);
    --accent-glow: rgba(255, 0, 60, 0.15);
}

body {
    /* Extremely dark base, relying on glass and light gradients for shape */
    background-color: #020202;
    color: #ffffff;
    overflow-x: hidden;
    /* Subtler mesh gradient background */
    background-image: 
        radial-gradient(circle at 15% 50%, rgba(255, 255, 255, 0.03) 0%, transparent 50%),
        radial-gradient(circle at 85% 30%, rgba(255, 0, 60, 0.04) 0%, transparent 50%);
}

/* Smooth Scroll behavior (native fallback) */
html {
    scroll-behavior: auto;
    overscroll-behavior-y: none;
}

/* Butter-smooth main page scrolling (Lenis handles interpolation). */
html.lenis,
html.lenis body {
    height: auto;
}

html.lenis {
    scroll-behavior: auto !important;
}

.lenis.lenis-smooth {
    scroll-behavior: auto !important;
}

.lenis.lenis-stopped {
    overflow: hidden;
}

/* Custom Scrollbar - Sleek */
::-webkit-scrollbar { width: 4px; height: 4px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: linear-gradient(180deg, rgba(255,0,60,0.95), rgba(255,0,60,0.5)); border-radius: 999px; border: 1px solid rgba(255,255,255,0.16); box-shadow: 0 0 8px rgba(255,0,60,0.42), 0 0 18px rgba(255,0,60,0.16); }
::-webkit-scrollbar-thumb:hover { background: #ff003c; box-shadow: 0 0 10px rgba(255,0,60,0.65), 0 0 24px rgba(255,0,60,0.24); }

/* The "White Glass Blur" effect */
/* The "White Glass Blur" effect */
.glass-ultra {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.03) 0%, rgba(255, 255, 255, 0.01) 100%);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid var(--glass-border);
    box-shadow: 
        0 8px 32px 0 rgba(0, 0, 0, 0.3),
        inset 0 0 0 1px rgba(255, 255, 255, 0.05);
}

.glass-card {
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.06) 0%, rgba(255, 255, 255, 0.02) 100%);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-top: 1px solid rgba(255, 255, 255, 0.15); /* Top highlight */
    transition: border-color 0.3s ease, background 0.3s ease, box-shadow 0.3s ease;
}

/* Content visibility: skips layout & render work for offscreen catalog cards during fast scroll */
#catalogList .glass-card {
    content-visibility: auto;
    contain-intrinsic-size: auto 200px;
}

@media (hover: hover) and (pointer: fine) {
    .glass-card {
        transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1), border-color 0.3s ease, background 0.3s ease, box-shadow 0.3s ease;
    }
    .glass-card:hover {
        transform: translateY(-5px);
        background: linear-gradient(180deg, rgba(255, 255, 255, 0.09) 0%, rgba(255, 255, 255, 0.03) 100%);
        border-color: rgba(255, 255, 255, 0.2);
        box-shadow: 
            0 20px 40px -10px rgba(0, 0, 0, 0.5),
            0 0 20px 0 var(--accent-glow);
    }
}

/* Active scrolling performance mode: drop heavy backdrop filters while user is actively swiping */
body.is-scrolling .glass-card {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

body.is-scrolling .particles-container .particle {
    animation-play-state: paused !important;
}

body.is-scrolling .chasing-border::after {
    animation-play-state: paused !important;
}

.text-gradient {
    background: linear-gradient(to right, #ffffff, #a0a0a0);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}

.text-glow {
    text-shadow: 0 0 20px rgba(255, 255, 255, 0.2);
}

.accent-glow-text {
    text-shadow: 0 0 15px rgba(255, 0, 60, 0.4);
}

/* Floating particles background effect */
.particles-container {
    position: fixed;
    top: 0; 
    left: 0; 
    width: 100vw; 
    height: 100vh;
    pointer-events: none;
    z-index: -1;
    overflow: hidden;
    contain: strict;
}

.particle {
    position: absolute;
    background: radial-gradient(circle, rgba(255, 255, 255, 0.8) 0%, rgba(255, 255, 255, 0) 70%);
    border-radius: 50%;
    animation: float 15s infinite linear;
    will-change: transform, opacity;
}

@keyframes float {
    0% { transform: translateY(100vh) scale(0); opacity: 0; }
    10% { opacity: 0.5; }
    90% { opacity: 0.5; }
    100% { transform: translateY(-100px) scale(1.5); opacity: 0; }
}

/* Hide scrollbar for category tabs */
.hide-scroll::-webkit-scrollbar { display: none; }
.hide-scroll { -ms-overflow-style: none; scrollbar-width: none; }

/* Animation Classes for GSAP to target */
.gsap-reveal { opacity: 0; transform: translateY(30px); }
.gsap-fade { opacity: 0; }

@property --angle {
    syntax: '<angle>';
    initial-value: 0deg;
    inherits: false;
}

.chasing-border {
    position: relative;
}

.chasing-border::after {
    content: '';
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    padding: 1.5px;
    background: conic-gradient(from var(--angle, 0deg), transparent 70%, rgba(255, 0, 60, 0.3) 95%, #ff003c 100%);
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: spin-angle 2s linear infinite;
    pointer-events: none;
}

@keyframes spin-angle {
    to { --angle: 360deg; }
}

/* Premium Shine Effect for Input Box */
@keyframes shine-across {
    0% { left: -100%; }
    20% { left: 200%; }
    100% { left: 200%; }
}

@keyframes shine {
    0% { left: -100%; }
    100% { left: 200%; }
}

/* Coffee Animations & Tip Button Styles */
@keyframes float-cup {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

@keyframes steam-rise {
    0% { transform: translateY(0) scale(1) translateX(0); opacity: 0.6; }
    50% { transform: translateY(-15px) scale(1.2) translateX(3px); opacity: 0.3; }
    100% { transform: translateY(-30px) scale(1.5) translateX(-3px); opacity: 0; }
}

.steam-1 { animation: steam-rise 2.5s infinite ease-in; }
.steam-2 { animation: steam-rise 2.5s infinite ease-in 0.8s; }
.steam-3 { animation: steam-rise 2.5s infinite ease-in 1.6s; }

.tip-amount-btn.active {
    background: rgba(255, 0, 60, 0.15) !important;
    border-color: #ff003c !important;
    color: #ffffff !important;
    box-shadow: 0 0 20px rgba(255, 0, 60, 0.25) !important;
}



/* NIK MODS Tip QR — premium scan animation */
.qr-frame {
    isolation: isolate;
    box-shadow:
        0 0 0 1px rgba(255,255,255,0.08),
        0 0 45px rgba(255,0,60,0.16),
        inset 0 0 24px rgba(0,0,0,0.06);
}
.qr-scan-line {
    position: absolute;
    left: 8%;
    right: 8%;
    top: 8%;
    height: 2px;
    z-index: 25;
    pointer-events: none;
    background: linear-gradient(90deg, transparent, rgba(255,0,60,0.95), transparent);
    box-shadow: 0 0 14px rgba(255,0,60,0.7);
    animation: qr-scan 2.4s ease-in-out infinite;
}
@keyframes qr-scan {
    0%, 100% { transform: translateY(0); opacity: 0; }
    12% { opacity: 1; }
    50% { transform: translateY(190px); opacity: 1; }
    88% { opacity: 1; }
    100% { transform: translateY(0); opacity: 0; }
}




/* =========================================================================
   NIK MODS — SIGNATURE LIQUID "GET IT" INTERACTION
   ========================================================================= */

/* Liquid Flow Zone (container on card) */
.card-liquid-zone {
    position: relative;
    width: 100%;
    min-height: 52px;
    display: flex;
    align-items: center;
    justify-content: flex-end;
}

/* 1. Liquid Stream Conduit (originates from left card boundary) */
.card-liquid-stream {
    position: absolute;
    left: -24px;
    right: 212px;
    height: 32px;
    display: flex;
    align-items: center;
    pointer-events: none;
    z-index: 5;
    opacity: 0;
    transition: opacity 0.25s ease;
}

.card-liquid-active .card-liquid-stream {
    opacity: 1;
}

.card-liquid-active.stream-drained .card-liquid-stream {
    opacity: 0;
    transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Liquid Source Well (origin on left card inner wall) */
.liquid-source-well {
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%) scale(0.4);
    width: 12px;
    height: 28px;
    border-radius: 0 16px 16px 0;
    background: linear-gradient(90deg, var(--liq-color, #ff003c), var(--liq-bright, #ff3366));
    box-shadow: 
        0 0 16px var(--liq-glow, rgba(255, 0, 60, 0.65)),
        inset 0 0 6px rgba(255, 255, 255, 0.6);
    opacity: 0;
}

.card-liquid-active .liquid-source-well {
    animation: liquidSourceWellSurge 0.7s cubic-bezier(0.2, 0.8, 0.25, 1) forwards;
}

@keyframes liquidSourceWellSurge {
    0% {
        transform: translateY(-50%) scale(0.3);
        opacity: 0;
    }
    40% {
        transform: translateY(-50%) scale(1.2);
        opacity: 1;
        box-shadow: 0 0 24px var(--liq-glow, rgba(255, 0, 60, 0.8)), inset 0 0 8px rgba(255, 255, 255, 0.8);
    }
    75% {
        transform: translateY(-50%) scale(1.05);
        opacity: 1;
    }
    100% {
        transform: translateY(-50%) scale(0.95);
        opacity: 0.9;
    }
}

/* Liquid Stream Track & Conduit */
.liquid-stream-track {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    overflow: visible;
    margin-left: 6px;
}

.liquid-stream-flow {
    position: absolute;
    left: 0;
    right: -4px;
    height: 10px;
    border-radius: 6px;
    background: linear-gradient(
        90deg, 
        var(--liq-bright, #ff3366) 0%, 
        var(--liq-color, #ff003c) 65%, 
        var(--liq-bright, #ff3366) 100%
    );
    box-shadow: 
        0 0 14px var(--liq-glow, rgba(255, 0, 60, 0.6)),
        0 0 26px var(--liq-soft, rgba(255, 0, 60, 0.2));
    transform-origin: left center;
    transform: scaleX(0);
}

.card-liquid-active .liquid-stream-flow {
    animation: liquidStreamSurge 0.7s cubic-bezier(0.25, 0.9, 0.35, 1) forwards;
}

@keyframes liquidStreamSurge {
    0% {
        transform: scaleX(0);
        opacity: 0.3;
    }
    50% {
        opacity: 1;
    }
    100% {
        transform: scaleX(1);
        opacity: 1;
    }
}

/* Fluid Droplets riding the stream */
.liquid-stream-droplets {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.stream-drop {
    position: absolute;
    border-radius: 50%;
    background: #ffffff;
    box-shadow: 
        0 0 8px var(--liq-bright, #ff3366),
        0 0 14px var(--liq-glow, rgba(255, 0, 60, 0.6));
    opacity: 0;
    pointer-events: none;
}

.card-liquid-active .stream-drop.drop-1 {
    width: 6px;
    height: 6px;
    top: 9px;
    left: 4px;
    animation: dropletRush1 0.68s cubic-bezier(0.2, 0.8, 0.3, 1) forwards;
}

.card-liquid-active .stream-drop.drop-2 {
    width: 4.5px;
    height: 4.5px;
    top: 17px;
    left: 12px;
    animation: dropletRush2 0.7s cubic-bezier(0.2, 0.8, 0.3, 1) 0.04s forwards;
}

.card-liquid-active .stream-drop.drop-3 {
    width: 5px;
    height: 5px;
    top: 13px;
    left: 8px;
    animation: dropletRush3 0.66s cubic-bezier(0.2, 0.8, 0.3, 1) 0.08s forwards;
}

@keyframes dropletRush1 {
    0% {
        transform: translateX(0) scale(0.5);
        opacity: 0;
    }
    20% {
        opacity: 1;
    }
    85% {
        transform: translateX(calc(100% + 22px)) scale(1.1);
        opacity: 1;
    }
    100% {
        transform: translateX(calc(100% + 40px)) scale(0.4);
        opacity: 0;
    }
}

@keyframes dropletRush2 {
    0% {
        transform: translateX(0) scale(0.4);
        opacity: 0;
    }
    25% {
        opacity: 1;
    }
    85% {
        transform: translateX(calc(100% + 20px)) scale(1);
        opacity: 1;
    }
    100% {
        transform: translateX(calc(100% + 36px)) scale(0.3);
        opacity: 0;
    }
}

@keyframes dropletRush3 {
    0% {
        transform: translateX(0) scale(0.5);
        opacity: 0;
    }
    20% {
        opacity: 1;
    }
    85% {
        transform: translateX(calc(100% + 25px)) scale(1.1);
        opacity: 1;
    }
    100% {
        transform: translateX(calc(100% + 42px)) scale(0.4);
        opacity: 0;
    }
}

/* 2. Signature Futuristic Obsidian Glass Toggle */
.get-it-toggle {
    position: relative;
    width: 216px;
    min-height: 52px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 6px 8px 6px 20px;
    border-radius: 9999px;
    background: linear-gradient(180deg, rgba(22, 22, 28, 0.94) 0%, rgba(10, 10, 13, 0.98) 100%);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-top: 1px solid rgba(255, 255, 255, 0.22);
    box-shadow: 
        0 4px 18px rgba(0, 0, 0, 0.6),
        0 0 15px rgba(255, 0, 60, 0.12),
        inset 0 1px 0 rgba(255, 255, 255, 0.1);
    color: #ffffff;
    overflow: hidden;
    cursor: pointer;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
    transition: transform 0.25s cubic-bezier(0.2, 0.8, 0.2, 1),
                border-color 0.3s ease,
                box-shadow 0.3s ease;
}

@media (hover: hover) and (pointer: fine) {
    .get-it-toggle:hover:not(:disabled):not(.is-flowing):not(.is-filling):not(.is-full) {
        transform: translateY(-1px) scale(1.015);
        border-color: rgba(255, 0, 60, 0.45);
        box-shadow: 
            0 8px 24px rgba(0, 0, 0, 0.7),
            0 0 22px rgba(255, 0, 60, 0.28),
            inset 0 1px 0 rgba(255, 255, 255, 0.2);
    }
}

.get-it-toggle:active:not(:disabled):not(.is-flowing):not(.is-filling):not(.is-full) {
    transform: scale(0.985);
}

/* Subtle glass specular sweep highlight on idle hover */
.get-it-toggle::before {
    content: "";
    position: absolute;
    top: 0;
    left: -120%;
    width: 80%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.08), transparent);
    transform: skewX(-25deg);
    pointer-events: none;
    transition: left 0.7s ease;
    z-index: 1;
}

.get-it-toggle:hover:not(:disabled):not(.is-flowing):not(.is-filling):not(.is-full)::before {
    left: 200%;
}

/* 3. Internal Liquid Reservoir Chamber */
.get-it-chamber {
    position: absolute;
    inset: 0;
    border-radius: 9999px;
    overflow: hidden;
    pointer-events: none;
    z-index: 0;
}

.get-it-liquid-fill {
    position: absolute;
    inset: 0;
    transform: translateX(-100%);
    background: linear-gradient(
        90deg, 
        var(--liq-dark, rgba(160, 0, 36, 0.85)) 0%, 
        var(--liq-color, #ff003c) 65%, 
        var(--liq-bright, #ff3366) 100%
    );
    box-shadow: 
        inset 0 1px 2px rgba(255, 255, 255, 0.45),
        inset 0 -1px 3px rgba(0, 0, 0, 0.4),
        0 0 22px var(--liq-glow, rgba(255, 0, 60, 0.65));
    border-radius: inherit;
    will-change: transform;
}

/* Liquid enters and fills the button from 0.7s to 2.5s (1.8s duration) */
.get-it-toggle.is-filling .get-it-liquid-fill {
    animation: liquidFillReservoir 1.8s cubic-bezier(0.22, 0.85, 0.32, 1) forwards;
}

.get-it-toggle.is-full .get-it-liquid-fill {
    transform: translateX(0%);
}

@keyframes liquidFillReservoir {
    0% {
        transform: translateX(-100%);
    }
    15% {
        transform: translateX(-82%);
    }
    50% {
        transform: translateX(-45%);
    }
    80% {
        transform: translateX(-12%);
    }
    100% {
        transform: translateX(0%);
    }
}

/* Liquid Wave Crests on advancing surface */
.liquid-wave-crest {
    position: absolute;
    top: -50%;
    right: -10px;
    width: 22px;
    height: 200%;
    border-radius: 42%;
    pointer-events: none;
}

.liquid-wave-crest.wave-a {
    background: var(--liq-bright, #ff3366);
    opacity: 0.8;
    filter: blur(1.5px);
    animation: waveSloshA 1.1s ease-in-out infinite alternate;
}

.liquid-wave-crest.wave-b {
    background: #ffffff;
    opacity: 0.45;
    filter: blur(1px);
    animation: waveSloshB 0.85s ease-in-out infinite alternate;
}

@keyframes waveSloshA {
    0% {
        transform: translateY(-4px) scaleX(0.9);
    }
    50% {
        transform: translateY(3px) scaleX(1.15);
    }
    100% {
        transform: translateY(-4px) scaleX(0.9);
    }
}

@keyframes waveSloshB {
    0% {
        transform: translateY(4px) scaleX(1.1);
    }
    50% {
        transform: translateY(-3px) scaleX(0.85);
    }
    100% {
        transform: translateY(4px) scaleX(1.1);
    }
}

/* Liquid Specular Sheen Sweep upon full reservoir */
.liquid-specular {
    position: absolute;
    top: 0;
    left: -120%;
    width: 60%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent);
    transform: skewX(-20deg);
    pointer-events: none;
}

.get-it-toggle.is-full .liquid-specular {
    animation: liquidSpecularSweep 0.5s cubic-bezier(0.2, 0.8, 0.25, 1) forwards;
}

@keyframes liquidSpecularSweep {
    0% {
        left: -120%;
        opacity: 0;
    }
    40% {
        opacity: 1;
    }
    100% {
        left: 200%;
        opacity: 0;
    }
}

/* 4. Button Label (GET IT -> PREPARING) */
.get-it-label {
    position: relative;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    pointer-events: none;
}

.label-text {
    font-family: 'Space Grotesk', -apple-system, sans-serif;
    font-size: 0.8125rem; /* 13px */
    font-weight: 700;
    letter-spacing: 0.22em;
    color: #ffffff;
    text-transform: uppercase;
    text-shadow: 0 0 12px rgba(255, 255, 255, 0.35);
    transition: opacity 0.25s ease, letter-spacing 0.25s ease, text-shadow 0.3s ease;
}

.get-it-toggle.is-filling .label-text,
.get-it-toggle.is-full .label-text {
    letter-spacing: 0.18em;
    color: #ffffff;
    text-shadow: 
        0 0 14px var(--liq-glow, rgba(255, 0, 60, 0.7)),
        0 0 6px #ffffff;
}

/* 5. Action Orb & Custom Fluid Ripple Vortex (NO generic spinner) */
.get-it-orb {
    position: relative;
    z-index: 2;
    width: 36px;
    height: 36px;
    flex: 0 0 36px;
    border-radius: 50%;
    background: linear-gradient(135deg, #ff1a4b 0%, #c8002f 100%);
    box-shadow: 
        0 0 14px rgba(255, 0, 60, 0.65),
        inset 0 1px 1px rgba(255, 255, 255, 0.45),
        inset 0 -1px 2px rgba(0, 0, 0, 0.3);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #ffffff;
    transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
                background 0.35s ease,
                box-shadow 0.35s ease;
}

.get-it-orb i,
.get-it-orb svg {
    font-size: 12px;
    color: #ffffff;
    transition: transform 0.25s ease, opacity 0.25s ease;
}

@media (hover: hover) and (pointer: fine) {
    .get-it-toggle:hover:not(:disabled):not(.is-flowing):not(.is-filling):not(.is-full) .get-it-orb {
        transform: scale(1.06);
        box-shadow: 
            0 0 20px rgba(255, 0, 60, 0.9),
            inset 0 1px 1px rgba(255, 255, 255, 0.5);
    }
    .get-it-toggle:hover:not(:disabled):not(.is-flowing):not(.is-filling):not(.is-full) .get-it-orb i {
        transform: translateX(1.5px);
    }
}

/* Custom Liquid Ripple Indicator inside Orb */
.get-it-liquid-ripple {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
}

.ripple-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #ffffff;
    box-shadow: 
        0 0 10px var(--liq-bright, #ff3366),
        0 0 16px var(--liq-glow, rgba(255, 0, 60, 0.65));
}

.ripple-ring {
    position: absolute;
    inset: 4px;
    border-radius: 50%;
    border: 1.8px solid var(--liq-bright, #ff3366);
    opacity: 0;
}

/* Orb state when fluid is active */
.get-it-toggle.is-flowing .get-it-orb,
.get-it-toggle.is-filling .get-it-orb,
.get-it-toggle.is-full .get-it-orb {
    background: linear-gradient(135deg, var(--liq-bright, #ff3366) 0%, var(--liq-dark, #a00024) 100%);
    box-shadow: 
        0 0 18px var(--liq-glow, rgba(255, 0, 60, 0.7)),
        inset 0 1px 1px rgba(255, 255, 255, 0.5);
}

.get-it-toggle.is-flowing .get-it-orb i,
.get-it-toggle.is-filling .get-it-orb i,
.get-it-toggle.is-full .get-it-orb i {
    opacity: 0;
    transform: scale(0.3) rotate(45deg);
}

.get-it-toggle.is-flowing .get-it-liquid-ripple,
.get-it-toggle.is-filling .get-it-liquid-ripple,
.get-it-toggle.is-full .get-it-liquid-ripple {
    opacity: 1;
}

.get-it-toggle.is-flowing .ripple-dot,
.get-it-toggle.is-filling .ripple-dot,
.get-it-toggle.is-full .ripple-dot {
    animation: dropletVortexCore 0.9s ease-in-out infinite alternate;
}

.get-it-toggle.is-flowing .ripple-ring.ring-1,
.get-it-toggle.is-filling .ripple-ring.ring-1,
.get-it-toggle.is-full .ripple-ring.ring-1 {
    animation: liquidVortexPulse 1.4s cubic-bezier(0.2, 0.8, 0.4, 1) infinite;
}

.get-it-toggle.is-flowing .ripple-ring.ring-2,
.get-it-toggle.is-filling .ripple-ring.ring-2,
.get-it-toggle.is-full .ripple-ring.ring-2 {
    animation: liquidVortexPulse 1.4s cubic-bezier(0.2, 0.8, 0.4, 1) 0.7s infinite;
}

@keyframes dropletVortexCore {
    0% {
        transform: scale(0.85);
        opacity: 0.85;
    }
    100% {
        transform: scale(1.15);
        opacity: 1;
        box-shadow: 0 0 14px #ffffff, 0 0 20px var(--liq-bright, #ff3366);
    }
}

@keyframes liquidVortexPulse {
    0% {
        transform: scale(0.4);
        opacity: 0.95;
    }
    70% {
        opacity: 0.35;
    }
    100% {
        transform: scale(1.35);
        opacity: 0;
    }
}

/* 6. Active & Full Activation States */
.get-it-toggle:disabled {
    cursor: wait;
}

.get-it-toggle.is-flowing,
.get-it-toggle.is-filling {
    border-color: var(--liq-glow, rgba(255, 0, 60, 0.5));
    box-shadow: 
        0 4px 22px rgba(0, 0, 0, 0.7),
        0 0 24px var(--liq-soft, rgba(255, 0, 60, 0.3)),
        inset 0 1px 0 rgba(255, 255, 255, 0.2);
}

.get-it-toggle.is-full {
    border-color: var(--liq-bright, #ff3366);
    box-shadow: 
        0 4px 24px rgba(0, 0, 0, 0.75),
        0 0 32px var(--liq-glow, rgba(255, 0, 60, 0.7)),
        inset 0 1px 0 rgba(255, 255, 255, 0.4);
    animation: buttonFullChargedPulse 0.5s ease-in-out infinite alternate;
}

@keyframes buttonFullChargedPulse {
    0% {
        box-shadow: 
            0 4px 24px rgba(0, 0, 0, 0.75),
            0 0 24px var(--liq-glow, rgba(255, 0, 60, 0.55)),
            inset 0 1px 0 rgba(255, 255, 255, 0.35);
    }
    100% {
        box-shadow: 
            0 4px 26px rgba(0, 0, 0, 0.8),
            0 0 36px var(--liq-glow, rgba(255, 0, 60, 0.85)),
            inset 0 1px 0 rgba(255, 255, 255, 0.5);
    }
}

/* 7. Mobile Viewport Refinements (360px - 480px) */
@media (max-width: 480px) {
    .get-it-toggle {
        width: 202px;
        min-height: 50px;
        padding: 5px 6px 5px 16px;
        gap: 10px;
    }

    .label-text {
        font-size: 0.75rem; /* 12px */
        letter-spacing: 0.18em;
    }

    .card-liquid-stream {
        right: 198px;
    }

    .get-it-orb {
        width: 34px;
        height: 34px;
        flex: 0 0 34px;
    }
}

@media (max-width: 360px) {
    .get-it-toggle {
        width: 190px;
        min-height: 48px;
        padding: 4px 6px 4px 14px;
    }

    .label-text {
        font-size: 0.6875rem; /* 11px */
        letter-spacing: 0.15em;
    }

    .card-liquid-stream {
        right: 186px;
    }
}

/* =========================================================================
   NIK MODS — HEADER REFRESH BUTTON & CUSTOM REFRESH INTERACTIONS
   ========================================================================= */
.header-refresh-btn {
    cursor: pointer;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
    position: relative;
    overflow: hidden;
    color: #d1d5db;
    transition: transform 0.2s cubic-bezier(0.2, 0.8, 0.2, 1),
                color 0.2s ease,
                border-color 0.2s ease,
                box-shadow 0.2s ease;
}

.header-refresh-btn:hover:not(:disabled):not(.is-refreshing) {
    color: #ffffff;
    border-color: rgba(255, 0, 60, 0.4);
    box-shadow: 0 0 14px rgba(255, 0, 60, 0.25);
}

.header-refresh-btn:active:not(:disabled):not(.is-refreshing) {
    transform: scale(0.92);
}

.header-refresh-btn:disabled {
    cursor: wait;
}

/* Refresh Icon */
.header-refresh-btn .refresh-icon {
    font-size: 11px;
    transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1), opacity 0.2s ease;
}

/* Spinning Animation on Refresh */
.header-refresh-btn.is-refreshing .refresh-icon {
    animation: headerRefreshSpin 0.85s linear infinite;
    color: #ffffff;
}

@keyframes headerRefreshSpin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Liquid Glass Ripple on Refresh */
.header-refresh-btn .refresh-ripple {
    position: absolute;
    inset: -50%;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 0, 60, 0.4) 0%, transparent 70%);
    opacity: 0;
    transform: scale(0.3);
    pointer-events: none;
    transition: opacity 0.2s ease, transform 0.4s ease;
}

.header-refresh-btn.is-refreshing .refresh-ripple {
    opacity: 1;
    animation: headerRipplePulse 0.85s ease-in-out infinite alternate;
}

@keyframes headerRipplePulse {
    0% { transform: scale(0.4); opacity: 0.3; }
    100% { transform: scale(1.3); opacity: 0.85; }
}

/* Checkmark Icon (Updated state) */
.header-refresh-btn .check-icon {
    position: absolute;
    font-size: 11px;
    color: #34d399;
    opacity: 0;
    transform: scale(0.4);
    transition: all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
    pointer-events: none;
}

.header-refresh-btn.is-updated .refresh-icon {
    opacity: 0;
    transform: scale(0.2);
}

.header-refresh-btn.is-updated .check-icon {
    opacity: 1;
    transform: scale(1);
    text-shadow: 0 0 10px rgba(52, 211, 153, 0.65);
}

.header-refresh-btn.is-updated {
    border-color: rgba(52, 211, 153, 0.55) !important;
    box-shadow: 0 0 16px rgba(52, 211, 153, 0.35) !important;
}

.header-refresh-btn.is-error {
    border-color: rgba(239, 68, 68, 0.55) !important;
    box-shadow: 0 0 14px rgba(239, 68, 68, 0.35) !important;
}

/* =========================================================================
   NIK MODS — SIGNATURE PULL-TO-REFRESH INDICATOR
   ========================================================================= */
.ptr-indicator {
    position: fixed;
    top: 14px;
    left: 50%;
    transform: translate3d(-50%, -130%, 0);
    z-index: 1000;
    pointer-events: none;
    opacity: 0;
    will-change: transform, opacity;
}

.ptr-glass-pill {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 5px 16px 5px 6px;
    border-radius: 9999px;
    background: linear-gradient(180deg, rgba(20, 20, 26, 0.94) 0%, rgba(10, 10, 14, 0.98) 100%);
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-top: 1px solid rgba(255, 255, 255, 0.25);
    box-shadow: 
        0 8px 30px rgba(0, 0, 0, 0.8),
        0 0 18px rgba(255, 0, 60, 0.15),
        inset 0 1px 0 rgba(255, 255, 255, 0.15);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    transition: border-color 0.25s ease, box-shadow 0.25s ease;
}

.ptr-orb {
    position: relative;
    width: 28px;
    height: 28px;
    flex: 0 0 28px;
    border-radius: 50%;
    background: linear-gradient(135deg, rgba(255, 0, 60, 0.35) 0%, rgba(18, 18, 22, 0.95) 100%);
    border: 1px solid rgba(255, 0, 60, 0.4);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 0 10px rgba(255, 0, 60, 0.3);
    transition: all 0.25s ease;
    overflow: hidden;
}

.ptr-icon {
    font-size: 11px;
    color: #ffffff;
    transition: transform 0.05s linear;
}

.ptr-check {
    font-size: 11px;
    color: #34d399;
    position: absolute;
    opacity: 0;
    transform: scale(0.4);
    transition: all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.ptr-text {
    font-family: 'Space Grotesk', -apple-system, sans-serif;
    font-size: 0.6875rem; /* 11px */
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: #f1f5f9;
    text-shadow: 0 0 10px rgba(255, 255, 255, 0.3);
    white-space: nowrap;
    transition: color 0.2s ease, text-shadow 0.2s ease;
}

/* State: Ready (Threshold reached) */
.ptr-indicator.ptr-ready .ptr-glass-pill {
    border-color: rgba(255, 0, 60, 0.55);
    box-shadow: 
        0 8px 32px rgba(0, 0, 0, 0.85),
        0 0 22px rgba(255, 0, 60, 0.4),
        inset 0 1px 0 rgba(255, 255, 255, 0.25);
}

.ptr-indicator.ptr-ready .ptr-orb {
    background: linear-gradient(135deg, #ff1a4b 0%, #c8002f 100%);
    box-shadow: 0 0 14px rgba(255, 0, 60, 0.7);
    border-color: rgba(255, 255, 255, 0.4);
}

.ptr-indicator.ptr-ready .ptr-text {
    color: #ffffff;
    text-shadow: 0 0 12px rgba(255, 0, 60, 0.7);
}

/* State: Loading / Refreshing */
.ptr-indicator.ptr-loading .ptr-orb {
    background: linear-gradient(135deg, rgba(255, 0, 60, 0.45) 0%, rgba(20, 20, 26, 0.95) 100%);
    border-color: rgba(255, 0, 60, 0.6);
    box-shadow: 0 0 16px rgba(255, 0, 60, 0.5);
}

.ptr-indicator.ptr-loading .ptr-icon {
    animation: ptrLoaderSpin 0.75s linear infinite;
}

@keyframes ptrLoaderSpin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* State: Success / Updated */
.ptr-indicator.ptr-success .ptr-glass-pill {
    border-color: rgba(52, 211, 153, 0.5);
    box-shadow: 
        0 8px 32px rgba(0, 0, 0, 0.85),
        0 0 22px rgba(52, 211, 153, 0.35);
}

.ptr-indicator.ptr-success .ptr-orb {
    background: linear-gradient(135deg, #059669 0%, #047857 100%);
    border-color: rgba(52, 211, 153, 0.6);
    box-shadow: 0 0 14px rgba(52, 211, 153, 0.6);
}

.ptr-indicator.ptr-success .ptr-icon {
    opacity: 0;
    transform: scale(0.3);
}

.ptr-indicator.ptr-success .ptr-check {
    opacity: 1;
    transform: scale(1);
}

.ptr-indicator.ptr-success .ptr-text {
    color: #ffffff;
    text-shadow: 0 0 12px rgba(52, 211, 153, 0.7);
}

/* State: Error */
.ptr-indicator.ptr-error .ptr-glass-pill {
    border-color: rgba(239, 68, 68, 0.5);
}

.ptr-indicator.ptr-error .ptr-text {
    color: #f87171;
}

/* 8. Reduced Motion Accessibility */
@media (prefers-reduced-motion: reduce) {
    *, ::before, ::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    .chasing-border::after {
        animation: none !important;
    }
    .particle {
        display: none !important;
    }
    .get-it-toggle.is-filling .get-it-liquid-fill,
    .get-it-toggle.is-full .get-it-liquid-fill {
        transform: translateX(0) !important;
        animation: none !important;
    }
    .card-liquid-active .liquid-stream-flow {
        transform: scaleX(1) !important;
        animation: none !important;
    }
    .header-refresh-btn.is-refreshing .refresh-icon,
    .ptr-indicator.ptr-loading .ptr-icon {
        animation: none !important;
    }
    .liquid-wave-crest,
    .stream-drop,
    .ripple-ring {
        display: none !important;
    }
}
