/* /Components/Layout/BrandLockup.razor.rz.scp.css */
/* Scoped styles for BrandLockup. Sizes come in as parameters (inline styles) so a caller can pass a
   clamp() for fluid hero sizing; everything structural lives here. */

.wg-brand[b-1bjy6uqye9] {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
}

.wg-brand-icon[b-1bjy6uqye9] {
    display: block;
    border-radius: 8px;
    flex-shrink: 0;
}

/* The wordmark is 4:1 white-on-transparent art; height is passed in, width follows. Every surface it
   renders on is dark (AppBar, auth/legal gradient, hero, maintenance splash, the #242424 email card),
   so white reads correctly on all of them. */
.wg-brand-word[b-1bjy6uqye9] {
    height: auto;
    width: auto;
    max-width: 100%;
}

.wg-brand-name[b-1bjy6uqye9] {
    margin: 0;
    font-weight: 600;
    letter-spacing: 0.5px;
    line-height: 1;
    white-space: nowrap;
    /* Inherit so the lockup reads correctly on every surface it sits on — the AppBar sets its own
       contrast color, the auth/legal cards and the maintenance splash set theirs. */
    color: inherit;
    /* NEVER add text-transform: uppercase here. The rendered string has to stay "Wishgate" to match
       the OAuth consent screen's App name — see the header comment in BrandLockup.razor. */
}

/* Centered block variant for the auth / legal / maintenance shells, which previously centered the
   wordmark with `margin: 0 auto`. inline-flex does not center that way, so switch to flex. */
.wg-brand-center[b-1bjy6uqye9] {
    display: flex;
    justify-content: center;
}

/* The original .wg-auth-logo glow (AuthLayout.razor), applied to the artwork only — a drop-shadow on
   a text block reads as a rendering artifact rather than a brand cue. */
.wg-brand-glow .wg-brand-icon[b-1bjy6uqye9],
.wg-brand-glow .wg-brand-word[b-1bjy6uqye9] {
    filter: drop-shadow(0 0 18px rgba(212, 175, 55, 0.35));
}

/* The landing hero wraps the mark in an <h1> for the logo-as-heading pattern; it must not inherit the
   browser's default heading margins or font sizing. */
.wg-brand-h1[b-1bjy6uqye9] {
    margin: 0;
    font-size: 0;
    line-height: 0;
    display: flex;
    align-items: center;
}

/* Routes.razor renders FocusOnNavigate with Selector="h1", and this lockup is the only real h1 in the
   app — so on every load of the landing page Blazor stamps tabindex="-1" on this heading and focuses
   it. Chrome treats programmatic focus before any pointer interaction as :focus-visible, so it painted
   its focus ring around the heading box; since the box is font-size:0 / display:flex it hugs the
   artwork exactly, reading as a white outline around the logo until the first click moved focus away.

   Keep the focus (it is what lands a screen-reader user on the page's heading after navigation) and
   drop only the ring — the standard treatment for a tabindex="-1" focus target, which is not an
   interactive control and so has nothing for the ring to communicate. */
.wg-brand-h1:focus[b-1bjy6uqye9],
.wg-brand-h1:focus-visible[b-1bjy6uqye9] {
    outline: none;
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
#components-reconnect-modal[b-h4cbljupdl] {
    display: none;
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 1000;
    overflow: hidden;
    background-color: var(--mud-palette-surface);
    opacity: 0.9;
    text-align: center;
    font-weight: bold;
    border: none;
    width: 100%;
    max-width: 100%;
    max-height: 100%;
    margin: 0;
    padding: 0;
}

    #components-reconnect-modal.components-reconnect-show[b-h4cbljupdl],
    #components-reconnect-modal[open][b-h4cbljupdl] {
        display: flex;
        align-items: center;
        justify-content: center;
    }

    #components-reconnect-modal.components-reconnect-failed[b-h4cbljupdl] {
        display: flex;
        align-items: center;
        justify-content: center;
    }

.components-reconnect-container[b-h4cbljupdl] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}

.components-reconnect-first-attempt-visible[b-h4cbljupdl],
.components-reconnect-repeated-attempt-visible[b-h4cbljupdl],
.components-reconnect-failed-visible[b-h4cbljupdl],
.components-pause-visible[b-h4cbljupdl],
.components-resume-failed-visible[b-h4cbljupdl] {
    display: none;
}

dialog[open].components-reconnect-show .components-reconnect-first-attempt-visible[b-h4cbljupdl] {
    display: block;
}

dialog[open].components-reconnect-failed .components-reconnect-failed-visible[b-h4cbljupdl] {
    display: block;
}

dialog[open].components-reconnect-failed #components-reconnect-button[b-h4cbljupdl] {
    display: block;
}

dialog[open].components-reconnect-repeated-attempt .components-reconnect-repeated-attempt-visible[b-h4cbljupdl] {
    display: block;
}

dialog[open].components-pause .components-pause-visible[b-h4cbljupdl] {
    display: block;
}

dialog[open].components-pause #components-resume-button[b-h4cbljupdl],
dialog[open].components-resume-failed #components-resume-button[b-h4cbljupdl] {
    display: block;
}

dialog[open].components-resume-failed .components-resume-failed-visible[b-h4cbljupdl] {
    display: block;
}

.components-rejoining-animation[b-h4cbljupdl] {
    display: flex;
    gap: 8px;
}

    .components-rejoining-animation div[b-h4cbljupdl] {
        width: 12px;
        height: 12px;
        border-radius: 50%;
        background-color: var(--mud-palette-primary, #594AE2);
        animation: rejoining-bounce-b-h4cbljupdl 1.4s infinite ease-in-out both;
    }

        .components-rejoining-animation div:nth-child(1)[b-h4cbljupdl] {
            animation-delay: -0.32s;
        }

        .components-rejoining-animation div:nth-child(2)[b-h4cbljupdl] {
            animation-delay: -0.16s;
        }

@keyframes rejoining-bounce-b-h4cbljupdl {
    0%, 80%, 100% {
        transform: scale(0);
    }

    40% {
        transform: scale(1);
    }
}

#components-reconnect-button[b-h4cbljupdl],
#components-resume-button[b-h4cbljupdl] {
    display: none;
    cursor: pointer;
    padding: 8px 16px;
    border: none;
    border-radius: 4px;
    background-color: var(--mud-palette-primary, #594AE2);
    color: #fff;
    font-size: 14px;
}
