diff --git a/.claude/skills/gemini-image-generator/SKILL.md b/.claude/skills/gemini-image-generator/SKILL.md new file mode 100644 index 00000000..2558bb90 --- /dev/null +++ b/.claude/skills/gemini-image-generator/SKILL.md @@ -0,0 +1,58 @@ +--- +name: gemini-image-generator +description: Generate images using Google Gemini with customizable options +--- + +# gemini-image-generator + +## Instructions + +Use this skill to generate images using Google Gemini's image generation model. The skill supports: + +- Text-to-image generation from prompts +- Image-to-image generation with a reference image +- Multiple output sizes (1K, 2K, 4K) +- Custom output paths + +The API key must be set via the `GEMINI_API_KEY` environment variable. + +## Parameters + +- `--prompt` (required): The text prompt describing the image to generate +- `--output` (required): Output file path for the generated image +- `--reference`: Optional reference image for style/content guidance +- `--size`: Image size - "1K", "2K", or "4K" (default: 4K) + +## Examples + +### Basic text-to-image generation + +```bash +./scripts/generate.py --prompt "A serene mountain landscape at sunset" --output images/landscape.png +``` + +### With reference image for style guidance + +```bash +./scripts/generate.py --prompt "Same character but wearing a party hat" --reference images/character.png --output images/party.png +``` + +### Different output size + +```bash +./scripts/generate.py --prompt "Abstract art" --output art.png --size 2K +``` + +## Setup + +Before first use, set up the virtual environment: + +```bash +cd scripts && python3 -m venv venv && ./venv/bin/pip install -r requirements.txt +``` + +Set your API key: + +```bash +export GEMINI_API_KEY="your-api-key-here" +``` diff --git a/.claude/skills/gemini-image-generator/scripts/generate.py b/.claude/skills/gemini-image-generator/scripts/generate.py new file mode 100755 index 00000000..9081a2ba --- /dev/null +++ b/.claude/skills/gemini-image-generator/scripts/generate.py @@ -0,0 +1,125 @@ +#!/bin/sh +''''exec "`dirname $0`/venv/bin/python3" "$0" "$@" #''' +import argparse +import base64 +import io +import os +import sys +from google import genai +from google.genai import types +from PIL import Image + + +def main(): + parser = argparse.ArgumentParser( + description="Generate images using Google Gemini.", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + %(prog)s --prompt "A cat in space" --output cat.png + %(prog)s --prompt "Same style but blue" --reference input.png --output blue.png + %(prog)s --prompt "Abstract art" --output art.png --size 2K + """ + ) + parser.add_argument( + "--prompt", + required=True, + help="Text prompt describing the image to generate" + ) + parser.add_argument( + "--output", + required=True, + help="Output file path for the generated image" + ) + parser.add_argument( + "--reference", + help="Optional reference image path for style/content guidance" + ) + parser.add_argument( + "--size", + default="4K", + choices=["1K", "2K", "4K"], + help="Output image size (default: 4K)" + ) + args = parser.parse_args() + + # Get API key from environment + api_key = os.environ.get("GEMINI_API_KEY") + if not api_key: + print("Error: GEMINI_API_KEY environment variable not set.", file=sys.stderr) + print("Set it with: export GEMINI_API_KEY='your-api-key'", file=sys.stderr) + sys.exit(1) + + client = genai.Client(api_key=api_key) + + # Build content list + contents = [args.prompt] + + # Add reference image if provided + if args.reference: + try: + reference_image = Image.open(args.reference) + contents.append(reference_image) + print(f"Using reference image: {args.reference}") + except FileNotFoundError: + print(f"Error: Reference image '{args.reference}' not found.", file=sys.stderr) + sys.exit(1) + except Exception as e: + print(f"Error loading reference image: {e}", file=sys.stderr) + sys.exit(1) + + # Create output directory if it doesn't exist + output_dir = os.path.dirname(args.output) + if output_dir and not os.path.exists(output_dir): + os.makedirs(output_dir) + print(f"Created output directory: {output_dir}") + + print(f"Generating image with size: {args.size}...") + + try: + response = client.models.generate_content( + model="gemini-3-pro-image-preview", + contents=args.prompt + ) + except Exception as e: + print(f"Error generating image: {e}", file=sys.stderr) + sys.exit(1) + + # Process response - Nano banana format + image_saved = False + print(f"Response parts count: {len(response.parts)}") + for i, part in enumerate(response.parts): + print(f"Part {i}: inline_data={part.inline_data is not None}, text={part.text is not None}") + if part.inline_data is not None: + print(f" MIME type: {part.inline_data.mime_type}") + print(f" Data length: {len(part.inline_data.data)}") + # The data might be already in bytes or base64-encoded + try: + # First try to use the data directly (as bytes) + if isinstance(part.inline_data.data, bytes): + image_data = part.inline_data.data + print(f" Using data directly as bytes") + else: + # If it's a string, decode from base64 + image_data = base64.b64decode(part.inline_data.data) + print(f" Decoded data from base64") + + print(f" Image data length: {len(image_data)}") + print(f" First 20 bytes: {image_data[:20]}") + generated_image = Image.open(io.BytesIO(image_data)) + generated_image.save(args.output) + print(f"Image saved to: {args.output}") + image_saved = True + break + except Exception as e: + print(f" Error processing image data: {e}") + elif part.text is not None: + print(f"Model response: {part.text}") + + if not image_saved: + print("Warning: No image was generated in the response.", file=sys.stderr) + sys.exit(1) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/.claude/skills/gemini-image-generator/scripts/requirements.txt b/.claude/skills/gemini-image-generator/scripts/requirements.txt new file mode 100644 index 00000000..bb86e6b1 --- /dev/null +++ b/.claude/skills/gemini-image-generator/scripts/requirements.txt @@ -0,0 +1,2 @@ +google-genai +Pillow \ No newline at end of file diff --git a/.gitignore b/.gitignore index ca38523d..cd9f2593 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,4 @@ vite.config.ts.timestamp-* # Stuff _potential -_unused \ No newline at end of file +_unused diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..ed8ee0b4 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,163 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is a monorepo for game development using web technologies. The stack consists of: +- **Frontend**: SvelteKit 2 (with Svelte 5) deployed on Vercel +- **Backend**: Bun-based WebSocket server using `async-await-websockets` deployed on Render +- **Database**: MongoDB +- **Styling**: Tailwind CSS v4 + +## Development Commands + +### Client (Frontend) + +```bash +# Install dependencies +bun install + +# Start development server (automatically pulls Vercel env vars) +bun dev + +# Build for production +bun run build + +# Type checking +bun run check +bun run check:watch # with watch mode + +# Linting and formatting +bun run lint +bun run format +``` + +### Server (Backend) + +```bash +cd svelte-game-server + +# Install dependencies +bun install + +# Start development server (with auto-reload) +bun dev + +# Start production server +bun start +``` + +## Architecture + +### Frontend Architecture + +#### Global State Management +The application uses a **singleton class-based state manager** (`src/app.svelte.ts`) that leverages Svelte 5's `$state` runes. This is the central source of truth for application state: + +- `app.socket`: WebSocket connection instance +- `app.token`: User authentication token +- `app.settings`: User preferences (synced to localStorage) +- `app.overlay`: Current overlay/modal state +- `app.notifications`: Notification queue +- `app.dialog`: Dialog system state +- `app.tooltip`: Tooltip system state +- `app.serverTimestamp`: Server time synchronization +- `app.mqs`: Media query states (desktop, tablet, smartphone, etc.) + +The `app` object is **globally auto-imported** in all `.svelte` files via `sveltekit-autoimport` configuration in `vite.config.js`. + +#### Auto-Import System +The project uses `sveltekit-autoimport` to automatically import commonly used modules and components: + +**Globally available without imports:** +- All components in `src/components/**/*.svelte` (flattened, PascalCase) +- `ENV` from `@/constants/ENV_VARS` +- `app` from `@/app.svelte` +- `Howl`, `Howler` from `howler` +- `onMount`, `onDestroy` from `svelte` +- `tooltip` from `@/ts/use` +- `tw` (alias for `twMerge`) from `tailwind-merge` + +Components are also made globally available via TypeScript declarations in `src/components.d.ts`, which is auto-generated by `scripts/generate-component-typedefs.ts` on file changes during development. + +#### Environment Variables +Environment variables are accessed through `src/constants/ENV_VARS.ts`, which wraps `import.meta.env.VITE_*` variables. This is necessary because Vite crashes when parsing `import.meta` in Svelte files with CSS. + +Environment files: +- `.env.local` for development (excluded from git) +- Vercel env vars are pulled automatically with `bun run predev` + +#### WebSocket Communication +The client uses `async-await-websockets/client` to communicate with the backend. Connection is established in `src/components/global/ConnectSocket.svelte` and stored in `app.socket`. All WebSocket calls follow this pattern: + +```javascript +const response = await app.socket.sendAsync('event-name', { + token: app.token, + // ... other data +}); +``` + +#### Component Organization +- `src/components/` - Reusable UI components (flattened namespace) +- `src/components/global/` - App-wide singleton components (ConnectSocket, Notifications, etc.) +- `src/components/overlays/` - Modal/overlay components +- `src/components/ui/` - Basic UI primitives +- `src/components/form/` - Form elements +- `src/components/buttons/` - Button components +- `src/routes/` - SvelteKit pages and layouts + +### Backend Architecture + +#### WebSocket Event System +The backend uses `async-await-websockets` (v3.0.3) with an event-driven architecture. The server initializes in `svelte-game-server/index.js`: + +```javascript +aaw('events', { mongo: mongoDb }, undefined, loggerCallback); +``` + +#### Event Handlers +Event handlers are auto-discovered from `svelte-game-server/events/**/*.js`. Each handler exports an async function that receives: +- `body`: Request payload +- `context`: Shared context (includes `mongo` database instance) +- Returns: Response data + +Event file structure follows a directory-based naming convention: +- `events/user/login.js` → handles `user/login` event +- `events/fetch-server-time.js` → handles `fetch-server-time` event + +#### Database Access +MongoDB client is initialized in `svelte-game-server/index.js` and passed to all event handlers via the `context.mongo` object. + +## Key Patterns + +### State Persistence +User settings in `app.settings` are automatically synced to localStorage via a `$effect` in the app class constructor. Game state (like `app.experience`) is debounced and saved to the backend every 1 second. + +### Server Time Synchronization +The app maintains server time sync via `app.serverTimestampSnapshot` and `app.syncPerformanceNow` to enable accurate time-based calculations on the client. + +### Media Queries +Use `app.mqs.desktop`, `app.mqs.tablet`, `app.mqs.smartphone`, etc. for responsive logic. These are reactive Svelte stores that update automatically. + +### Notifications +Use the `notify()` function from `@/ts/actions` to display notifications: +```javascript +notify({ success: 'Message' }); +notify({ error: 'Error message' }); +``` + +### Audio Management +Audio files in `/static/audio/**/*` are auto-imported and available in `app.audio` object with filename as key (without extension). + +## Important Quirks + +1. **No `import.meta.env` in Svelte files with CSS** - Always use `ENV` from `@/constants/ENV_VARS.ts` instead +2. **Components don't need imports** - They're globally available via auto-import and generated typedefs +3. **Path alias** - Use `@/` to reference `src/` directory +4. **Bun is required** - Both frontend and backend use Bun as the runtime/package manager +5. **MongoDB connection string** - Server requires `MONGO_CONNECT` in `.env` file in `svelte-game-server/` directory + +## Testing Notes + +This codebase does not currently have automated tests configured. When implementing new features, manual testing is required. diff --git a/src/Iconice.css b/src/Iconice.css index 74c62604..4f52b56c 100644 --- a/src/Iconice.css +++ b/src/Iconice.css @@ -2,7 +2,6 @@ --icon-arcane: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20480%20480%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M408.267%2C108.022c-39.981-39.981-104.811-39.981-144.806%2C0l-23.462%2C23.461-23.46-23.461c-39.995-39.981-104.825-39.981-144.806%2C0-39.981%2C39.981-39.981%2C104.812%2C0%2C144.806l23.461%2C23.461%2C144.805%2C144.806%2C144.806-144.806%2C23.462-23.461c39.981-39.995%2C39.981-104.825%2C0-144.806Z%22%2F%3E%0A%3C%2Fsvg%3E'); --icon-blood: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20400%20400%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M174.743%2C71.77l-17.79%2C45.313%2C63.789%2C87.2%2C91.006-6.518-2.948-81.385-19.005-3.668c1.153-3.569-2.575-14.684-.097-16.535l56.939.692%2C7.619%2C103.903-111.015%2C57.613-101.892-57.732c-1.78-1.14-1.697-3.107-2.14-4.86-7.461-29.53-10.012-61.923-17.375-91.679l.054-3.679%2C52.854-28.666Z%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M273.655%2C47.846l2.079%2C62.913-49.989-8.003-1.873%2C55.374%2C49.865%2C13.626-1.996-29.003-13.002%2C1.002v10.001s-20.897-5.092-20.897-5.092l.899-29.909%2C57.009%2C8%2C2.054%2C57.39c-.244.901-4.574%2C1.527-5.569%2C1.607-21.253%2C1.707-42.594%2C2.607-63.792%2C4.85l-55.691-75.391%2C29.937-76.971%2C70.966%2C9.607Z%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M45.744%2C381.76l14.763-11.462c-6.39-15.684-3.539-31.104%2C7.725-43.55.837-.925%2C5.449-6.07%2C6.512-4.978-4.367%2C10.728.541%2C26.75%2C13.972%2C25.504%2C24.576-22.172%2C47.317-46.232%2C67.901-72.154%2C2.542-4.031-1.873-8.611-2.634-13.099-.506-2.984-.327-6.15-.123-9.149%2C6.995.085%2C21.782-13.425%2C26.532-13.901%2C5.691-.57%2C3.387%2C4.453%2C3.562%2C6.284%2C1.264%2C13.27%2C2.953%2C25.337%2C8.791%2C37.496l-18.792%2C2.228-19.054%2C23.426c3.403%2C10.977%2C17.136%2C9.353%2C25.845%2C6.365-6.161%2C12.641-21.37%2C22.063-35.5%2C22.069-4.422.002-11.683-3.318-15.481-1.563-2.873%2C1.328-15.196%2C15.532-19.005%2C18.998s-31.345%2C27.486-33.514%2C27.486h-31.5Z%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M166.741%2C231.748c-32.348%2C18.896-68.442%2C27.202-105.993%2C25.007-.91-.781%2C7.546-11.514%2C8.599-12.891%2C14.84-19.407%2C32.971-37.614%2C55.907-47.094l3.495%2C12.486%2C37.993%2C22.493Z%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M267.73%2C260.761c7.064%2C20.013%2C8.179%2C46.127%2C2.042%2C66.554-.285.949.543%2C1.983-1.475%2C1.401-6.536-1.883-26.569-14.662-32.869-19.141-20.889-14.853-36.178-34.19-37.675-60.815l44.477%2C24.959%2C25.5-12.958Z%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M350.737%2C272.757c-22.885-1.588-44.487-6.455-63.366-19.912l-.624-2.069%2C36.291-17.911c11.844%2C10.711%2C23.023%2C24.494%2C27.699%2C39.892Z%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M120.737%2C173.756c-18.06-5.101-31.225-21.824-40.993-36.986l34.067-.577%2C6.927%2C37.563Z%22%2F%3E%0A%3C%2Fsvg%3E'); --icon-checkmark: url('data:image/svg+xml;utf8,%3C!--%20Generated%20by%20IcoMoon.io%20--%3E%0A%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0A%3Cg%20id%3D%22icomoon-ignore%22%3E%0A%3C%2Fg%3E%0A%3Cpath%20fill%3D%22%23000%22%20d%3D%22M432%2064l-240%20240-112-112-80%2080%20192%20192%20320-320z%22%3E%3C%2Fpath%3E%0A%3C%2Fsvg%3E%0A'); - --icon-circle: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20321.7%20321.7%22%3E%0A%20%20%3Ccircle%20fill%3D%22%23fff%22%20cx%3D%22160.9%22%20cy%3D%22160.9%22%20r%3D%22160.9%22%20%2F%3E%0A%3C%2Fsvg%3E'); --icon-components: url('data:image/svg+xml;utf8,%3C!--%20Generated%20by%20IcoMoon.io%20--%3E%0A%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0A%3Cg%20id%3D%22icomoon-ignore%22%3E%0A%3C%2Fg%3E%0A%3Cpath%20fill%3D%22%23000%22%20d%3D%22M192%20288h-160c-17.688%200-32%2014.312-32%2032v160c0%2017.688%2014.312%2032%2032%2032h160c17.688%200%2032-14.312%2032-32v-160c0-17.688-14.312-32-32-32zM160%20448h-96v-96h96v96zM192%200h-160c-17.688%200-32%2014.312-32%2032v160c0%2017.688%2014.312%2032%2032%2032h160c17.688%200%2032-14.312%2032-32v-160c0-17.688-14.312-32-32-32zM160%20160h-96v-96h96v96zM480%20288h-160c-17.688%200-32%2014.312-32%2032v160c0%2017.688%2014.312%2032%2032%2032h160c17.688%200%2032-14.312%2032-32v-160c0-17.688-14.312-32-32-32zM448%20448h-96v-96h96v96zM480%200h-160c-17.688%200-32%2014.312-32%2032v160c0%2017.688%2014.312%2032%2032%2032h160c17.688%200%2032-14.312%2032-32v-160c0-17.688-14.312-32-32-32zM448%20160h-96v-96h96v96z%22%3E%3C%2Fpath%3E%0A%3C%2Fsvg%3E%0A'); --icon-corruption: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20800%20800%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M218.883%2C354.368c-11.678%2C29.501-23.354%2C58.387-34.827%2C87.477-8.604%2C21.511-5.122%2C41.383%2C8.399%2C59.821%2C11.882%2C15.979%2C27.657%2C27.247%2C44.866%2C36.466%2C48.553%2C25.608%2C100.794%2C38.31%2C154.878%2C45.275%2C38.105%2C4.917%2C76.21%2C6.761%2C114.11%2C0%2C13.521-2.458%2C27.247-6.146%2C39.949-11.677%2C28.681-12.906%2C36.671-32.164%2C32.369-68.425-2.663-22.945-3.688-46.095-5.531-69.244-.205-2.254%2C0-4.712%2C0-7.99%2C30.115%2C11.882%2C58.182%2C25.608%2C83.38%2C44.251%2C13.726%2C10.038%2C26.837%2C21.101%2C38.105%2C33.803%2C27.247%2C31.139%2C26.018%2C60.231-1.229%2C91.165-51.626%2C58.182-117.183%2C90.141-193.188%2C100.794-125.788%2C17.823-241.536-11.063-347.247-80.308-53.675-35.237-96.696-80.717-123.944-139.718-4.917-10.448-8.809-21.511-10.653-32.779-4.098-26.428%2C8.604-45.275%2C30.525-58.387%2C25.608-15.365%2C54.084-22.535%2C83.176-25.813%2C27.043-3.278%2C54.494-3.278%2C81.536-4.917%2C1.844-.41%2C3.278%2C0%2C5.326.205h0Z%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M647.871%2C64.688c-81.332%2C70.679-154.674%2C146.274-202.202%2C243.176%2C19.462-21.511%2C38.515-43.227%2C58.182-64.532s39.744-42.203%2C61.255-62.484c-2.458%2C7.99-5.326%2C15.979-7.58%2C24.174-17.823%2C61.869-19.257%2C124.968-16.184%2C188.681.819%2C18.438%2C1.844%2C36.876%2C3.278%2C55.109.819%2C10.448-3.482%2C18.028-13.316%2C20.077-17.823%2C3.892-36.056%2C8.809-54.084%2C9.014-66.172.41-130.089-11.472-190.115-40.359-16.594-7.99-32.164-17.823-43.636-32.983-6.146-8.194-7.99-15.979-3.278-26.428%2C36.466-79.898%2C79.488-155.288%2C141.972-218.182%2C43.841-44.046%2C94.443-76.824%2C155.698-91.575%2C34.827-7.99%2C77.439-9.834%2C110.013-3.688h-.003Z%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M221.546%2C424.841c43.636%2C44.046%2C99.155%2C60.845%2C156.518%2C72.113%2C26.632%2C5.326%2C53.879%2C7.99%2C80.922%2C9.834%2C30.115%2C1.844%2C59.821-1.024%2C89.116-12.702.819%2C9.629%2C1.434%2C18.642%2C2.254%2C27.657.819%2C9.219-2.868%2C17.004-11.063%2C20.077-15.57%2C5.736-31.344%2C12.497-47.324%2C14.136-83.38%2C7.785-163.482-5.736-238.873-42.817-12.906-6.351-24.379-16.184-34.827-26.018s-13.111-22.535-6.556-36.466c3.687-8.399%2C6.556-17.004%2C9.834-25.813h-.001Z%22%2F%3E%0A%3C%2Fsvg%3E'); --icon-cross: url('data:image/svg+xml;utf8,%3C!--%20Generated%20by%20IcoMoon.io%20--%3E%0A%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0A%3Cg%20id%3D%22icomoon-ignore%22%3E%0A%3C%2Fg%3E%0A%3Cpath%20fill%3D%22%23000%22%20d%3D%22M507.331%20411.33c-0.002-0.002-0.004-0.004-0.006-0.005l-155.322-155.325%20155.322-155.325c0.002-0.002%200.004-0.003%200.006-0.005%201.672-1.673%202.881-3.627%203.656-5.708%202.123-5.688%200.912-12.341-3.662-16.915l-73.373-73.373c-4.574-4.573-11.225-5.783-16.914-3.66-2.080%200.775-4.035%201.984-5.709%203.655%200%200.002-0.002%200.003-0.004%200.005l-155.324%20155.326-155.324-155.325c-0.002-0.002-0.003-0.003-0.005-0.005-1.673-1.671-3.627-2.88-5.707-3.655-5.69-2.124-12.341-0.913-16.915%203.66l-73.374%2073.374c-4.574%204.574-5.784%2011.226-3.661%2016.914%200.776%202.080%201.985%204.036%203.656%205.708%200.002%200.001%200.003%200.003%200.005%200.005l155.325%20155.324-155.325%20155.326c-0.001%200.002-0.003%200.003-0.004%200.005-1.671%201.673-2.88%203.627-3.657%205.707-2.124%205.688-0.913%2012.341%203.661%2016.915l73.374%2073.373c4.575%204.574%2011.226%205.784%2016.915%203.661%202.080-0.776%204.035-1.985%205.708-3.656%200.001-0.002%200.003-0.003%200.005-0.005l155.324-155.325%20155.324%20155.325c0.002%200.001%200.004%200.003%200.006%200.004%201.674%201.672%203.627%202.881%205.707%203.657%205.689%202.123%2012.342%200.913%2016.914-3.661l73.373-73.374c4.574-4.574%205.785-11.227%203.662-16.915-0.776-2.080-1.985-4.034-3.657-5.707z%22%3E%3C%2Fpath%3E%0A%3C%2Fsvg%3E%0A'); @@ -20,7 +19,6 @@ --icon-logo-apeegg-simple: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22340%22%20height%3D%22448%22%3E%0A%20%20%3Cpath%20fill%3D%22%23000%22%0A%20%20%20%20d%3D%22M305.249%20120.181C273.934%2053.884%20221.742%200%20169.834%200%20117.079%200%2064.323%2058.398%2033.008%20126.106%209.028%20178.861%200%20237.259%200%20278.167c0%2093.944%2076.171%20169.834%20169.834%20169.834s169.834-76.171%20169.834-169.834c0-41.753-9.31-104.383-34.418-157.985zM132.877%20390.166c-37.521.847-37.521-27.647-37.521-27.647%202.257-24.544%2020.03-19.184%2043.164-20.03s42.035%2016.927%2043.164%2026.801c.847%209.874-11.284%2020.03-48.806%2020.877zm115.949-180.272c0%2018.337%2014.952%2027.93%2018.056%2036.957%203.103%209.31%206.489%2027.083-2.821%2030.751-13.824%205.078-26.237-4.514-44.574-16.081s-7.617%2010.721-7.617%2010.721%2017.773%2028.493%2017.773%2055.295-21.441%2018.337-21.441%2018.337-30.468-25.108-69.683-25.108c-39.214%200-40.343%209.028-54.73%209.874-14.67.847-15.234-3.95-15.234-17.773s7.617-22.851%2018.056-34.7c7.335-8.181%206.489-23.134-5.925-16.927s-37.521%2015.234-38.368%200%2022.287-35.265%2022.287-49.934-32.161-29.904-33.854-41.471C29.34%20158.268%2047.678%2094.51%2081.532%2093.664c33.008-.847%2010.438%2028.493%2063.194%2029.904h6.771c7.899-.282%2021.723-.564%2043.728-20.594%2027.647-25.39%2052.192-20.03%2062.912-11.567s32.161%2020.03%2032.161%2057.552c0%2037.804-41.471%2042.317-41.471%2060.937z%22%20%2F%3E%0A%20%20%3Cpath%20fill%3D%22%23000%22%0A%20%20%20%20d%3D%22M116.232%20208.201c-12.695%201.975-29.058-9.028-34.418-12.977-.847-.564-1.975-.282-2.257.847-6.489%2024.544%206.206%2023.98%2012.413%2025.955%206.489%201.975%202.539%206.489-.282%208.181-3.385%201.693-15.799-1.128-15.799-1.128.564%207.335%2014.388%205.078%2020.03%204.796%201.41%200%202.821-.564%203.95-1.693%206.489-5.642%2029.622-25.955%2016.363-23.98zm69.4%205.643c-11.849-.282%205.078%2014.67%2013.542%2021.723%203.103%202.539%206.771%204.232%2010.721%204.796%206.489.847%2015.799.847%2016.081-5.642%200%200-13.259%203.103-15.799%201.128s-7.053-6.206-.282-8.181c6.489-1.975%2030.186-1.411%2022.569-27.93-.282%200-30.186%2014.388-46.831%2014.106zm-10.72%2020.312c-6.206%200-34.418%2028.212-34.983%2033.008-.282%204.514-7.053-31.033-26.237-30.186-19.184.564-12.977%2013.259-11.003%2019.184s16.645%2017.491%2021.159%2017.773c0%200-13.824-13.541-13.824-18.902s1.41-7.053%205.36-7.053%209.31%203.103%2012.695%2010.72c2.539%205.925%206.206%2013.824%207.617%2017.491.564%201.128%201.411%201.693%202.821%201.693.847%200%201.975-.564%202.257-1.128%203.95-5.642%2021.441-28.776%2031.879-28.776%2011.849%200%207.053%2012.413%203.95%2014.952-3.103%202.821-9.874%207.617-20.03%209.592%200%200%2013.824%203.95%2029.622-11.567%2015.799-14.952-3.385-26.801-11.284-26.801z%22%20%2F%3E%0A%3C%2Fsvg%3E'); --icon-logo-apeegg: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22777%22%20height%3D%22448%22%3E%0A%20%20%3Cpath%20fill%3D%22%23000%22%0A%20%20%20%20d%3D%22M305.249%20120.181C273.934%2053.884%20221.742%200%20169.834%200%20117.079%200%2064.323%2058.398%2033.008%20126.106%209.028%20178.861%200%20237.259%200%20278.167c0%2093.944%2076.171%20169.834%20169.834%20169.834s169.834-76.171%20169.834-169.834c0-41.753-9.31-104.383-34.418-157.985zM132.877%20390.166c-37.521.847-37.521-27.647-37.521-27.647%202.257-24.544%2020.03-19.184%2043.164-20.03s42.035%2016.927%2043.164%2026.801c.847%209.874-11.284%2020.03-48.806%2020.877zm115.949-180.272c0%2018.337%2014.952%2027.93%2018.056%2036.957%203.103%209.31%206.489%2027.083-2.821%2030.751-13.824%205.078-26.237-4.514-44.574-16.081s-7.617%2010.721-7.617%2010.721%2017.773%2028.493%2017.773%2055.295-21.441%2018.337-21.441%2018.337-30.468-25.108-69.683-25.108c-39.214%200-40.343%209.028-54.73%209.874-14.67.847-15.234-3.95-15.234-17.773s7.617-22.851%2018.056-34.7c7.335-8.181%206.489-23.134-5.925-16.927s-37.521%2015.234-38.368%200%2022.287-35.265%2022.287-49.934-32.161-29.904-33.854-41.471C29.34%20158.268%2047.678%2094.51%2081.532%2093.664c33.008-.847%2010.438%2028.493%2063.194%2029.904h6.771c7.899-.282%2021.723-.564%2043.728-20.594%2027.647-25.39%2052.192-20.03%2062.912-11.567s32.161%2020.03%2032.161%2057.552c0%2037.804-41.471%2042.317-41.471%2060.937z%22%20%2F%3E%0A%20%20%3Cpath%20fill%3D%22%23000%22%0A%20%20%20%20d%3D%22M116.232%20208.201c-12.695%201.975-29.058-9.028-34.418-12.977-.847-.564-1.975-.282-2.257.847-6.489%2024.544%206.206%2023.98%2012.413%2025.955%206.489%201.975%202.539%206.489-.282%208.181-3.385%201.693-15.799-1.128-15.799-1.128.564%207.335%2014.388%205.078%2020.03%204.796%201.41%200%202.821-.564%203.95-1.693%206.489-5.642%2029.622-25.955%2016.363-23.98zm69.4%205.643c-11.849-.282%205.078%2014.67%2013.542%2021.723%203.103%202.539%206.771%204.232%2010.721%204.796%206.489.847%2015.799.847%2016.081-5.642%200%200-13.259%203.103-15.799%201.128s-7.053-6.206-.282-8.181c6.489-1.975%2030.186-1.411%2022.569-27.93-.282%200-30.186%2014.388-46.831%2014.106zm-10.72%2020.312c-6.206%200-34.418%2028.212-34.983%2033.008-.282%204.514-7.053-31.033-26.237-30.186-19.184.564-12.977%2013.259-11.003%2019.184s16.645%2017.491%2021.159%2017.773c0%200-13.824-13.541-13.824-18.902s1.41-7.053%205.36-7.053%209.31%203.103%2012.695%2010.72c2.539%205.925%206.206%2013.824%207.617%2017.491.564%201.128%201.411%201.693%202.821%201.693.847%200%201.975-.564%202.257-1.128%203.95-5.642%2021.441-28.776%2031.879-28.776%2011.849%200%207.053%2012.413%203.95%2014.952-3.103%202.821-9.874%207.617-20.03%209.592%200%200%2013.824%203.95%2029.622-11.567%2015.799-14.952-3.385-26.801-11.284-26.801zm309.199-77.3H451.95l-14.388%2043.446h-42.599l48.524-165.038h49.652l48.242%20165.038h-42.317zM601.189%2035.265c7.053%200%2013.542%201.128%2019.184%203.668s10.72%206.206%2014.67%2010.721c3.95%204.796%207.335%2010.156%209.31%2016.927q3.385%209.734%203.385%2022.005c0%207.899-1.128%2015.234-3.385%2021.723s-5.36%2012.131-9.31%2016.927-9.028%208.463-14.67%2011.003-12.131%203.95-19.184%203.95h-12.413v58.116h-37.803V35.267h50.217zm160.806%2037.239h-63.758v26.801h46.831v37.239h-46.831v26.519h63.758v37.239H660.998V35.264h100.997zM502.73%20279.013h-64.04v26.519h47.114v37.239h-47.113v26.519h64.04v37.239H401.452V241.773h101.279zm134.005%2097.048c-2.821%203.95-6.206%207.899-10.156%2011.567s-8.181%207.053-12.977%209.874-10.156%205.078-15.799%206.771-11.849%202.539-18.056%202.539h-.282c-9.874%200-18.62-1.693-26.237-4.796-7.617-3.385-13.824-7.899-18.902-13.541s-9.028-12.695-11.849-20.594-4.232-16.645-4.796-26.237v-34.136c0-8.746%201.41-17.209%203.95-25.39%202.539-7.899%206.489-14.952%2011.849-20.877%205.078-5.925%2011.567-10.721%2019.184-14.388s16.645-5.36%2026.519-5.36h.282q15.234.846%2024.544%205.078c6.206%203.103%2011.284%206.489%2014.952%2010.438s6.489%207.899%208.463%2011.849q2.963%205.925%205.078%209.31l-30.468%2020.312c-.847-1.693-1.693-3.385-2.539-5.642s-2.257-3.95-3.95-5.642-3.95-3.385-6.206-4.514c-2.539-1.128-5.642-1.975-9.592-1.975-7.335%200-13.259%202.539-17.491%207.335-4.232%205.078-6.489%2011.567-6.489%2019.748v32.161c0%203.95.564%207.617%201.975%2011.284%201.411%203.385%203.103%206.489%205.36%208.746%202.257%202.539%205.078%204.514%208.181%205.925s6.489%202.257%2010.156%202.257c5.078.282%209.31-.847%2012.413-2.539%203.103-1.975%205.642-4.232%207.335-7.335v-8.181h-17.491v-31.879h53.32v57.834zm140.212%200c-2.821%203.95-6.206%207.899-10.156%2011.567s-8.181%207.053-12.977%209.874-10.156%205.078-15.799%206.771-11.849%202.539-18.056%202.539h-.564c-9.874%200-18.62-1.693-26.237-4.796-7.617-3.385-13.824-7.899-18.902-13.541s-9.028-12.695-11.849-20.594-4.232-16.645-4.514-26.237v-34.136c0-8.746%201.41-17.209%203.95-25.39%202.539-7.899%206.489-14.952%2011.849-20.877%205.078-5.925%2011.567-10.721%2019.184-14.388s16.645-5.36%2026.519-5.36h.282q15.234.846%2024.544%205.078c6.206%203.103%2011.284%206.489%2014.952%2010.438s6.489%207.899%208.463%2011.849q2.963%205.925%205.078%209.31l-30.468%2020.312c-.847-1.693-1.693-3.385-2.539-5.642s-2.257-3.95-3.95-5.642-3.95-3.385-6.206-4.514c-2.539-1.128-5.642-1.975-9.592-1.975-7.335%200-13.259%202.539-17.491%207.335-4.232%205.078-6.489%2011.567-6.489%2019.748v32.161c0%203.95.564%207.617%201.975%2011.284%201.41%203.385%203.103%206.489%205.36%208.746%202.257%202.539%205.078%204.514%208.181%205.925s6.489%202.257%2010.156%202.257c5.078.282%209.31-.847%2012.413-2.539%203.103-1.975%205.642-4.232%207.335-7.335v-8.181h-17.491v-31.879h53.32v57.834z%22%20%2F%3E%0A%3C%2Fsvg%3E'); --icon-nature: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22256%22%20height%3D%22256%22%20viewBox%3D%220%200%20256%20256%22%20xml%3Aspace%3D%22preserve%22%3E%0A%3Cg%20style%3D%22stroke%3A%20none%3B%20stroke-width%3A%200%3B%20stroke-dasharray%3A%20none%3B%20stroke-linecap%3A%20butt%3B%20stroke-linejoin%3A%20miter%3B%20stroke-miterlimit%3A%2010%3B%20fill%3A%20none%3B%20fill-rule%3A%20nonzero%3B%20opacity%3A%201%3B%22%20transform%3D%22translate(1.4065934065934016%201.4065934065934016)%20scale(2.81%202.81)%22%3E%0A%09%3Cpath%20d%3D%22M%2030.648%2090%20h%20-4.666%20c%20-0.276%200%20-0.54%20-0.114%20-0.729%20-0.315%20c%20-0.189%20-0.202%20-0.287%20-0.473%20-0.269%20-0.748%20c%201.473%20-23.129%207.78%20-37.706%2023.516%20-52.984%20c%20-11.987%206.803%20-23.657%2018.781%20-25.661%2035.247%20c%20-0.051%200.42%20-0.361%200.763%20-0.774%200.854%20c%20-0.414%200.094%20-0.84%20-0.086%20-1.065%20-0.443%20c%20-8.808%20-14.02%20-8.505%20-26.712%200.952%20-39.944%20c%205.454%20-7.272%2013.28%20-11.279%2020.185%20-14.815%20c%208.346%20-4.273%2015.554%20-7.964%2017.098%20-16.04%20c%200.078%20-0.407%200.398%20-0.723%200.807%20-0.796%20c%200.407%20-0.073%200.818%200.113%201.032%200.467%20c%2010.854%2017.977%2019.798%2035.828%2010.159%2056.542%20c%20-7.694%2013.752%20-20.459%2020.112%20-37.994%2018.96%20c%20-1.01%204.324%20-1.531%208.595%20-1.59%2013.028%20C%2031.641%2089.561%2031.195%2090%2030.648%2090%20z%22%20style%3D%22stroke%3A%20none%3B%20stroke-width%3A%201%3B%20stroke-dasharray%3A%20none%3B%20stroke-linecap%3A%20butt%3B%20stroke-linejoin%3A%20miter%3B%20stroke-miterlimit%3A%2010%3B%20fill%3A%20rgb(0%2C0%2C0)%3B%20fill-rule%3A%20nonzero%3B%20opacity%3A%201%3B%22%20transform%3D%22%20matrix(1%200%200%201%200%200)%20%22%20stroke-linecap%3D%22round%22%2F%3E%0A%3C%2Fg%3E%0A%3C%2Fsvg%3E'); - --icon-physical: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20680%20680%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M388.018%2C349.341c44.875%2C5.971%2C86.669%2C20.608%2C127.884%2C40.831.385-3.852.963-6.356.963-9.052%2C0-27.541-.192-55.276.192-82.817.192-6.934-2.311-9.438-8.859-10.593-67.216-12.711-135.011-20.03-203.575-17.334-42.949%2C1.733-85.513%2C7.319-127.114%2C19.26v100.728c41.986-20.993%2C84.743-36.786%2C131.544-41.408%2C18.104%2C104.58%2C21.956%2C208.005-1.348%2C311.237-62.594-3.467-153.5-41.601-213.205-89.558%2C2.119-6.163%2C4.43-12.711%2C6.741-19.26%2C13.482-38.519%2C26.964-77.231%2C33.897-117.869%2C7.511-44.49%2C3.467-88.209-9.438-130.966-9.052-30.623-20.03-60.668-29.66-91.098-1.156-3.852-.963-10.015%2C1.348-12.711%2C22.534-26.001%2C45.453-51.616%2C68.372-76.846%2C1.541-1.733%2C5.2-3.274%2C7.319-2.504%2C36.016%2C10.978%2C71.839%2C22.341%2C106.699%2C33.512-12.519%2C13.867-25.23%2C27.927-38.327%2C42.371%2C67.794%2C21.186%2C135.974%2C42.371%2C204.153%2C63.557.385-.771.771-1.348%2C1.156-2.119-35.631-27.156-71.261-54.313-108.432-82.624%2C10.978-9.63%2C21.764-19.067%2C33.319-29.468-39.29-30.431-76.461-59.32-116.521-90.328%2C28.504-11.941%2C54.89-23.112%2C81.276-33.897%2C2.504-.963%2C6.356.385%2C9.244%2C1.541%2C78.002%2C29.082%2C147.337%2C71.839%2C204.153%2C133.277%2C12.326%2C13.289%2C22.919%2C28.312%2C33.704%2C43.142%2C2.311%2C3.274%2C2.889%2C9.052%2C1.926%2C12.904-9.244%2C37.556-20.415%2C74.535-28.504%2C112.284-12.134%2C56.624-6.934%2C112.862%2C8.089%2C168.33%2C6.356%2C23.689%2C13.097%2C47.379%2C19.838%2C71.068%2C1.733%2C5.586.771%2C8.859-4.237%2C12.711-52.194%2C38.904-109.202%2C67.794-173.53%2C80.698-5.586%2C1.156-11.171%2C1.926-16.756%2C2.889-18.297-48.727-19.838-246.139-2.311-309.889h0Z%22%2F%3E%0A%3C%2Fsvg%3E'); --icon-search: url('data:image/svg+xml;utf8,%3C!--%20Generated%20by%20IcoMoon.io%20--%3E%0A%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0A%3Cg%20id%3D%22icomoon-ignore%22%3E%0A%3C%2Fg%3E%0A%3Cpath%20fill%3D%22%23000%22%20d%3D%22M496.131%20435.698l-121.276-103.147c-12.537-11.283-25.945-16.463-36.776-15.963%2028.628-33.534%2045.921-77.039%2045.921-124.588%200-106.039-85.961-192-192-192s-192%2085.961-192%20192%2085.961%20192%20192%20192c47.549%200%2091.054-17.293%20124.588-45.922-0.5%2010.831%204.68%2024.239%2015.963%2036.776l103.147%20121.276c17.661%2019.623%2046.511%2021.277%2064.11%203.678s15.946-46.449-3.677-64.11zM192%20320c-70.692%200-128-57.308-128-128s57.308-128%20128-128%20128%2057.308%20128%20128-57.307%20128-128%20128z%22%3E%3C%2Fpath%3E%0A%3C%2Fsvg%3E%0A'); --icon-spin: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20512%20512%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.7.1%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%208)%20%20--%3E%0A%20%20%3Cpath%20fill%3D%22%23000%22%0A%20%20%20%20d%3D%22M304%2C480c-114.7%2C0-207.6-99.9-208-223.3%2C0-26.5-21.8-48.9-48.4-48.7-26.3.2-47.6%2C21.6-47.6%2C48%2C0%2C141.4%2C114.6%2C256%2C256%2C256s249.6-108.4%2C255.7-244.3c-5.6%2C118.3-96.5%2C212.3-207.7%2C212.3ZM256%2C0C118.5%2C0%2C6.4%2C108.4.3%2C244.3%2C5.9%2C126%2C96.8%2C32%2C208%2C32s207.6%2C99.9%2C208%2C223.3c0%2C26.5%2C21.8%2C48.9%2C48.4%2C48.7%2C26.3-.2%2C47.6-21.6%2C47.6-48C512%2C114.6%2C397.4%2C0%2C256%2C0Z%22%20%2F%3E%0A%3C%2Fsvg%3E'); --icon-storm: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20720%20720%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2030.0.0%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%20123)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M670.7%2C360.1c-1.9%2C79.2-23.1%2C183.8-140.3%2C266.4-124.8%2C88-276.8%2C52.5-350.4%2C0-55.1-39.3-129.2-113.6-131.5-244.7-2.3-128.9%2C69.4-238.4%2C155.8-294.4%2C54.9-35.6%2C143-52.8%2C208.8-46.1%2C6.5.9%2C8.1%2C6.2%2C6.2%2C10.2h0c-.7%2C1.2-1.6%2C2.3-3%2C2.8h0c-.2%2C0-.2.2-.5.2s-.5%2C0-.7.2c-.5%2C0-.9.2-1.4.2h-.7c-6-.7-111.1-.9-203.9%2C74.1-72.7%2C58.6-106.2%2C156.5-103.5%2C228.5v.5c.2%2C2.8.2%2C5.6.5%2C8.3.5%2C6%2C1.2%2C12.5%2C2.1%2C19v.9c.5%2C3%2C.9%2C6%2C1.4%2C9%2C.2%2C1.6.5%2C3%2C.9%2C4.6.2%2C1.9.7%2C3.7%2C1.2%2C5.6%2C0%2C.5.2.9.2%2C1.4.5%2C1.9.7%2C3.7%2C1.2%2C5.6s.7%2C3.5%2C1.2%2C5.1c.5%2C1.9.9%2C3.5%2C1.4%2C5.3s.9%2C3.7%2C1.6%2C5.6c.5%2C1.6.9%2C3.2%2C1.6%2C4.9.2.7.5%2C1.6.7%2C2.3s.5%2C1.6.9%2C2.5c.7%2C2.1%2C1.4%2C4.2%2C2.1%2C6.2.9%2C2.8%2C2.1%2C5.6%2C3.2%2C8.1%2C1.9%2C4.9%2C4.2%2C9.7%2C6.5%2C14.4h0c4.2%2C8.3%2C9%2C16.7%2C14.4%2C25%2C2.3%2C3.5%2C4.9%2C6.9%2C7.4%2C10.4%2C2.8%2C3.5%2C5.6%2C6.9%2C8.3%2C10.4%2C3%2C3.5%2C6%2C6.7%2C9.3%2C10%2C20.6%2C21.1%2C47.7%2C40%2C83.3%2C55.6%2C119.7%2C52.1%2C284.2-26.9%2C301.6-175.2%2C2.3-19%2C2.1-36.1-.2-51.4-.2-1.2-.2-2.3-.5-3.5-.2-1.6-.5-3.2-.9-4.6-.2-1.4-.5-2.8-.9-4.2-.5-1.9-.9-3.5-1.2-5.3-.2-.9-.5-2.1-.9-3-.7-2.8-1.6-5.3-2.5-7.9-.5-1.4-.9-2.5-1.4-3.7-27.3-70.6-103.7-88.9-141.9-83.8-44.2%2C5.1-86.1%2C26.9-105.3%2C69.7-.9%2C1.9-1.6%2C3.7-2.3%2C5.6-1.2%2C2.8-2.1%2C5.8-3%2C8.8-.7%2C2.1-1.2%2C4.2-1.6%2C6.2-1.2%2C4.4-1.9%2C9.3-2.5%2C14.1%2C0%2C.7-.2%2C1.4-.2%2C2.3-.2%2C2.1-.5%2C4.2-.7%2C6.2%2C0%2C1.4-.2%2C2.8-.2%2C4.2v.2c0%2C2.3-.2%2C4.9-.2%2C7.4.5%2C5.6%2C1.4%2C10.9%2C2.8%2C16%2C.2.7.2%2C1.2.5%2C1.9.9%2C2.8%2C1.9%2C5.3%2C3%2C8.1.5.9.7%2C1.6%2C1.2%2C2.5v.2c.5.7.7%2C1.4%2C1.2%2C2.3.5.7.9%2C1.6%2C1.4%2C2.3s.9%2C1.6%2C1.4%2C2.3h0c.5.7.7%2C1.2%2C1.2%2C1.9%2C4.4%2C6.5%2C9.7%2C11.8%2C15.7%2C15.7.5.2.7.5%2C1.2.7%2C1.2.7%2C2.3%2C1.4%2C3.7%2C1.9.5.2.9.5%2C1.4.7.2%2C0%2C.5.2.7.2.5.2.9.5%2C1.2.5.7.2%2C1.2.5%2C1.9.7s1.4.5%2C2.3.7c.7.2%2C1.4.2%2C2.3.5.5%2C0%2C.9.2%2C1.4.2h.5c.7%2C0%2C1.2.2%2C1.9.2h.2c.5%2C0%2C1.2%2C0%2C1.6.2%2C4.2.2%2C8.6-.2%2C13.2-1.4%2C1.4-.5%2C3-.9%2C4.4-1.4.7-.2%2C1.6-.5%2C2.3-.9h0c-.9-.7-10.9-8.8-16.7-21.5-.2-.2-.2-.5-.5-.9-.9-2.1-1.6-4.6-2.3-6.9-3.5-12.3-4.4-28.9%2C1.6-50.5%2C9.5-34.7%2C50.9-70.4%2C106.5-55.1%2C72.4%2C19.9%2C98.8%2C119.4%2C31.2%2C209.7%2C0%2C0-83.8%2C111.3-225.2%2C48.1%2C0%2C0-91.9-41.9-106.7-146.3-17.6-124.5%2C68.3-210.9%2C68.3-210.9%2C0%2C0%2C91-112.5%2C244.7-78.5%2C158.3%2C34.3%2C213.6%2C172.4%2C211.6%2C256.5h0Z%22%2F%3E%0A%3C%2Fsvg%3E'); @@ -34,6 +32,17 @@ --icon-menu: url('data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22768%22%20height%3D%22768%22%3E%0A%20%20%3Cpath%20fill%3D%22%23000%22%0A%20%20%20%20d%3D%22M96%20416h576c17.664%200%2032-14.336%2032-32s-14.336-32-32-32H96c-17.664%200-32%2014.336-32%2032s14.336%2032%2032%2032m0-192h576c17.664%200%2032-14.336%2032-32s-14.336-32-32-32H96c-17.664%200-32%2014.336-32%2032s14.336%2032%2032%2032m0%20384h576c17.664%200%2032-14.336%2032-32s-14.336-32-32-32H96c-17.664%200-32%2014.336-32%2032s14.336%2032%2032%2032%22%20%2F%3E%0A%3C%2Fsvg%3E'); --icon-dark: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%0A%20%20version%3D%221.1%22%20viewBox%3D%220%200%20100%20100%22%3E%0A%20%20%3Cpath%0A%20%20%20%20fill%3D%22%23000%22%0A%20%20%20%20d%3D%22M73.386%2C81.095c2.83%2C0%2C5.56-.4%2C8.15-1.15-7.03%2C7.13-16.57%2C11.51-27.06%2C11.51-21.61%2C0-39.13-18.56-39.13-41.45S32.866%2C8.545%2C54.476%2C8.545c10.5%2C0%2C20.05%2C4.39%2C27.07%2C11.53-2.59-.76-5.33-1.16-8.16-1.16-16.64%2C0-30.13%2C13.92-30.13%2C31.09s13.49%2C31.09%2C30.13%2C31.09Z%22%20%2F%3E%0A%3C%2Fsvg%3E'); --icon-light: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%0A%20%20version%3D%221.1%22%20viewBox%3D%220%200%2096.2%2096.2%22%3E%0A%20%20%3Ccircle%20fill%3D%22%23000%22%20cx%3D%2248.1%22%20cy%3D%2248.1%22%20r%3D%2223.8%22%20%2F%3E%0A%20%20%3Cpolyline%20fill%3D%22%23000%22%20points%3D%2237.2%2020.1%2048.3%2016.2%2059.3%2020.1%2048.3%200%22%20%2F%3E%0A%20%20%3Cpolyline%20fill%3D%22%23000%22%20points%3D%2220.6%2036%2025.7%2025.5%2036.3%2020.4%2014.2%2014%22%20%2F%3E%0A%20%20%3Cpolyline%20fill%3D%22%23000%22%20points%3D%2220.1%2059%2016.2%2048%2020.1%2036.9%200%2048%22%20%2F%3E%0A%20%20%3Cpolyline%20fill%3D%22%23000%22%20points%3D%2236%2075.6%2025.5%2070.6%2020.4%2060%2014%2082%22%20%2F%3E%0A%20%20%3Cpolyline%20fill%3D%22%23000%22%20points%3D%2259%2076.1%2048%2080%2036.9%2076.1%2048%2096.2%22%20%2F%3E%0A%20%20%3Cpolyline%20fill%3D%22%23000%22%20points%3D%2275.6%2060.2%2070.6%2070.8%2060%2075.8%2082%2082.3%22%20%2F%3E%0A%20%20%3Cpolyline%20fill%3D%22%23000%22%20points%3D%2276.1%2037.2%2080%2048.3%2076.1%2059.3%2096.2%2048.3%22%20%2F%3E%0A%20%20%3Cpolyline%20fill%3D%22%23000%22%20points%3D%2260.2%2020.6%2070.8%2025.7%2075.8%2036.3%2082.3%2014.2%22%20%2F%3E%0A%3C%2Fsvg%3E'); + --icon-flathex: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20768%20768%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M616.554%2C88.458l139.67%2C241.916c6.498%2C11.456%2C10.781%2C23.694%2C12.724%2C36.359%2C3.552%2C22.833-.394%2C46.877-12.839%2C68.462l-141.859%2C243.214c-6.519%2C11.189-15.033%2C21.023-25.019%2C29.086-18.011%2C14.463-40.853%2C23.101-65.449%2C23.099l-281.862%2C1.26c-12.913-.085-25.668-2.478-37.617-7.115-21.565-8.311-40.438-23.741-52.859-45.195L11.653%2C437.42c-6.373-11.239-10.661-23.486-12.613-36.146-3.539-22.829.394-46.877%2C12.853-68.458L153.747%2C89.593c6.524-11.18%2C15.038-21.014%2C25.024-29.078%2C18.006-14.472%2C40.853-23.101%2C65.444-23.108l281.862-1.26c12.913.085%2C25.668%2C2.478%2C37.617%2C7.115%2C21.565%2C8.311%2C40.438%2C23.741%2C52.859%2C45.195Z%22%2F%3E%0A%3C%2Fsvg%3E'); + --icon-physical: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20634%20640%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M139.25%2C401.5l59.563-59.563%2C98.938%2C99-59.5%2C59.5%2C54.062%2C54.063-48.25%2C48.25-81.375-81.313-118.563%2C118.563L0%2C595.875l118.562-118.563-81.375-81.313%2C48.25-48.25%2C53.813%2C53.75h0Z%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M628.375%2C11.625l-35.688%2C133.188.875.25-147.625%2C147.625-98.938-98.938L494.562%2C46.125l.25.875%2C133.188-35.688.375.313h0Z%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M548.188%2C336.375l48.188%2C48.25-81.25%2C81.313%2C118.563%2C118.562-44.125%2C44.125-118.562-118.562-81.375%2C81.375-48.25-48.25%2C54.063-54.063L40.065%2C133.75l.875-.25L5.315.25l.25-.25%2C133.25%2C35.688.25-.875%2C355.375%2C355.375%2C53.75-53.813h-.002Z%22%2F%3E%0A%3C%2Fsvg%3E'); + --icon-skull: url('data:image/svg+xml;utf8,%3C!--%20Generated%20by%20IcoMoon.io%20--%3E%0A%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22640%22%20height%3D%22640%22%20viewBox%3D%220%200%20640%20640%22%3E%0A%3Cg%20id%3D%22icomoon-ignore%22%3E%0A%3C%2Fg%3E%0A%3Cpath%20fill%3D%22%23000%22%20d%3D%22M320%2040c-54%200-112.933%2015.887-159.688%2051.641s-80.313%2092.645-80.313%20168.359c0%2065.452%2036.207%20136.688%2040%20144.063v15.938c0%2035.111%2029.333%2060%2060%2060%207.556%200%2011.884%202.197%2014.844%205.156s5.156%207.288%205.156%2014.844c0%2030.667%2024.889%2060%2060%2060h120c35.111%200%2060-29.333%2060-60%200-7.556%202.197-11.884%205.156-14.844s7.288-5.156%2014.844-5.156c16.444%200%2032.084-5.834%2043.125-16.875s16.875-26.681%2016.875-43.125v-16.016c3.798-7.442%2040-79.249%2040-147.969%200-74.078-34.88-129.989-82.031-165.078s-105.802-50.938-157.969-50.938zM320%2080c43.833%200%2095.214%2014.136%20134.063%2043.047s65.938%2071.047%2065.938%20132.969c0%2055.667-37.891%20135.078-37.891%20135.078l-2.109%204.219v24.688c0%207.556-2.197%2011.884-5.156%2014.844s-7.288%205.156-14.844%205.156c-16.444%200-32.084%205.834-43.125%2016.875s-16.875%2026.681-16.875%2043.125c0%209.333-7.111%2020-20%2020h-120c-12.889%200-20-10.667-20-20%200-16.444-5.834-32.084-16.875-43.125s-26.681-16.875-43.125-16.875c-9.333%200-20-7.111-20-20v-24.688l-2.109-4.219c0%200-37.891-79.982-37.891-131.094%200-64.286%2026.442-107.394%2064.688-136.641s89.313-43.359%20135.313-43.359zM220%20280c-33.137%200-60%2026.863-60%2060v0c0%2033.137%2026.863%2060%2060%2060v0c33.137%200%2060-26.863%2060-60v0c0-33.137-26.863-60-60-60v0zM420%20280c-33.137%200-60%2026.863-60%2060v0c0%2033.137%2026.863%2060%2060%2060v0c33.137%200%2060-26.863%2060-60v0c0-33.137-26.863-60-60-60v0zM320%20400c-16%204-40%2039.984-40%2063.984%200%208%208.016%2016.016%2016.016%2016.016%2016%200%2019.984-12%2023.984-20%204%208%207.984%2020%2023.984%2020%208%200%2016.016-8.016%2016.016-16.016%200-24-24-59.984-40-63.984z%22%3E%3C%2Fpath%3E%0A%3C%2Fsvg%3E%0A'); + --icon-quill: url('data:image/svg+xml;utf8,%3C!--%20Generated%20by%20IcoMoon.io%20--%3E%0A%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0A%3Cg%20id%3D%22icomoon-ignore%22%3E%0A%3C%2Fg%3E%0A%3Cpath%20fill%3D%22%23000%22%20d%3D%22M0%20512c64-192%20231.5-512%20512-512-131.5%20105.5-192%20352-288%20352s-96%200-96%200l-96%20160h-32z%22%3E%3C%2Fpath%3E%0A%3C%2Fsvg%3E%0A'); + --icon-plant: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20786%20786%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M375.918%2C699.056c15.651-20.774%2C34.433-38.417%2C57.483-50.938%2C17.074-9.391%2C35.002-16.789%2C52.361-25.043%2C13.944-6.545%2C15.651-19.92%2C14.229-32.441-7.968-74.558-26.181-147.123-47.808-218.551-4.553-15.367-13.944-29.88-23.619-42.97-16.221-21.627-41.263-21.343-57.483.284-8.822%2C11.952-14.229%2C26.465-21.058%2C39.84-14.798%2C29.311-28.173%2C59.476-44.962%2C87.933-15.083%2C25.611-42.686%2C34.149-69.72%2C41.832-10.814%2C3.13-22.196%2C3.699-33.295%2C5.407-8.822%2C1.423-13.659-2.561-14.513-11.098-3.699-38.702%2C2.846-76.834%2C22.481-108.991%2C29.311-48.377%2C72.566-81.103%2C132.041-87.363%2C25.896-2.846%2C51.508-5.123%2C77.403%2C3.699-26.181-58.337-54.069-89.071-122.081-73.704-27.034%2C5.976-54.923%2C9.676-81.672%2C16.789-23.619%2C6.261-46.101%2C16.221-69.435%2C23.904-31.872%2C10.244-63.459%2C21.343-95.616%2C30.164-15.651%2C4.269-32.441%2C3.415-49.8%2C5.123-3.699-22.196%2C4.838-40.409%2C13.09-56.914%2C21.912-44.677%2C58.053-75.127%2C102.73-96.469%2C43.824-21.058%2C90.494-24.757%2C137.448-22.766%2C25.327%2C1.138%2C48.946%2C11.383%2C68.866%2C28.457%2C18.212%2C15.651%2C37.563%2C29.88%2C56.061%2C45.531%2C5.691%2C4.837%2C9.676%2C11.383%2C14.513%2C17.359%2C13.375%2C16.789%2C26.749%2C33.864%2C42.686%2C53.784%2C0-54.638%2C14.513-99.884%2C45.816-141.147%2C33.579-44.109%2C80.534-58.337%2C130.049-57.768%2C93.624%2C1.423%2C144.277%2C43.824%2C173.873%2C126.349-40.409%2C5.976-80.249%2C15.083-120.374%2C17.359-57.199%2C3.415-108.706-15.651-154.238-50.084-15.082-11.383-25.042-9.106-34.433%2C7.399-16.221%2C29.026-18.782%2C61.183-19.351%2C93.339-.284%2C11.383%2C0%2C22.766%2C1.138%2C34.433%2C21.627-35.856%2C50.369-58.337%2C93.908-52.93%2C37.848%2C4.553%2C64.313%2C28.457%2C88.217%2C55.776-19.066%2C21.343-44.963%2C27.888-70.858%2C17.074-12.236-5.123-23.05-12.806-35.287-17.928-11.383-4.838-23.619-9.676-35.856-10.529-24.757-1.992-38.133%2C19.351-31.302%2C43.255%2C14.798%2C53.499%2C28.173%2C107.283%2C42.116%2C160.782%2C6.83%2C26.181%2C17.074%2C51.508%2C20.489%2C77.972%2C4.837%2C36.425%2C19.92%2C68.582%2C34.433%2C101.023%2C3.415%2C7.683%2C5.691%2C16.789%2C4.553%2C24.473-.569%2C4.269-9.676%2C9.96-15.082%2C10.244-21.343%2C1.423-42.686%2C1.138-64.029.854-27.319-.569-54.923-1.423-82.241-3.13-9.96-.569-19.92-3.415-29.88-5.123-1.138-.854-1.707-2.561-1.992-4.553v.002Z%22%2F%3E%0A%3C%2Fsvg%3E'); + --icon-square: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20148%20148%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M146.83%2C76.83l-70%2C70c-.78.78-1.81%2C1.17-2.83%2C1.17s-2.05-.39-2.83-1.17L1.17%2C76.83c-1.56-1.56-1.56-4.1%2C0-5.66L71.17%2C1.17c1.56-1.56%2C4.1-1.56%2C5.66%2C0l70%2C70c1.56%2C1.56%2C1.56%2C4.1%2C0%2C5.66Z%22%2F%3E%0A%3C%2Fsvg%3E'); + --icon-triangle: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20178%20178%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M177.42%2C21.08l-85%2C140c-.73%2C1.19-2.02%2C1.92-3.42%2C1.92s-2.69-.73-3.42-1.92L.58%2C21.08c-.75-1.24-.77-2.78-.07-4.04.71-1.26%2C2.05-2.04%2C3.49-2.04h170c1.45%2C0%2C2.78.78%2C3.49%2C2.04.7%2C1.26.68%2C2.8-.07%2C4.04Z%22%2F%3E%0A%3C%2Fsvg%3E'); + --icon-pentagon: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20148%20148%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M146.47%2C92.15l-70%2C55c-.72.56-1.6.85-2.47.85s-1.75-.29-2.47-.85L1.53%2C92.15c-1.32-1.04-1.86-2.8-1.33-4.4L28.2%2C2.75c.54-1.64%2C2.07-2.75%2C3.8-2.75h84c1.73%2C0%2C3.26%2C1.11%2C3.8%2C2.75l28%2C85c.53%2C1.6-.01%2C3.36-1.33%2C4.4Z%22%2F%3E%0A%3C%2Fsvg%3E'); + --icon-hexagon: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20148%20148%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M138%2C39v70c0%2C1.42-.76%2C2.74-1.98%2C3.46l-60%2C35c-.63.36-1.32.54-2.02.54s-1.39-.18-2.02-.54L11.98%2C112.46c-1.22-.72-1.98-2.04-1.98-3.46V39c0-1.42.76-2.74%2C1.98-3.46L71.98.54c1.25-.72%2C2.79-.72%2C4.04%2C0l60%2C35c1.22.72%2C1.98%2C2.04%2C1.98%2C3.46Z%22%2F%3E%0A%3C%2Fsvg%3E'); + --icon-pointyhex: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20768%20768.002%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Cpath%20d%3D%22M733.17%2C244.328v279.34c-.1%2C13.17-2.51%2C25.91-7.16%2C37.85-8.34%2C21.55-23.78%2C40.4-45.35%2C52.87l-244.46%2C139.7c-11.24%2C6.43-23.53%2C10.69-36.21%2C12.68-22.83%2C3.52-46.93-.42-68.23-12.72l-244.73-139.84c-11.14-6.53-20.99-14.98-29.02-24.97-14.52-17.98-23.15-40.78-23.18-65.57V244.088c.1-12.92%2C2.51-25.67%2C7.15-37.61%2C8.35-21.54%2C23.78-40.4%2C45.36-52.86L331.8%2C13.908c11.24-6.42%2C23.53-10.68%2C36.21-12.67%2C22.83-3.53%2C46.93.42%2C68.23%2C12.71l244.73%2C139.84c11.14%2C6.53%2C20.99%2C14.98%2C29.02%2C24.97%2C14.52%2C17.98%2C23.15%2C40.78%2C23.18%2C65.57Z%22%2F%3E%0A%3C%2Fsvg%3E'); + --icon-circle: url('data:image/svg+xml;utf8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Csvg%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20viewBox%3D%220%200%20321.7%20321.7%22%3E%0A%20%20%3C!--%20Generator%3A%20Adobe%20Illustrator%2029.8.3%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%202.1.1%20Build%203)%20%20--%3E%0A%20%20%3Ccircle%20cx%3D%22160.9%22%20cy%3D%22160.9%22%20r%3D%22160.9%22%2F%3E%0A%3C%2Fsvg%3E'); } icon { diff --git a/src/Iconice.d.ts b/src/Iconice.d.ts index d2a35cc2..53c7ac9d 100644 --- a/src/Iconice.d.ts +++ b/src/Iconice.d.ts @@ -1 +1 @@ -export type IconName = 'arcane' | 'blood' | 'checkmark' | 'circle' | 'components' | 'corruption' | 'cross' | 'crow' | 'deep' | 'down' | 'download' | 'earth' | 'examples' | 'fire' | 'frost' | 'growth' | 'lava' | 'lightning' | 'logo-apeegg-simple' | 'logo-apeegg' | 'nature' | 'physical' | 'search' | 'spin' | 'storm' | 'up' | 'users' | 'void' | 'water' | 'wind' | 'spinner-circle' | 'spinner-inner' | 'menu' | 'dark' | 'light'; \ No newline at end of file +export type IconName = 'arcane' | 'blood' | 'checkmark' | 'components' | 'corruption' | 'cross' | 'crow' | 'deep' | 'down' | 'download' | 'earth' | 'examples' | 'fire' | 'frost' | 'growth' | 'lava' | 'lightning' | 'logo-apeegg-simple' | 'logo-apeegg' | 'nature' | 'search' | 'spin' | 'storm' | 'up' | 'users' | 'void' | 'water' | 'wind' | 'spinner-circle' | 'spinner-inner' | 'menu' | 'dark' | 'light' | 'flathex' | 'physical' | 'skull' | 'quill' | 'plant' | 'square' | 'triangle' | 'pentagon' | 'hexagon' | 'pointyhex' | 'circle'; \ No newline at end of file diff --git a/src/app.css b/src/app.css index 8255de9c..9dd7cb5a 100644 --- a/src/app.css +++ b/src/app.css @@ -38,7 +38,7 @@ display: contents; } body { - @apply bg-background text-foreground flex min-h-screen overflow-x-hidden overflow-y-scroll; + @apply flex min-h-screen overflow-x-hidden overflow-y-scroll bg-background text-foreground; } h1, @@ -47,7 +47,7 @@ h4, h5, h6 { - @apply text-foreground font-['Cinzel']; + @apply font-['Cinzel'] text-foreground; } /* width */ @@ -94,3 +94,274 @@ @apply text-xs font-medium sm:text-sm md:text-base; } } + +:root { + --color-red-50: oklch(0.95 0.02 18); + --color-red-100: oklch(0.86 0.07 19); + --color-red-200: oklch(0.77 0.11 20); + --color-red-300: oklch(0.69 0.16 22); + --color-red-400: oklch(0.63 0.2 25); + --color-red-500: oklch(0.59 0.23 28); + --color-red-600: oklch(0.51 0.2 28); + --color-red-700: oklch(0.42 0.16 28); + --color-red-800: oklch(0.34 0.13 27); + --color-red-900: oklch(0.24 0.09 27); + --color-red-950: oklch(0.14 0.04 24); + --color-orange-50: oklch(98% 0.016 73.684); + --color-orange-100: oklch(95.4% 0.038 75.164); + --color-orange-200: oklch(90.1% 0.076 70.697); + --color-orange-300: oklch(83.7% 0.128 66.29); + --color-orange-400: oklch(75% 0.183 55.934); + --color-orange-500: oklch(70.5% 0.213 47.604); + --color-orange-600: oklch(64.6% 0.222 41.116); + --color-orange-700: oklch(55.3% 0.195 38.402); + --color-orange-800: oklch(47% 0.157 37.304); + --color-orange-900: oklch(40.8% 0.123 38.172); + --color-orange-950: oklch(26.6% 0.079 36.259); + --color-amber-50: oklch(98.7% 0.022 95.277); + --color-amber-100: oklch(96.2% 0.059 95.617); + --color-amber-200: oklch(92.4% 0.12 95.746); + --color-amber-300: oklch(87.9% 0.169 91.605); + --color-amber-400: oklch(82.8% 0.189 84.429); + --color-amber-500: oklch(76.9% 0.188 70.08); + --color-amber-600: oklch(66.6% 0.179 58.318); + --color-amber-700: oklch(55.5% 0.163 48.998); + --color-amber-800: oklch(47.3% 0.137 46.201); + --color-amber-900: oklch(41.4% 0.112 45.904); + --color-amber-950: oklch(27.9% 0.077 45.635); + --color-yellow-50: oklch(98.7% 0.026 102.212); + --color-yellow-100: oklch(97.3% 0.071 103.193); + --color-yellow-200: oklch(94.5% 0.129 101.54); + --color-yellow-300: oklch(90.5% 0.182 98.111); + --color-yellow-400: oklch(85.2% 0.199 91.936); + --color-yellow-500: oklch(79.5% 0.184 86.047); + --color-yellow-600: oklch(68.1% 0.162 75.834); + --color-yellow-700: oklch(55.4% 0.135 66.442); + --color-yellow-800: oklch(47.6% 0.114 61.907); + --color-yellow-900: oklch(42.1% 0.095 57.708); + --color-yellow-950: oklch(28.6% 0.066 53.813); + --color-lime-50: oklch(0.97 0.02 147); + --color-lime-100: oklch(0.92 0.07 148); + --color-lime-200: oklch(0.87 0.11 147); + --color-lime-300: oklch(0.82 0.15 146); + --color-lime-400: oklch(0.78 0.19 145); + --color-lime-500: oklch(0.74 0.22 144); + --color-lime-600: oklch(0.64 0.19 144); + --color-lime-700: oklch(0.51 0.15 144); + --color-lime-800: oklch(0.42 0.12 144); + --color-lime-900: oklch(0.31 0.08 144); + --color-lime-950: oklch(0.17 0.04 146); + --color-green-50: oklch(98.2% 0.018 155.826); + --color-green-100: oklch(96.2% 0.044 156.743); + --color-green-200: oklch(92.5% 0.084 155.995); + --color-green-300: oklch(87.1% 0.15 154.449); + --color-green-400: oklch(79.2% 0.209 151.711); + --color-green-500: oklch(72.3% 0.219 149.579); + --color-green-600: oklch(62.7% 0.194 149.214); + --color-green-700: oklch(52.7% 0.154 150.069); + --color-green-800: oklch(44.8% 0.119 151.328); + --color-green-900: oklch(39.3% 0.095 152.535); + --color-green-950: oklch(26.6% 0.065 152.934); + --color-emerald-50: oklch(97.9% 0.021 166.113); + --color-emerald-100: oklch(95% 0.052 163.051); + --color-emerald-200: oklch(90.5% 0.093 164.15); + --color-emerald-300: oklch(84.5% 0.143 164.978); + --color-emerald-400: oklch(76.5% 0.177 163.223); + --color-emerald-500: oklch(69.6% 0.17 162.48); + --color-emerald-600: oklch(59.6% 0.145 163.225); + --color-emerald-700: oklch(50.8% 0.118 165.612); + --color-emerald-800: oklch(43.2% 0.095 166.913); + --color-emerald-900: oklch(37.8% 0.077 168.94); + --color-emerald-950: oklch(26.2% 0.051 172.552); + --color-teal-50: oklch(98.4% 0.014 180.72); + --color-teal-100: oklch(95.3% 0.051 180.801); + --color-teal-200: oklch(91% 0.096 180.426); + --color-teal-300: oklch(85.5% 0.138 181.071); + --color-teal-400: oklch(77.7% 0.152 181.912); + --color-teal-500: oklch(70.4% 0.14 182.503); + --color-teal-600: oklch(60% 0.118 184.704); + --color-teal-700: oklch(51.1% 0.096 186.391); + --color-teal-800: oklch(43.7% 0.078 188.216); + --color-teal-900: oklch(38.6% 0.063 188.416); + --color-teal-950: oklch(27.7% 0.046 192.524); + --color-cyan-50: oklch(98.4% 0.019 200.873); + --color-cyan-100: oklch(95.6% 0.045 203.388); + --color-cyan-200: oklch(91.7% 0.08 205.041); + --color-cyan-300: oklch(86.5% 0.127 207.078); + --color-cyan-400: oklch(78.9% 0.154 211.53); + --color-cyan-500: oklch(71.5% 0.143 215.221); + --color-cyan-600: oklch(60.9% 0.126 221.723); + --color-cyan-700: oklch(52% 0.105 223.128); + --color-cyan-800: oklch(45% 0.085 224.283); + --color-cyan-900: oklch(39.8% 0.07 227.392); + --color-cyan-950: oklch(30.2% 0.056 229.695); + --color-sky-50: oklch(97.7% 0.013 236.62); + --color-sky-100: oklch(95.1% 0.026 236.824); + --color-sky-200: oklch(90.1% 0.058 230.902); + --color-sky-300: oklch(82.8% 0.111 230.318); + --color-sky-400: oklch(74.6% 0.16 232.661); + --color-sky-500: oklch(68.5% 0.169 237.323); + --color-sky-600: oklch(58.8% 0.158 241.966); + --color-sky-700: oklch(50% 0.134 242.749); + --color-sky-800: oklch(44.3% 0.11 240.79); + --color-sky-900: oklch(39.1% 0.09 240.876); + --color-sky-950: oklch(29.3% 0.066 243.157); + --color-blue-50: oklch(97% 0.014 254.604); + --color-blue-100: oklch(93.2% 0.032 255.585); + --color-blue-200: oklch(88.2% 0.059 254.128); + --color-blue-300: oklch(80.9% 0.105 251.813); + --color-blue-400: oklch(70.7% 0.165 254.624); + --color-blue-500: oklch(62.3% 0.214 259.815); + --color-blue-600: oklch(54.6% 0.245 262.881); + --color-blue-700: oklch(48.8% 0.243 264.376); + --color-blue-800: oklch(42.4% 0.199 265.638); + --color-blue-900: oklch(37.9% 0.146 265.522); + --color-blue-950: oklch(28.2% 0.091 267.935); + --color-indigo-50: oklch(96.2% 0.018 272.314); + --color-indigo-100: oklch(93% 0.034 272.788); + --color-indigo-200: oklch(87% 0.065 274.039); + --color-indigo-300: oklch(78.5% 0.115 274.713); + --color-indigo-400: oklch(67.3% 0.182 276.935); + --color-indigo-500: oklch(58.5% 0.233 277.117); + --color-indigo-600: oklch(51.1% 0.262 276.966); + --color-indigo-700: oklch(45.7% 0.24 277.023); + --color-indigo-800: oklch(39.8% 0.195 277.366); + --color-indigo-900: oklch(35.9% 0.144 278.697); + --color-indigo-950: oklch(25.7% 0.09 281.288); + --color-violet-50: oklch(0.96 0.02 320); + --color-violet-100: oklch(0.88 0.05 320); + --color-violet-200: oklch(0.8 0.08 320); + --color-violet-300: oklch(0.71 0.12 320); + --color-violet-400: oklch(0.64 0.15 320); + --color-violet-500: oklch(0.56 0.19 320); + --color-violet-600: oklch(0.49 0.16 320); + --color-violet-700: oklch(0.41 0.13 319); + --color-violet-800: oklch(0.35 0.11 320); + --color-violet-900: oklch(0.24 0.07 321); + --color-violet-950: oklch(0.15 0.03 320); + --color-purple-50: oklch(97.7% 0.014 308.299); + --color-purple-100: oklch(94.6% 0.033 307.174); + --color-purple-200: oklch(90.2% 0.063 306.703); + --color-purple-300: oklch(82.7% 0.119 306.383); + --color-purple-400: oklch(71.4% 0.203 305.504); + --color-purple-500: oklch(62.7% 0.265 303.9); + --color-purple-600: oklch(55.8% 0.288 302.321); + --color-purple-700: oklch(49.6% 0.265 301.924); + --color-purple-800: oklch(43.8% 0.218 303.724); + --color-purple-900: oklch(38.1% 0.176 304.987); + --color-purple-950: oklch(29.1% 0.149 302.717); + --color-fuchsia-50: oklch(97.7% 0.017 320.058); + --color-fuchsia-100: oklch(95.2% 0.037 318.852); + --color-fuchsia-200: oklch(90.3% 0.076 319.62); + --color-fuchsia-300: oklch(83.3% 0.145 321.434); + --color-fuchsia-400: oklch(74% 0.238 322.16); + --color-fuchsia-500: oklch(66.7% 0.295 322.15); + --color-fuchsia-600: oklch(59.1% 0.293 322.896); + --color-fuchsia-700: oklch(51.8% 0.253 323.949); + --color-fuchsia-800: oklch(45.2% 0.211 324.591); + --color-fuchsia-900: oklch(40.1% 0.17 325.612); + --color-fuchsia-950: oklch(29.3% 0.136 325.661); + --color-pink-50: oklch(97.1% 0.014 343.198); + --color-pink-100: oklch(94.8% 0.028 342.258); + --color-pink-200: oklch(89.9% 0.061 343.231); + --color-pink-300: oklch(82.3% 0.12 346.018); + --color-pink-400: oklch(71.8% 0.202 349.761); + --color-pink-500: oklch(65.6% 0.241 354.308); + --color-pink-600: oklch(59.2% 0.249 0.584); + --color-pink-700: oklch(52.5% 0.223 3.958); + --color-pink-800: oklch(45.9% 0.187 3.815); + --color-pink-900: oklch(40.8% 0.153 2.432); + --color-pink-950: oklch(28.4% 0.109 3.907); + --color-rose-50: oklch(96.9% 0.015 12.422); + --color-rose-100: oklch(94.1% 0.03 12.58); + --color-rose-200: oklch(89.2% 0.058 10.001); + --color-rose-300: oklch(81% 0.117 11.638); + --color-rose-400: oklch(71.2% 0.194 13.428); + --color-rose-500: oklch(64.5% 0.246 16.439); + --color-rose-600: oklch(58.6% 0.253 17.585); + --color-rose-700: oklch(51.4% 0.222 16.935); + --color-rose-800: oklch(45.5% 0.188 13.697); + --color-rose-900: oklch(41% 0.159 10.272); + --color-rose-950: oklch(27.1% 0.105 12.094); + --color-slate-50: oklch(98.4% 0.003 247.858); + --color-slate-100: oklch(96.8% 0.007 247.896); + --color-slate-200: oklch(92.9% 0.013 255.508); + --color-slate-300: oklch(86.9% 0.022 252.894); + --color-slate-400: oklch(70.4% 0.04 256.788); + --color-slate-500: oklch(55.4% 0.046 257.417); + --color-slate-600: oklch(44.6% 0.043 257.281); + --color-slate-700: oklch(37.2% 0.044 257.287); + --color-slate-800: oklch(27.9% 0.041 260.031); + --color-slate-900: oklch(20.8% 0.042 265.755); + --color-slate-950: oklch(12.9% 0.042 264.695); + --color-gray-50: oklch(98.5% 0.002 247.839); + --color-gray-100: oklch(96.7% 0.003 264.542); + --color-gray-200: oklch(92.8% 0.006 264.531); + --color-gray-300: oklch(87.2% 0.01 258.338); + --color-gray-400: oklch(70.7% 0.022 261.325); + --color-gray-500: oklch(55.1% 0.027 264.364); + --color-gray-600: oklch(44.6% 0.03 256.802); + --color-gray-700: oklch(37.3% 0.034 259.733); + --color-gray-800: oklch(27.8% 0.033 256.848); + --color-gray-900: oklch(21% 0.034 264.665); + --color-gray-950: oklch(13% 0.028 261.692); + --color-zinc-50: oklch(98.5% 0 0); + --color-zinc-100: oklch(96.7% 0.001 286.375); + --color-zinc-200: oklch(92% 0.004 286.32); + --color-zinc-300: oklch(87.1% 0.006 286.286); + --color-zinc-400: oklch(70.5% 0.015 286.067); + --color-zinc-500: oklch(55.2% 0.016 285.938); + --color-zinc-600: oklch(44.2% 0.017 285.786); + --color-zinc-700: oklch(37% 0.013 285.805); + --color-zinc-800: oklch(27.4% 0.006 286.033); + --color-zinc-900: oklch(21% 0.006 285.885); + --color-zinc-950: oklch(14.1% 0.005 285.823); + --color-neutral-50: oklch(98.5% 0 0); + --color-neutral-100: oklch(97% 0 0); + --color-neutral-200: oklch(92.2% 0 0); + --color-neutral-300: oklch(87% 0 0); + --color-neutral-400: oklch(70.8% 0 0); + --color-neutral-500: oklch(55.6% 0 0); + --color-neutral-600: oklch(43.9% 0 0); + --color-neutral-700: oklch(37.1% 0 0); + --color-neutral-800: oklch(26.9% 0 0); + --color-neutral-900: oklch(20.5% 0 0); + --color-neutral-950: oklch(14.5% 0 0); + --color-stone-50: oklch(98.5% 0.001 106.423); + --color-stone-100: oklch(97% 0.001 106.424); + --color-stone-200: oklch(92.3% 0.003 48.717); + --color-stone-300: oklch(86.9% 0.005 56.366); + --color-stone-400: oklch(70.9% 0.01 56.259); + --color-stone-500: oklch(55.3% 0.013 58.071); + --color-stone-600: oklch(44.4% 0.011 73.639); + --color-stone-700: oklch(37.4% 0.01 67.558); + --color-stone-800: oklch(26.8% 0.007 34.298); + --color-stone-900: oklch(21.6% 0.006 56.043); + --color-stone-950: oklch(14.7% 0.004 49.25); + + --color-brown-50: oklch(0.96 0.01 49); + --color-brown-100: oklch(0.89 0.02 42); + --color-brown-200: oklch(0.82 0.03 42); + --color-brown-300: oklch(0.74 0.04 41); + --color-brown-400: oklch(0.67 0.05 41); + --color-brown-500: oklch(0.59 0.06 41); + --color-brown-600: oklch(0.48 0.05 41); + --color-brown-700: oklch(0.43 0.05 41); + --color-brown-800: oklch(0.35 0.03 42); + --color-brown-900: oklch(0.26 0.02 42); + --color-brown-950: oklch(0.16 0.01 31); + + --color-beige-50: oklch(0.96 0.01 68); + --color-beige-100: oklch(0.9 0.02 71); + --color-beige-200: oklch(0.83 0.03 67); + --color-beige-300: oklch(0.75 0.04 67); + --color-beige-400: oklch(0.68 0.05 67); + --color-beige-500: oklch(0.61 0.06 66); + --color-beige-600: oklch(0.52 0.05 66); + --color-beige-700: oklch(0.43 0.04 66); + --color-beige-800: oklch(0.34 0.03 69); + --color-beige-900: oklch(0.24 0.02 67); + --color-beige-950: oklch(0.11 0.01 71); + + /* https://htmlcolorcodes.com/colors/parchment/ */ +} diff --git a/src/components.d.ts b/src/components.d.ts index 4a1b6df5..f8da3e2f 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -36,6 +36,7 @@ declare global { const Overlay: typeof import("./components/global/Overlay.svelte")["default"] const Register: typeof import("./components/Register.svelte")["default"] const ReleaseNotes: typeof import("./components/overlays/ReleaseNotes.svelte")["default"] + const Shape: typeof import("./components/ui/Shape.svelte")["default"] const Sidebar: typeof import("./components/ui/Sidebar.svelte")["default"] const SidebarNav: typeof import("./components/ui/SidebarNav.svelte")["default"] const Spinner: typeof import("./components/ui/Spinner.svelte")["default"] diff --git a/src/components/Authorization.svelte b/src/components/Authorization.svelte index c2670873..d201dd78 100644 --- a/src/components/Authorization.svelte +++ b/src/components/Authorization.svelte @@ -3,6 +3,7 @@ import type { Snippet } from 'svelte'; import { version } from '../../package.json'; import { notify } from '@/ts/actions'; + import { page } from '$app/state'; const { IS_DEV } = ENV; @@ -43,9 +44,10 @@ }); -{#if !connected} + +{#if !connected && page.route.id !== '/cards'} Connecting to server -{:else if authorized} +{:else if authorized || page.route.id === '/cards'} {@render children?.()} {:else if !app.token} diff --git a/src/components/Card.svelte b/src/components/Card.svelte index c505944d..ae889a5e 100644 --- a/src/components/Card.svelte +++ b/src/components/Card.svelte @@ -1,352 +1,448 @@ -