# Brand loaders

> Loading states with a brand feel: a braille spinner, a benday dot-matrix progress fill, a loader that animates around a supplied logo, and a full-screen boot splash with an honest failure state.

Source: https://docs.nasaqui.com/components/brand-loaders

## Install

```bash
npx shadcn@latest add https://docs.nasaqui.com/r/brand-loaders.json
```

Four ways to say "working" that carry the product's character. `BrailleLoader` is a one-character text spinner.
`DotMatrixFill` is a halftone progress bar. `LogoLoader` moves around a mark you pass in. `BootSplash` is the full-screen
screen shown while the app starts, and it turns into a plain failure message when startup fails.

## When to use

- The first paint of an app, before any layout exists (`BootSplash`).
- A long wait that should feel branded (`LogoLoader`, `DotMatrixFill`).
- An inline, text-sized wait (`BrailleLoader`).

## When not to use

- A button that is busy: use the button's own spinner.
- Page-to-page navigation: use `RouteProgress`.
- Content that can be shown as a skeleton.

## Import

```tsx
import { BootSplash, BrailleLoader, DotMatrixFill, LogoLoader } from "@fadymondy/nasaq/web";
// inside this monorepo: "@nasaq/web"
```

## Quick start

```tsx
import { BootSplash } from "@fadymondy/nasaq/web";

export function Boot({ failed }: { failed: boolean }) {
  return (
    <BootSplash
      name="Nasaq"
      state={failed ? "failed" : "loading"}
      stage="Loading your workspace"
      error={failed ? { message: "We could not reach the server." } : undefined}
      onRetry={() => location.reload()}
    />
  );
}
```

## Anatomy

```
BootSplash                data-slot="boot-splash"
├─ LogoLoader             the mark, with a ring or pulse around it
├─ name                   product name
├─ stage line             role="status", polite
├─ DotMatrixFill          optional progress
├─ slow hint              after slowAfterMs
├─ error message + Retry  when state="failed" (role="alert")
└─ footer slot
```

## API

**BrailleLoader**: `span` props plus `label`, `frames` (default ten braille frames), `interval` (ms, default 80).

**DotMatrixFill**: `div` props plus `value` (0..100 or `null` for a sweep, required), `cols`, `rows`, `pitch` (px), `label`.

**LogoLoader**: `div` props plus:

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `mark` | `ReactNode` | `ProductMark` | The host's official mark. It is never redrawn, recoloured or moved. |
| `size` | `number` | `56` | Mark size in px; sizes the ring. |
| `variant` | `"pulse" \| "ring"` | `"ring"` | `pulse` fades the whole mark box. `ring` draws an arc outside it. |
| `value` | `number \| null` | | 0..100 makes the ring a progress ring; otherwise it spins. |
| `label` | `string` | Loading | Accessible name. |

**BootSplash**: `div` props plus `mark`, `name`, `state` (`loading` or `failed`), `stage`, `progress`, `slowAfterMs`
(default 10 seconds), `error` (`{ message, detail? }`), `onRetry`, `footer`, `labels`.

## Examples

**Bring your own mark**

```tsx
import { LogoLoader } from "@fadymondy/nasaq/web";
import { MahaamMark } from "@nasaq/brands";

export function Wait() {
  return <LogoLoader mark={<MahaamMark size={48} />} size={80} variant="pulse" />;
}
```

## Accessibility

- Each loader has `role="status"` and an accessible name; the decorative dots and braille glyphs are `aria-hidden`.
- `BootSplash` announces the stage politely and the failure with `role="alert"`.
- Under `prefers-reduced-motion` frames stop advancing and the ring and pulse hold still.

## RTL & i18n

- English and Arabic strings are built in; pass `labels` to override.
- The dot matrix and the ring always run left to right and clockwise: they draw progress, not text.
- Logos are never mirrored.

## Styling & tokens

- Colours come from `--nq-*` tokens. The braille spinner inherits the current text colour and size.
- Brand marks come only from `packages/brands` or existing Nasaq logo components.

## Do / Don't

- Do tell the truth on failure: say what failed and offer Retry.
- Do pass the real mark from `packages/brands`.
- Don't redraw or recolour a mark to suit the animation.
- Don't leave a spinner running forever: use `slowAfterMs` and a failure state.

## Related

