/* =========================================================
   UNLIMITED STUDIO - SIGNAL PRELOADER V3
   ========================================================= */

:root {
    --us-brown: #775441;
    --us-cream: #f6eee8;
    --us-soft: rgba(246, 238, 232, .62);
    --us-line: rgba(246, 238, 232, .16);
}

.us-preloader {
    position: fixed;
    inset: 0;
    z-index: 999999;

    width: 100%;
    height: 100vh;
    height: 100dvh;

    overflow: hidden;
    isolation: isolate;

    background: var(--us-brown);
    color: var(--us-cream);

    clip-path: inset(0 0 0 0);
}

html.unlimited-preloader-lock,
body.unlimited-preloader-lock {
    overflow: hidden !important;
}


/* =========================================================
   TECH BACKGROUND
   ========================================================= */

.us-preloader__grid {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;

    opacity: .42;

    background-image:
        linear-gradient(rgba(246, 238, 232, .055) 1px, transparent 1px),
        linear-gradient(90deg, rgba(246, 238, 232, .055) 1px, transparent 1px);
    background-size: 48px 48px;

    mask-image: radial-gradient(circle at center, #000 20%, transparent 82%);
    -webkit-mask-image: radial-gradient(circle at center, #000 20%, transparent 82%);
}

.us-preloader__noise {
    position: absolute;
    inset: -20%;
    z-index: 1;
    pointer-events: none;

    opacity: .22;

    background:
        repeating-radial-gradient(
            circle at 30% 40%,
            rgba(255, 255, 255, .06) 0,
            rgba(255, 255, 255, .06) 1px,
            transparent 1px,
            transparent 4px
        );

    background-size: 6px 6px;
    animation: us-noise-shift .18s steps(2) infinite;
}

.us-preloader__flash {
    position: absolute;
    inset: 0;
    z-index: 5;
    pointer-events: none;

    opacity: 0;
    background: var(--us-cream);
    mix-blend-mode: soft-light;
}


/* =========================================================
   FRAME + META
   ========================================================= */

.us-preloader__frame {
    position: absolute;
    inset: clamp(18px, 2.1vw, 34px);
    z-index: 3;
    pointer-events: none;

    border: 1px solid rgba(246, 238, 232, .09);
    opacity: 0;
}

.us-preloader__corner {
    position: absolute;
    width: 20px;
    height: 20px;
}

.us-preloader__corner::before,
.us-preloader__corner::after {
    content: "";
    position: absolute;
    background: rgba(246, 238, 232, .6);
}

.us-preloader__corner::before {
    width: 20px;
    height: 1px;
}

.us-preloader__corner::after {
    width: 1px;
    height: 20px;
}

.us-preloader__corner--tl {
    top: -1px;
    left: -1px;
}

.us-preloader__corner--tr {
    top: -1px;
    right: -1px;
    transform: scaleX(-1);
}

.us-preloader__corner--bl {
    bottom: -1px;
    left: -1px;
    transform: scaleY(-1);
}

.us-preloader__corner--br {
    right: -1px;
    bottom: -1px;
    transform: scale(-1);
}

.us-preloader__meta {
    position: absolute;
    left: clamp(28px, 3vw, 52px);
    right: clamp(28px, 3vw, 52px);
    z-index: 4;

    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;

    color: var(--us-soft);
    font-size: 10px;
    font-weight: 500;
    line-height: 1;
    letter-spacing: .16em;
    text-transform: uppercase;

    opacity: 0;
}

.us-preloader__meta--top {
    top: clamp(31px, 3.5vw, 56px);
}

.us-preloader__meta--bottom {
    bottom: clamp(31px, 3.5vw, 56px);
}

.us-preloader__status {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.us-preloader__status-dot {
    display: block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--us-cream);
    box-shadow: 0 0 14px rgba(246, 238, 232, .7);
}


/* =========================================================
   STAGE
   ========================================================= */

.us-preloader__stage {
    position: absolute;
    inset: 0;
    z-index: 4;

    display: flex;
    align-items: center;
    justify-content: center;

    padding: 8vw;
    text-align: center;
    perspective: 900px;
}

.us-preloader__hello,
.us-preloader__brand-block {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: min(92vw, 1280px);

    /* Evita o flash do texto cru antes do GSAP inicializar. */
    visibility: hidden;
}

.us-preloader__hello {
    font-size: clamp(68px, 10vw, 180px);
    font-weight: 500;
    line-height: .82;
    letter-spacing: -.055em;
}

.us-preloader__brand-block {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.us-preloader__intro {
    margin-bottom: clamp(14px, 1.2vw, 22px);

    font-size: clamp(16px, 1.55vw, 25px);
    font-weight: 700;
    line-height: 1;
    letter-spacing: .08em;
    text-transform: uppercase;

    opacity: 0;
}

.us-preloader__brand {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    font-size: clamp(66px, 10.7vw, 190px);
    line-height: .72;
    letter-spacing: -.065em;
}

.us-preloader__brand-word {
    display: block;
    white-space: nowrap;
}

.us-preloader__brand-word--light {
    font-weight: 200;
}

.us-preloader__brand-word--bold {
    font-weight: 800;
}

.us-preloader__char {
    display: inline-block;
    transform-origin: 50% 60%;
    will-change: transform, opacity, filter;
}

.us-preloader__space {
    display: inline-block;
    width: .28em;
}


/* =========================================================
   SCANNER
   ========================================================= */

.us-preloader__scanner {
    position: absolute;
    top: -12%;
    left: 0;
    right: 0;
    z-index: 6;

    height: 16vh;
    min-height: 90px;

    pointer-events: none;
    opacity: 0;

    background: linear-gradient(
        to bottom,
        transparent 0%,
        rgba(246, 238, 232, .025) 48%,
        rgba(246, 238, 232, .12) 100%
    );
}

.us-preloader__scanner-core {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;

    height: 1px;
    background: rgba(246, 238, 232, .78);
    box-shadow:
        0 0 10px rgba(246, 238, 232, .45),
        0 0 28px rgba(246, 238, 232, .18);
}


/* =========================================================
   PROGRESS
   ========================================================= */

.us-preloader__progress {
    display: flex;
    align-items: center;
    gap: 12px;
}

.us-preloader__progress-track {
    position: relative;
    display: block;

    width: clamp(72px, 10vw, 150px);
    height: 1px;

    overflow: hidden;
    background: rgba(246, 238, 232, .18);
}

.us-preloader__progress-bar {
    position: absolute;
    inset: 0;

    display: block;
    background: var(--us-cream);
    transform: scaleX(0);
    transform-origin: left center;
}

.us-preloader__progress-number {
    min-width: 3ch;
    text-align: right;
    font-variant-numeric: tabular-nums;
}


/* =========================================================
   BACKGROUND MOTION
   ========================================================= */

@keyframes us-noise-shift {
    0% {
        transform: translate3d(0, 0, 0);
    }

    25% {
        transform: translate3d(-1%, .5%, 0);
    }

    50% {
        transform: translate3d(.5%, -1%, 0);
    }

    75% {
        transform: translate3d(1%, .5%, 0);
    }

    100% {
        transform: translate3d(0, 0, 0);
    }
}


/* =========================================================
   TABLET
   ========================================================= */

@media (max-width: 980px) {
    .us-preloader__brand {
        font-size: clamp(64px, 14vw, 130px);
    }

    .us-preloader__hello {
        font-size: clamp(68px, 14vw, 130px);
    }

    .us-preloader__grid {
        background-size: 38px 38px;
    }
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 767px) {
    .us-preloader__frame {
        inset: 14px;
    }

    .us-preloader__meta {
        left: 23px;
        right: 23px;
        font-size: 8px;
        letter-spacing: .12em;
    }

    .us-preloader__meta--top {
        top: 26px;
    }

    .us-preloader__meta--bottom {
        bottom: max(26px, env(safe-area-inset-bottom));
    }

    .us-preloader__meta--bottom > span:first-child {
        display: none;
    }

    .us-preloader__meta--bottom {
        justify-content: flex-end;
    }

    .us-preloader__stage {
        padding: 24px;
    }

    .us-preloader__hello,
    .us-preloader__brand-block {
        width: calc(100vw - 42px);
    }

    .us-preloader__hello {
        font-size: clamp(60px, 20vw, 92px);
    }

    .us-preloader__intro {
        margin-bottom: 14px;
        font-size: clamp(13px, 4vw, 17px);
        letter-spacing: .07em;
    }

    .us-preloader__brand {
        font-size: clamp(55px, 18.5vw, 86px);
        line-height: .76;
    }

    .us-preloader__grid {
        background-size: 32px 32px;
        opacity: .34;
    }
}


/* =========================================================
   REDUCED MOTION
   ========================================================= */

@media (prefers-reduced-motion: reduce) {
    .us-preloader {
        display: none !important;
    }
}
