/* Clamp to the standard 960px from 'lg' and up. */
@media (min-width: 992px) {
    .container, .container-sm, .container-md, .container-lg, .container-xl, .container-xxl {
        max-width: 960px;
    }
}

/* Brand aliases for global use. */
:root, [data-bs-theme="vibe"] {
    /* Palette. */
    --vici-pink: #FF4D9E;
    --vici-cyan: #00E5FF;
    --vici-purple: #8A5BFF;
    --vici-teal: #1DE9B6;
    /* RGB for alpha utilities. */
    --vici-pink-rgb: 255, 77, 158;
    --vici-cyan-rgb: 0, 229, 255;
    --vici-purple-rgb: 138, 91, 255;
    --vici-teal-rgb: 29, 233, 182;

    --bs-tertiary-bg: #121936;
}

/* Background image. */
#bg-fixed {
    position: fixed;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background: url("images/background-1.png") center/cover no-repeat;
}

/* Navbar. */
.vici-navbar {
    background: linear-gradient(90deg, var(--vici-pink), var(--vici-purple), var(--vici-cyan));
    border-bottom: 1px solid rgba(255, 255, 255, .2);

    /* Override navbar-dark colors. */
    --bs-navbar-color: rgba(255, 255, 255, .8);
    --bs-navbar-hover-color: #fff;
    --bs-navbar-active-color: #fff;
    --bs-navbar-brand-color: rgba(255, 255, 255, .95);
    --bs-navbar-brand-hover-color: #fff;

    /* Brighter hamburger. */
    --bs-navbar-toggler-border-color: rgba(255, 255, 255, .8);
    --bs-navbar-toggler-focus-width: 1;
}

/* Improve legibility over bright backgrounds. */
.vici-navbar .nav-link {
    text-shadow: 0 1px 2px rgba(0, 0, 0, .1);
}

/* Footer. */
.vici-footer {
    color: rgba(255, 255, 255, .8);
    background: linear-gradient(90deg, var(--vici-pink), var(--vici-purple), var(--vici-cyan));
    border-top: 1px solid rgba(255, 255, 255, .2);
}

/* Links. */
.vici-footer a {
    text-decoration: none;
    color: rgba(255, 255, 255, .8);
}

.vici-footer a:hover {
    text-decoration: underline;
}

/* Logo wordmark. */
.vici-logo-wordmark {
    font-weight: 800;
    letter-spacing: .02em;
    color: var(--vici-teal);
    text-shadow: 0 1px 0 #063a4f, 0 -1px 0 #063a4f, 1px 0 0 #063a4f, -1px 0 0 #063a4f, 1px 1px 0 #063a4f, 1px -1px 0 #063a4f, -1px 1px 0 #063a4f, -1px -1px 0 #063a4f, 0 0 8px rgba(var(--vici-cyan-rgb), .35), 0 0 14px rgba(var(--vici-cyan-rgb), .25);
    filter: drop-shadow(0 1px 3px rgba(0, 0, 0, .6));
}

/* Sections. */
.section-panel {
    background: transparent;
    border-radius: 1rem;
}

.section-panel.panel-vibe {
    position: relative;
    box-shadow: 0 0 14px rgba(var(--vici-cyan-rgb), .45), 0 0 36px rgba(var(--vici-cyan-rgb), .28), 0 0 72px rgba(var(--vici-pink-rgb), .22);
}

.section-panel.panel-vibe::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    padding: 3px;
    background: linear-gradient(135deg, var(--vici-cyan), var(--vici-pink));
    mask-image: linear-gradient(#fff, #fff), linear-gradient(#fff, #fff);
    mask-origin: content-box, border-box;
    mask-clip: content-box, border-box;
    mask-composite: exclude;
}

.section-panel.panel-vibe::after {
    content: "";
    position: absolute;
    inset: -18px;
    border-radius: inherit;
    pointer-events: none;
    z-index: -1;
    background: radial-gradient(42% 48% at 18% 22%, rgba(var(--vici-cyan-rgb), .35), transparent 70%), radial-gradient(42% 48% at 82% 78%, rgba(var(--vici-pink-rgb), .28), transparent 70%);
    filter: blur(24px);
}