- [`product-mark`](https://docs.nasaqui.com/components/product-mark)
- [`spinner`](https://docs.nasaqui.com/components/spinner)
- [`progress`](https://docs.nasaqui.com/components/progress)

## Lab

https://docs.nasaqui.com/?path=/docs/components-brand-brand-loaders--docs

## Code

### React

```tsx
import { BootSplash } from "@fadymondy/nasaq/web";

export function Boot({ failed }: { failed: boolean }) {
  return (
    <BootSplash
      name="Nasaq"
      state={failed ? "failed" : "loading"}
      stage="Loading your workspace"
      error={failed ? { message: "We could not reach the server." } : undefined}
      onRetry={() => location.reload()}
    />
  );
}
```

### shadcn

```tsx
import { BootSplash } from "@/components/ui/brand-loaders";

export function Boot({ failed }: { failed: boolean }) {
  return (
    <BootSplash
      name="Nasaq"
      state={failed ? "failed" : "loading"}
      stage="Loading your workspace"
      error={failed ? { message: "We could not reach the server." } : undefined}
      onRetry={() => location.reload()}
    />
  );
}
```

### Vue

```vue
<script setup lang="ts">
import { ref } from "vue";
import { NqBootSplash, NqBrailleLoader, NqDotMatrixFill, NqLogoLoader } from "@fadymondy/nasaq/vue";

const failed = ref(false);
</script>

<template>
  <div class="flex flex-col items-start gap-6">
    <div class="flex items-center gap-6">
      <NqBrailleLoader class="text-h3" />
      <NqLogoLoader :size="40" variant="pulse" />
      <NqLogoLoader :size="40" :value="60" />
    </div>
    <NqDotMatrixFill :value="62" />
    <NqBootSplash
      class="min-h-0 w-full rounded-card border border-border"
      name="Nasaq"
      :state="failed ? 'failed' : 'loading'"
      stage="Loading your workspace"
      :progress="40"
      :error="failed ? { message: 'We could not reach the server.', detail: 'req_8f2a91' } : undefined"
      @retry="failed = false"
    />
  </div>
</template>
```

### Blade

```blade
<div class="flex flex-col items-start gap-6">
    <div class="flex items-center gap-6">
        <x-nq::brand-loaders.braille class="text-h3" />
        <x-nq::brand-loaders.logo :size="40" variant="pulse" />
        <x-nq::brand-loaders.logo :size="40" :value="60" />
    </div>
    <x-nq::brand-loaders.dot-matrix :value="62" />
    <x-nq::brand-loaders class="min-h-0 w-full rounded-card border border-border" name="Nasaq" stage="Loading your workspace" :progress="40" />
    <x-nq::brand-loaders class="min-h-0 w-full rounded-card border border-border" state="failed" name="Nasaq" :error="['message' => 'We could not reach the server.', 'detail' => 'req_8f2a91']" retry />
</div>
```

### HTML + Alpine

```html
<div class="flex flex-col items-start gap-6">
    <div class="flex items-center gap-6">
        <span data-slot="braille-loader" role="status" x-data="nqBrailleLoader(JSON.parse('[\u0022\\u280b\u0022,\u0022\\u2819\u0022,\u0022\\u2839\u0022,\u0022\\u2838\u0022,\u0022\\u283c\u0022,\u0022\\u2834\u0022,\u0022\\u2826\u0022,\u0022\\u2827\u0022,\u0022\\u2807\u0022,\u0022\\u280f\u0022]'), 80)"
    class="inline-flex text-h3">
    <span aria-hidden="true" dir="ltr" class="inline-block w-[1ch] text-center font-mono leading-none" x-text="frame">⠋</span>
    <span class="sr-only">Loading</span>
</span>
        <div data-slot="logo-loader" data-variant="pulse" role="status" aria-label="Loading"
        style="width: 68px; height: 68px"
    class="relative inline-flex shrink-0 items-center justify-center">
        <span aria-hidden="true" class="inline-flex motion-safe:animate-pulse">
        <svg data-slot="product-mark" viewBox="0 0 100 100" width="40" height="40"  aria-hidden="true"  shape-rendering="crispEdges"  class="shrink-0">
            <g class="dark:hidden">
                            <rect x="0" y="20" width="20" height="20" fill="#15694A" />
                            <rect x="80" y="20" width="20" height="20" fill="#15694A" />
                            <rect x="20" y="40" width="20" height="20" fill="#15694A" />
                            <rect x="60" y="40" width="20" height="20" fill="#15694A" />
                            <rect x="40" y="60" width="20" height="20" fill="#C9A227" />
                    </g>
        <g class="hidden dark:block">
                            <rect x="0" y="20" width="20" height="20" fill="#4CC495" />
                            <rect x="80" y="20" width="20" height="20" fill="#4CC495" />
                            <rect x="20" y="40" width="20" height="20" fill="#4CC495" />
                            <rect x="60" y="40" width="20" height="20" fill="#4CC495" />
                            <rect x="40" y="60" width="20" height="20" fill="#C9A227" />
                    </g>
    </svg>
    </span>
</div>
        <div data-slot="logo-loader" data-variant="ring" role="progressbar" aria-label="Loading"
     aria-valuemin="0" aria-valuemax="100" aria-valuenow="60"     style="width: 68px; height: 68px"
    class="relative inline-flex shrink-0 items-center justify-center">
            <svg aria-hidden="true" viewBox="0 0 100 100" class="absolute inset-0 size-full -rotate-90">
            <circle cx="50" cy="50" r="46" fill="none" stroke-width="2" class="stroke-border" />
            <circle cx="50" cy="50" r="46" fill="none" stroke-width="2.5" stroke-linecap="round" stroke-dasharray="289.0265" stroke-dashoffset="115.6106"
                class="stroke-primary transition-[stroke-dashoffset] duration-300 ease-nq motion-reduce:transition-none" />
        </svg>
        <span aria-hidden="true" class="inline-flex">
        <svg data-slot="product-mark" viewBox="0 0 100 100" width="40" height="40"  aria-hidden="true"  shape-rendering="crispEdges"  class="shrink-0">
            <g class="dark:hidden">
                            <rect x="0" y="20" width="20" height="20" fill="#15694A" />
                            <rect x="80" y="20" width="20" height="20" fill="#15694A" />
                            <rect x="20" y="40" width="20" height="20" fill="#15694A" />
                            <rect x="60" y="40" width="20" height="20" fill="#15694A" />
                            <rect x="40" y="60" width="20" height="20" fill="#C9A227" />
                    </g>
        <g class="hidden dark:block">
                            <rect x="0" y="20" width="20" height="20" fill="#4CC495" />
                            <rect x="80" y="20" width="20" height="20" fill="#4CC495" />
                            <rect x="20" y="40" width="20" height="20" fill="#4CC495" />
                            <rect x="60" y="40" width="20" height="20" fill="#4CC495" />
                            <rect x="40" y="60" width="20" height="20" fill="#C9A227" />
                    </g>
    </svg>
    </span>
</div>
    </div>
    <div data-slot="dot-matrix-fill" role="progressbar" aria-label="Loading"
     aria-valuemin="0" aria-valuemax="100" aria-valuenow="62"     dir="ltr" x-data="nqDotMatrixFill(24, 5, 62)" x-modelable="value"
    style="grid-template-columns: repeat(24, 10px); grid-auto-rows: 10px"
    class="inline-grid">
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(0.474); opacity: 0.474"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(0.799); opacity: 0.799"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(0.474); opacity: 0.474"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(0.799); opacity: 0.799"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(1.000); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-primary"
                style="width: 6.2px; height: 6.2px; transform: scale(0.474); opacity: 0.474"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
            <span aria-hidden="true" class="flex items-center justify-center">
            <span data-dot class="block rounded-full transition-[transform,opacity] duration-150 ease-nq motion-reduce:transition-none bg-border"
                style="width: 6.2px; height: 6.2px; transform: scale(0.350); opacity: 1"></span>
        </span>
    </div>
    <div data-slot="boot-splash" data-state="loading"  aria-busy="true"     x-data="nqBootSplash(8000)"
    class="flex flex-col items-center bg-background p-6 text-foreground min-h-0 w-full rounded-card border border-border">
    <div class="flex w-full max-w-sm flex-1 flex-col items-center justify-center gap-6 text-center">
                                    <div data-slot="logo-loader" data-variant="ring" role="progressbar" aria-label="Loading your workspace"
     aria-valuemin="0" aria-valuemax="100" aria-valuenow="40"     style="width: 95px; height: 95px"
    class="relative inline-flex shrink-0 items-center justify-center">
            <svg aria-hidden="true" viewBox="0 0 100 100" class="absolute inset-0 size-full -rotate-90">
            <circle cx="50" cy="50" r="46" fill="none" stroke-width="2" class="stroke-border" />
            <circle cx="50" cy="50" r="46" fill="none" stroke-width="2.5" stroke-linecap="round" stroke-dasharray="289.0265" stroke-dashoffset="173.4159"
                class="stroke-primary transition-[stroke-dashoffset] duration-300 ease-nq motion-reduce:transition-none" />
        </svg>
        <span aria-hidden="true" class="inline-flex">
        <svg data-slot="product-mark" viewBox="0 0 100 100" width="56" height="56"  aria-hidden="true"  shape-rendering="crispEdges"  class="shrink-0">
            <g class="dark:hidden">
                            <rect x="0" y="20" width="20" height="20" fill="#15694A" />
                            <rect x="80" y="20" width="20" height="20" fill="#15694A" />
                            <rect x="20" y="40" width="20" height="20" fill="#15694A" />
                            <rect x="60" y="40" width="20" height="20" fill="#15694A" />
                            <rect x="40" y="60" width="20" height="20" fill="#C9A227" />
                    </g>
        <g class="hidden dark:block">
                            <rect x="0" y="20" width="20" height="20" fill="#4CC495" />
                            <rect x="80" y="20" width="20" height="20" fill="#4CC495" />
                            <rect x="20" y="40" width="20" height="20" fill="#4CC495" />
                            <rect x="60" y="40" width="20" height="20" fill="#4CC495" />
                            <rect x="40" y="60" width="20" height="20" fill="#C9A227" />
                    </g>
    </svg>
    </span>
</div>
                            <p class="text-h3 text-foreground">Nasaq</p>                    <div class="flex flex-col items-center gap-1.5" role="status" aria-live="polite">
                <p class="text-body-sm text-foreground">Loading your workspace</p>
                                    <p class="text-caption text-muted-foreground tabular-nums"><bdi data-slot="num" data-numeric="" class="tabular-nums">40</bdi>
%</p>
                                                    <p class="text-caption text-muted-foreground" x-show="slow" style="display: none">This is taking longer than usual. Still trying.</p>
                            </div>
            </div>
    </div>
    <div data-slot="boot-splash" data-state="failed"     x-data="nqBootSplash(0)"
    class="flex flex-col items-center bg-background p-6 text-foreground min-h-0 w-full rounded-card border border-border">
    <div class="flex w-full max-w-sm flex-1 flex-col items-center justify-center gap-6 text-center">
                    <span data-slot="boot-splash-mark" aria-hidden="true" class="inline-flex items-center justify-center" style="width: 96px; height: 96px">
                <svg data-slot="product-mark" viewBox="0 0 100 100" width="56" height="56"  aria-hidden="true"  shape-rendering="crispEdges"  class="shrink-0">
            <g class="dark:hidden">
                            <rect x="0" y="20" width="20" height="20" fill="#15694A" />
                            <rect x="80" y="20" width="20" height="20" fill="#15694A" />
                            <rect x="20" y="40" width="20" height="20" fill="#15694A" />
                            <rect x="60" y="40" width="20" height="20" fill="#15694A" />
                            <rect x="40" y="60" width="20" height="20" fill="#C9A227" />
                    </g>
        <g class="hidden dark:block">
                            <rect x="0" y="20" width="20" height="20" fill="#4CC495" />
                            <rect x="80" y="20" width="20" height="20" fill="#4CC495" />
                            <rect x="20" y="40" width="20" height="20" fill="#4CC495" />
                            <rect x="60" y="40" width="20" height="20" fill="#4CC495" />
                            <rect x="40" y="60" width="20" height="20" fill="#C9A227" />
                    </g>
    </svg>
            </span>
                <p class="text-h3 text-foreground">Nasaq</p>                    <div role="alert" class="flex w-full flex-col items-center gap-3">
                <h1 class="text-h3 text-foreground">Could not start</h1>
                <p class="text-body-sm text-foreground">We could not reach the server.</p>
                <p class="text-caption text-muted-foreground">We could not finish starting. Try again. If it keeps failing, send the details below to support.</p>                                    <div class="flex w-full items-center gap-2 rounded-control border border-border bg-muted py-1 ps-3 pe-1">
                        <span class="sr-only">Details</span>
                        <code dir="ltr" class="min-w-0 flex-1 truncate text-start font-mono text-caption text-foreground">req_8f2a91</code>
                        <span class="contents" x-data="nqCopyButton('req_8f2a91', 1500)">
    <button data-slot="copy-button"
     type="button"                         aria-label="Copy details" x-on:click="copy()" x-bind:data-copied="state === &#039;copied&#039; ? &#039;&#039; : null" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-foreground hover:bg-nq-hover size-control-sm p-0 data-copied:text-nq-success-text">
        <svg aria-hidden="true" x-show="state !== 'copied'" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <rect width="14" height="14" x="8" y="8" rx="2" ry="2"/>
  <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/>
</svg>        <svg aria-hidden="true" x-show="state === 'copied'" style="display: none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M20 6 9 17l-5-5"/>
</svg></button>
    <span data-slot="copy-button-status" role="status" aria-live="polite" class="sr-only"
        data-copied-label="Copied to clipboard" data-failed-label="Could not copy"
        x-text="state === 'copied' ? $el.dataset.copiedLabel : state === 'failed' ? $el.dataset.failedLabel : ''"></span>
</span>
                    </div>
                                                    <button data-slot="button"
     type="button"                         x-on:click="retry()" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 bg-primary text-primary-foreground hover:bg-[color-mix(in_oklab,var(--nq-action)_88%,var(--nq-fg))] h-control px-[var(--nq-control-pad)]">
        <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/>
  <path d="M21 3v5h-5"/>
  <path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/>
  <path d="M8 16H3v5"/>
</svg>                        Try again</button>
                            </div>
            </div>
    </div>
</div>
```
