/* Explain: Global styles, typography, custom cursor, and scroll animations. */
* {
    box-sizing: border-box;
}

html {
    background: var(--background-color);
    color: var(--text-color);
    scroll-behavior: smooth;
}

body {
    min-height: 100vh;
    overflow-x: hidden;
    background:
        radial-gradient(circle at 12% 8%, rgba(193, 18, 31, 0.18), transparent 28rem),
        radial-gradient(circle at 88% 18%, rgba(242, 169, 0, 0.10), transparent 24rem),
        linear-gradient(180deg, #111315 0%, #0b0c0d 100%);
}

body::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: -1;
    opacity: 0.25;
    background-image:
        linear-gradient(135deg, rgba(255,255,255,0.035) 25%, transparent 25%),
        linear-gradient(225deg, rgba(255,255,255,0.025) 25%, transparent 25%);
    background-size: 18px 18px;
}

::selection {
    background: var(--primary-color);
    color: var(--text-color);
}

img {
    max-width: 100%;
}

button,
a,
label {
    -webkit-tap-highlight-color: transparent;
}

h1,
h2,
h3,
.brand-type {
    font-family: var(--font-heading);
    letter-spacing: 0.045em;
}

p,
li,
input,
select,
textarea,
button {
    font-family: var(--font-body);
}

input,
select,
textarea {
    color-scheme: dark;
}

input::placeholder,
textarea::placeholder {
    color: rgba(184, 190, 198, 0.62);
}

/* Premium Custom Cursor */
@media (pointer: fine) {
    .custom-cursor {
        display: none !important;
    }
    .cursor-trail {
        position: fixed; top: 0; left: 0; width: 36px; height: 36px;
        border: 1px solid rgba(193, 18, 31, 0.6); border-radius: 50%;
        pointer-events: none; z-index: 99998;
        transform: translate(-50%, -50%); transition: width 0.3s, height 0.3s, background 0.3s, border-color 0.3s;
        margin-left: -18px; margin-top: -18px; box-shadow: 0 0 20px rgba(193, 18, 31, 0.3);
    }
    .cursor-trail.cursor-hover {
        width: 70px; height: 70px; background: rgba(193, 18, 31, 0.15);
        margin-left: -35px; margin-top: -35px; border-color: rgba(193, 18, 31, 0.3);
    }
}

/* Cinematic Scroll Reveal Animations */
[data-reveal] {
    opacity: 0;
    filter: blur(15px);
    will-change: transform, opacity, filter;
}

[data-reveal].is-revealed {
    animation-duration: 1.2s;
    animation-fill-mode: forwards;
    animation-timing-function: cubic-bezier(0.19, 1, 0.22, 1); /* Ultra smooth spring */
}

[data-reveal="up"].is-revealed { animation-name: revealUp; }
[data-reveal="down"].is-revealed { animation-name: revealDown; }
[data-reveal="left"].is-revealed { animation-name: revealLeft; }
[data-reveal="right"].is-revealed { animation-name: revealRight; }
[data-reveal="scale"].is-revealed { animation-name: revealScale; }

@keyframes revealUp { 
    from { opacity: 0; transform: translateY(80px) scale(0.95); filter: blur(15px); } 
    to { opacity: 1; transform: translate(0) scale(1); filter: blur(0); } 
}
@keyframes revealDown { 
    from { opacity: 0; transform: translateY(-80px) scale(0.95); filter: blur(15px); } 
    to { opacity: 1; transform: translate(0) scale(1); filter: blur(0); } 
}
@keyframes revealLeft { 
    from { opacity: 0; transform: translateX(-80px) scale(0.95); filter: blur(15px); } 
    to { opacity: 1; transform: translate(0) scale(1); filter: blur(0); } 
}
@keyframes revealRight { 
    from { opacity: 0; transform: translateX(80px) scale(0.95); filter: blur(15px); } 
    to { opacity: 1; transform: translate(0) scale(1); filter: blur(0); } 
}
@keyframes revealScale { 
    from { opacity: 0; transform: scale(0.85); filter: blur(15px); } 
    to { opacity: 1; transform: scale(1); filter: blur(0); } 
}
