/* /Components/Common/Display/AppIcon.razor.rz.scp.css */
.app-icon[b-kmrymwgw3c] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    line-height: 0;
    /* Icons sit inside clickable buttons/links: don't capture the text cursor, the
       selection, or the click target (let it pass through to the parent control). */
    user-select: none;
    -webkit-user-select: none;
    pointer-events: none;
}

.app-icon[b-kmrymwgw3c]  svg {
    width: 100%;
    height: 100%;
}
/* /Components/Common/Display/BrandLogo.razor.rz.scp.css */
.brand-logo[b-ks2ybrc0rz] {
    width: auto;
    object-fit: contain;
    user-select: none;
}

.brand-logo-dark[b-ks2ybrc0rz] {
    display: none;
}

.brand-logo-light[b-ks2ybrc0rz] {
    display: block;
}

.dark .brand-logo-light[b-ks2ybrc0rz] {
    display: none;
}

.dark .brand-logo-dark[b-ks2ybrc0rz] {
    display: block;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
#blazor-error-ui[b-u66bhceein] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

#blazor-error-ui .dismiss[b-u66bhceein] {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}
/* /Components/Layout/MarketingLayout.razor.rz.scp.css */
#blazor-error-ui[b-s05tktoa6m] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

#blazor-error-ui .dismiss[b-s05tktoa6m] {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}
/* /Components/Pages/Landing/Landing.razor.rz.scp.css */
/* Offset anchor jumps (#features, #launcher, #pricing, #faq, #top) so the sticky LandingNav header
   (~68px) doesn't cover the section title. ::deep reaches the section[id] rendered by child
   components (LandingHero, LandingFeatures, ...) under this page's scoped root. */
[b-qb710mp3m9] section[id] {
    scroll-margin-top: 88px;
}

/* Slow, subtle life for the background glow orbs (rendered inline by this page, so no ::deep). */
.landing-glow[b-qb710mp3m9] {
    will-change: transform, opacity;
}

.landing-glow-1[b-qb710mp3m9] {
    /* Centered orb: keep translateX(-50%) inside the keyframes since the animation drives transform. */
    transform: translateX(-50%);
    animation: landing-glow-pulse-b-qb710mp3m9 10s ease-in-out infinite;
}

.landing-glow-2[b-qb710mp3m9] {
    animation: landing-glow-drift-b-qb710mp3m9 18s ease-in-out infinite;
}

.landing-glow-3[b-qb710mp3m9] {
    animation: landing-glow-drift-b-qb710mp3m9 24s ease-in-out infinite reverse;
}

@keyframes landing-glow-pulse-b-qb710mp3m9 {
    0%, 100% { opacity: 0.65; transform: translateX(-50%) scale(1); }
    50%      { opacity: 1;    transform: translateX(-50%) scale(1.12); }
}

@keyframes landing-glow-drift-b-qb710mp3m9 {
    0%, 100% { opacity: 0.55; transform: translate(0, 0) scale(1); }
    50%      { opacity: 0.9;  transform: translate(50px, 34px) scale(1.08); }
}

@media (prefers-reduced-motion: reduce) {
    .landing-glow-1[b-qb710mp3m9], .landing-glow-2[b-qb710mp3m9], .landing-glow-3[b-qb710mp3m9] { animation: none; }
}
/* /Components/Pages/Landing/LandingFeatures.razor.rz.scp.css */
@media (max-width: 900px) {
    .landing-feature-grid[b-ncdfvk8z4g] {
        grid-template-columns: 1fr !important;
        gap: 24px !important;
    }

    .landing-feature-grid > div[b-ncdfvk8z4g] {
        order: unset !important;
    }
}
/* /Components/Pages/Landing/LandingFooter.razor.rz.scp.css */
@media (max-width: 800px) {
    .landing-footer-grid[b-p2y0dtjm4w] {
        grid-template-columns: 1fr 1fr !important;
    }
}

@media (max-width: 480px) {
    .landing-footer-grid[b-p2y0dtjm4w] {
        grid-template-columns: 1fr !important;
    }
}
/* /Components/Pages/Landing/LandingLauncherPreview.razor.rz.scp.css */
/* Two columns on wide screens (gap 18px -> half of it per cell), full width on small ones. */
.landing-preview-cell[b-djz0zjdndy] {
    flex: 0 1 calc(50% - 9px);
}

@media (max-width: 700px) {
    .landing-preview-cell[b-djz0zjdndy] {
        flex-basis: 100%;
    }

    /* Fallback mockup: the fixed 460px window is too tall/dense for phones — shrink it,
       drop the decorative sidebar and tighten paddings. Inline styles force !important. */
    .landing-mock-body[b-djz0zjdndy] {
        height: 340px !important;
    }

    .landing-mock-sidebar[b-djz0zjdndy] {
        display: none !important;
    }

    .landing-mock-main[b-djz0zjdndy] {
        padding: 16px 16px !important;
    }

    .landing-mock-play[b-djz0zjdndy] {
        padding: 0 22px !important;
        height: 44px !important;
        font-size: 15px !important;
    }
}
/* /Components/Pages/Landing/LandingStarfield.razor.rz.scp.css */
/* Viewport-fixed so the stars sit behind the scrolling content at every scroll depth (the page
   content is z-index:1 inside the same stacking context). overflow:hidden clips the 2560px-wide
   dot fields on narrower screens so they never create horizontal scroll. */
.starfield[b-c6p2gmwzct] {
    position: fixed;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
}

.nebula[b-c6p2gmwzct] {
    position: absolute;
    inset: -10%;
    background:
        radial-gradient(35% 40% at 25% 30%, color-mix(in srgb, var(--primary) 28%, transparent), transparent 60%),
        radial-gradient(40% 45% at 75% 65%, color-mix(in srgb, var(--chart-3) 20%, transparent), transparent 60%),
        radial-gradient(30% 30% at 60% 20%, color-mix(in srgb, var(--chart-4) 16%, transparent), transparent 60%);
    filter: blur(20px);
    animation: sf-nebula-b-c6p2gmwzct 40s ease-in-out infinite alternate;
}

/* The dot fields live in the inline box-shadow generated by the component; --c below is the
   per-layer star color those shadows reference. Colors mix theme tokens over --foreground so the
   stars stay visible in both dark (near-white) and light (near-black) themes. */
.stars[b-c6p2gmwzct] {
    position: absolute;
    top: 0;
    left: 0;
    background: transparent;
    border-radius: 50%;
}

.stars1[b-c6p2gmwzct] {
    width: 1px;
    height: 1px;
    --c: color-mix(in srgb, var(--foreground) 88%, transparent);
    animation: sf-twinkle-b-c6p2gmwzct 4s ease-in-out infinite alternate, sf-drift-b-c6p2gmwzct 220s linear infinite;
}

.stars2[b-c6p2gmwzct] {
    width: 2px;
    height: 2px;
    --c: color-mix(in srgb, var(--primary) 45%, var(--foreground));
    animation: sf-twinkle-b-c6p2gmwzct 6s ease-in-out infinite alternate, sf-drift-b-c6p2gmwzct 320s linear infinite;
}

.stars3[b-c6p2gmwzct] {
    width: 3px;
    height: 3px;
    --c: color-mix(in srgb, var(--chart-4) 40%, var(--foreground));
    animation: sf-twinkle-b-c6p2gmwzct 5s ease-in-out infinite alternate, sf-drift-b-c6p2gmwzct 450s linear infinite;
}

.shooting[b-c6p2gmwzct] {
    position: absolute;
    width: 120px;
    height: 2px;
    background: linear-gradient(90deg, color-mix(in srgb, var(--primary) 55%, var(--foreground)), transparent);
    transform: rotate(-35deg);
    opacity: 0;
    animation: sf-shoot-b-c6p2gmwzct var(--dur) ease-in var(--delay) infinite;
}

@keyframes sf-twinkle-b-c6p2gmwzct {
    from { opacity: 0.35; }
    to   { opacity: 1; }
}

/* -2000px must match TileHeight in LandingStarfield.razor: every star has a duplicate one tile
   lower, so the loop restart lands on an identical frame (seamless). */
@keyframes sf-drift-b-c6p2gmwzct {
    from { transform: translateY(0); }
    to   { transform: translateY(-2000px); }
}

@keyframes sf-nebula-b-c6p2gmwzct {
    from { transform: translate(-2%, -1%) scale(1.05); }
    to   { transform: translate(2%, 2%) scale(1.15); }
}

@keyframes sf-shoot-b-c6p2gmwzct {
    0%, 85% { opacity: 0; transform: translate(0, 0) rotate(-35deg); }
    88%     { opacity: 1; }
    100%    { opacity: 0; transform: translate(-420px, 300px) rotate(-35deg); }
}

/* Stars stay visible (static, full opacity); shooting stars keep their base opacity:0. */
@media (prefers-reduced-motion: reduce) {
    .nebula[b-c6p2gmwzct], .stars1[b-c6p2gmwzct], .stars2[b-c6p2gmwzct], .stars3[b-c6p2gmwzct], .shooting[b-c6p2gmwzct] { animation: none; }
}
