diff --git a/.gitignore b/.gitignore index 035d487..4dee025 100644 --- a/.gitignore +++ b/.gitignore @@ -125,4 +125,6 @@ _modules/* /results/ /phpunit*.xml .env -env \ No newline at end of file +env +.claude/ +.claude/* \ No newline at end of file diff --git a/app/Config/App.php b/app/Config/App.php index b761da7..5c9560f 100644 --- a/app/Config/App.php +++ b/app/Config/App.php @@ -16,7 +16,7 @@ class App extends BaseConfig * * E.g., http://example.com/ */ - public string $baseURL = 'http://localhost:8080/'; + public string $baseURL = 'http://localhost/Todo-App-Backend/public/'; /** * Allowed Hostnames in the Site URL other than the hostname in the baseURL. diff --git a/app/Config/Cors.php b/app/Config/Cors.php index 333fbc9..ceae347 100644 --- a/app/Config/Cors.php +++ b/app/Config/Cors.php @@ -57,7 +57,7 @@ class Cors extends BaseConfig * * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials */ - 'supportsCredentials' => false, + 'supportsCredentials' => true, /** * Set headers to allow. diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 6c166fc..d36090f 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -6,6 +6,9 @@ use CodeIgniter\Router\RouteCollection; * @var RouteCollection $routes */ $routes->get('/', 'Home::index'); +$routes->get('/themes', 'ThemeStore::index'); +$routes->post('/themes/upload', 'ThemeStore::upload'); +$routes->get('/themes/preview/(:segment)', 'ThemeStore::preview/$1'); // ============================================================================ // API Routes - Version 1.0 @@ -91,3 +94,20 @@ $routes->group('api/v1', ['namespace' => 'App\Controllers\Api\V1', 'filter' => [ $routes->put('user/themes/(:segment)', 'UserThemeController::update/$1'); $routes->delete('user/themes/(:segment)', 'UserThemeController::delete/$1'); }); +$routes->get('/themes', 'ThemeStore::index'); +$routes->options('/themes', static function () { + header('Access-Control-Allow-Origin: http://localhost:5173'); + header('Access-Control-Allow-Methods: GET, OPTIONS'); + header('Access-Control-Allow-Headers: Content-Type, Accept, Fetch'); + header('Access-Control-Allow-Credentials: true'); + return response()->setStatusCode(204); +}); +$routes->post('/themes/upload', 'ThemeStore::upload'); +$routes->options('/themes/upload', static function () { + header('Access-Control-Allow-Origin: http://localhost:5173'); + header('Access-Control-Allow-Methods: POST, OPTIONS'); + header('Access-Control-Allow-Headers: Content-Type, Accept, Fetch'); + header('Access-Control-Allow-Credentials: true'); + return response()->setStatusCode(204); +}); +$routes->get('/themes/preview/(:segment)', 'ThemeStore::preview/$1'); diff --git a/app/Controllers/ThemeStore.php b/app/Controllers/ThemeStore.php new file mode 100644 index 0000000..d3a26db --- /dev/null +++ b/app/Controllers/ThemeStore.php @@ -0,0 +1,266 @@ +where('is_published', 1)->findAll(); + + foreach ($themes as &$theme) { + $meta = json_decode($theme['metadata'] ?? '{}', true); + $theme['colors'] = $meta['colors'] ?? []; + $theme['tags'] = $meta['tags'] ?? []; + $theme['vars'] = $meta['vars'] ?? []; + + // Provide a preview array compatible with the frontend + $theme['preview'] = !empty($theme['colors']) ? array_values($theme['colors']) : ['#ffffff', '#f0f0f0', '#007acc']; + } + + if ($this->request->isAJAX() || $this->request->hasHeader('Fetch') || str_contains($this->request->getHeaderLine('Accept'), 'application/json')) { + header('Access-Control-Allow-Origin: http://localhost:5173'); + header('Access-Control-Allow-Credentials: true'); + return $this->response->setJSON($themes); + } + + return view('theme_store', [ + 'themes' => $themes, + 'flash_success' => session()->getFlashdata('success'), + 'flash_error' => session()->getFlashdata('error'), + ]); + } + + public function upload(): Response + { + header('Access-Control-Allow-Origin: http://localhost:5173'); + header('Access-Control-Allow-Credentials: true'); + + $file = $this->request->getFile('theme_css'); + $displayName = trim($this->request->getPost('display_name') ?? ''); + $description = trim($this->request->getPost('description') ?? ''); + + if ($displayName === '') { + if ($this->request->isAJAX() || $this->request->hasHeader('Fetch')) { + return $this->response->setStatusCode(400)->setJSON(['error' => 'Display name is required.']); + } + return redirect()->to('themes')->with('error', 'Display name is required.'); + } + + if (! $file || ! $file->isValid() || $file->hasMoved()) { + if ($this->request->isAJAX() || $this->request->hasHeader('Fetch')) { + return $this->response->setStatusCode(400)->setJSON(['error' => 'Please upload a valid CSS file.']); + } + return redirect()->to('themes')->with('error', 'Please upload a valid CSS file.'); + } + + if (strtolower($file->getExtension()) !== 'css') { + if ($this->request->isAJAX() || $this->request->hasHeader('Fetch')) { + return $this->response->setStatusCode(400)->setJSON(['error' => 'Only .css files are allowed.']); + } + return redirect()->to('themes')->with('error', 'Only .css files are allowed.'); + } + + $slug = strtolower(preg_replace('/[^a-z0-9]+/i', '-', $displayName)); + $slug = trim($slug, '-'); + $filename = $slug . '-' . substr(bin2hex(random_bytes(3)), 0, 6) . '.css'; + + $file->move(FCPATH . 'themes', $filename, true); + + // Extract CSS variables and colors from the uploaded file + $cssContent = file_get_contents(FCPATH . 'themes/' . $filename); + preg_match_all('/(--[a-zA-Z0-9-]+)\s*:\s*([^;]+);/', $cssContent, $matches); + + $vars = []; + if (!empty($matches[1])) { + foreach ($matches[1] as $index => $key) { + $vars[$key] = trim($matches[2][$index]); + } + } + + // Try to generate 3-color preview based on standard variables + $colors = []; + if (isset($vars['--bg'])) $colors['bg'] = $vars['--bg']; + if (isset($vars['--surface'])) $colors['surface'] = $vars['--surface']; + if (isset($vars['--accent'])) $colors['accent'] = $vars['--accent']; + + $model = new MarketplaceThemeModel(); + $model->insert([ + 'id' => $this->uuid4(), + 'name' => $slug, + 'display_name' => $displayName, + 'description' => $description ?: 'Custom community theme.', + 'author' => 'Community', + 'version' => '1.0.0', + 'thumbnail_url' => null, + 'download_url' => '/themes/' . $filename, + 'price' => 0, + 'is_published' => true, + 'metadata' => json_encode([ + 'tags' => ['custom', 'community'], + 'colors' => $colors, + 'vars' => $vars + ]), + 'created_at' => date('Y-m-d H:i:s'), + 'updated_at' => date('Y-m-d H:i:s'), + ]); + + if ($this->request->isAJAX() || $this->request->hasHeader('Fetch')) { + return $this->response->setJSON([ + 'success' => true, + 'message' => '"' . esc($displayName) . '" uploaded successfully!' + ]); + } + return redirect()->to('themes')->with('success', '"' . esc($displayName) . '" uploaded successfully!'); + } + + public function preview(string $id): Response + { + $model = new MarketplaceThemeModel(); + $theme = $model->find($id); + + if (! $theme) { + return $this->response->setStatusCode(404)->setBody('

Theme not found.

'); + } + + $distIndex = '/home/came/Nextcloud/arch-work/Projects/Todo-App/dist/index.html'; + + if (! file_exists($distIndex)) { + return $this->response->setBody( + '' + . '

Todo app dist not found.