/* Section title. */
.vici-title {
    font-weight: 800;
    background: linear-gradient(90deg, var(--vici-cyan), var(--vici-pink));
    background-clip: text;
    color: transparent;
}

/* Neon cards */
.card.neon-card {
    position: relative;
    z-index: 0;
    border: 2px solid transparent;
    border-radius: 1rem;
    background: linear-gradient(#0F1634, #0F1634) padding-box, linear-gradient(135deg, var(--vici-cyan), var(--vici-pink)) border-box;
    box-shadow: 0 0 12px rgba(var(--vici-cyan-rgb), .85), 0 0 28px rgba(var(--vici-cyan-rgb), .55), 0 0 60px rgba(var(--vici-pink-rgb), .45), inset 0 0 24px rgba(var(--vici-cyan-rgb), .25);
}

.card.neon-card::before {
    content: "";
    position: absolute;
    inset: -18px;
    border-radius: inherit;
    pointer-events: none;
    z-index: -1;
    background: radial-gradient(42% 48% at 18% 22%, rgba(var(--vici-cyan-rgb), .45), transparent 70%), radial-gradient(42% 48% at 82% 78%, rgba(var(--vici-pink-rgb), .35), transparent 70%);
    filter: blur(24px);
}

/* Gradient text. */
.vici-text-gradient {
    background-image: var(--vici-grad, linear-gradient(90deg, var(--vici-teal), var(--vici-cyan)));
    background-clip: text;
    color: transparent;
    text-shadow: 0 1px 2px rgba(0, 0, 0, .25);
}

/* Preset gradients. */
.vici-grad-teal-cyan {
    --vici-grad: linear-gradient(90deg, var(--vici-teal), var(--vici-cyan));
}

.vici-grad-cyan-purple {
    --vici-grad: linear-gradient(90deg, var(--vici-cyan), var(--vici-purple));
}

.vici-grad-pink-purple {
    --vici-grad: linear-gradient(90deg, var(--vici-pink), var(--vici-purple));
}

.vici-grad-cyan-pink {
    --vici-grad: linear-gradient(90deg, var(--vici-cyan), var(--vici-pink));
}

/* Carousel. */
.vici-slide {
    width: 100%;
    height: 100%;
    background: repeating-linear-gradient(to right, rgba(255, 255, 255, .06) 0 2px, transparent 2px 10px)
}

.vici-slide-1 {
    box-shadow: inset 0 0 40px rgba(var(--vici-cyan-rgb), .25);
}

.vici-slide-2 {
    box-shadow: inset 0 0 40px rgba(var(--vici-pink-rgb), .25);
}

.vici-slide-3 {
    box-shadow: inset 0 0 40px rgba(var(--vici-purple-rgb), .25);
}

/* Roadmap. */
.vici-phase {
    width: 8vh;
    aspect-ratio: 1 / 1;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    border: 4px solid transparent;
    background: linear-gradient(#0F1634, #0F1634) padding-box, linear-gradient(135deg, var(--vici-cyan), var(--vici-pink)) border-box;
    box-shadow: 0 0 10px rgba(var(--vici-cyan-rgb), .45), 0 0 22px rgba(var(--vici-pink-rgb), .25);
}

.vici-phase-strong {
    border-width: 4px;
    background: linear-gradient(#0F1634, #0F1634) padding-box, linear-gradient(135deg, var(--vici-teal), var(--vici-cyan)) border-box;
    box-shadow: 0 0 14px rgba(var(--vici-cyan-rgb), .70), 0 0 34px rgba(var(--vici-pink-rgb), .35), inset 0 0 16px rgba(var(--vici-cyan-rgb), .25);
}

/* Justified paragraphs. */
.text-justify {
    text-align: justify;
    text-align-last: left;
    hyphens: none;
    word-break: normal;
    overflow-wrap: normal;
}