/* ═══════════════════════════════════════════════════════════════════
   GLOBALS — Reset, Base Typography, Custom Cursor, Scrollbar
   ═══════════════════════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Space+Grotesk:wght@300;400;500;600;700&display=swap');

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

html {
    scroll-behavior: smooth;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

body {
    font-family: var(--font-body);
    font-size: var(--fs-body);
    line-height: var(--lh-body);
    color: var(--color-text-light);
    background-color: var(--color-bg-deep);
    overflow-x: hidden;
    cursor: none;
}

a {
    color: inherit;
    text-decoration: none;
    cursor: none;
}

button {
    cursor: none;
    border: none;
    background: none;
    font-family: inherit;
}

input,
textarea,
select {
    cursor: none;
    font-family: inherit;
}

img,
video {
    max-width: 100%;
    height: auto;
    display: block;
}

ul,
ol {
    list-style: none;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: var(--font-heading);
    font-weight: var(--fw-bold);
    line-height: var(--lh-heading);
    letter-spacing: var(--ls-tight);
}

/* ── Selection ── */
::selection {
    background: var(--color-purple);
    color: var(--color-text-white);
}

/* ── Scrollbar ── */
::-webkit-scrollbar {
    width: 8px;
}

::-webkit-scrollbar-track {
    background: var(--color-bg-deep);
}

::-webkit-scrollbar-thumb {
    background: var(--color-bg-tertiary);
    border-radius: var(--radius-full);
}

::-webkit-scrollbar-thumb:hover {
    background: var(--color-bg-tertiary);
}

/* ── Custom Cursor (Cuberto-style) ── */
.cursor-dot {
    position: fixed;
    top: 0;
    left: 0;
    width: var(--cursor-size);
    height: var(--cursor-size);
    background: var(--color-text-white);
    border-radius: 50%;
    pointer-events: none;
    z-index: 99999;
    mix-blend-mode: difference;
    transform: translate(-50%, -50%);
    transition: width 0.3s var(--ease-expo),
        height 0.3s var(--ease-expo),
        background 0.3s var(--ease-expo),
        opacity 0.3s var(--ease-expo);
    will-change: transform;
}

.cursor-dot.cursor-hover {
    width: var(--cursor-size-hover);
    height: var(--cursor-size-hover);
    background: var(--color-text-white);
    opacity: 0.8;
}

.cursor-dot.cursor-hover-accent {
    width: var(--cursor-size-hover);
    height: var(--cursor-size-hover);
    background: var(--color-cyan);
    mix-blend-mode: normal;
    opacity: 0.6;
}

.cursor-dot.cursor-text {
    width: 80px;
    height: 80px;
    background: var(--color-text-white);
    opacity: 0.9;
    display: flex;
    align-items: center;
    justify-content: center;
}

.cursor-dot.cursor-text::after {
    content: attr(data-cursor-text);
    font-family: var(--font-heading);
    font-size: 11px;
    font-weight: var(--fw-bold);
    color: var(--color-bg-deep);
    letter-spacing: var(--ls-wide);
    text-transform: uppercase;
    mix-blend-mode: normal;
}

/* Hide default cursor on desktop, show on mobile */
@media (hover: hover) and (pointer: fine) {
    * {
        cursor: none !important;
    }
}

@media (hover: none) or (pointer: coarse) {
    .cursor-dot {
        display: none !important;
    }

    * {
        cursor: auto !important;
    }
}

/* ── Focus styles for accessibility ── */
:focus-visible {
    outline: 2px solid var(--color-cyan);
    outline-offset: 2px;
}

/* ── Utility: Hidden but accessible ── */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}