
:root {
    --cursor-size: 10px;
    --cursor-trail-size: 8px;
}

/* ==========================================================
   CUSTOM CURSOR
========================================================== */

/* Hide the browser cursor everywhere */
html,
body,
a,
button,
input,
textarea,
select {
    cursor: none !important;
}

/* ----------------------------------------------------------
   MAIN CURSOR
---------------------------------------------------------- */
.custom-cursor {
    position: fixed;
    left: 0;
    top: 0;
    width: var(--cursor-size);
    height: var(--cursor-size);
    border-radius: 50%;
    background: var(--purple);
    pointer-events: none;
    z-index: 999999;
    transform: translate(-50%, -50%);
    will-change: transform;
    opacity: 1;
    visibility: visible;
}

.custom-cursor.cursor-idle {
    opacity: 0 !important;
}

.custom-cursor.light-background-cursor {
    background: var(--blue);
}

.custom-cursor.image-cursor {
    width: 34px;
    height: 34px;
    border-radius: 0;
    background-color: transparent;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cpath d='M0 0 L40 15.2 L24.8 24.8 L15.2 40 Z' fill='%23ebeae6'/%3E%3C/svg%3E");
    background-position: center;
    background-repeat: no-repeat;
    background-size: contain;
    mix-blend-mode: exclusion;
    filter: none;
}

/* ----------------------------------------------------------
   CURSOR TRAIL DOTS
---------------------------------------------------------- */

.cursor-trail-dot {

    position: fixed;

    left: 0;
    top: 0;

    width: 10px;
    height: 10px;

    border-radius: 50%;

    pointer-events: none;

    z-index: 999998;
}


/* ----------------------------------------------------------
   CLICK PULSE
---------------------------------------------------------- */

.cursor-pulse {
    position: fixed;
    width: var(--cursor-size);
    height: var(--cursor-size);
    border-radius: 50%;
    pointer-events: none;
    z-index: 99997;
    transform: translate(-50%, -50%);
    background: radial-gradient(
        circle,
        var(--light-blue) 0%,
        var(--light-blue) 60%,
        rgba(118, 153, 184, 0.35) 85%,
        rgba(118, 153, 184, 0) 100%
    );
    opacity: 0;
}

.cursor-pulse.active {
    animation: cursorPulse 0.55s ease-out forwards;
}

@keyframes cursorPulse {
    0% {
        width: var(--cursor-size);
        height: var(--cursor-size);
        opacity: 1;
    }

    100% {
        width: 70px;
        height: 70px;
        opacity: 0;
    }
}


/* ==========================================================
   TYPOGRAPHY SPOTLIGHT
========================================================== */

.typography-spotlight {

    position: fixed;

    width: 360px;
    height: 360px;

    border-radius: 50%;

    pointer-events: none;

    z-index: 9997;

    transform: translate(-50%, -50%);

    opacity: 0;

    /* subtle outer halo only — main lightening comes from reveal layer */
    background: radial-gradient(
        circle,
        rgba(118, 153, 184, 0) 45%,
        rgba(118, 153, 184, 0.18) 65%,
        rgba(118, 153, 184, 0) 100%
    );

    transition: opacity 0.2s ease;

    will-change: transform, opacity;
}


.typography-spotlight.active {
    opacity: 1;
}

/* === TYPOGRAPHY SPOTLIGHT FEATURE — disabled, keep for later use ===

.custom-cursor.typography-cursor {
    visibility: hidden !important;
}

.typography-reveal-layer {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 1;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    overflow: hidden;
    padding: var(--intro-margin) var(--page-padding);
    background: var(--light-blue);
    -webkit-mask-image: radial-gradient(
        circle 100px at var(--spotlight-x, -9999px) var(--spotlight-y, -9999px),
        black 60%, transparent 100%
    );
    mask-image: radial-gradient(
        circle 100px at var(--spotlight-x, -9999px) var(--spotlight-y, -9999px),
        black 60%, transparent 100%
    );
}

.typography-reveal-layer .type-row span {
    color: var(--typography-optimum-color) !important;
}

=== end typography spotlight feature === */


.cursor-trail-canvas {
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 9998;
}


.custom-cursor.link-cursor {
    width: 24px;
    height: 24px;
    background: transparent;
    border-radius: 0;
    mix-blend-mode: normal;
}

.custom-cursor.link-cursor::before {
    content: "";
    position: absolute;
    inset: 2px;
    background: rgb(75, 99, 145);
    clip-path: polygon(0 0, 100% 38%, 62% 62%, 38% 100%);
    z-index: 1;
}

.custom-cursor.link-cursor::after {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--light);
    clip-path: polygon(0 0, 100% 38%, 62% 62%, 38% 100%);
    z-index: 0;
}

.custom-cursor.lightbox-arrow-left,
.custom-cursor.lightbox-arrow-right {
    width: 24px;
    height: 24px;
    background: transparent;
    border-radius: 0;
    mix-blend-mode: normal;
}

.custom-cursor.lightbox-arrow-left::before,
.custom-cursor.lightbox-arrow-right::before {
    content: "";
    position: absolute;
    inset: 2px;
    background: rgb(75, 99, 145);
    z-index: 1;
}

.custom-cursor.lightbox-arrow-left::after,
.custom-cursor.lightbox-arrow-right::after {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--light);
    z-index: 0;
}

.custom-cursor.lightbox-arrow-left::before,
.custom-cursor.lightbox-arrow-left::after {
    clip-path: polygon(0 50%, 100% 0, 64% 50%, 100% 100%);
}

.custom-cursor.lightbox-arrow-right::before,
.custom-cursor.lightbox-arrow-right::after {
    clip-path: polygon(100% 50%, 0 0, 36% 50%, 0 100%);
}

@media (hover: none) {
    .custom-cursor,
    .cursor-pulse,
    .cursor-trail-canvas,
    .typography-spotlight {
        display: none !important;
    }
}

