/* ============================================================================
 * V15 · Aurora Noir — Base (reset + elements + aurora canvas)
 * ==========================================================================*/
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }
body {
    font-family: var(--v15-font);
    font-size: var(--v15-fs-md);
    line-height: 1.5;
    color: var(--v15-txt);
    background: var(--v15-bg);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    -webkit-tap-highlight-color: transparent;
    min-height: 100vh;
    overflow-x: hidden;
    position: relative;
}
@media (min-width: 520px) {
    body { max-width: var(--v15-maxw); margin: 0 auto; box-shadow: 0 0 120px rgba(var(--v15-a2-rgb),0.14); }
}

a { color: inherit; text-decoration: none; -webkit-tap-highlight-color: transparent; }
img { max-width: 100%; display: block; }
button, input, textarea, select { font: inherit; color: inherit; background: none; border: 0; outline: 0; }
button { cursor: pointer; }
ul, ol { list-style: none; }
b, strong { font-weight: 800; }
::selection { background: rgba(var(--v15-a2-rgb),0.4); color: #fff; }

/* numeric tabular by default for finance figures */
.v15-num, [data-num] { font-variant-numeric: tabular-nums; }

/* ---- Aurora canvas: fixed, behind everything ------------------------------ */
.v15-aurora-bg {
    position: fixed;
    inset: 0;
    z-index: var(--v15-z-aurora);
    pointer-events: none;
    overflow: hidden;
    background: var(--v15-bg);
}
@media (min-width: 520px) { .v15-aurora-bg { max-width: var(--v15-maxw); left: 50%; transform: translateX(-50%); } }
.v15-aurora-bg::before,
.v15-aurora-bg::after {
    content: '';
    position: absolute;
    width: 140%;
    height: 140%;
    border-radius: 50%;
    filter: blur(60px);
    opacity: 0.55;
    will-change: transform;
}
.v15-aurora-bg::before {
    top: -30%; left: -20%;
    background:
        radial-gradient(closest-side, rgba(var(--v15-a1-rgb),0.55), transparent 70%),
        radial-gradient(closest-side, rgba(var(--v15-a2-rgb),0.45), transparent 70%);
    background-position: 20% 30%, 70% 10%;
    background-repeat: no-repeat;
    background-size: 70% 70%, 60% 60%;
    animation: v15-aurora-1 22s var(--v15-ease-io) infinite alternate;
}
.v15-aurora-bg::after {
    bottom: -35%; right: -25%;
    background:
        radial-gradient(closest-side, rgba(var(--v15-a3-rgb),0.50), transparent 70%),
        radial-gradient(closest-side, rgba(var(--v15-a2-rgb),0.35), transparent 70%);
    background-position: 70% 70%, 20% 90%;
    background-repeat: no-repeat;
    background-size: 65% 65%, 55% 55%;
    animation: v15-aurora-2 28s var(--v15-ease-io) infinite alternate;
}
/* faint grain + vignette overlay for cinematic depth */
.v15-aurora-veil {
    position: fixed; inset: 0;
    z-index: var(--v15-z-aurora);
    pointer-events: none;
    background:
        radial-gradient(ellipse 90% 70% at 50% 30%, transparent 40%, rgba(0,0,0,0.55) 100%),
        radial-gradient(circle at 50% 0%, rgba(var(--v15-a2-rgb),0.10), transparent 45%);
}
@media (min-width: 520px) { .v15-aurora-veil { max-width: var(--v15-maxw); left: 50%; transform: translateX(-50%); } }

/* page content sits above aurora */
.v15-app { position: relative; z-index: var(--v15-z-base); }

/* scrollbar */
::-webkit-scrollbar { width: 0; height: 0; }
