ezpm2gui 1.6.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +40 -6
  2. package/dist/server/config/project-configs.json +3 -4
  3. package/dist/server/index.js +44 -5
  4. package/dist/server/routes/deployApplication.js +43 -41
  5. package/dist/server/routes/logStreaming.js +66 -28
  6. package/dist/server/routes/modules.js +55 -0
  7. package/dist/server/routes/pageAuth.js +3 -3
  8. package/dist/server/routes/remoteConnections.js +57 -21
  9. package/dist/server/routes/remoteMetrics.d.ts +3 -0
  10. package/dist/server/routes/remoteMetrics.js +84 -0
  11. package/dist/server/services/ProjectSetupService.d.ts +1 -1
  12. package/dist/server/services/ProjectSetupService.js +25 -9
  13. package/dist/server/utils/encryption.d.ts +22 -0
  14. package/dist/server/utils/encryption.js +53 -0
  15. package/dist/server/utils/metrics-history.d.ts +21 -0
  16. package/dist/server/utils/metrics-history.js +68 -0
  17. package/dist/server/utils/remote-connection.js +3 -3
  18. package/dist/server/utils/remote-metrics-db.d.ts +29 -0
  19. package/dist/server/utils/remote-metrics-db.js +134 -0
  20. package/dist/server/utils/remote-metrics-poller.d.ts +8 -0
  21. package/dist/server/utils/remote-metrics-poller.js +67 -0
  22. package/package.json +15 -2
  23. package/src/client/build/asset-manifest.json +6 -6
  24. package/src/client/build/index.html +1 -1
  25. package/src/client/build/static/css/main.2836d066.css +5 -0
  26. package/src/client/build/static/css/main.2836d066.css.map +1 -0
  27. package/src/client/build/static/js/main.d5c19622.js +3 -0
  28. package/src/client/build/static/js/main.d5c19622.js.map +1 -0
  29. package/src/client/build/static/css/main.775772ee.css +0 -5
  30. package/src/client/build/static/css/main.775772ee.css.map +0 -1
  31. package/src/client/build/static/js/main.cbcb09c9.js +0 -3
  32. package/src/client/build/static/js/main.cbcb09c9.js.map +0 -1
  33. /package/src/client/build/static/js/{main.cbcb09c9.js.LICENSE.txt → main.d5c19622.js.LICENSE.txt} +0 -0
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.remoteMetricsDB = void 0;
7
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ // @group Configuration : SQLite DB lives alongside other server config files
11
+ const DB_DIR = path_1.default.join(__dirname, '../config');
12
+ const DB_PATH = path_1.default.join(DB_DIR, 'remote-metrics.db');
13
+ // @group RemoteMetricsDB : SQLite-backed persistent store for remote process metrics
14
+ class RemoteMetricsDB {
15
+ constructor() {
16
+ if (!fs_1.default.existsSync(DB_DIR))
17
+ fs_1.default.mkdirSync(DB_DIR, { recursive: true });
18
+ this.db = new better_sqlite3_1.default(DB_PATH);
19
+ this.db.pragma('journal_mode = WAL');
20
+ this.initSchema();
21
+ this.purgeOld();
22
+ }
23
+ // @group RemoteMetricsDB : Create tables and indexes on first run
24
+ initSchema() {
25
+ this.db.exec(`
26
+ CREATE TABLE IF NOT EXISTS remote_metrics (
27
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
28
+ connection_id TEXT NOT NULL,
29
+ connection_name TEXT NOT NULL,
30
+ process_name TEXT NOT NULL,
31
+ pm_id INTEGER NOT NULL,
32
+ timestamp INTEGER NOT NULL,
33
+ cpu REAL NOT NULL,
34
+ memory_bytes INTEGER NOT NULL,
35
+ memory_mb REAL NOT NULL
36
+ );
37
+
38
+ CREATE INDEX IF NOT EXISTS idx_rmet_conn_proc_ts
39
+ ON remote_metrics (connection_id, process_name, timestamp);
40
+
41
+ CREATE INDEX IF NOT EXISTS idx_rmet_conn_ts
42
+ ON remote_metrics (connection_id, timestamp);
43
+ `);
44
+ }
45
+ // @group RemoteMetricsDB : Delete records older than 30 days to keep DB lean
46
+ purgeOld() {
47
+ const cutoff = Date.now() - 30 * 24 * 60 * 60 * 1000;
48
+ this.db.prepare('DELETE FROM remote_metrics WHERE timestamp < ?').run(cutoff);
49
+ }
50
+ // @group RemoteMetricsDB : Persist a single data-point
51
+ insert(row) {
52
+ this.db.prepare(`
53
+ INSERT INTO remote_metrics
54
+ (connection_id, connection_name, process_name, pm_id, timestamp, cpu, memory_bytes, memory_mb)
55
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
56
+ `).run(row.connection_id, row.connection_name, row.process_name, row.pm_id, row.timestamp, row.cpu, row.memory_bytes, row.memory_mb);
57
+ }
58
+ // @group RemoteMetricsDB : Bulk-insert multiple data-points in one transaction (efficient)
59
+ insertBatch(rows) {
60
+ const stmt = this.db.prepare(`
61
+ INSERT INTO remote_metrics
62
+ (connection_id, connection_name, process_name, pm_id, timestamp, cpu, memory_bytes, memory_mb)
63
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
64
+ `);
65
+ const tx = this.db.transaction(() => {
66
+ for (const row of rows) {
67
+ stmt.run(row.connection_id, row.connection_name, row.process_name, row.pm_id, row.timestamp, row.cpu, row.memory_bytes, row.memory_mb);
68
+ }
69
+ });
70
+ tx();
71
+ }
72
+ // @group RemoteMetricsDB : Return all (connection_id, connection_name) pairs that have data
73
+ getConnectionsWithData() {
74
+ return this.db.prepare(`
75
+ SELECT DISTINCT connection_id AS id, connection_name AS name
76
+ FROM remote_metrics
77
+ ORDER BY name
78
+ `).all();
79
+ }
80
+ // @group RemoteMetricsDB : Return distinct process names recorded for a connection
81
+ getProcessNames(connectionId) {
82
+ const rows = this.db.prepare(`
83
+ SELECT DISTINCT process_name
84
+ FROM remote_metrics
85
+ WHERE connection_id = ?
86
+ ORDER BY process_name
87
+ `).all(connectionId);
88
+ return rows.map(r => r.process_name);
89
+ }
90
+ // @group RemoteMetricsDB : Return metric rows for a specific process within a time range
91
+ getMetrics(connectionId, processName, from, to, maxPoints = 500) {
92
+ // Bucket-reduce to avoid sending thousands of points for long ranges
93
+ const total = this.db.prepare(`
94
+ SELECT COUNT(*) AS cnt FROM remote_metrics
95
+ WHERE connection_id = ? AND process_name = ? AND timestamp BETWEEN ? AND ?
96
+ `).get(connectionId, processName, from, to).cnt;
97
+ if (total <= maxPoints) {
98
+ return this.db.prepare(`
99
+ SELECT * FROM remote_metrics
100
+ WHERE connection_id = ? AND process_name = ? AND timestamp BETWEEN ? AND ?
101
+ ORDER BY timestamp ASC
102
+ `).all(connectionId, processName, from, to);
103
+ }
104
+ // Downsample: pick every Nth row so we stay under maxPoints
105
+ const step = Math.ceil(total / maxPoints);
106
+ return this.db.prepare(`
107
+ SELECT * FROM remote_metrics
108
+ WHERE connection_id = ? AND process_name = ? AND timestamp BETWEEN ? AND ?
109
+ AND (id % ?) = 0
110
+ ORDER BY timestamp ASC
111
+ LIMIT ?
112
+ `).all(connectionId, processName, from, to, step, maxPoints);
113
+ }
114
+ // @group RemoteMetricsDB : Return latest snapshot for all processes on a connection
115
+ getLatestSnapshot(connectionId) {
116
+ return this.db.prepare(`
117
+ SELECT r.*
118
+ FROM remote_metrics r
119
+ INNER JOIN (
120
+ SELECT process_name, MAX(timestamp) AS max_ts
121
+ FROM remote_metrics
122
+ WHERE connection_id = ?
123
+ GROUP BY process_name
124
+ ) latest ON r.process_name = latest.process_name AND r.timestamp = latest.max_ts
125
+ WHERE r.connection_id = ?
126
+ ORDER BY r.process_name
127
+ `).all(connectionId, connectionId);
128
+ }
129
+ close() {
130
+ this.db.close();
131
+ }
132
+ }
133
+ // @group Exports : Singleton used across the server
134
+ exports.remoteMetricsDB = new RemoteMetricsDB();
@@ -0,0 +1,8 @@
1
+ declare class RemoteMetricsPoller {
2
+ private timer;
3
+ start(): void;
4
+ stop(): void;
5
+ private poll;
6
+ }
7
+ export declare const remoteMetricsPoller: RemoteMetricsPoller;
8
+ export {};
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remoteMetricsPoller = void 0;
4
+ const remote_connection_1 = require("./remote-connection");
5
+ const remote_metrics_db_1 = require("./remote-metrics-db");
6
+ // @group Configuration : Polling interval in milliseconds
7
+ const POLL_INTERVAL_MS = 30000; // 30 seconds
8
+ // @group RemoteMetricsPoller : Background service that samples PM2 metrics for every connected remote server
9
+ class RemoteMetricsPoller {
10
+ constructor() {
11
+ this.timer = null;
12
+ }
13
+ // @group RemoteMetricsPoller : Start the periodic polling loop
14
+ start() {
15
+ if (this.timer)
16
+ return; // already running
17
+ console.log('[RemoteMetricsPoller] Starting — polling every', POLL_INTERVAL_MS / 1000, 's');
18
+ this.timer = setInterval(() => this.poll(), POLL_INTERVAL_MS);
19
+ }
20
+ // @group RemoteMetricsPoller : Stop the polling loop
21
+ stop() {
22
+ if (this.timer) {
23
+ clearInterval(this.timer);
24
+ this.timer = null;
25
+ }
26
+ }
27
+ // @group RemoteMetricsPoller : Poll all currently-connected remote servers and persist metrics
28
+ async poll() {
29
+ var _a;
30
+ const connectionsMap = remote_connection_1.remoteConnectionManager.getAllConnections();
31
+ const connected = Array.from(connectionsMap.entries()).filter(([, c]) => c.isConnected());
32
+ if (connected.length === 0)
33
+ return;
34
+ const now = Date.now();
35
+ for (const [connectionId, conn] of connected) {
36
+ try {
37
+ const processes = await conn.getPM2Processes();
38
+ if (!Array.isArray(processes) || processes.length === 0)
39
+ continue;
40
+ const rows = processes
41
+ .filter(p => p && p.name)
42
+ .map(p => {
43
+ var _a, _b, _c, _d, _e, _f, _g, _h;
44
+ return ({
45
+ connection_id: connectionId,
46
+ connection_name: (_a = conn.name) !== null && _a !== void 0 ? _a : conn.host,
47
+ process_name: p.name,
48
+ pm_id: (_b = p.pm_id) !== null && _b !== void 0 ? _b : -1,
49
+ timestamp: now,
50
+ cpu: parseFloat(((_d = (_c = p.monit) === null || _c === void 0 ? void 0 : _c.cpu) !== null && _d !== void 0 ? _d : 0).toFixed(2)),
51
+ memory_bytes: ((_f = (_e = p.monit) === null || _e === void 0 ? void 0 : _e.memory) !== null && _f !== void 0 ? _f : 0),
52
+ memory_mb: parseFloat((((_h = (_g = p.monit) === null || _g === void 0 ? void 0 : _g.memory) !== null && _h !== void 0 ? _h : 0) / 1048576).toFixed(2)),
53
+ });
54
+ });
55
+ if (rows.length > 0) {
56
+ remote_metrics_db_1.remoteMetricsDB.insertBatch(rows);
57
+ }
58
+ }
59
+ catch (err) {
60
+ // Non-fatal — log and continue with other servers
61
+ console.warn(`[RemoteMetricsPoller] Failed to poll ${conn.host}:`, (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : err);
62
+ }
63
+ }
64
+ }
65
+ }
66
+ // @group Exports : Singleton poller started once when the server boots
67
+ exports.remoteMetricsPoller = new RemoteMetricsPoller();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ezpm2gui",
3
- "version": "1.6.0",
3
+ "version": "1.9.0",
4
4
  "main": "dist/server/index.js",
5
5
  "bin": {
6
6
  "ezpm2gui": "bin/ezpm2gui.js",
@@ -12,6 +12,17 @@
12
12
  "dev:server": "nodemon --exec ts-node src/server/index.ts",
13
13
  "dev:client": "cd src/client && npm run dev",
14
14
  "build": "node scripts/build.js",
15
+ "mobile": "node scripts/deploy-mobile.js",
16
+ "mobile:dev": "node scripts/deploy-mobile.js dev",
17
+ "mobile:android": "node scripts/deploy-mobile.js android --debug --install",
18
+ "mobile:android:release": "node scripts/deploy-mobile.js android --release",
19
+ "mobile:debug": "powershell -ExecutionPolicy Bypass -File scripts/Debug-Mobile.ps1",
20
+ "mobile:debug:dump": "powershell -ExecutionPolicy Bypass -File scripts/Debug-Mobile.ps1 -Dump",
21
+ "mobile:ps": "powershell -ExecutionPolicy Bypass -File scripts/Deploy-Mobile.ps1",
22
+ "mobile:ps:release": "powershell -ExecutionPolicy Bypass -File scripts/Deploy-Mobile.ps1 -Mode release -Install -Launch",
23
+ "mobile:ps:debug": "powershell -ExecutionPolicy Bypass -File scripts/Deploy-Mobile.ps1 -Mode debug -Install -Launch",
24
+ "mobile:ios": "node scripts/deploy-mobile.js ios",
25
+ "mobile:ios:release": "node scripts/deploy-mobile.js ios --release",
15
26
  "build:server": "tsc",
16
27
  "build:client": "cd src/client && npm run build",
17
28
  "build:bin": "tsc --project tsconfig.bin.json",
@@ -41,11 +52,13 @@
41
52
  ],
42
53
  "dependencies": {
43
54
  "@tailwindcss/postcss": "^4.1.14",
55
+ "@types/better-sqlite3": "^7.6.13",
44
56
  "@types/node-cron": "^3.0.11",
45
57
  "axios": "^1.9.0",
46
- "dotenv": "^16.5.0",
58
+ "better-sqlite3": "^12.9.0",
47
59
  "chart.js": "^4.4.9",
48
60
  "cron-parser": "^5.4.0",
61
+ "dotenv": "^16.5.0",
49
62
  "express": "^4.18.3",
50
63
  "node-cron": "^4.2.1",
51
64
  "pm2": "^6.0.5",
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "files": {
3
- "main.css": "/static/css/main.775772ee.css",
4
- "main.js": "/static/js/main.cbcb09c9.js",
3
+ "main.css": "/static/css/main.2836d066.css",
4
+ "main.js": "/static/js/main.d5c19622.js",
5
5
  "index.html": "/index.html",
6
- "main.775772ee.css.map": "/static/css/main.775772ee.css.map",
7
- "main.cbcb09c9.js.map": "/static/js/main.cbcb09c9.js.map"
6
+ "main.2836d066.css.map": "/static/css/main.2836d066.css.map",
7
+ "main.d5c19622.js.map": "/static/js/main.d5c19622.js.map"
8
8
  },
9
9
  "entrypoints": [
10
- "static/css/main.775772ee.css",
11
- "static/js/main.cbcb09c9.js"
10
+ "static/css/main.2836d066.css",
11
+ "static/js/main.d5c19622.js"
12
12
  ]
13
13
  }
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#4a90e2"/><meta name="description" content="EZ PM2 GUI - A modern interface for PM2 process manager"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>EZ PM2 GUI - PM2 Process Manager</title><script defer="defer" src="/static/js/main.cbcb09c9.js"></script><link href="/static/css/main.775772ee.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#4a90e2"/><meta name="description" content="EZ PM2 GUI - A modern interface for PM2 process manager"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>EZ PM2 GUI - PM2 Process Manager</title><script defer="defer" src="/static/js/main.d5c19622.js"></script><link href="/static/css/main.2836d066.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
@@ -0,0 +1,5 @@
1
+ @import url(https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap);
2
+ /*
3
+ ! tailwindcss v3.4.0 | MIT License | https://tailwindcss.com
4
+ */*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:JetBrains Mono,ui-monospace,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:repeat;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:inherit;print-color-adjust:inherit}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:#6b7280;border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active){[type=checkbox]:checked{-webkit-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active){[type=radio]:checked{-webkit-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=checkbox]:indeterminate,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:#0000}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%}@media (forced-colors:active){[type=checkbox]:indeterminate{-webkit-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}[type=file]{background:#0000 none repeat 0 0/auto auto padding-box border-box scroll;background:initial;border-color:inherit;border-radius:0;border-width:0;font-size:inherit;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*{box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{font-feature-settings:"rlig" 1,"calt" 1,"kern" 1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:rgb(241 245 249/var(--tw-bg-opacity));color:rgb(15 23 42/var(--tw-text-opacity));font-family:Inter,ui-sans-serif,system-ui,sans-serif;letter-spacing:-.01em;line-height:1.45;margin:0}.dark body,body{--tw-bg-opacity:1;--tw-text-opacity:1}.dark body{background-color:rgb(2 6 23/var(--tw-bg-opacity));color:rgb(241 245 249/var(--tw-text-opacity))}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.card{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 #00000005;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(226 232 240/var(--tw-border-opacity));border-radius:1rem;border-width:1px;box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(:where(.dark) .card){--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity));border-color:rgb(30 41 59/var(--tw-border-opacity))}.card-premium{--tw-shadow:0 1px 3px 0 #0000000f,0 1px 2px -1px #0000000a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background-color:#ffffffe6;border-color:#e2e8f099;border-radius:1.5rem;border-width:1px;box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(:where(.dark) .card-premium){background-color:#0f172ae6;border-color:#1e293b99}.card-content-compact{padding:.5rem}.badge{align-items:center;border-radius:9999px;display:inline-flex;font-size:.75rem;font-weight:500;line-height:1rem;padding:.125rem .5rem}.badge-success{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity));color:rgb(22 101 52/var(--tw-text-opacity))}:is(:where(.dark) .badge-success){--tw-text-opacity:1;background-color:#14532d40;color:rgb(74 222 128/var(--tw-text-opacity))}.badge-warning{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity));color:rgb(146 64 14/var(--tw-text-opacity))}:is(:where(.dark) .badge-warning){--tw-text-opacity:1;background-color:#78350f40;color:rgb(251 191 36/var(--tw-text-opacity))}.badge-danger{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity));color:rgb(153 27 27/var(--tw-text-opacity))}:is(:where(.dark) .badge-danger){--tw-text-opacity:1;background-color:#7f1d1d40;color:rgb(248 113 113/var(--tw-text-opacity))}.badge-info{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity));color:rgb(55 48 163/var(--tw-text-opacity))}:is(:where(.dark) .badge-info){--tw-text-opacity:1;background-color:#312e8140;color:rgb(129 140 248/var(--tw-text-opacity))}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.left-0{left:0}.left-2{left:.5rem}.left-2\.5{left:.625rem}.right-0{right:0}.top-0{top:0}.top-1\/2{top:50%}.top-9{top:2.25rem}.top-full{top:100%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[40\]{z-index:40}.z-\[60\]{z-index:60}.z-\[9998\]{z-index:9998}.z-\[9999\]{z-index:9999}.mx-0{margin-left:0;margin-right:0}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-bottom:.25rem;margin-top:.25rem}.-mt-1{margin-top:-.25rem}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0{margin-left:0}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[22px\]{height:22px}.h-\[calc\(100vh-16rem\)\]{height:calc(100vh - 16rem)}.h-\[calc\(100vh-2\.25rem-22px\)\]{height:calc(100vh - 2.25rem - 22px)}.h-full{height:100%}.h-px{height:1px}.max-h-64{max-height:16rem}.max-h-72{max-height:18rem}.min-h-0{min-height:0}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[200px\]{width:200px}.w-\[44px\]{width:44px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-\[100px\]{min-width:100px}.min-w-\[36px\]{min-width:36px}.min-w-\[56px\]{min-width:56px}.min-w-\[80px\]{min-width:80px}.min-w-full{min-width:100%}.max-w-3xl{max-width:48rem}.max-w-\[100px\]{max-width:100px}.max-w-\[120px\]{max-width:120px}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-4{--tw-translate-x:1rem}.rotate-180,.translate-x-4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1}.scale-110,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.125rem*var(--tw-space-y-reverse));margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.625rem*var(--tw-space-y-reverse));margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-neutral-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(241 245 249/var(--tw-divide-opacity))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:2rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:1rem}.rounded-md{border-radius:.75rem}.rounded-xl{border-radius:1.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-amber-400\/30{border-color:#fbbf244d}.border-blue-500\/20{border-color:#3b82f633}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity))}.border-emerald-400\/30{border-color:#34d3994d}.border-emerald-600{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity))}.border-green-500\/20{border-color:#22c55e33}.border-neutral-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity))}.border-neutral-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-neutral-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.border-neutral-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.border-neutral-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.border-neutral-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.border-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity))}.border-orange-400\/30{border-color:#fb923c4d}.border-orange-500\/20{border-color:#f9731633}.border-primary-300{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.border-primary-400\/30{border-color:#818cf84d}.border-primary-500{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity))}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.border-red-400\/30{border-color:#f871714d}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity))}.border-sky-400\/30{border-color:#38bdf84d}.border-transparent{border-color:#0000}.border-violet-400\/30{border-color:#a78bfa4d}.border-violet-500\/25{border-color:#8b5cf640}.border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity))}.border-yellow-400\/30{border-color:#facc154d}.border-t-transparent{border-top-color:#0000}.bg-accent-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-black\/40{background-color:#0006}.bg-black\/50{background-color:#00000080}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-blue-500\/10{background-color:#3b82f61a}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity))}.bg-cyan-500\/10{background-color:#06b6d41a}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-green-500\/10{background-color:#22c55e1a}.bg-indigo-500\/10{background-color:#6366f11a}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-neutral-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.bg-neutral-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.bg-neutral-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/var(--tw-bg-opacity))}.bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-neutral-50\/50{background-color:#f8fafc80}.bg-neutral-50\/80{background-color:#f8fafccc}.bg-neutral-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.bg-neutral-500\/10{background-color:#64748b1a}.bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.bg-neutral-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity))}.bg-orange-400\/10{background-color:#fb923c1a}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity))}.bg-orange-500\/10{background-color:#f973161a}.bg-primary-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.bg-primary-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity))}.bg-primary-500\/10{background-color:#6366f11a}.bg-primary-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity))}.bg-primary-600\/10{background-color:#4f46e51a}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity))}.bg-rose-100{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity))}.bg-sky-500\/10{background-color:#0ea5e91a}.bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity))}.bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.bg-violet-500\/10{background-color:#8b5cf61a}.bg-violet-500\/15{background-color:#8b5cf626}.bg-violet-700\/80{background-color:#6d28d9cc}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity))}.bg-yellow-400\/10{background-color:#facc151a}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.bg-yellow-500\/10{background-color:#eab3081a}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-accent-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:#a855f700 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-danger-500{--tw-gradient-from:#ef4444 var(--tw-gradient-from-position);--tw-gradient-to:#ef444400 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-primary-500{--tw-gradient-from:#6366f1 var(--tw-gradient-from-position);--tw-gradient-to:#6366f100 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-success-500{--tw-gradient-from:#22c55e var(--tw-gradient-from-position);--tw-gradient-to:#22c55e00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-violet-500{--tw-gradient-from:#8b5cf6 var(--tw-gradient-from-position);--tw-gradient-to:#8b5cf600 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-warning-500{--tw-gradient-from:#f59e0b var(--tw-gradient-from-position);--tw-gradient-to:#f59e0b00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-accent-600{--tw-gradient-to:#9333ea var(--tw-gradient-to-position)}.to-danger-600{--tw-gradient-to:#dc2626 var(--tw-gradient-to-position)}.to-primary-600{--tw-gradient-to:#4f46e5 var(--tw-gradient-to-position)}.to-success-600{--tw-gradient-to:#16a34a var(--tw-gradient-to-position)}.to-warning-600{--tw-gradient-to:#d97706 var(--tw-gradient-to-position)}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-16{padding:4rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-10{padding-bottom:2.5rem;padding-top:2.5rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-px{padding-bottom:1px;padding-top:1px}.pb-0{padding-bottom:0}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-7{padding-bottom:1.75rem}.pb-8{padding-bottom:2rem}.pl-7{padding-left:1.75rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-1\.5{padding-right:.375rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-6{padding-right:1.5rem}.pr-7{padding-right:1.75rem}.pt-2{padding-top:.5rem}.pt-5{padding-top:1.25rem}.pt-7{padding-top:1.75rem}.pt-9{padding-top:2.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:JetBrains Mono,ui-monospace,monospace}.text-2xl{font-size:1.0625rem;line-height:1.625rem}.text-3xl{font-size:1.1875rem;line-height:1.75rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:.875rem;line-height:1.375rem}.text-lg{font-size:.9375rem;line-height:1.5rem}.text-sm{font-size:.8125rem;line-height:1.25rem}.text-xl{font-size:1rem;line-height:1.5rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity))}.text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity))}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}.text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity))}.text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity))}.text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity))}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}.text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}.text-indigo-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.text-neutral-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.text-neutral-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.text-neutral-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.text-neutral-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-neutral-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-neutral-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-neutral-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.text-neutral-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.text-orange-400{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity))}.text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity))}.text-primary-300{--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.text-primary-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}.text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.text-rose-800{--tw-text-opacity:1;color:rgb(159 18 57/var(--tw-text-opacity))}.text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity))}.text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity))}.text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity))}.text-violet-200{--tw-text-opacity:1;color:rgb(221 214 254/var(--tw-text-opacity))}.text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}.text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.text-violet-600{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.text-violet-700{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity))}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.overline{-webkit-text-decoration-line:overline;text-decoration-line:overline}.no-underline{-webkit-text-decoration-line:none;text-decoration-line:none}.placeholder-neutral-400::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}.placeholder-neutral-500::placeholder{--tw-placeholder-opacity:1;color:rgb(100 116 139/var(--tw-placeholder-opacity))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-2xl{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-lg{--tw-shadow:0 20px 25px -5px #00000014,0 8px 10px -6px #0000000a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.shadow-lg,.shadow-xl{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 25px 50px -12px #0000001f;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.outline-none{outline:2px solid #0000;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 #0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[margin\]{transition-duration:.15s;transition-property:margin;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[width\]{transition-duration:.15s;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,fill,stroke,-webkit-text-decoration-color;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,-webkit-text-decoration-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}::-webkit-scrollbar{height:4px;width:4px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#94a3b859;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#94a3b899}.dark ::-webkit-scrollbar-thumb{background:#64748b59}.dark ::-webkit-scrollbar-thumb:hover{background:#64748b99}.glass-effect{backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.text-gradient{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#6366f1,#a855f7);-webkit-background-clip:text;background-clip:text}.card,.card-premium,aside,body,nav{transition:background-color .15s ease,border-color .15s ease,color .15s ease}:focus-visible{outline:2px solid #6366f1;outline-offset:2px}:focus:not(:focus-visible){outline:none}.last\:border-0:last-child{border-width:0}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-neutral-300:hover{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.hover\:border-neutral-400:hover{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.hover\:border-primary-300:hover{--tw-border-opacity:1;border-color:rgb(165 180 252/var(--tw-border-opacity))}.hover\:border-yellow-400:hover{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity))}.hover\:border-yellow-400\/60:hover{border-color:#facc1599}.hover\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity))}.hover\:bg-amber-600:hover{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity))}.hover\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity))}.hover\:bg-emerald-50:hover{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity))}.hover\:bg-emerald-900\/20:hover{background-color:#064e3b33}.hover\:bg-green-200:hover{--tw-bg-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity))}.hover\:bg-neutral-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\:bg-neutral-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\:bg-neutral-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\:bg-neutral-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.hover\:bg-neutral-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.hover\:bg-neutral-800\/60:hover{background-color:#1e293b99}.hover\:bg-orange-100:hover{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.hover\:bg-orange-400\/20:hover{background-color:#fb923c33}.hover\:bg-primary-50:hover{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity))}.hover\:bg-primary-500\/10:hover{background-color:#6366f11a}.hover\:bg-primary-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity))}.hover\:bg-red-200:hover{--tw-bg-opacity:1;background-color:rgb(254 202 202/var(--tw-bg-opacity))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-red-900\/20:hover{background-color:#7f1d1d33}.hover\:bg-yellow-100:hover{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.hover\:bg-yellow-200:hover{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.hover\:bg-yellow-400\/20:hover{background-color:#facc1533}.hover\:text-emerald-600:hover{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity))}.hover\:text-neutral-200:hover{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.hover\:text-neutral-300:hover{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.hover\:text-neutral-400:hover{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.hover\:text-neutral-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.hover\:text-neutral-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.hover\:text-neutral-800:hover{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.hover\:text-neutral-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.hover\:text-primary-500:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.hover\:text-primary-600:hover{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity))}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.hover\:text-violet-300:hover{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}.hover\:text-violet-700:hover{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.hover\:text-yellow-400:hover{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.hover\:text-yellow-600:hover{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.hover\:underline:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:border-primary-500:focus{--tw-border-opacity:1;border-color:rgb(99 102 241/var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 #0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-primary-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(99 102 241/var(--tw-ring-opacity))}.active\:bg-neutral-300:active{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.active\:bg-neutral-600:active{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100,.group\/proc:hover .group-hover\/proc\:opacity-100{opacity:1}@media (min-width:640px){.sm\:ml-\[200px\]{margin-left:200px}.sm\:ml-\[44px\]{margin-left:44px}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:w-40{width:10rem}.sm\:w-72{width:18rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}}@media (min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}@media (min-width:1280px){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}:is(:where(.dark) .dark\:divide-neutral-700)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(51 65 85/var(--tw-divide-opacity))}:is(:where(.dark) .dark\:divide-neutral-800)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(30 41 59/var(--tw-divide-opacity))}:is(:where(.dark) .dark\:border-emerald-700){--tw-border-opacity:1;border-color:rgb(4 120 87/var(--tw-border-opacity))}:is(:where(.dark) .dark\:border-neutral-600){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}:is(:where(.dark) .dark\:border-neutral-700){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}:is(:where(.dark) .dark\:border-neutral-800){--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}:is(:where(.dark) .dark\:border-neutral-900){--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}:is(:where(.dark) .dark\:border-primary-700){--tw-border-opacity:1;border-color:rgb(67 56 202/var(--tw-border-opacity))}:is(:where(.dark) .dark\:border-red-700){--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity))}:is(:where(.dark) .dark\:bg-\[\#0d1117\]){--tw-bg-opacity:1;background-color:rgb(13 17 23/var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-accent-900\/20){background-color:#581c8733}:is(:where(.dark) .dark\:bg-amber-900\/25){background-color:#78350f40}:is(:where(.dark) .dark\:bg-amber-900\/30){background-color:#78350f4d}:is(:where(.dark) .dark\:bg-blue-900\/30){background-color:#1e3a8a4d}:is(:where(.dark) .dark\:bg-cyan-900\/30){background-color:#164e634d}:is(:where(.dark) .dark\:bg-emerald-900\/20){background-color:#064e3b33}:is(:where(.dark) .dark\:bg-emerald-900\/25){background-color:#064e3b40}:is(:where(.dark) .dark\:bg-emerald-900\/30){background-color:#064e3b4d}:is(:where(.dark) .dark\:bg-green-900\/25){background-color:#14532d40}:is(:where(.dark) .dark\:bg-green-900\/30){background-color:#14532d4d}:is(:where(.dark) .dark\:bg-neutral-600){--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-neutral-700){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-neutral-800){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-neutral-800\/30){background-color:#1e293b4d}:is(:where(.dark) .dark\:bg-neutral-800\/40){background-color:#1e293b66}:is(:where(.dark) .dark\:bg-neutral-800\/50){background-color:#1e293b80}:is(:where(.dark) .dark\:bg-neutral-800\/60){background-color:#1e293b99}:is(:where(.dark) .dark\:bg-neutral-900){--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-neutral-900\/30){background-color:#0f172a4d}:is(:where(.dark) .dark\:bg-neutral-900\/40){background-color:#0f172a66}:is(:where(.dark) .dark\:bg-neutral-900\/50){background-color:#0f172a80}:is(:where(.dark) .dark\:bg-neutral-900\/60){background-color:#0f172a99}:is(:where(.dark) .dark\:bg-primary-900\/20){background-color:#312e8133}:is(:where(.dark) .dark\:bg-red-900\/10){background-color:#7f1d1d1a}:is(:where(.dark) .dark\:bg-red-900\/20){background-color:#7f1d1d33}:is(:where(.dark) .dark\:bg-red-900\/25){background-color:#7f1d1d40}:is(:where(.dark) .dark\:bg-red-900\/30){background-color:#7f1d1d4d}:is(:where(.dark) .dark\:bg-rose-900\/25){background-color:#88133740}:is(:where(.dark) .dark\:bg-rose-900\/30){background-color:#8813374d}:is(:where(.dark) .dark\:bg-sky-900\/30){background-color:#0c4a6e4d}:is(:where(.dark) .dark\:bg-violet-900\/30){background-color:#4c1d954d}:is(:where(.dark) .dark\:bg-yellow-900\/25){background-color:#713f1240}:is(:where(.dark) .dark\:bg-yellow-900\/30){background-color:#713f124d}:is(:where(.dark) .dark\:text-accent-400){--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-amber-300){--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-amber-400){--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-blue-400){--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-cyan-300){--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-cyan-400){--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-emerald-300){--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-emerald-400){--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-green-400){--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-indigo-400){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-neutral-100){--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-neutral-200){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-neutral-300){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-neutral-400){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-neutral-500){--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-neutral-600){--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-neutral-700){--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-primary-300){--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-primary-400){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-red-300){--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-red-400){--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-rose-300){--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-rose-400){--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-sky-300){--tw-text-opacity:1;color:rgb(125 211 252/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-sky-400){--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-violet-300){--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-violet-400){--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-yellow-400){--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}:is(:where(.dark) .dark\:placeholder-neutral-500)::placeholder{--tw-placeholder-opacity:1;color:rgb(100 116 139/var(--tw-placeholder-opacity))}:is(:where(.dark) .dark\:hover\:border-neutral-700:hover){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}:is(:where(.dark) .dark\:hover\:border-primary-700\/60:hover){border-color:#4338ca99}:is(:where(.dark) .dark\:hover\:bg-amber-800\/50:hover){background-color:#92400e80}:is(:where(.dark) .dark\:hover\:bg-blue-800\/50:hover){background-color:#1e40af80}:is(:where(.dark) .dark\:hover\:bg-emerald-900\/20:hover){background-color:#064e3b33}:is(:where(.dark) .dark\:hover\:bg-green-800\/50:hover){background-color:#16653480}:is(:where(.dark) .dark\:hover\:bg-neutral-700:hover){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}:is(:where(.dark) .dark\:hover\:bg-neutral-700\/30:hover){background-color:#3341554d}:is(:where(.dark) .dark\:hover\:bg-neutral-800:hover){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}:is(:where(.dark) .dark\:hover\:bg-neutral-800\/40:hover){background-color:#1e293b66}:is(:where(.dark) .dark\:hover\:bg-neutral-800\/50:hover){background-color:#1e293b80}:is(:where(.dark) .dark\:hover\:bg-neutral-800\/60:hover){background-color:#1e293b99}:is(:where(.dark) .dark\:hover\:bg-primary-900\/20:hover){background-color:#312e8133}:is(:where(.dark) .dark\:hover\:bg-red-800\/50:hover){background-color:#991b1b80}:is(:where(.dark) .dark\:hover\:bg-red-900\/20:hover){background-color:#7f1d1d33}:is(:where(.dark) .dark\:hover\:bg-yellow-800\/50:hover){background-color:#854d0e80}:is(:where(.dark) .dark\:hover\:text-neutral-100:hover){--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}:is(:where(.dark) .dark\:hover\:text-neutral-200:hover){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}
5
+ /*# sourceMappingURL=main.2836d066.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/css/main.2836d066.css","mappings":"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","sources":["index.css"],"sourcesContent":["@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');\n@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n/* ─── Base ────────────────────────────────────────────────── */\n@layer base {\n * { @apply box-border; }\n\n html { @apply scroll-smooth; font-size: 16px; }\n\n body {\n @apply bg-neutral-100 text-neutral-900 font-sans antialiased;\n margin: 0;\n line-height: 1.45;\n letter-spacing: -0.01em;\n font-feature-settings: \"rlig\" 1, \"calt\" 1, \"kern\" 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n .dark body {\n @apply bg-neutral-950 text-neutral-100;\n }\n\n /* ── Remove browser/Tailwind focus rings from MUI Outlined inputs ──\n Tailwind Preflight and some browsers apply an outline or box-shadow\n on :focus / :focus-visible to every element. For MUI OutlinedInput the\n border is drawn by a child <fieldset>, so an outline on the wrapper div\n or on the <input> appears as a second unwanted blue ring.\n We suppress all three sources here so MUI's own border is the only border. */\n .MuiOutlinedInput-root:focus,\n .MuiOutlinedInput-root:focus-visible,\n .MuiOutlinedInput-root:focus-within {\n outline: none !important;\n box-shadow: none !important;\n }\n\n .MuiOutlinedInput-root input:focus,\n .MuiOutlinedInput-root input:focus-visible,\n .MuiOutlinedInput-root textarea:focus,\n .MuiOutlinedInput-root textarea:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n }\n}\n\n/* ─── Components ─────────────────────────────────────────── */\n@layer components {\n\n /* Cards */\n .card {\n @apply bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-800 shadow-xs;\n }\n .card-premium {\n @apply bg-white/90 dark:bg-neutral-900/90 backdrop-blur-sm rounded-xl border border-neutral-200/60 dark:border-neutral-800/60 shadow-sm;\n }\n .card-content { @apply p-3; }\n .card-content-compact { @apply p-2; }\n\n /* Buttons — slim by default */\n .btn-primary {\n @apply bg-primary-600 hover:bg-primary-700 active:bg-primary-800\n text-white font-medium text-sm\n px-3 py-1.5 rounded-md\n transition-colors duration-150\n focus:outline-none focus:ring-2 focus:ring-primary-500/40\n shadow-xs hover:shadow-sm;\n }\n .btn-secondary {\n @apply bg-neutral-100 hover:bg-neutral-200 active:bg-neutral-300\n dark:bg-neutral-800 dark:hover:bg-neutral-700 dark:active:bg-neutral-600\n text-neutral-800 dark:text-neutral-200\n font-medium text-sm\n px-3 py-1.5 rounded-md\n transition-colors duration-150\n focus:outline-none focus:ring-2 focus:ring-neutral-400/30;\n }\n .btn-ghost {\n @apply bg-transparent hover:bg-neutral-100 dark:hover:bg-neutral-800\n text-neutral-600 dark:text-neutral-400\n font-medium text-sm\n px-2.5 py-1 rounded-md\n transition-colors duration-150\n focus:outline-none;\n }\n .btn-danger {\n @apply bg-danger-600 hover:bg-danger-700\n text-white font-medium text-sm\n px-3 py-1.5 rounded-md\n transition-colors duration-150\n focus:outline-none focus:ring-2 focus:ring-danger-400/30;\n }\n\n /* Inputs */\n .input-field {\n @apply w-full px-2.5 py-1.5\n border border-neutral-300 dark:border-neutral-700\n rounded-md\n bg-white dark:bg-neutral-900\n text-neutral-900 dark:text-neutral-100 text-sm\n placeholder-neutral-400 dark:placeholder-neutral-500\n focus:outline-none focus:ring-2 focus:ring-primary-500/30 focus:border-primary-500\n transition-colors duration-150;\n }\n\n /* Badges */\n .badge { @apply inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium; }\n .badge-success { @apply bg-success-100 text-success-800 dark:bg-success-900/25 dark:text-success-400; }\n .badge-warning { @apply bg-warning-100 text-warning-800 dark:bg-warning-900/25 dark:text-warning-400; }\n .badge-danger { @apply bg-danger-100 text-danger-800 dark:bg-danger-900/25 dark:text-danger-400; }\n .badge-info { @apply bg-primary-100 text-primary-800 dark:bg-primary-900/25 dark:text-primary-400; }\n .badge-neutral { @apply bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-300; }\n\n /* Table helpers */\n .table-th {\n @apply px-2.5 py-1.5 text-left text-xs font-semibold\n text-neutral-500 dark:text-neutral-400\n uppercase tracking-wide\n border-b border-neutral-200 dark:border-neutral-800;\n }\n .table-td {\n @apply px-2.5 py-1.5 text-sm text-neutral-800 dark:text-neutral-200\n border-b border-neutral-100 dark:border-neutral-800/50;\n }\n}\n\n/* ─── Scrollbar ──────────────────────────────────────────── */\n::-webkit-scrollbar { width: 4px; height: 4px; }\n::-webkit-scrollbar-track { background: transparent; }\n::-webkit-scrollbar-thumb { background: rgba(148,163,184,.35); border-radius: 4px; }\n::-webkit-scrollbar-thumb:hover { background: rgba(148,163,184,.6); }\n.dark ::-webkit-scrollbar-thumb { background: rgba(100,116,139,.35); }\n.dark ::-webkit-scrollbar-thumb:hover { background: rgba(100,116,139,.6); }\n\n/* ─── Utilities ──────────────────────────────────────────── */\n.glass-effect {\n backdrop-filter: blur(16px);\n -webkit-backdrop-filter: blur(16px);\n}\n\n.text-gradient {\n background: linear-gradient(135deg, theme('colors.primary.500'), theme('colors.accent.500'));\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n background-clip: text;\n}\n\n/* Theme-switch transitions — only on non-motion backgrounds */\nbody, .card, .card-premium, nav, aside {\n transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;\n}\n\n/* Accessibility focus ring */\n*:focus-visible {\n outline: 2px solid theme('colors.primary.500');\n outline-offset: 2px;\n}\n*:focus:not(:focus-visible) { outline: none; }\n"],"names":[],"sourceRoot":""}