' + ); + } + + $todoHtml = file_get_contents($distIndex); + + // Rewrite asset paths from /assets/ to the public symlink so Apache serves them + $assetBase = rtrim(base_url('todo-preview'), '/'); + $todoHtml = str_replace('="/assets/', '="' . $assetBase . '/assets/', $todoHtml); + + // Build CSS variable overrides from the stored vars map + $meta = json_decode($theme['metadata'] ?? '{}', true); + $vars = $meta['vars'] ?? []; + + $cssVars = ":root {\n"; + foreach ($vars as $prop => $value) { + $cssVars .= " {$prop}: {$value};\n"; + } + $cssVars .= "}\n"; + + // Also inject any raw CSS from the downloaded file (for custom/uploaded themes) + $cssPath = FCPATH . ltrim($theme['download_url'], '/'); + $rawCss = file_exists($cssPath) ? file_get_contents($cssPath) : ''; + + $styleTag = ""; + + $todoHtml = str_replace('', $styleTag . "\n", $todoHtml); + + return $this->response + ->setHeader('Content-Type', 'text/html; charset=utf-8') + ->setBody($todoHtml); + } + + public function install(string $id): Response + { + $model = new MarketplaceThemeModel(); + $theme = $model->find($id); + + if (! $theme) { + return $this->response->setStatusCode(404)->setJSON(['error' => 'Theme not found in the marketplace.']); + } + + // Using session user_id or a default placeholder since standard auth might be configured separately + $userId = session()->get('user_id') ?? 'default-user-id'; + + $userThemeModel = new UserThemeModel(); + + if (! $userThemeModel->isInstalled($userId, $id)) { + $userThemeModel->installTheme($userId, $id); + } + + return $this->response->setJSON([ + 'success' => true, + 'message' => '"' . esc($theme['display_name']) . '" has been installed to your account.' + ]); + } + + public function activate(string $id): Response + { + $userId = session()->get('user_id') ?? 'default-user-id'; + + $userThemeModel = new UserThemeModel(); + + if (! $userThemeModel->isInstalled($userId, $id)) { + return $this->response->setStatusCode(400)->setJSON(['error' => 'Theme must be installed before it can be activated.']); + } + + $userThemeModel->setActiveTheme($userId, $id); + + return $this->response->setJSON(['success' => true, 'message' => 'Theme activated successfully.']); + } + + public function uninstall(string $id): Response + { + $userId = session()->get('user_id') ?? 'default-user-id'; + $userThemeModel = new UserThemeModel(); + + $userThemeModel->uninstallTheme($userId, $id); + + return $this->response->setJSON(['success' => true, 'message' => 'Theme successfully uninstalled.']); + } + + public function myThemes(): Response + { + $userId = session()->get('user_id') ?? 'default-user-id'; + $userThemeModel = new UserThemeModel(); + + return $this->response->setJSON(['success' => true, 'data' => $userThemeModel->getUserThemes($userId)]); + } + + public function serveCss(string $filename): Response + { + // Ensure it's just a file name (prevent directory traversal) + $filename = basename($filename); + $cssPath = FCPATH . 'themes/' . $filename; + + // If the file actually exists on disk (e.g. newly uploaded themes) + if (file_exists($cssPath)) { + $css = file_get_contents($cssPath); + return $this->response->setContentType('text/css')->setBody($css); + } + + // Generate dynamically for seeded themes that don't have a physical file + $model = new MarketplaceThemeModel(); + $name = preg_replace('/\.css$/i', '', $filename); + $theme = $model->where('name', $name)->first(); + + if (! $theme) { + throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound(); + } + + $meta = json_decode($theme['metadata'] ?? '{}', true); + $vars = $meta['vars'] ?? []; + + $css = "/* Theme: {$theme['display_name']} */\n:root {\n"; + foreach ($vars as $prop => $value) { + $css .= " {$prop}: {$value};\n"; + } + $css .= "}\n"; + + return $this->response->setContentType('text/css')->setBody($css); + } + + private function uuid4(): string + { + $data = random_bytes(16); + $data[6] = chr(ord($data[6]) & 0x0f | 0x40); + $data[8] = chr(ord($data[8]) & 0x3f | 0x80); + return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4)); + } +} diff --git a/app/Database/Seeds/MarketplaceThemesSeeder.php b/app/Database/Seeds/MarketplaceThemesSeeder.php index 9d26bc3..5933fdb 100644 --- a/app/Database/Seeds/MarketplaceThemesSeeder.php +++ b/app/Database/Seeds/MarketplaceThemesSeeder.php @@ -8,34 +8,296 @@ class MarketplaceThemesSeeder extends Seeder { public function run() { + $this->db->query('SET FOREIGN_KEY_CHECKS=0'); + $this->db->table('marketplace_themes')->truncate(); + $this->db->query('SET FOREIGN_KEY_CHECKS=1'); + $data = [ [ - 'id' => '550e8400-e29b-41d4-a716-446655440010', - 'name' => 'default-light', - 'display_name' => 'Default Light', - 'description' => 'Clean and simple light theme', - 'author' => 'System', - 'version' => '1.0.0', + 'id' => '550e8400-e29b-41d4-a716-446655440010', + 'name' => 'ocean-breeze', + 'display_name' => 'Ocean Breeze', + 'description' => 'A refreshing light theme inspired by the open sea. Soft teals and ocean blues create a calm, productive workspace that\'s easy on the eyes during long work sessions.', + 'author' => 'ThemeForge', + 'version' => '1.2.0', 'thumbnail_url' => null, - 'download_url' => '/themes/default-light.zip', - 'price' => 0, + 'download_url' => '/themes/ocean-breeze.css', + 'price' => 0, 'is_published' => true, - 'metadata' => json_encode(['tags' => ['light', 'clean']]), + 'metadata' => json_encode([ + 'tags' => ['light', 'blue', 'calm', 'minimal'], + 'colors' => [ + 'Primary' => '#0077B6', + 'Secondary' => '#00B4D8', + 'Background' => '#E0F4FF', + 'Surface' => '#FFFFFF', + 'Text' => '#1A2B3C', + 'Accent' => '#48CAE4', + ], + 'vars' => [ + '--bg' => '#E0F4FF', + '--surface' => '#FFFFFF', + '--surface-strong' => '#FFFFFF', + '--surface-muted' => '#F0F9FF', + '--border' => '#BAE0F2', + '--line' => '#90C8E0', + '--text' => '#1A2B3C', + '--text-muted' => '#4A6B7A', + '--text-strong' => '#0D1B26', + '--accent' => '#0077B6', + '--accent-text' => '#FFFFFF', + '--accent-soft' => '#CCE9F5', + '--sidebar-bg' => '#FFFFFF', + '--sidebar-border' => '#BAE0F2', + '--sidebar-text' => '#1A2B3C', + '--sidebar-text-muted' => '#4A6B7A', + '--input-bg' => '#FFFFFF', + '--input-border' => '#BAE0F2', + '--modal-bg' => '#FFFFFF', + '--chip' => '#C8E8F0', + '--success' => '#D4F0E4', + ], + ]), 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ], [ - 'id' => '550e8400-e29b-41d4-a716-446655440011', - 'name' => 'default-dark', - 'display_name' => 'Default Dark', - 'description' => 'Dark theme for night owls', - 'author' => 'System', - 'version' => '1.0.0', + 'id' => '550e8400-e29b-41d4-a716-446655440011', + 'name' => 'midnight-void', + 'display_name' => 'Midnight Void', + 'description' => 'Deep space dark theme for night owls and late-night coders. Rich dark purples and blues with vibrant neon accents give this theme a premium, modern feel.', + 'author' => 'ThemeForge', + 'version' => '2.0.1', 'thumbnail_url' => null, - 'download_url' => '/themes/default-dark.zip', - 'price' => 0, + 'download_url' => '/themes/midnight-void.css', + 'price' => 0, 'is_published' => true, - 'metadata' => json_encode(['tags' => ['dark', 'night']]), + 'metadata' => json_encode([ + 'tags' => ['dark', 'purple', 'neon', 'night'], + 'colors' => [ + 'Primary' => '#7C3AED', + 'Secondary' => '#A78BFA', + 'Background' => '#0D0D1A', + 'Surface' => '#1A1A2E', + 'Text' => '#E2E8F0', + 'Accent' => '#F472B6', + ], + 'vars' => [ + '--bg' => '#0D0D1A', + '--surface' => '#1A1A2E', + '--surface-strong' => '#222234', + '--surface-muted' => '#121220', + '--border' => '#2A2A44', + '--line' => '#333350', + '--text' => '#E2E8F0', + '--text-muted' => '#94A3B8', + '--text-strong' => '#F1F5F9', + '--accent' => '#7C3AED', + '--accent-text' => '#FFFFFF', + '--accent-soft' => '#2D1A5E', + '--sidebar-bg' => '#16162A', + '--sidebar-border' => '#2A2A44', + '--sidebar-text' => '#E2E8F0', + '--sidebar-text-muted' => '#94A3B8', + '--input-bg' => '#0D0D1A', + '--input-border' => '#2A2A44', + '--modal-bg' => '#1A1A2E', + '--chip' => '#2A2A44', + '--success' => '#0D2A1A', + ], + ]), + 'created_at' => date('Y-m-d H:i:s'), + 'updated_at' => date('Y-m-d H:i:s'), + ], + [ + 'id' => '550e8400-e29b-41d4-a716-446655440012', + 'name' => 'forest-grove', + 'display_name' => 'Forest Grove', + 'description' => 'Earthy greens and warm neutrals bring the tranquility of a woodland retreat to your workspace. A grounding, nature-inspired theme designed for focused productivity.', + 'author' => 'NaturePalette', + 'version' => '1.0.5', + 'thumbnail_url' => null, + 'download_url' => '/themes/forest-grove.css', + 'price' => 0, + 'is_published' => true, + 'metadata' => json_encode([ + 'tags' => ['light', 'green', 'earthy', 'nature'], + 'colors' => [ + 'Primary' => '#2D6A4F', + 'Secondary' => '#52B788', + 'Background' => '#F0F7EE', + 'Surface' => '#FFFFFF', + 'Text' => '#1B2E22', + 'Accent' => '#B7E4C7', + ], + 'vars' => [ + '--bg' => '#F0F7EE', + '--surface' => '#FFFFFF', + '--surface-strong' => '#FFFFFF', + '--surface-muted' => '#F5FAF4', + '--border' => '#C0DACB', + '--line' => '#A0C4B0', + '--text' => '#1B2E22', + '--text-muted' => '#527A62', + '--text-strong' => '#0D1F14', + '--accent' => '#2D6A4F', + '--accent-text' => '#FFFFFF', + '--accent-soft' => '#C0E8D4', + '--sidebar-bg' => '#FFFFFF', + '--sidebar-border' => '#C0DACB', + '--sidebar-text' => '#1B2E22', + '--sidebar-text-muted' => '#527A62', + '--input-bg' => '#FFFFFF', + '--input-border' => '#C0DACB', + '--modal-bg' => '#FFFFFF', + '--chip' => '#B8E0C8', + '--success' => '#CCF0DC', + ], + ]), + 'created_at' => date('Y-m-d H:i:s'), + 'updated_at' => date('Y-m-d H:i:s'), + ], + [ + 'id' => '550e8400-e29b-41d4-a716-446655440013', + 'name' => 'sunset-ember', + 'display_name' => 'Sunset Ember', + 'description' => 'Warm oranges, deep reds, and golden highlights capture the magic of a perfect sunset. This vibrant theme adds energy and warmth to every interaction.', + 'author' => 'ChromaCraft', + 'version' => '1.1.2', + 'thumbnail_url' => null, + 'download_url' => '/themes/sunset-ember.css', + 'price' => 0, + 'is_published' => true, + 'metadata' => json_encode([ + 'tags' => ['warm', 'orange', 'vibrant', 'sunset'], + 'colors' => [ + 'Primary' => '#D62828', + 'Secondary' => '#F77F00', + 'Background' => '#FFF5E4', + 'Surface' => '#FFFFFF', + 'Text' => '#2D1B00', + 'Accent' => '#FCBF49', + ], + 'vars' => [ + '--bg' => '#FFF5E4', + '--surface' => '#FFFFFF', + '--surface-strong' => '#FFFFFF', + '--surface-muted' => '#FFF8F0', + '--border' => '#F0D0A8', + '--line' => '#E0B880', + '--text' => '#2D1B00', + '--text-muted' => '#8A6040', + '--text-strong' => '#1A0A00', + '--accent' => '#D62828', + '--accent-text' => '#FFFFFF', + '--accent-soft' => '#FFE0CC', + '--sidebar-bg' => '#FFFFFF', + '--sidebar-border' => '#F0D0A8', + '--sidebar-text' => '#2D1B00', + '--sidebar-text-muted' => '#8A6040', + '--input-bg' => '#FFFFFF', + '--input-border' => '#F0D0A8', + '--modal-bg' => '#FFFFFF', + '--chip' => '#F8D8B0', + '--success' => '#DDFADC', + ], + ]), + 'created_at' => date('Y-m-d H:i:s'), + 'updated_at' => date('Y-m-d H:i:s'), + ], + [ + 'id' => '550e8400-e29b-41d4-a716-446655440014', + 'name' => 'arctic-frost', + 'display_name' => 'Arctic Frost', + 'description' => 'Ultra-clean whites and icy blues inspired by frozen tundras. A minimalist theme that maximises clarity and focus with crisp contrast and breathable spacing.', + 'author' => 'MinimalStudio', + 'version' => '3.0.0', + 'thumbnail_url' => null, + 'download_url' => '/themes/arctic-frost.css', + 'price' => 0, + 'is_published' => true, + 'metadata' => json_encode([ + 'tags' => ['light', 'minimal', 'clean', 'ice'], + 'colors' => [ + 'Primary' => '#2176AE', + 'Secondary' => '#57C4E5', + 'Background' => '#F8FBFF', + 'Surface' => '#FFFFFF', + 'Text' => '#1C2B3A', + 'Accent' => '#A8DADC', + ], + 'vars' => [ + '--bg' => '#F8FBFF', + '--surface' => '#FFFFFF', + '--surface-strong' => '#FFFFFF', + '--surface-muted' => '#F0F5FC', + '--border' => '#C0D4E8', + '--line' => '#A0BCDA', + '--text' => '#1C2B3A', + '--text-muted' => '#4E6478', + '--text-strong' => '#0D1B2A', + '--accent' => '#2176AE', + '--accent-text' => '#FFFFFF', + '--accent-soft' => '#CCE0F0', + '--sidebar-bg' => '#FFFFFF', + '--sidebar-border' => '#C0D4E8', + '--sidebar-text' => '#1C2B3A', + '--sidebar-text-muted' => '#4E6478', + '--input-bg' => '#FFFFFF', + '--input-border' => '#C0D4E8', + '--modal-bg' => '#FFFFFF', + '--chip' => '#B8D4E8', + '--success' => '#D4F0E4', + ], + ]), + 'created_at' => date('Y-m-d H:i:s'), + 'updated_at' => date('Y-m-d H:i:s'), + ], + [ + 'id' => '550e8400-e29b-41d4-a716-446655440015', + 'name' => 'obsidian-rose', + 'display_name' => 'Obsidian Rose', + 'description' => 'A sophisticated dark theme blending deep charcoal blacks with rose gold accents. Elegant and bold, this theme is built for those who want style without sacrificing readability.', + 'author' => 'ChromaCraft', + 'version' => '1.3.0', + 'thumbnail_url' => null, + 'download_url' => '/themes/obsidian-rose.css', + 'price' => 0, + 'is_published' => true, + 'metadata' => json_encode([ + 'tags' => ['dark', 'elegant', 'rose', 'premium'], + 'colors' => [ + 'Primary' => '#C9184A', + 'Secondary' => '#FF4D6D', + 'Background' => '#0A0A0F', + 'Surface' => '#1C1C28', + 'Text' => '#F1E3E4', + 'Accent' => '#B5838D', + ], + 'vars' => [ + '--bg' => '#0A0A0F', + '--surface' => '#1C1C28', + '--surface-strong' => '#242430', + '--surface-muted' => '#14141E', + '--border' => '#2A2A38', + '--line' => '#383848', + '--text' => '#F1E3E4', + '--text-muted' => '#B5939A', + '--text-strong' => '#FAF0F1', + '--accent' => '#C9184A', + '--accent-text' => '#FFFFFF', + '--accent-soft' => '#3D0A1A', + '--sidebar-bg' => '#161620', + '--sidebar-border' => '#2A2A38', + '--sidebar-text' => '#F1E3E4', + '--sidebar-text-muted' => '#B5939A', + '--input-bg' => '#0A0A0F', + '--input-border' => '#2A2A38', + '--modal-bg' => '#1C1C28', + '--chip' => '#2A2030', + '--success' => '#0A2016', + ], + ]), 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ], diff --git a/app/Views/theme_store.php b/app/Views/theme_store.php new file mode 100644 index 0000000..faf4eea --- /dev/null +++ b/app/Views/theme_store.php @@ -0,0 +1,861 @@ + + + + + + Theme Store + + + + +
+

