*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

@media (min-width: 769px) {
    body { cursor: none; }
    body *, a, button, label, input, textarea, select, [onclick] { cursor: none; }
}

@media (max-width: 768px) {
    #cur-dot, #cur-ring, #cur-icon, #cur-scroll-icon {
        display: none !important;
    }
}

#cur-dot {
    position: fixed;
    top: 0; left: 0;
    width: 32px; height: 32px;
    pointer-events: none;
    z-index: 999999;
    transform: translate(-50%, -50%) rotate(0deg);
    display: flex;
    align-items: center;
    justify-content: center;
    will-change: left, top, transform;
    transition: transform 0.15s cubic-bezier(0.22, 1, 0.36, 1);
}

#cur-dot svg {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    fill: #c6b297;
    filter: drop-shadow(0 0 4px rgba(198,178,151,0.55));
    transition: fill 0.18s ease, opacity 0.18s ease;
}

#cur-dot .open-scissors   { opacity: 1; }
#cur-dot .closed-scissors { opacity: 0; }
#cur-dot .trimmer-icon    { opacity: 0; }
#cur-dot .comb-icon       { opacity: 0; }
#cur-dot .spray-icon      { opacity: 0; }
#cur-dot .dryer-icon      { opacity: 0; }
#cur-dot .chair-icon      { opacity: 0; }

#cur-ring {
    position: fixed;
    top: 0; left: 0;
    width: 50px; height: 50px;
    border-radius: 50%;
    border: 1.5px solid rgba(198,178,151,0.32);
    pointer-events: none;
    z-index: 999998;
    transform: translate(-50%, -50%);
    transition: width 0.22s ease, height 0.22s ease, border-color 0.22s ease,
                border-radius 0.22s ease, border-width 0.22s ease, border-style 0.22s ease;
    will-change: left, top;
}

#cur-icon {
    position: fixed;
    top: 0; left: 0;
    pointer-events: none;
    z-index: 999997;
    transform: translate(-50%, -155%);
    opacity: 0;
    transition: opacity 0.22s ease;
    display: flex;
    align-items: center;
    justify-content: center;
}

#cur-icon svg {
    width: 32px; height: 32px;
    fill: #c6b297;
    filter: drop-shadow(0 0 7px rgba(198,178,151,0.95));
}

#cur-scroll-icon {
    position: fixed;
    top: 0; left: 0;
    pointer-events: none;
    z-index: 999997;
    transform: translate(-50%, -50%);
    width: 38px; height: 38px;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.28s ease;
}

#cur-scroll-icon svg {
    width: 100%; height: 100%;
    fill: #c6b297;
    filter: drop-shadow(0 0 6px rgba(198,178,151,0.9));
}

@keyframes cur-ring-spin {
    to { transform: translate(-50%, -50%) rotate(360deg); }
}

@keyframes cur-ring-pulse {
    0%, 100% { transform: translate(-50%, -50%) scale(1);    opacity: 0.85; }
    50%       { transform: translate(-50%, -50%) scale(1.28); opacity: 0.25; }
}

@keyframes cur-glow {
    0%, 100% { filter: drop-shadow(0 0 3px rgba(198,178,151,0.45)); }
    50%       { filter: drop-shadow(0 0 12px rgba(198,178,151,1)); }
}

@keyframes cut-snip {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0; }
}

@keyframes cut-snip-inv {
    0%, 100% { opacity: 0; }
    50%       { opacity: 1; }
}

body.dir-up #cur-dot {
    transform: translate(-50%, -50%) rotate(-90deg);
}
body.dir-down #cur-dot {
    transform: translate(-50%, -50%) rotate(90deg);
}
body.dir-stay #cur-dot {
    transform: translate(-50%, -50%) rotate(0deg);
}

body[class*="cursor-"] #cur-dot svg {
    opacity: 0;
}

body.cursor-link #cur-dot .closed-scissors {
    opacity: 1;
    fill: #ffffff;
    filter: drop-shadow(0 0 6px rgba(255,255,255,0.6));
}
body.cursor-link #cur-ring {
    width: 64px; height: 64px;
    border-color: rgba(198,178,151,0.88);
    border-width: 2px;
}

body.cursor-image #cur-dot .trimmer-icon {
    opacity: 1;
    transform: rotate(15deg);
}
body.cursor-image #cur-ring {
    width: 72px; height: 72px;
    border-style: dashed;
    border-color: #c6b297;
    border-width: 2px;
    border-radius: 8px;
    animation: cur-ring-spin 3.2s linear infinite;
}

body.cursor-image-url #cur-dot .closed-scissors {
    opacity: 1;
    fill: #c6b297;
    filter: drop-shadow(0 0 5px rgba(198,178,151,0.7));
}
body.cursor-image-url #cur-ring {
    width: 68px; height: 68px;
    border-style: dashed;
    border-color: rgba(198,178,151,0.6);
    border-width: 2px;
    border-radius: 50%;
    animation: cur-ring-spin 4s linear infinite;
}

body.cursor-video #cur-dot .open-scissors {
    animation: cut-snip 0.32s step-end infinite;
}
body.cursor-video #cur-dot .closed-scissors {
    animation: cut-snip-inv 0.32s step-end infinite;
}
body.cursor-video #cur-ring {
    width: 76px; height: 76px;
    border-color: #c6b297;
    border-width: 2.5px;
    animation: cur-ring-pulse 1.1s ease infinite;
}

body.cursor-text #cur-dot .comb-icon {
    opacity: 1;
}
body.cursor-text #cur-ring { width: 0; height: 0; border-color: transparent; }

body.cursor-input #cur-dot .spray-icon {
    opacity: 1;
}
body.cursor-input #cur-ring { width: 0; height: 0; border-color: transparent; }

body.cursor-button #cur-dot .dryer-icon {
    opacity: 1;
}
body.cursor-button #cur-ring {
    width: 68px; height: 68px;
    border-color: rgba(198,178,151,0.8);
    border-width: 2px;
}

body.cursor-checkbox #cur-dot .chair-icon {
    opacity: 1;
}
body.cursor-checkbox #cur-ring { width: 0; height: 0; border-color: transparent; }

body.cursor-object #cur-dot .trimmer-icon {
    opacity: 1;
}
body.cursor-object #cur-ring {
    width: 68px; height: 68px;
    border-style: dashed;
    border-color: rgba(198,178,151,0.6);
    border-width: 2px;
    border-radius: 50%;
    animation: cur-ring-spin 4s linear infinite;
}

body.cursor-scroll-down #cur-scroll-icon,
body.cursor-scroll-up   #cur-scroll-icon { opacity: 1; }
body.cursor-scroll-down #cur-dot,
body.cursor-scroll-up   #cur-dot { opacity: 0.28; }

.reveal {
    opacity: 0;
    transform: translateY(38px);
    transition: opacity 0.75s cubic-bezier(0.22,1,0.36,1), transform 0.75s cubic-bezier(0.22,1,0.36,1);
}
.reveal.from-left  { transform: translateX(-38px); }
.reveal.from-right { transform: translateX(38px); }
.reveal.scale      { transform: scale(0.94); }
.reveal.visible    { opacity: 1; transform: translateY(0) translateX(0) scale(1); }
.reveal-delay-1 { transition-delay: 0.1s; }
.reveal-delay-2 { transition-delay: 0.2s; }
.reveal-delay-3 { transition-delay: 0.3s; }
.reveal-delay-4 { transition-delay: 0.4s; }
.reveal-delay-5 { transition-delay: 0.5s; }