Theme Store

+

Beautiful, ready-to-use themes for your application

+
+ free themes + +
+
+ + +
+
+
+ +
+
+
+ + +
+
+ +
+
+ +
+ + +
+ +
+
+
+ + v +
+
by
+

+
+ + + +
+
+ + +
+
+
+ +
+
+ + + + + + + + + + + + + diff --git a/env.example b/env.example index f359ec2..b12e39c 100644 --- a/env.example +++ b/env.example @@ -30,13 +30,13 @@ # DATABASE #-------------------------------------------------------------------- -# database.default.hostname = localhost -# database.default.database = ci4 -# database.default.username = root -# database.default.password = root -# database.default.DBDriver = MySQLi +database.default.hostname = localhost +database.default.database = ci4 +database.default.username = root +database.default.password = root +database.default.DBDriver = MySQLi # database.default.DBPrefix = -# database.default.port = 3306 +database.default.port = 3306 # If you use MySQLi as tests, first update the values of Config\Database::$tests. # database.tests.hostname = localhost diff --git a/public/.htaccess b/public/.htaccess index abac3cb..9707237 100644 --- a/public/.htaccess +++ b/public/.htaccess @@ -30,7 +30,6 @@ Options -Indexes # such as an image or css document, if this isn't true it sends the # request to the front controller, index.php RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([\s\S]*)$ index.php/$1 [L,NC,QSA] # Ensure Authorization header is passed along diff --git a/public/themes/2341342134-1441f7.css b/public/themes/2341342134-1441f7.css new file mode 100644 index 0000000..ee5b814 --- /dev/null +++ b/public/themes/2341342134-1441f7.css @@ -0,0 +1,38 @@ +/* @todo-theme-meta +{ + "name": "2341342134", + "id": "custom-1778678276990", + "group": "Custom", + "preview": [ + "#e01b24", + "#c01c28", + "#e66100" + ], + "hasWallpaper": true +} +*/ + +:root { + --bg: #e01b24; + --surface: #c01c28; + --surface-strong: #f8e45c; + --surface-muted: #c0bfbc; + --border: #c0bfbc; + --line: #1a5fb4; + --text: #f8e45c; + --text-muted: #b5835a; + --text-strong: #ffbe6f; + --accent: #e66100; + --accent-text: #f9f06b; + --accent-soft: #613583; + --sidebar-bg: #3584e4; + --sidebar-border: #613583; + --sidebar-text: #ffbe6f; + --sidebar-text-muted: #3d3846; + --input-bg: #241f31; + --input-border: #865e3c; + --modal-bg: #99c1f1; + --chip: #57e389; + --success: #e66100; + --wallpaper: url("data:image/png;base64,UklGRm5DAABXRUJQVlA4IGJDAABwsQOdASoACqAFPlEmkUcjoaIhIFEIMHAKCWlu8p8eP+GPQ/R4pugdfs/9z/tPg6/XP75/d/2d/t3qn5IfEvsz/av/H9v16/se1Kfj/2G/C/27/E/7j8ofyH/U/7f8VfM/1jeoF+L/yr/Kf279ofyZ/CPtx2q+zf7v0BfY/6x/oP8T+6X+f+aH5f/e+gf2L/03uAfyf+vf7D19/2H/c8aD73/rvYB/mH9p/6f+P/MP5DP8H/Kf6b9rvan+lf4r/uf5f8mvsH/lP9T/4f969sD/z+6D9xvZJ/YT/sfn+BcMqvl7jT3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTpvp9cOZe1kAXJIcPOZe4095prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnRyr2G9lY9Gg9NTIVeyqDXHaFwyeQxYspDyKm3JKE9AFNw+YVKCARG7Jyvt+fcowBZ3aDmxFIe801nTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHSp0CXigjvY4Q9lnXv+Aef90OFvmrrYh3Ov94wa4tQ5e3AgC7AXkedOmbhm98BK0xnHij3FGVVEVIFeTyL3hDs37R0+0cqTxOO4riIUDloYy7uwCNnVlXSRs2EQBbcd4nBEm8lyTmsy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN+ds1agvmI9HnOMgdWJMCqZKx2DmQhTl38ggMxgyQocrQW8dIDHZ+42Tdm7nUJaFT8DrO9Z3TDu5F2W4WkUxJa1VVW3vQRdwsEa1RF6Fnq/nvaqKpY1E5lcFD2ms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTo5l0MJAK2fSqDYwuzBGwhlioElLN4wSSf3VJjc5oxK3gke4mGwxbuDVuhswDnYrvM00P9XLJYqKRFu+lczBZN6dC8BqUKXpAGmFvKg+D/6fFCcvQ0VKCEZLN6azp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTqLlptm+WLPzydBqdrHKAASb/9PJmvu1+tp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTvObKr5e4095prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTfTYGZAXUVXy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOm+PlGA5kICSux7Sh7TWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHcPleV3xDCmdlOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp033RTBfuiPm4l1+NyKvl7jT3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN8cg9LrZo2FSfqOcy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOjmtpg7k122qggPZZBE95prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b70KaI4Dtq2uGEtPL3GnvNNZ06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp030Aq9HA5AsWutZo5EvqxqKr5e4095prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06OgfyRLF5S6N7Wb8wr9QBAPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b6AEGluT8t+PYAdoJwrlumn/zBQGCGaSnoIe801nTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06Ogf6HVCot1gbAaOifA9RHXufliQK1KVNPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06OQA6317A6Gt2T/ToamkVVcHtNZ06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHDkbjOxeHnMvaxEOkY5Gs6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTfTjQfKU4uD2msc5LH8KqUxZQD3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTpv1RpXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGoQK4PwnU7ao0rwGppXgNTSvAamKEiczSBPuohpXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwHHUVXy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dN9BqdDtLwIcy9xp7pW34wUcEGEjWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOm+88bbcMdl5TDeMC1UYEPNCDYUA3tQiukEeLOMLUeyq+XuNPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTpvp2PDilpeUsEEOnZZ6VjGEE164EgdMb6XiU7l7jT3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOjh8qd+2dBIuDkP02oaZeqZQ90h2lHXSDp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b7ELX6SqYezje+Uee1nGRZSH+lPRF/R2F3ecy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b4wj6/zhh5xrC8U6XALBpK7H2E+EuqwZbCcoyFv/E6vygWhfB7TWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp0dA9w6rJtAHoPHYEFljQ9xEP6KLnQC0NiKESca9XDzmXuNPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN/BEPSZgpQ4petY574iqMR/QWHAkPBpDLynGEDFs1D0I9Sh7TWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnRw5G4ztsPwxpU24olpw3v6eIVtt1Z033GuYxyPTwvOu6VEaIlhBJqSAZmMwG1nTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHIAb4WmL9Ll62QV8bCHZQsfDzmXtZYJACCY/vMBU1fXYPUYFISjzmXuNPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHDkbaFy1D0IF/+uNBPSoCpSvNNZ06dN+qJAmiEclKO5MxEqWd6oPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTo5coCohiZ0BP7vlRy9vXWEfOnTp06dOnTo5Lsh+fp6lkNbazdwAybBIvNNZ06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp033oH2BC902VXy9xp7zTWdN9cYT4zjjmms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnUXLTKr5e4095prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN9YOX85l7jT3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b471q5Ofkvi9tEORhKdx1NwI5eqlh6omlgag3d2LcVlthBLZhqxkcbq51yxqCPciLbeXgIwwQTQSZV5WWZWET4qT2CUBDT+/WQFAcBKEuczjW6EfXEFj7ZQ9prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06OcxAUnbNMT8n8u4e1zpxtdF0rJU8QWXvuyA1ZIdh2bZ71TZ3hVkoEv3GR1TEjmKVdpMra9h9Hus6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN9rpuTkB/gB3wMDcCQS6qPDNywjSO+gdJODCyKJDxwfxfcVcC6l+0TfpRIWe2Cu8Iz4JPAbDo9XGxImdsMSOlHtMHdhIu42YBQgvnQNi/omBlAPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnT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"); +} diff --git a/public/themes/arctic-frost.css b/public/themes/arctic-frost.css new file mode 100644 index 0000000..8ebf313 --- /dev/null +++ b/public/themes/arctic-frost.css @@ -0,0 +1,16 @@ +/* Arctic Frost Theme — MinimalStudio v3.0.0 */ +:root { + --color-primary: #2176AE; + --color-secondary: #57C4E5; + --color-background: #F8FBFF; + --color-surface: #FFFFFF; + --color-text: #1C2B3A; + --color-accent: #A8DADC; +} + +body { background-color: var(--color-background); color: var(--color-text); font-family: system-ui, sans-serif; } +a, .link { color: var(--color-primary); } +.btn-primary { background: var(--color-primary); color: #fff; border: none; border-radius: 6px; padding: 8px 18px; cursor: pointer; } +.btn-primary:hover { background: var(--color-secondary); } +.card { background: var(--color-surface); border-radius: 10px; box-shadow: 0 1px 6px rgba(33,118,174,0.08); padding: 20px; border: 1px solid #DDE8F0; } +.tag { background: var(--color-accent); color: var(--color-text); border-radius: 4px; padding: 2px 8px; font-size: 0.75rem; } diff --git a/public/themes/extract-test-theme-5fae6e.css b/public/themes/extract-test-theme-5fae6e.css new file mode 100644 index 0000000..888a312 --- /dev/null +++ b/public/themes/extract-test-theme-5fae6e.css @@ -0,0 +1,37 @@ +/* @todo-theme-meta +{ + "name": "Extract Test Theme", + "id": "custom-1778676985034", + "group": "Custom", + "preview": [ + "#f5f5f5", + "#ffffff", + "#274f69" + ], + "hasWallpaper": false +} +*/ + +:root { + --bg: #f5f5f5; + --surface: #ffffff; + --surface-strong: #ffffff; + --surface-muted: #fafafa; + --border: #d0d0d0; + --line: #b9b9b5; + --text: #1f1f1f; + --text-muted: #686866; + --text-strong: #111111; + --accent: #274f69; + --accent-text: #ffffff; + --accent-soft: #d6e4ec; + --sidebar-bg: #ffffff; + --sidebar-border: #d0d0d0; + --sidebar-text: #222222; + --sidebar-text-muted: #686866; + --input-bg: #ffffff; + --input-border: #cfcfcf; + --modal-bg: #ffffff; + --chip: #d8d8d8; + --success: #dff7e7; +} diff --git a/public/themes/forest-grove.css b/public/themes/forest-grove.css new file mode 100644 index 0000000..a953d12 --- /dev/null +++ b/public/themes/forest-grove.css @@ -0,0 +1,16 @@ +/* Forest Grove Theme — NaturePalette v1.0.5 */ +:root { + --color-primary: #2D6A4F; + --color-secondary: #52B788; + --color-background: #F0F7EE; + --color-surface: #FFFFFF; + --color-text: #1B2E22; + --color-accent: #B7E4C7; +} + +body { background-color: var(--color-background); color: var(--color-text); font-family: system-ui, sans-serif; } +a, .link { color: var(--color-primary); } +.btn-primary { background: var(--color-primary); color: #fff; border: none; border-radius: 6px; padding: 8px 18px; cursor: pointer; } +.btn-primary:hover { background: var(--color-secondary); } +.card { background: var(--color-surface); border-radius: 10px; box-shadow: 0 2px 8px rgba(45,106,79,0.12); padding: 20px; } +.tag { background: var(--color-accent); color: var(--color-text); border-radius: 4px; padding: 2px 8px; font-size: 0.75rem; } diff --git a/public/themes/manual-game-update-2-e1a77a.css b/public/themes/manual-game-update-2-e1a77a.css new file mode 100644 index 0000000..ee5b814 --- /dev/null +++ b/public/themes/manual-game-update-2-e1a77a.css @@ -0,0 +1,38 @@ +/* @todo-theme-meta +{ + "name": "2341342134", + "id": "custom-1778678276990", + "group": "Custom", + "preview": [ + "#e01b24", + "#c01c28", + "#e66100" + ], + "hasWallpaper": true +} +*/ + +:root { + --bg: #e01b24; + --surface: #c01c28; + --surface-strong: #f8e45c; + --surface-muted: #c0bfbc; + --border: #c0bfbc; + --line: #1a5fb4; + --text: #f8e45c; + --text-muted: #b5835a; + --text-strong: #ffbe6f; + --accent: #e66100; + --accent-text: #f9f06b; + --accent-soft: #613583; + --sidebar-bg: #3584e4; + --sidebar-border: #613583; + --sidebar-text: #ffbe6f; + --sidebar-text-muted: #3d3846; + --input-bg: #241f31; + --input-border: #865e3c; + --modal-bg: #99c1f1; + --chip: #57e389; + --success: #e66100; + --wallpaper: url("data:image/png;base64,UklGRm5DAABXRUJQVlA4IGJDAABwsQOdASoACqAFPlEmkUcjoaIhIFEIMHAKCWlu8p8eP+GPQ/R4pugdfs/9z/tPg6/XP75/d/2d/t3qn5IfEvsz/av/H9v16/se1Kfj/2G/C/27/E/7j8ofyH/U/7f8VfM/1jeoF+L/yr/Kf279ofyZ/CPtx2q+zf7v0BfY/6x/oP8T+6X+f+aH5f/e+gf2L/03uAfyf+vf7D19/2H/c8aD73/rvYB/mH9p/6f+P/MP5DP8H/Kf6b9rvan+lf4r/uf5f8mvsH/lP9T/4f969sD/z+6D9xvZJ/YT/sfn+BcMqvl7jT3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTpvp9cOZe1kAXJIcPOZe4095prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnRyr2G9lY9Gg9NTIVeyqDXHaFwyeQxYspDyKm3JKE9AFNw+YVKCARG7Jyvt+fcowBZ3aDmxFIe801nTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHSp0CXigjvY4Q9lnXv+Aef90OFvmrrYh3Ov94wa4tQ5e3AgC7AXkedOmbhm98BK0xnHij3FGVVEVIFeTyL3hDs37R0+0cqTxOO4riIUDloYy7uwCNnVlXSRs2EQBbcd4nBEm8lyTmsy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN+ds1agvmI9HnOMgdWJMCqZKx2DmQhTl38ggMxgyQocrQW8dIDHZ+42Tdm7nUJaFT8DrO9Z3TDu5F2W4WkUxJa1VVW3vQRdwsEa1RF6Fnq/nvaqKpY1E5lcFD2ms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTo5l0MJAK2fSqDYwuzBGwhlioElLN4wSSf3VJjc5oxK3gke4mGwxbuDVuhswDnYrvM00P9XLJYqKRFu+lczBZN6dC8BqUKXpAGmFvKg+D/6fFCcvQ0VKCEZLN6azp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTqLlptm+WLPzydBqdrHKAASb/9PJmvu1+tp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTvObKr5e4095prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTfTYGZAXUVXy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOm+PlGA5kICSux7Sh7TWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHcPleV3xDCmdlOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp033RTBfuiPm4l1+NyKvl7jT3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN8cg9LrZo2FSfqOcy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOjmtpg7k122qggPZZBE95prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b70KaI4Dtq2uGEtPL3GnvNNZ06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp030Aq9HA5AsWutZo5EvqxqKr5e4095prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06OgfyRLF5S6N7Wb8wr9QBAPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b6AEGluT8t+PYAdoJwrlumn/zBQGCGaSnoIe801nTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06Ogf6HVCot1gbAaOifA9RHXufliQK1KVNPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06OQA6317A6Gt2T/ToamkVVcHtNZ06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHDkbjOxeHnMvaxEOkY5Gs6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTfTjQfKU4uD2msc5LH8KqUxZQD3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTpv1RpXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGoQK4PwnU7ao0rwGppXgNTSvAamKEiczSBPuohpXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwHHUVXy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dN9BqdDtLwIcy9xp7pW34wUcEGEjWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOm+88bbcMdl5TDeMC1UYEPNCDYUA3tQiukEeLOMLUeyq+XuNPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTpvp2PDilpeUsEEOnZZ6VjGEE164EgdMb6XiU7l7jT3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOjh8qd+2dBIuDkP02oaZeqZQ90h2lHXSDp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b7ELX6SqYezje+Uee1nGRZSH+lPRF/R2F3ecy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b4wj6/zhh5xrC8U6XALBpK7H2E+EuqwZbCcoyFv/E6vygWhfB7TWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp0dA9w6rJtAHoPHYEFljQ9xEP6KLnQC0NiKESca9XDzmXuNPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN/BEPSZgpQ4petY574iqMR/QWHAkPBpDLynGEDFs1D0I9Sh7TWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnRw5G4ztsPwxpU24olpw3v6eIVtt1Z033GuYxyPTwvOu6VEaIlhBJqSAZmMwG1nTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHIAb4WmL9Ll62QV8bCHZQsfDzmXtZYJACCY/vMBU1fXYPUYFISjzmXuNPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHDkbaFy1D0IF/+uNBPSoCpSvNNZ06dN+qJAmiEclKO5MxEqWd6oPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTo5coCohiZ0BP7vlRy9vXWEfOnTp06dOnTo5Lsh+fp6lkNbazdwAybBIvNNZ06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp033oH2BC902VXy9xp7zTWdN9cYT4zjjmms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnUXLTKr5e4095prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN9YOX85l7jT3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b471q5Ofkvi9tEORhKdx1NwI5eqlh6omlgag3d2LcVlthBLZhqxkcbq51yxqCPciLbeXgIwwQTQSZV5WWZWET4qT2CUBDT+/WQFAcBKEuczjW6EfXEFj7ZQ9prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06OcxAUnbNMT8n8u4e1zpxtdF0rJU8QWXvuyA1ZIdh2bZ71TZ3hVkoEv3GR1TEjmKVdpMra9h9Hus6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN9rpuTkB/gB3wMDcCQS6qPDNywjSO+gdJODCyKJDxwfxfcVcC6l+0TfpRIWe2Cu8Iz4JPAbDo9XGxImdsMSOlHtMHdhIu42YBQgvnQNi/omBlAPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnT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"); +} diff --git a/public/themes/manual-game-update-7cc79d.css b/public/themes/manual-game-update-7cc79d.css new file mode 100644 index 0000000..2ec2622 --- /dev/null +++ b/public/themes/manual-game-update-7cc79d.css @@ -0,0 +1,38 @@ +/* @todo-theme-meta +{ + "name": "Arctic Frost", + "id": "external-1778671418937", + "group": "External", + "preview": [ + "#083344", + "#164e63", + "#06b6d4" + ], + "hasWallpaper": true +} +*/ + +:root { + --bg: #083344; + --surface: #164e63; + --surface-strong: #042f2e; + --surface-muted: #155e75; + --border: #155e75; + --line: #0e7490; + --text: #f0fdfa; + --text-muted: #67e8f9; + --text-strong: #ffffff; + --accent: #06b6d4; + --accent-text: #ffffff; + --accent-soft: #164e63; + --sidebar-bg: #164e63; + --sidebar-border: #155e75; + --sidebar-text: #f0fdfa; + --sidebar-text-muted: #67e8f9; + --input-bg: #155e75; + --input-border: #0e7490; + --modal-bg: #164e63; + --chip: #155e75; + --success: #059669; + --wallpaper: url("data:image/png;base64,UklGRm5DAABXRUJQVlA4IGJDAABwsQOdASoACqAFPlEmkUcjoaIhIFEIMHAKCWlu8p8eP+GPQ/R4pugdfs/9z/tPg6/XP75/d/2d/t3qn5IfEvsz/av/H9v16/se1Kfj/2G/C/27/E/7j8ofyH/U/7f8VfM/1jeoF+L/yr/Kf279ofyZ/CPtx2q+zf7v0BfY/6x/oP8T+6X+f+aH5f/e+gf2L/03uAfyf+vf7D19/2H/c8aD73/rvYB/mH9p/6f+P/MP5DP8H/Kf6b9rvan+lf4r/uf5f8mvsH/lP9T/4f969sD/z+6D9xvZJ/YT/sfn+BcMqvl7jT3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTpvp9cOZe1kAXJIcPOZe4095prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnRyr2G9lY9Gg9NTIVeyqDXHaFwyeQxYspDyKm3JKE9AFNw+YVKCARG7Jyvt+fcowBZ3aDmxFIe801nTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHSp0CXigjvY4Q9lnXv+Aef90OFvmrrYh3Ov94wa4tQ5e3AgC7AXkedOmbhm98BK0xnHij3FGVVEVIFeTyL3hDs37R0+0cqTxOO4riIUDloYy7uwCNnVlXSRs2EQBbcd4nBEm8lyTmsy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN+ds1agvmI9HnOMgdWJMCqZKx2DmQhTl38ggMxgyQocrQW8dIDHZ+42Tdm7nUJaFT8DrO9Z3TDu5F2W4WkUxJa1VVW3vQRdwsEa1RF6Fnq/nvaqKpY1E5lcFD2ms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTo5l0MJAK2fSqDYwuzBGwhlioElLN4wSSf3VJjc5oxK3gke4mGwxbuDVuhswDnYrvM00P9XLJYqKRFu+lczBZN6dC8BqUKXpAGmFvKg+D/6fFCcvQ0VKCEZLN6azp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTqLlptm+WLPzydBqdrHKAASb/9PJmvu1+tp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTvObKr5e4095prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTfTYGZAXUVXy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOm+PlGA5kICSux7Sh7TWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHcPleV3xDCmdlOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp033RTBfuiPm4l1+NyKvl7jT3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN8cg9LrZo2FSfqOcy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOjmtpg7k122qggPZZBE95prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b70KaI4Dtq2uGEtPL3GnvNNZ06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp030Aq9HA5AsWutZo5EvqxqKr5e4095prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06OgfyRLF5S6N7Wb8wr9QBAPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b6AEGluT8t+PYAdoJwrlumn/zBQGCGaSnoIe801nTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06Ogf6HVCot1gbAaOifA9RHXufliQK1KVNPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06OQA6317A6Gt2T/ToamkVVcHtNZ06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHDkbjOxeHnMvaxEOkY5Gs6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTfTjQfKU4uD2msc5LH8KqUxZQD3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTpv1RpXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGoQK4PwnU7ao0rwGppXgNTSvAamKEiczSBPuohpXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwGppXgNTSvAamleA1NK8BqaV4DU0rwHHUVXy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dN9BqdDtLwIcy9xp7pW34wUcEGEjWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOm+88bbcMdl5TDeMC1UYEPNCDYUA3tQiukEeLOMLUeyq+XuNPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTpvp2PDilpeUsEEOnZZ6VjGEE164EgdMb6XiU7l7jT3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOjh8qd+2dBIuDkP02oaZeqZQ90h2lHXSDp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b7ELX6SqYezje+Uee1nGRZSH+lPRF/R2F3ecy9xp7zTWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b4wj6/zhh5xrC8U6XALBpK7H2E+EuqwZbCcoyFv/E6vygWhfB7TWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp0dA9w6rJtAHoPHYEFljQ9xEP6KLnQC0NiKESca9XDzmXuNPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN/BEPSZgpQ4petY574iqMR/QWHAkPBpDLynGEDFs1D0I9Sh7TWdOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnRw5G4ztsPwxpU24olpw3v6eIVtt1Z033GuYxyPTwvOu6VEaIlhBJqSAZmMwG1nTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHIAb4WmL9Ll62QV8bCHZQsfDzmXtZYJACCY/vMBU1fXYPUYFISjzmXuNPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dHDkbaFy1D0IF/+uNBPSoCpSvNNZ06dN+qJAmiEclKO5MxEqWd6oPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTo5coCohiZ0BP7vlRy9vXWEfOnTp06dOnTo5Lsh+fp6lkNbazdwAybBIvNNZ06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp033oH2BC902VXy9xp7zTWdN9cYT4zjjmms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnUXLTKr5e4095prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN9YOX85l7jT3mms6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06b471q5Ofkvi9tEORhKdx1NwI5eqlh6omlgag3d2LcVlthBLZhqxkcbq51yxqCPciLbeXgIwwQTQSZV5WWZWET4qT2CUBDT+/WQFAcBKEuczjW6EfXEFj7ZQ9prOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06OcxAUnbNMT8n8u4e1zpxtdF0rJU8QWXvuyA1ZIdh2bZ71TZ3hVkoEv3GR1TEjmKVdpMra9h9Hus6dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dN9rpuTkB/gB3wMDcCQS6qPDNywjSO+gdJODCyKJDxwfxfcVcC6l+0TfpRIWe2Cu8Iz4JPAbDo9XGxImdsMSOlHtMHdhIu42YBQgvnQNi/omBlAPeaazp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06dOnTp06OAA/v8xwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW9g81YzJrVrKazGdnL4YBDg/wy0h5Cv7BhM1frsjWyBYcuiTQyB7P4aq8vEUsrOuxERG4eIpBBrdjOV94AAABm5QQenLnQm+mWPsTwpEqz5C14iq53S1my1juzZCvVXWTU3xAwK0AXj7O1PcjMnXSnF3mde/hW4NM2dk+M+xSC86N0MrKkFniU4RZA2J5jRYYXTOJdGub+jx/zaaDN8dNMe0BFZn9VeOkFgYYizO6NBm7Xfisk3B7q4WXi9T16Jk/gg0ADPxKL4PBvH9CVtt0TBJAu1XxY7ec4AwzeelECbOzuwjbwlOYs/d4K0iou9yIaZP86i2EcQ3DTsfpxykKnRg3BSlUffyC7CwAC+iwwj8wE99miT925VIduQjDadtuUd2gOk5OM9u4NkSjTb/6RaLPBGA/jYRnlHa7196Rdy4PBsJFMFn6Bfn6mpGze/vSI8+iVfgXlAkak4XX51mX6s6pUHgBzwmYZK7Kxn4UdHTcunIDLDAwvAsMylnOI8h3oTzpQGuzUmXfjNFWEKr3p9+NdpQ8/lxz7OYhnRYXaXz3E2DBGFtbOc6JIBV+A/BzzgSjVSWjFtAAM/Xzetuw1VV67HtbM7oLTPDyXWdbNu1dzYbUELJUvhgkyePiW9LltpQAAAA4FLR0K96AqfqHT5L9r3xlfpp4tQEk896hOLRmVaU8nqjumWAWWWzPVWa+qdh/n5NTpe+g5sPcI4LO0g9IcEtBFsAhKjY0XRKpHqzymF9K+0R/WRslsWZFOH3vDQgf9OHL7tR4JdD2yqi12/r8GTfS1g0AjSOR/B1QhuljV6zmHS1ScX2KSSl/KUDaSEnacuG/zn5S2elyc1cfqVBqbD9kh1Q5Ysd4jw/sR4C/Qp7gJklImEjadj0Wzjb9P9VlfVxGNsXRaaRtouN8KeUJA/IXxU+ZuqVg1Evv76pxxMReLlSbqnCtDvXyEx/VKaevN/V0QmD47spwXUdnXNRxwP1z6MoENmb1sUyQ+LZFsJKKyCsOez0hCplOiozNg0iElrrrA1St3c1rFwpti+Cf+mN6Dq/Hp4QWApkJ0FN7EaghriCuGKhQV+bj3RBOs+uqV+G7WR8V1NjTvPrJjlSPOgg0uhd0llPkbAPY42hXOwAPUVQCnid0oODd3QeK95+wtwSLc9R4q5OoO734A+ASNo8EzGsChQhVcWIgeVL2K7M3Px6VXT4a9BjvPPxOavebTG6hSp9WERlPUaKsqY2v7skfqvwAKblYEFanItHBLmRC5wu0luDGPhRJsXgSf6J5HCFg+YAGQvPavibKxkXufTwti8kT/2U6p1/4NcI9EJQHSWRSTxgwvkajeWxz6OxepXENLv3b6ttxlXEWLa6jEjXZ4WhHAyx9fnYurfSYyCFMObkoJmPIBafj8Uz9pH63qa/+HJVjBzu7SxhlZkCeii3FoEFzWyqai3H9X0Q12+1O8iBJd7nZFEQWF1EOe6J2TUUVIFH0aTUZhw+scyJBSC42QTwjf0kiwnd5bYj2wusxSXVzMrl9EFUwoQY4jSeGiJoOUg1ezozj9Bj+lOn4XnKaTPU1M7f79B3WBPMqkn3eq7kXSJeTNAY9sFO+DvtfxrLc4Fhf38npb8w2Yk5AdA8mHOhsVFBvJFt6ys8m6+EQj0b5bjAzMaQpV1K5YdwCbX8yLNVkxKKdcAa7CWNj8iglDEe5Q/5BeEBRPU2JIQN1Yb/zXrx7COxbIM1lenGydYaL2Yb4aoxa3zM22a3ThiB3rjgsLzQ7TULsaZklhIw9VF5IHxX/A/ApxlusIkXI6jCjMi19WN9uhMmGgTWsRtMNL/uMwU5tb4LHWbGo/6ozOSQnhg8SQmlnSHJ+QymOCONwthPR+gAAAAM0uGH9RkgcF7E+b8K8h+1UR8ZxBO0NM5nTsPKEg/OeCksCJcFoDWaFDsOxYP73s41gI1PrbIrplZmbWCsskl9ypa6/NzoCrSJGHjiltUdGKS/OLFIuUNDSUD7OZdMAcB/rSJNs/w0Wm9cltAeCJOC+63upwUhFsZJYN/qb38kbr9udBUfvEyx3DCbQ/z36XsLginBoWMBZeUAv/Y703YVaIbOd2bXyQdtIz36m3yvSLDKCjniNRjOwyzchXumN0lrHvN1m/lWzA8HgTttEGrRx1DpXMuN0URjc7f7/MAg/P8KRYUqw+xhcLse8JuF1ICQHcPubqlsPNqZ8Zm3OwzkNmn1nEf1wutT3AI3yAFXL9d3GxwxWxVP++TBVFzhU1QIJ8rGbvQ4qISekqHhBc/yNl1ilDNS5WCT5vyF7bAhhNJEDKvDDrVtsyrAnX01+YBPnDqvAg4LjRrsVsTHmbshLNBShpK4TXqeEnlxVV7ZVHBcJ+nqk46hTvKxyfSKf8fzv12rzzbhT0amrIZvapcSB+pw3ykhdHdDm6YcfS5C0Kkbvrm/9VfL/N/anhgi8ut+LwKkX3ipStGpPby6mhOw8um6wSkmcmmvztgKkOCZIdYWT8vtfDEo4FV/+9KxgSP+HHxw5ZolbrT85+aHBhsi3JfmFnYY+eQPkhAQd6gqNPzn7slsywkuqbZB63EI856DkswZYSnK1BjUpZ2LIGQ0yjXb3la9bsHCa71WNMuQjxLI+DttK2tgaa1kLYzwjy+U6HhLwSfJrnVHMD8EjbBG0dZV32E2tVrbY8oCi4lwUpp1lhHcWvmcO0nfgki6G8zKmfjsad2eV4grlUD5FXZNIB1zh+mY72SAQHdTlpL+sVvOlgHf0g4jwxVfD4wB0L8DTHH7RBOSYzgnzI0sOqgbVIWPKWkgmIHXrWYlcDqLXvlwddzvQmRBKjz0gwfPjMAPxVD/nvTrw96SWhON9LM6h+0AAAAAtQYj2uqHY/4YIaB+lwwf/HPknXeaJj8D0BLVSIJ2CT57likjUSVux/4ecBGnVbl4F0lGYlXEAmyzLoaB0MdPVvf8XD3TKTe9d7bew6UHrZV7IDNDpt7dN5BMwai27NFI3OmsReojhDusn/KQEnaP+2thwtYKP/orQxgmbJTt1DsPlHCUG49QmkaqOSBpb7TC6ddDPPkr/MqzYBaS3dcC9MB80uA/NXesEs93IMtPRzz8q+yJ6udAWpDo5G3oYcTy+gIDCGyt8DsjusoBDfVThYiWYQwTBvIQmvFgNMSY1hjvyGavWhDdb/Y2a//S5E3gjhR+UipRkUGN6LFpPNZBfSZlULxXOamkkXGXQu/A7WdwUDIWAS2BTKjQXsMbnI5FY/hs+swzrqQcW9pa33RxE7ungvUrxHDnDZmLH0SgiO30lMOLjZfVE/hfLTeiLZvTKwvYj0wIuVe2wn2u+bg4CRmyWu8CY06FCxpe9ewiklyCk/ZwOu665xUOORPIGAmjMEkEqmaQbZ2Qmuf1ch4ie19OERhfAtlT+LELBSdKVG6sjq6sfNr50pe7Oz2R/0LDYExUdL6+yTtGsl8oS0nQP2wN5sxnJArc4KQrdQcShMVuG5wnntPP1Q0vnSWR45Q52Olgc4B1ebDL/2gg4he6KTLjap+AOQWjrQepUF9dr6EOgeu92d3u2QfBiXyPuP/LivOc+1TjZz5hqiD+25vPn4V5AUllR9X+zu+Qjs8vPeOJPUbMohiC6WiYHX3WUuzCfmpoHVGiEywQBQ78mYA4w4UJ4kTq8kdnEtUw0ofbDV7MGQF84OaKi4XLPuHXY6vwk3ZTS0bHX7nHODhv/qfLWdDlTDs6I8AMvHLaqogH5yUjXdYmM4AAAAPYgbSguWh1BnVxhLTR+iHCrTcATWr6PQJaEi+oP9N5ABpJv61gnbcZsDVVs8jGc+00K6EmEgohqzWTP7sKLs+qK00sjUMcjHz4JYdUolaVs/vGIolRsMq8AAAAAAAAAAAAAAAAAAAACAyMpWTfIn6K5p/PPch6C8W3pYNLnNo3L79L8fhNRmgZCSJID4nQAAAAtObXLkkGH0CxfD43QrBh1olgSYKFwyb/ffot0T6kzRiqvgTwULjjLAErBV+1Mj9JdgtDjnjSk+Zo7QKmlv1hpdQyhSusNUVDnE7thXU3ATLEtppwWA14gAAAAB3gEK1HCdcELP1PHYFMrSIaaaYoORQfyGExrSw1Atz56/KzjtYgEM0SwhPaiHA9fR7Me2ZnQGOWvsmQxUDE8k2ctCL9XdYUky8QwyeKOjcQAAADs67tvfhZ0H3Ou2cEhJzMohWLSnqUpLP2ow1obN2c8AAVX8iG1mv9kSVKoOSL7cI5Dty2K1i5S7sbNQBzb6c6rYtoHSpC4VRNSXMRS+N0j0LBQi1Bw/IwRyNbMcCAAAAAwMeJmO9d16rDNSiEEc279R97xo/O9J0h5cQ6jM3yrCzpstnSBoYsuJ5E38XbBmj4zxSe4d05CipUL41M/J0RTif/C+m5YqwkV/NgyWT2aapEmLPSAAAAAW5OaLYJRK/K8GvXTso+w88L6epo4VwOYcpFknwdAWrL0MsfjMoyvQ9djUm8yqkLHTTinyeSCpa3TdUiyCNk20AYshrDTWQBwW0C0tZ0rvI4V1RAsRqn88wwAAAAJNADT9JNSItabN6LkzIpm6rqXNdhLY+xq8P8VdVjZgGKzzL7DFrrwAUsNCCzI+vp+Foo4LqsHInS0GiW7/eWTSWtbYGGcnrStkXNDts5FJhJAik8H6UE8QAAACkm3p5FZ4qzOvuVRjNbzhq1LnA6F+TAP4purr0u3NgtzzIiDXgYBlRrqibJkUgQ0K1NoAhKVgY9NbnsdnQ0aRtIhuEfSFnARBxsUSoN6+ShdugYQPOhstgAAACsjvA56Z7Bt2bD7GMWT9vj9H+QPyrhlzzZTiylqySkFbGMNEnEwsdU3Fd+vYvibXmZ0erT2oYG9PLCyhR+i9NFioJz34JjOIfbAw7M87vMaZzUJA5l72AuUISewrY9yUVS99W0IvAAAAAPgrcWz6fCcPvlhrv6Tpj8YCLn+nty25BExbajh2RhoGYIIpANVkKml0hhKceiY0FpU26w2xIHhu4C0WppGle65azBAvhwy/edBMQGlgJYsON1rZDonaxR5SrjZbN+rgUwAXhRnVNUl7if0hNxk2GUOg1H21PWSKvCLhYBSEvM4+TQmyBr/tWgJPtafoWm276Hlj0MhX8aaloPJFiIvCWsFUFxsgAetDauVagxG5X+Q2Bfn7pRZWwBNelYnpWyJ+4Fjyz5dtrU3Wo6dJYTuLPnUBmOIa3UIAAAAYSX58DRGOoSWd1H+s5RtHE1FbihK9kC6q1xdgk9ojE4N5hdib/Yo1vnHohhKLIomSV5LgcTIA9zOlZAQICFFaq9bj15spjozo2DTe9RIu2mglMLEiEJfwPmwOcL6MB9nxvDuGvd3xP7UxXiRHG3bKy9iDZbHavBkv+0RSOe2KS2Z+TLJ1RMEVyGyx5QOxp3vh9pGl4jibgszcZcQc6eLzw/mC9Ykgisqmctz+BhctgKeVuxIR2AmTjdKcv0Ty2US0a+ZYmyu4SqL6hdAAAAARgyjVbCX1efvhAYQlnFj3TZoyZXkb7lndR/rOTvrh9FexqjMx8O70bHthVxB6wgqusgc0gVLvqxgCZgkeZoBQeJm41lkYTwC7opIPp3dV0qdHNfeitS3XfW1TcAAAAgRr5KvX+XkuMvZVPBzClm2H0CIh34gKMHP/QLCdEp02uNYh49B6481lDIpqE2LfUZkEbet4HYjNTbtnIljUlLcVtUIbMM5bL9LqTksN+BgMLew2N5YAAAAnRTtJ1JpQp1Nd1iimt/XT3CSsDaNYDBqnUSopifglVSwffZ7g3wMa6AyBjVNxDEaYeQnAhAysTTMqMugrydSqhHhMscr3+nA9hbUR91CyNLKMZjX+/hD3Xe3AY4eRPlOCBIALL/T34CFycJQHvLSeQpxI7IphkznIEEVI9DznUTCZyzFPgqiRl9aVE97Exr/KP9s2FuO14CXIwWIlhux/59i+ddLFGW6bo3t310v0+Z8LKuN+eqw+mtEkETPY+IN67jLCChZ/F4S66fjCvENO/+f/AAAAOqbrU/7Pyo6c4ff1pvXYHhW3BW8WGvkdGrGfbHZ8/4kAzUt+h3mAJ+7inRjNDHuP8E52JxpvpO9wKhgczd3Zyoo65bE10tcJTuOOIUITgsu3uJGHQoCHYAAAAVebU7TkZHc0dP/wHiHpWsRDC8DZNy5/dIMNyTtqW9GEtPCeZReYEefOEdtNs0ZoPxNHH4HMUF2rG4IyftzNtjeTCAnMa0CdHb/9mCJ6qSRd4qq4QKzMHxuPfeOlpzCRqfuVwnYillMvTsKP9ha9+xF+OOeW/kl4vL/7GChqhZAxq8eUgfvtc1MA6kvddHvORlpKtSLdp/wCn2sN4Kw9qo5bh+jMVjXMq9LdNZ1iMfzyei7/5D+r3uZXZDs8hYXG7T+FF/p63xl9WtSRWnujJ6sGB44KR7wZTF97+qRv/++t67pzQ0BvaiSr9BTaAAAAG2queDAtcX+56GR0+V6ca+SpEbmPSMQGNZhVeRKSLSYYh4CUY3nCiKE5AFwwfSDJuDSJk4lG7AFEFjZfxcmD6nffkP2EDLX2R6i258CuASPlvp7PL3KlruyVdABCWQsuS6bBb64V9IIxOAWYDvnWVVWob8ph9XL26CvCbc3auJupPZ7fStV5wNtFZJJN75urteXNVXDyRFBTBgKGz8jpEBuEylGudaHjUOvj0S5aAJjaJKQJ+4gN3QuLWFyktGqwhuaHx/OAICIk8MvAAABgj1nYpgaoe/GyzyG29ZTIAYEhjDFJTvUJL46PSKsCS0gYvdE8fFwzJu+24Yyr0aIyQT/joBDVhFyU1M55oIQDKTIiQI6KyC5z8LS3CSSDXsZmc6s8EUYRSLSrrVTGAsWoB9E9YZBDmc/vTKKSOVdfHYaRSjjageYdBXbioiVFLsboAGQj4Jvvd6q2ilNfe0SlPRw0/+6GUDrWb3oXTv3Jon7Vkp41dPW5CyUKd/pJY6AAADkF1a4LMMFQQ5C0mw3kV75wz3rB2q5o5q0eKTfw8ubRvJvo9x7845Amb7QhCxPjsYtq+GVz41OSQdfup+d/bAli+5EMDJT4a5X/k5S9UiAPjUeJfLP39zNdLdQ6I/OkP51u/D8HSkK+JNr4Lr4xUX4X6/IlMTAtswA5Mydxhhvl+Bioga0/18q0HeUHCZbK6amssJ0siTYBes3CuDteO+Team+1YsZxMKwxC+1o9+wAAAKqbbVaOU9GnovDgvJ4L1KhPl+0q+EC9vI9UYOCk8j87tbhdK5/kC4n79i/ZSg9HwEgdkVEl1lXR/6yi44VrBGs4UOHqCu0vebxhpK48Wah8aJo25Zq/3z8IShDeV/E+8yXY6NClyF6za4Xk2xYnYGo7Hp1Jc2OqZmLN9FdEsILZU90uBUwVSMD8c786S6pRR8tqhkzJqlpSLtDVZiEJcdj897IZdf2hf36fW4bnYtwfjBUZmh5hqEbSFLotmcvUhibAUn5h+LVEipa33DP5tSpxOEvWKSuTMrD99tS4KQCOi5ikG5b3Nkd4v5XJstOir0pDQUgOpnYayUp4VglIxobX+DYwOUu05hRt2EbLt/ExEAAAJ1n69onYYIWYq5j9hiEYEaPLfCWlkWDVYf9ihMNcpN51fgMLBNb51ZP7PN+hY9okuQPFoBk75gvvdk+MXy/jthY4xsKxcw/6WhClI6IWcuXI2rek3SIjb9IDbmCteq/wmWshVjej/QhYU2st9OR4JiQBF6EcaRUJqDNPdnU+OtLtg87bcMOIewPxT7mE25l9aRtDYU3neZ71twg0IlUKOo6goCJz/en8AttZwn2uvdFRRWqYoZLZ9br8pATq2kUSVEAAAAAI8ydF+5BtzHqAKXSV3fB6kpX0hb4gXQaG0diH1mXI6LOv2dSNQln7fKHb4wsTbjUXLXHxuFZD84e4ysbgfxmDIy1V3eaGHECQAd3aTQgijkXp8yOYpcQsXr+EgQEXDhHMv53CjBkG0Mlae7PwIaoq9UjlefVNTs6XiPK31SpQ9yqGZVUpz3TXoAQixurotu0R1P/wdxHA+gMHeDwJGl2e8QXEqwunqXKi1mM2L0YxMtnMHrGtr928N7ejXJXwY8HJJwAr6REW3eFrThgvm0WOqjTS9mbvR2I1N0mvm+iY+KQG5CRKihtle/IkCjQ0AAABrqSokGQ/a34oaO6H5HrJH6DGZ0teF0rBdwCvnzp3wwwgAZ2i5sBFqa9A4umhjGuLCbUqo98nZgmIvEyH7L/hNkjNNt8EnAllNASGfw1TEWroqKC+FUKIoZmbN6ngP+n6ES46gGjPQUKQWK4h24HrSYKbcc2iIwE2iSJn0reiIo3aztFKbaaNHOMBw4ciZqydUDlQJ9yN4srQlu/4qFOzH/MD1wnZgjcpLo+1TmDGOOOSBxuO3vZ0IJVcXjv70Puhevo1etAuRhEqtldVmAYeWwf7GnfOw5gi4VyRw7J5kEknShPGRHrZ7TY+kreN4Gb3XxSPjthgMsFeztv1RwY8mW4vrsnW2wF+GafommzI711r0BN26eMLO9sqhsJ2z7/lPbtDZYPG0TezBhjwbm8dH4gDF1PT0GQkYVVWi9ULjrAiupD/93ctPvD8RYcjT88ggglaoyo2a6f8n+EimL3RSryjBrlYdthoay5ApqfhuAVYK6zAbTeZv0PMvtxr/mU+AczWYAAAAZZeRhv4G8teTAhxowpAHidB1PlWjtBb+4K/wA69rPQ5jvWfPaAMl0240vMLoGtwnaGra8fcQ93c8ArpMoWfgzXI7IfFGq4TNugDojh8BlqgXSGPp1uqA7N0Bdk983YXL/kQopJ7xlD3Bu/1xbIrjkbUjYMrPi3MzdG5OfCmovVMYZuk0+ZOa5BUOl2QBOyBsH22KMVosJCU+UHhlILacUx4y2TRtxI4Fol9V8O9HGXH3ypks3xXmp08RI+W3ieoIWO7MXd1klwAMdu0tclyXQjc4RyKTs40B5dbjeYjeDwWnc1pL1lWdpc9UwRyXNzkLnyFhlP2SqjJklk8sIUAfBHNtqJRXMFIsevmQepcg8SXwfETBhUSQlwDRDe2A4JGMMfLGoenogAAAC/vSho8p5QgC6RseoV9uj6onptWpa/OA6rB1oIJq4H7rDowhlf2h43mKn9DQTGc1Eet67gexvb2na1wjza6e+9ucyWsaZFWMHxa+y9oif84nYZXgeyCs7l1jOcAzOE5cgGou37FxhKA14gK1LHphNwM5p8x99b+/PhEF64FOsPJBuNoRNv15q/C1WBe01Fm/ycoqEKSSlpKxfERlnc5EvaCxOLijN/Klfk4OnBW5oduxLsYiKycd0BbziC2WfmGuD5hkRdMTuXEYogWGs2J5C5fHtb0KFPuFMciJOeiJzVAYGy+u4QQhnRsKsiXpStwrvq/3PkIfmhAWTwz5hLSStTghA7WhkAAAG62o3RP+ULoJP4tokpDA35qz2AFgKL9QKlvOAjoA3fNgfTTcbKo6dTYiL9rgOLiHpI83iF+0i/GkEL5G6kJO3140r08RDzCLO5YEgsVK1HXUj67qDPubaTuHD1TUbr6SwAlyMx8FsW74RpKrsCTikSsQs2U+qQPJ1jjzjmTVy7bQb4oiZh1Fctbnsj8VymuBhuBo/7EuYFYGp9nyOFMFCNQCTlMASWFFj23cN1Pc1kyesi4m603PEiC09dcsj1cQrCzUhslG6EajtbhUK464gQ22S1dfpczacI9vby+5hrnn9UB3Ho5qiyidYw5L3iUeopc9uVrfeWeZ99icOpaXUTFQPDUVzN+IpHqCWhOIJW3ot5Caf3oAhnQAAAc/I/tvyYVXL9mOfn8W3ONsHz+iBgSqhS2hCOoVqhbxDpveZsg/mXrRhmjo7DSygGXJhANl9KQHJLojRi6BDhFlEP5ccjN5MQSc/cjUAUM40Wsocmd5s7zV4OiAAAAAAAAAAAAAAAAAAAAAAAAATj/HdbfwNrfd9qb5bIi5Qv4xpN55awYLd8h8RYg9jlFOipI1FAAAABydoCroyWp+C3qL6E3KOQhcC/1qV38qab9bqVzR1mVYpdE9msgLwz6C9QjLX2arkUwjhGYbLNM0DtkRgljg1Nq/uDYZzC70mEuWRobsy5FTYcu9QoBaX7dkXcRCdx9/2Q9upiHp1YoeyZxTAyw7xMR5r/tkWrZ0/OASRN6n5qANx5q860buvPX9mBmLq2lmuI/AVeP8qrk30Pqnf12VBEVKP0+ZGJ90VgbCQnVK2bhPC3nd8h12H13TkBStQtgzSJbMB+DnVE+EhVuTNhgNjviCpsXQwHjEkK+VzYwNeuMS1+EU6NldNKNht9dPDhr1fJ1qvEHu9C/5xqE1PkViaJE/DW9KeCPBbODSObVD7tdtQiFEDerccgs1Vsr/d17ibzn0aoRx9wUCcvdIQD7Z8Lt487pLX4NP6SGpEuDQjWoK+OpMa8HRGQo+txVF0ckDXO8awKPBQHRH273xc+tv7H6UF140PWiakgQSlWxJLUdsxzXaHnV2R4f2mxqyqOx8SakBtGAgGoNILVU5op22zhGYYxZK2lawoKd6wDyi8paH/oX+yYrU/D6Cz6wQBSNRRYTIefAi0cV9kE6v8/JXt6JhA9vQGArs1aE0oE3nCKvRgCubvjaW0W321DAgtUN+1E9un38aTwwE1o6O8fDKToIev4a9g3P3JHTEjFqSwF7CfM4PV2FZahIcFmBIneJ6WsEfd3mWXPrdK/avlsUBA0sEbe9c9vWHT4P67lK3Rl07CtjFIlr7OoytZl5MT1pF5qZzzYQcan2wP0x0GvKnKT4PQQx9qWiC1QRze5p7miViMqIfP9KzMuj2npDxqDtx3BQ1mJxbIcQsTvMA4G36SYwn3k0wHa26IHHZuEKw+gk6EKvFbXXkEfHlsETZdQoVUVFPtKi5lVSpN42BHOE9Ex44oufWhQtAk9AI37axAn5VcK9j+m03TgNehcsqH0wbiV48mgN2xtsus37hoQM2QNRGK22tmKA+1wQQWnvzYHcvMFVrUUxRgrzkxIuCjkEWs5mpzNmKegyB5xvORn8qt8H01GCL3wyHOG0vN0erdiOR2CrxbEsXYcQZfWvg96Kd2H6uEj2MC6n1MVs5q1/v/LQYb6t86sBjw6Ne8yK4iU1TF9XIA7skKz4JRANG8DW18bCbN8QqhUUDzBaEYlfh3XfupvfcJYPgD6b5G+zlOos+IimskQAAAAAagqq9Pj90eaCVCtz8aJQCiwTWHSJKCGMjUYqj5A284Lqzf48JF8IfIWDwhayinSNmNBrGFbQ3VEakcHsLxwn7P93luopt0GRnQFvF96g2p+on3E0k+0UYWMswzwOfPzLJcOXOevTA4ZOfG0z4EKRR/TH3DtC4nwusmHbwg/2NpDI1z7b5kBwHOlYFm5fLmkFgL0ooGHzy9+yXy4GpDJCrpVhCyW0XlIn5yoT/RFwLrDfguJEpOmfzxmOByGQeuAa0AkzsTyPAhTg0Mil4/B/Z//Insat5aQrVuRRADcAyuuoGO9778qB7LDk1lwvYsQqx3qknue8LLisd83nXNVd+JKlWVljfjmhyh4/38sc9wav1azY34Clec4rAMLM7KlxraZx5IrsDBKfrrRUxPI+VnAq3frryZvL9OmRywnYR+f41fbiYtKSA4toJT9m0HCe5p5x1prMkUrcaShxrF1aUAjs5/ejdwjltrHD+cyyVNBogrpn/8RGnPS58WiuSl3g5pVmr87smCNrJdXw8nvbFMOdw32z03BbDJw+bf3dAcP/VGZqv+zHvMU6GF+xEADO5z7gsTlSgTL8t/GASSIJH23LKs54azi1RAy45wEkPPSYCScJ4flayQtkPvdKXriIIL2HGGk4UzzRqwMCNZjd6IxyoQcAAAAAFCwz35gogVUF6mFz8tkRIaFGMjCFRZSklf7A07fRknMIrvdqp1ehmqwoH8N2ZvAXJ5xPqB8L0nUEqnIXV/9Vmv/mu9snLcffJ5+e8wCLeumflZ2LKeI6sM32C44t8HOexyjyyVXAUmyHeNL1VvLAKlS541vKrHwk+nVYcGh8+voyHVNBnjfrDB0qo3GPlJgV2BqAMacPolxmDud2sOSgf97llw+E6qzdXYxiTNJIdZsVSRkq2llAZuW96M9+CIM4hv6UjcJrvz1RD74NzBZJ0bawG5cp7JEmygP9YSzVKZ80/TzC15DoIc4OtPX22jIpLazC3gF814LOCC9xaVCxG0uy0Dytgyph0irLqnCyV/Q3yem+EQ3LfnoiPfLkwDjEZ09lH7PSuu/QRti7DzEERN2J5POZTZ6s2gPxB6wOhKuQVCSdcD8MbF35jOzBx59JmrRN9JXZMhazdRipuKOeU7UaVirtyFw1DbDamqsNuWV/y9tIj28/glQQaFQs45hw3tFRg10Cg5a7OKHRHMOtJAgH8XZqSSaL0qSb/JXUwoF2gzDUbRzp26JHV9zmIqwCXF/l8zIYAgcCAedcLnVs50KAXw7+F6U/Yi1uvDELTDv+N4bRZooOw1B1C+RmbR0dWmVLFRptJeFQChiCvCEr69/NpeDexAz7/kQBtVCF6/HxWyrU8CNA1PzN652Hn8Swzafoywj96emsO+ctRCqfLAaJsrI0Qs6YXB98HxJFiONdYv676dMsBQgzaGsiJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="); +} diff --git a/public/themes/midnight-void.css b/public/themes/midnight-void.css new file mode 100644 index 0000000..c334f3f --- /dev/null +++ b/public/themes/midnight-void.css @@ -0,0 +1,16 @@ +/* Midnight Void Theme — ThemeForge v2.0.1 */ +:root { + --color-primary: #7C3AED; + --color-secondary: #A78BFA; + --color-background: #0D0D1A; + --color-surface: #1A1A2E; + --color-text: #E2E8F0; + --color-accent: #F472B6; +} + +body { background-color: var(--color-background); color: var(--color-text); font-family: system-ui, sans-serif; } +a, .link { color: var(--color-secondary); } +.btn-primary { background: var(--color-primary); color: #fff; border: none; border-radius: 6px; padding: 8px 18px; cursor: pointer; } +.btn-primary:hover { background: var(--color-accent); } +.card { background: var(--color-surface); border-radius: 10px; box-shadow: 0 2px 16px rgba(124,58,237,0.25); padding: 20px; } +.tag { background: var(--color-accent); color: #0D0D1A; border-radius: 4px; padding: 2px 8px; font-size: 0.75rem; } diff --git a/public/themes/obsidian-rose.css b/public/themes/obsidian-rose.css new file mode 100644 index 0000000..7bf09da --- /dev/null +++ b/public/themes/obsidian-rose.css @@ -0,0 +1,16 @@ +/* Obsidian Rose Theme — ChromaCraft v1.3.0 */ +:root { + --color-primary: #C9184A; + --color-secondary: #FF4D6D; + --color-background: #0A0A0F; + --color-surface: #1C1C28; + --color-text: #F1E3E4; + --color-accent: #B5838D; +} + +body { background-color: var(--color-background); color: var(--color-text); font-family: system-ui, sans-serif; } +a, .link { color: var(--color-secondary); } +.btn-primary { background: var(--color-primary); color: #fff; border: none; border-radius: 6px; padding: 8px 18px; cursor: pointer; } +.btn-primary:hover { background: var(--color-secondary); } +.card { background: var(--color-surface); border-radius: 10px; box-shadow: 0 2px 16px rgba(201,24,74,0.2); padding: 20px; } +.tag { background: var(--color-accent); color: #0A0A0F; border-radius: 4px; padding: 2px 8px; font-size: 0.75rem; } diff --git a/public/themes/ocean-breeze.css b/public/themes/ocean-breeze.css new file mode 100644 index 0000000..c79a9da --- /dev/null +++ b/public/themes/ocean-breeze.css @@ -0,0 +1,16 @@ +/* Ocean Breeze Theme — ThemeForge v1.2.0 */ +:root { + --color-primary: #0077B6; + --color-secondary: #00B4D8; + --color-background: #E0F4FF; + --color-surface: #FFFFFF; + --color-text: #1A2B3C; + --color-accent: #48CAE4; +} + +body { background-color: var(--color-background); color: var(--color-text); font-family: system-ui, sans-serif; } +a, .link { color: var(--color-primary); } +.btn-primary { background: var(--color-primary); color: #fff; border: none; border-radius: 6px; padding: 8px 18px; cursor: pointer; } +.btn-primary:hover { background: var(--color-secondary); } +.card { background: var(--color-surface); border-radius: 10px; box-shadow: 0 2px 8px rgba(0,119,182,0.1); padding: 20px; } +.tag { background: var(--color-accent); color: var(--color-text); border-radius: 4px; padding: 2px 8px; font-size: 0.75rem; } diff --git a/public/themes/red-extract-theme-a3aabe.css b/public/themes/red-extract-theme-a3aabe.css new file mode 100644 index 0000000..39e57e2 --- /dev/null +++ b/public/themes/red-extract-theme-a3aabe.css @@ -0,0 +1,37 @@ +/* @todo-theme-meta +{ + "name": "Red Extract Theme", + "id": "custom-1778677606575", + "group": "Custom", + "preview": [ + "#f5f5f5", + "#ffffff", + "#274f69" + ], + "hasWallpaper": false +} +*/ + +:root { + --bg: #f5f5f5; + --surface: #ffffff; + --surface-strong: #ffffff; + --surface-muted: #fafafa; + --border: #d0d0d0; + --line: #b9b9b5; + --text: #1f1f1f; + --text-muted: #686866; + --text-strong: #111111; + --accent: #274f69; + --accent-text: #ffffff; + --accent-soft: #d6e4ec; + --sidebar-bg: #ffffff; + --sidebar-border: #d0d0d0; + --sidebar-text: #222222; + --sidebar-text-muted: #686866; + --input-bg: #ffffff; + --input-border: #cfcfcf; + --modal-bg: #ffffff; + --chip: #d8d8d8; + --success: #dff7e7; +} diff --git a/public/themes/sunset-ember.css b/public/themes/sunset-ember.css new file mode 100644 index 0000000..3a9791e --- /dev/null +++ b/public/themes/sunset-ember.css @@ -0,0 +1,16 @@ +/* Sunset Ember Theme — ChromaCraft v1.1.2 */ +:root { + --color-primary: #D62828; + --color-secondary: #F77F00; + --color-background: #FFF5E4; + --color-surface: #FFFFFF; + --color-text: #2D1B00; + --color-accent: #FCBF49; +} + +body { background-color: var(--color-background); color: var(--color-text); font-family: system-ui, sans-serif; } +a, .link { color: var(--color-primary); } +.btn-primary { background: var(--color-secondary); color: #fff; border: none; border-radius: 6px; padding: 8px 18px; cursor: pointer; } +.btn-primary:hover { background: var(--color-primary); } +.card { background: var(--color-surface); border-radius: 10px; box-shadow: 0 2px 8px rgba(214,40,40,0.1); padding: 20px; } +.tag { background: var(--color-accent); color: var(--color-text); border-radius: 4px; padding: 2px 8px; font-size: 0.75rem; } diff --git a/public/themes/test-theme-103fb1.css b/public/themes/test-theme-103fb1.css new file mode 100644 index 0000000..6cf3195 --- /dev/null +++ b/public/themes/test-theme-103fb1.css @@ -0,0 +1,37 @@ +/* @todo-theme-meta +{ + "name": "Test Theme", + "id": "custom-1778671955013", + "group": "Custom", + "preview": [ + "#f5f5f5", + "#ffffff", + "#274f69" + ], + "hasWallpaper": false +} +*/ + +:root { + --bg: #f5f5f5; + --surface: #ffffff; + --surface-strong: #ffffff; + --surface-muted: #fafafa; + --border: #d0d0d0; + --line: #b9b9b5; + --text: #1f1f1f; + --text-muted: #686866; + --text-strong: #111111; + --accent: #274f69; + --accent-text: #ffffff; + --accent-soft: #d6e4ec; + --sidebar-bg: #ffffff; + --sidebar-border: #d0d0d0; + --sidebar-text: #222222; + --sidebar-text-muted: #686866; + --input-bg: #ffffff; + --input-border: #cfcfcf; + --modal-bg: #ffffff; + --chip: #d8d8d8; + --success: #dff7e7; +} diff --git a/public/themes/test-theme-6fcabb.css b/public/themes/test-theme-6fcabb.css new file mode 100644 index 0000000..6cf3195 --- /dev/null +++ b/public/themes/test-theme-6fcabb.css @@ -0,0 +1,37 @@ +/* @todo-theme-meta +{ + "name": "Test Theme", + "id": "custom-1778671955013", + "group": "Custom", + "preview": [ + "#f5f5f5", + "#ffffff", + "#274f69" + ], + "hasWallpaper": false +} +*/ + +:root { + --bg: #f5f5f5; + --surface: #ffffff; + --surface-strong: #ffffff; + --surface-muted: #fafafa; + --border: #d0d0d0; + --line: #b9b9b5; + --text: #1f1f1f; + --text-muted: #686866; + --text-strong: #111111; + --accent: #274f69; + --accent-text: #ffffff; + --accent-soft: #d6e4ec; + --sidebar-bg: #ffffff; + --sidebar-border: #d0d0d0; + --sidebar-text: #222222; + --sidebar-text-muted: #686866; + --input-bg: #ffffff; + --input-border: #cfcfcf; + --modal-bg: #ffffff; + --chip: #d8d8d8; + --success: #dff7e7; +} diff --git a/public/themes/themestore-theme-by-came-0da6fd.css b/public/themes/themestore-theme-by-came-0da6fd.css new file mode 100644 index 0000000..02f8cbe --- /dev/null +++ b/public/themes/themestore-theme-by-came-0da6fd.css @@ -0,0 +1,37 @@ +/* @todo-theme-meta +{ + "name": "THemestore theme by Came", + "id": "custom-1778674717129", + "group": "Custom", + "preview": [ + "#17acde", + "#222020", + "#00bbff" + ], + "hasWallpaper": false +} +*/ + +:root { + --bg: #17acde; + --surface: #222020; + --surface-strong: #2bc582; + --surface-muted: #38363a; + --border: #000000; + --line: #ffffff; + --text: #d12e57; + --text-muted: #2f84c1; + --text-strong: #ff0000; + --accent: #00bbff; + --accent-text: #570000; + --accent-soft: #005f85; + --sidebar-bg: #004370; + --sidebar-border: #2a5070; + --sidebar-text: #d8f0ff; + --sidebar-text-muted: #7ab0d0; + --input-bg: #ffffff; + --input-border: #a0cce0; + --modal-bg: #ffffff; + --chip: #b0d8ec; + --success: #d0f0e0; +} diff --git a/public/todo-preview b/public/todo-preview new file mode 120000 index 0000000..ad46dac --- /dev/null +++ b/public/todo-preview @@ -0,0 +1 @@ +/home/came/Nextcloud/arch-work/Projects/Todo-App/dist \ No newline at end of file diff --git a/writable/.htaccess b/writable/.htaccess old mode 100644 new mode 100755 diff --git a/writable/cache/index.html b/writable/cache/index.html old mode 100644 new mode 100755 diff --git a/writable/debugbar/index.html b/writable/debugbar/index.html old mode 100644 new mode 100755 diff --git a/writable/index.html b/writable/index.html old mode 100644 new mode 100755 diff --git a/writable/logs/index.html b/writable/logs/index.html old mode 100644 new mode 100755 diff --git a/writable/session/index.html b/writable/session/index.html old mode 100644 new mode 100755 diff --git a/writable/uploads/index.html b/writable/uploads/index.html old mode 100644 new mode 100755