nekostream 2026.4.2 → 2026.4.4
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.
- package/dist/cli/application.js +12 -0
- package/dist/cli/feedback.js +10 -0
- package/dist/cli/menus/home-menu.js +15 -0
- package/dist/cli/menus/settings-menu.js +3 -1
- package/dist/cli/update-check.js +24 -1
- package/dist/cli/web-server.js +554 -0
- package/dist/player-policy.js +6 -0
- package/dist/scrapers/adblock-policy.js +10 -1
- package/dist/scrapers/anilist-api.js +24 -6
- package/dist/scrapers/base.js +4 -1
- package/dist/scrapers/providers/anime47.js +1 -1
- package/dist/scrapers/providers/animehay.js +5 -5
- package/dist/scrapers/providers/animevietsub/parsers/cards.js +4 -4
- package/dist/scrapers/providers/animevietsub/parsers/detail.js +19 -18
- package/dist/scrapers/providers/animevietsub/streams/extractors.js +30 -93
- package/dist/scrapers/providers/animevietsub/streams/server-parser.js +24 -4
- package/dist/scrapers/providers/animevietsub.js +124 -13
- package/dist/scrapers/vietnamese-titles.js +97 -0
- package/package.json +6 -3
- package/player-main.js +84 -23
- package/player.html +1 -0
- package/web/dist/assets/index-BByTtXWy.css +1 -0
- package/web/dist/assets/index-Y4PiRbR7.js +2171 -0
- package/web/dist/index.html +22 -0
- package/webview-preload.js +86 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Mapping of popular Vietnamese anime titles to their canonical
|
|
4
|
+
* Japanese (Romaji) and English titles for AniList metadata enrichment.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.VIETNAMESE_TITLE_MAP = void 0;
|
|
8
|
+
exports.lookupVietnameseTitle = lookupVietnameseTitle;
|
|
9
|
+
function toUnaccented(str) {
|
|
10
|
+
return str
|
|
11
|
+
.normalize('NFD')
|
|
12
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
13
|
+
.replace(/đ/g, 'd')
|
|
14
|
+
.replace(/Đ/g, 'D')
|
|
15
|
+
.toLowerCase()
|
|
16
|
+
.replace(/[-_]+/g, ' ')
|
|
17
|
+
.replace(/[^a-z0-9\s]/g, '')
|
|
18
|
+
.replace(/\s+/g, ' ')
|
|
19
|
+
.trim();
|
|
20
|
+
}
|
|
21
|
+
exports.VIETNAMESE_TITLE_MAP = {
|
|
22
|
+
// Classic & Long-running
|
|
23
|
+
'tham tu lung danh conan': 'Detective Conan, Meitantei Conan',
|
|
24
|
+
'dao hai tac': 'One Piece',
|
|
25
|
+
'vua hai tac': 'One Piece',
|
|
26
|
+
'bay vien ngoc rong': 'Dragon Ball',
|
|
27
|
+
'ngoc rong': 'Dragon Ball',
|
|
28
|
+
'tho san ti hon': 'Hunter x Hunter',
|
|
29
|
+
'hoi phap su': 'Fairy Tail',
|
|
30
|
+
'cuon so tu than': 'Death Note',
|
|
31
|
+
'su gia shinigami': 'Bleach',
|
|
32
|
+
'cao thu bong ro': 'Slam Dunk',
|
|
33
|
+
'vua bong chuyen': 'Haikyuu!!',
|
|
34
|
+
'tuyen thu vo hinh': 'Kuroko no Basket',
|
|
35
|
+
// Modern Shonen Hits
|
|
36
|
+
'thanh guom diet quy': 'Kimetsu no Yaiba, Demon Slayer',
|
|
37
|
+
'chu thuat hoi chien': 'Jujutsu Kaisen',
|
|
38
|
+
'dai chien titan': 'Shingeki no Kyojin, Attack on Titan',
|
|
39
|
+
'hoc vien sieu anh hung': 'Boku no Hero Academia, My Hero Academia',
|
|
40
|
+
'quy cua': 'Chainsaw Man',
|
|
41
|
+
'nguoi cua may': 'Chainsaw Man',
|
|
42
|
+
'gia dinh diep vien': 'Spy x Family',
|
|
43
|
+
'thang cap mot minh': 'Solo Leveling',
|
|
44
|
+
'toi thang cap mot minh': 'Solo Leveling',
|
|
45
|
+
'quai thu so 8': 'Kaiju No. 8',
|
|
46
|
+
'nga quy tokyo': 'Tokyo Ghoul',
|
|
47
|
+
// Isekai & Fantasy
|
|
48
|
+
'chuyen sinh thanh slime': 'Tensei shitara Slime Datta Ken',
|
|
49
|
+
'toi chuyen sinh thanh slime': 'Tensei shitara Slime Datta Ken',
|
|
50
|
+
've chuyen sinh thanh slime': 'Tensei shitara Slime Datta Ken',
|
|
51
|
+
'that nghiep chuyen sinh': 'Mushoku Tensei: Isekai Ittara Honki Dasu',
|
|
52
|
+
'bat dau lai o the gioi khac': 'Re:Zero kara Hajimeru Isekai Seikatsu',
|
|
53
|
+
'chua te bong toi': 'Kage no Jitsuryokusha ni Naritakute',
|
|
54
|
+
'dao kiem than vuc': 'Sword Art Online',
|
|
55
|
+
'that hinh dai toi': 'Nanatsu no Taizai, The Seven Deadly Sins',
|
|
56
|
+
'lac vao the gioi game': 'Overlord',
|
|
57
|
+
'khong co game thi khong co cuoc song': 'No Game No Life',
|
|
58
|
+
'su troi day cua khien hiep si': 'Tate no Yuusha no Nariagari',
|
|
59
|
+
'khien hiep si': 'Tate no Yuusha no Nariagari',
|
|
60
|
+
// Drama, Romance, Slice of Life
|
|
61
|
+
'dam cuoi dom dom': 'Hotaru no Yomeiri',
|
|
62
|
+
'duoc su tu su': 'Kusuriya no Hitorigoto, The Apothecary Diaries',
|
|
63
|
+
'phap su tien tang': 'Sousou no Frieren',
|
|
64
|
+
'frieren phap su tien tang': 'Sousou no Frieren',
|
|
65
|
+
'cuoc chien to tinh': 'Kaguya-sama wa Kokurasetai',
|
|
66
|
+
'dua con cua than tuong': 'Oshi no Ko',
|
|
67
|
+
'lop hoc am sat': 'Ansatsu Kyoushitsu, Assassination Classroom',
|
|
68
|
+
'cuoc goi cua bong dem': 'Yofukashi no Uta, Call of the Night',
|
|
69
|
+
// Donghua & Cultivation
|
|
70
|
+
'dau la dai luc': 'Douluo Dalu, Soul Land',
|
|
71
|
+
'the gioi hoan my': 'Wanmei Shijie, Perfect World',
|
|
72
|
+
'tien nghich': 'Xian Ni, Renegade Immortal',
|
|
73
|
+
'pham nhan tu tien': 'Fanren Xiu Xian Chuan',
|
|
74
|
+
'toan chuc cao thu': 'Quan Zhi Gao Shou, The Kings Avatar',
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Given a title or slug, check if it matches a known Vietnamese anime title.
|
|
78
|
+
* Returns the canonical Japanese/English title string if matched.
|
|
79
|
+
*/
|
|
80
|
+
function lookupVietnameseTitle(rawTitle) {
|
|
81
|
+
if (!rawTitle)
|
|
82
|
+
return undefined;
|
|
83
|
+
const clean = toUnaccented(rawTitle);
|
|
84
|
+
if (!clean)
|
|
85
|
+
return undefined;
|
|
86
|
+
// 1. Direct match
|
|
87
|
+
if (exports.VIETNAMESE_TITLE_MAP[clean]) {
|
|
88
|
+
return exports.VIETNAMESE_TITLE_MAP[clean];
|
|
89
|
+
}
|
|
90
|
+
// 2. Substring match (e.g. "Phim Thám Tử Lừng Danh Conan Tập 1" -> "tham tu lung danh conan")
|
|
91
|
+
for (const [key, canonical] of Object.entries(exports.VIETNAMESE_TITLE_MAP)) {
|
|
92
|
+
if (clean.includes(key)) {
|
|
93
|
+
return canonical;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nekostream",
|
|
3
|
-
"version": "2026.4.
|
|
3
|
+
"version": "2026.4.4",
|
|
4
4
|
"description": "A polished CLI for discovering and streaming anime from Vietnamese providers",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"anime",
|
|
@@ -24,10 +24,12 @@
|
|
|
24
24
|
},
|
|
25
25
|
"scripts": {
|
|
26
26
|
"start": "tsx index.ts",
|
|
27
|
+
"web": "tsx index.ts --web",
|
|
28
|
+
"web:build": "npm --prefix web run build",
|
|
27
29
|
"clean": "node scripts/clean.mjs",
|
|
28
30
|
"build": "npm run clean && tsc",
|
|
29
31
|
"typecheck": "tsc --noEmit",
|
|
30
|
-
"test": "tsx checks/search-check.mts && tsx checks/parser-check.mts && tsx checks/domain-check.mts && tsx checks/storage-check.mts && tsx checks/scraping-check.mts && tsx checks/player-check.mts",
|
|
32
|
+
"test": "tsx checks/search-check.mts && tsx checks/parser-check.mts && tsx checks/domain-check.mts && tsx checks/storage-check.mts && tsx checks/scraping-check.mts && tsx checks/player-check.mts && tsx checks/web-server-check.mts",
|
|
31
33
|
"lint": "eslint . --max-warnings 0",
|
|
32
34
|
"format": "prettier --write .",
|
|
33
35
|
"format:check": "prettier --check .",
|
|
@@ -43,7 +45,8 @@
|
|
|
43
45
|
"player.html",
|
|
44
46
|
"webview-preload.js",
|
|
45
47
|
"isolate.js",
|
|
46
|
-
"isolate.css"
|
|
48
|
+
"isolate.css",
|
|
49
|
+
"web/dist"
|
|
47
50
|
],
|
|
48
51
|
"dependencies": {
|
|
49
52
|
"@electron/get": "^5.1.0",
|
package/player-main.js
CHANGED
|
@@ -65,7 +65,13 @@ const PROVIDER_LABELS = playerPolicy?.PROVIDER_LABELS || ['animevietsub', 'anime
|
|
|
65
65
|
const STREAM_HOSTS = playerPolicy?.STREAM_HOSTS || [
|
|
66
66
|
'abyss.to',
|
|
67
67
|
'abysscdn.com',
|
|
68
|
+
'abyssplayer.com',
|
|
69
|
+
'abysshost.com',
|
|
70
|
+
'abysscss.com',
|
|
68
71
|
'hydrax.net',
|
|
72
|
+
'playhydrax.com',
|
|
73
|
+
'short.ink',
|
|
74
|
+
'iamcdn.net',
|
|
69
75
|
'googleapiscdn.com',
|
|
70
76
|
'googleapis.com',
|
|
71
77
|
'gstatic.com',
|
|
@@ -339,6 +345,10 @@ function createWindow() {
|
|
|
339
345
|
}
|
|
340
346
|
|
|
341
347
|
// ── Step 3: Block ad domains everywhere else (players/iframes) ──
|
|
348
|
+
if (details.url && details.url.includes('devtools-warning')) {
|
|
349
|
+
return callback({ cancel: true })
|
|
350
|
+
}
|
|
351
|
+
|
|
342
352
|
if (hostMatches(hostname, AD_PROBE_HOSTS)) {
|
|
343
353
|
return callback({ cancel: true })
|
|
344
354
|
}
|
|
@@ -425,6 +435,11 @@ function createWindow() {
|
|
|
425
435
|
|
|
426
436
|
// Block navigation away from the provider/stream hosts.
|
|
427
437
|
guestWebContents.on('will-navigate', (e, url) => {
|
|
438
|
+
if (url && url.includes('devtools-warning')) {
|
|
439
|
+
console.log('[Webview Blocked devtools-warning redirect]:', url)
|
|
440
|
+
e.preventDefault()
|
|
441
|
+
return
|
|
442
|
+
}
|
|
428
443
|
const scheme = (url.split(':')[0] || '').toLowerCase()
|
|
429
444
|
const isAllowed =
|
|
430
445
|
scheme === 'about' || scheme === 'chrome-extension' || isPlaybackHost(hostnameOf(url))
|
|
@@ -434,6 +449,13 @@ function createWindow() {
|
|
|
434
449
|
}
|
|
435
450
|
})
|
|
436
451
|
|
|
452
|
+
guestWebContents.on('will-frame-navigate', (e) => {
|
|
453
|
+
if (e.url && e.url.includes('devtools-warning')) {
|
|
454
|
+
console.log('[Webview Blocked frame devtools-warning redirect]:', e.url)
|
|
455
|
+
e.preventDefault()
|
|
456
|
+
}
|
|
457
|
+
})
|
|
458
|
+
|
|
437
459
|
const injectIntoFrame = (frame) => {
|
|
438
460
|
try {
|
|
439
461
|
if (!isStreamHost(hostnameOf(frame.url))) return
|
|
@@ -461,7 +483,40 @@ function createWindow() {
|
|
|
461
483
|
if (window.__neko_cleaner_active__) return;
|
|
462
484
|
window.__neko_cleaner_active__ = true;
|
|
463
485
|
|
|
464
|
-
// ---
|
|
486
|
+
// --- 1. Neutralize window.open to prevent popup blockers from throwing on .focus() ---
|
|
487
|
+
// Anti-adblock scripts on Abyss/Hydrax catch .focus() TypeError on blocked windows to trigger
|
|
488
|
+
// "Due to certain reasons (AdBlock/Sandbox), ads are not being displayed..."
|
|
489
|
+
try {
|
|
490
|
+
window.open = function(url) {
|
|
491
|
+
return {
|
|
492
|
+
closed: false,
|
|
493
|
+
focus: function() {},
|
|
494
|
+
blur: function() {},
|
|
495
|
+
close: function() {},
|
|
496
|
+
postMessage: function() {},
|
|
497
|
+
location: { href: url || '' }
|
|
498
|
+
};
|
|
499
|
+
};
|
|
500
|
+
} catch(e) {}
|
|
501
|
+
|
|
502
|
+
// --- 2. Prevent anti-adblock document.write from wiping out the player ---
|
|
503
|
+
try {
|
|
504
|
+
const _origDocWrite = document.write.bind(document);
|
|
505
|
+
document.write = function(content) {
|
|
506
|
+
if (
|
|
507
|
+
typeof content === 'string' &&
|
|
508
|
+
(content.includes('AdBlock/Sandbox') ||
|
|
509
|
+
content.includes('Due to certain reasons') ||
|
|
510
|
+
content.includes('disable AdBlock') ||
|
|
511
|
+
content.includes('removing the Sandbox'))
|
|
512
|
+
) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
return _origDocWrite(content);
|
|
516
|
+
};
|
|
517
|
+
} catch(e) {}
|
|
518
|
+
|
|
519
|
+
// --- 3. CSS block ---
|
|
465
520
|
if (!document.getElementById('__neko_adblock__')) {
|
|
466
521
|
const style = document.createElement('style');
|
|
467
522
|
style.id = '__neko_adblock__';
|
|
@@ -478,33 +533,35 @@ function createWindow() {
|
|
|
478
533
|
(document.head || document.documentElement).appendChild(style);
|
|
479
534
|
}
|
|
480
535
|
|
|
481
|
-
// --- DOM cleaner ---
|
|
536
|
+
// --- 4. DOM cleaner ---
|
|
482
537
|
const AD_TEXTS = ['Đóng quảng cáo', 'Đóng và xem tiếp', 'Quảng cáo'];
|
|
483
|
-
// Specific gambling-brand fragments only. Bare 'bet' and 'game'
|
|
484
|
-
// used to be in this list and removed unrelated player controls.
|
|
485
538
|
const AD_SRCS = ['in88', 'quayhu', 'nohu', '188bet', 'kubet', 'w88', 'fun88', 'sin88'];
|
|
486
539
|
|
|
487
540
|
const clean = () => {
|
|
488
541
|
try {
|
|
489
|
-
// Bypass Abyss popup click-jacking by rewriting the overlay click event
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
overlay.onclick = (e) => {
|
|
497
|
-
e.stopPropagation();
|
|
498
|
-
e.preventDefault();
|
|
499
|
-
if (window.jwplayer && typeof window.jwplayer === 'function') {
|
|
500
|
-
try {
|
|
501
|
-
window.jwplayer().play();
|
|
502
|
-
} catch(err) {}
|
|
503
|
-
}
|
|
504
|
-
overlay.remove();
|
|
505
|
-
};
|
|
506
|
-
overlay.ontouchend = overlay.onclick;
|
|
542
|
+
// Bypass Abyss/Hydrax popup click-jacking by rewriting the overlay click event
|
|
543
|
+
const overlay = document.getElementById('overlay');
|
|
544
|
+
if (overlay) {
|
|
545
|
+
overlay.onclick = (e) => {
|
|
546
|
+
if (e) {
|
|
547
|
+
e.stopPropagation();
|
|
548
|
+
e.preventDefault();
|
|
507
549
|
}
|
|
550
|
+
if (window.jwplayer && typeof window.jwplayer === 'function') {
|
|
551
|
+
try {
|
|
552
|
+
window.jwplayer().play();
|
|
553
|
+
} catch(err) {}
|
|
554
|
+
}
|
|
555
|
+
overlay.remove();
|
|
556
|
+
};
|
|
557
|
+
overlay.ontouchend = overlay.onclick;
|
|
558
|
+
|
|
559
|
+
// Auto-remove overlay if player is active
|
|
560
|
+
if (document.querySelector('video') || (window.jwplayer && typeof window.jwplayer === 'function')) {
|
|
561
|
+
try {
|
|
562
|
+
window.jwplayer().play();
|
|
563
|
+
} catch(e) {}
|
|
564
|
+
overlay.remove();
|
|
508
565
|
}
|
|
509
566
|
}
|
|
510
567
|
|
|
@@ -559,9 +616,13 @@ function createWindow() {
|
|
|
559
616
|
|
|
560
617
|
guestWebContents.on('frame-created', (e, details) => {
|
|
561
618
|
const frame = details.frame
|
|
619
|
+
injectIntoFrame(frame)
|
|
620
|
+
setTimeout(() => {
|
|
621
|
+
injectIntoFrame(frame)
|
|
622
|
+
}, 300)
|
|
562
623
|
setTimeout(() => {
|
|
563
624
|
injectIntoFrame(frame)
|
|
564
|
-
},
|
|
625
|
+
}, 1000)
|
|
565
626
|
})
|
|
566
627
|
})
|
|
567
628
|
|
package/player.html
CHANGED
|
@@ -298,6 +298,7 @@
|
|
|
298
298
|
f.id = '__neko_player__';
|
|
299
299
|
f.src = ${streamUrl};
|
|
300
300
|
f.setAttribute('allowfullscreen','true');
|
|
301
|
+
f.setAttribute('allow', 'autoplay; encrypted-media; fullscreen');
|
|
301
302
|
document.body.appendChild(f);
|
|
302
303
|
console.log('[Injected] Google Player iframe appended:', f.src);
|
|
303
304
|
return true;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.hero-content-enter-active[data-v-575711b5]{transition:all .55s cubic-bezier(.16,1,.3,1)}.hero-content-leave-active[data-v-575711b5]{transition:all .3s cubic-bezier(.7,0,.84,0)}.hero-content-enter-from[data-v-575711b5]{opacity:0;transform:translateY(22px)}.hero-content-leave-to[data-v-575711b5]{opacity:0;transform:translateY(-12px)}.preview-pop-enter-active[data-v-24210c73],.preview-pop-leave-active[data-v-24210c73]{transition:all .22s cubic-bezier(.16,1,.3,1)}.preview-pop-enter-from[data-v-24210c73],.preview-pop-leave-to[data-v-24210c73]{opacity:0;transform:scale(.92)}*,:before,:after{--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: rgb(59 130 246 / .5);--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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::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: rgb(59 130 246 / .5);--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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Be Vietnam Pro,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}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,samp,pre{font-family:JetBrains Mono,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-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,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.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}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.-left-3{left:-.75rem}.-left-32{left:-8rem}.-right-32{right:-8rem}.-top-32{top:-8rem}.bottom-0{bottom:0}.bottom-10{bottom:2.5rem}.bottom-12{bottom:3rem}.bottom-6{bottom:1.5rem}.left-0{left:0}.left-1\/2{left:50%}.left-1\/3{left:33.333333%}.left-2{left:.5rem}.left-6{left:1.5rem}.left-full{left:100%}.right-0{right:0}.right-1\/4{right:25%}.right-2{right:.5rem}.right-6{right:1.5rem}.top-0{top:0}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2\/3{top:66.666667%}.-z-10{z-index:-10}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[999\]{z-index:999}.m-auto{margin:auto}.-mx-3{margin-left:-.75rem;margin-right:-.75rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-8{margin-top:2rem;margin-bottom:2rem}.my-auto{margin-top:auto;margin-bottom:auto}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-auto{margin-top:auto}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-\[2\/3\]{aspect-ratio:2/3}.aspect-\[21\/9\]{aspect-ratio:21/9}.aspect-video{aspect-ratio:16 / 9}.h-0{height:0px}.h-0\.5{height:.125rem}.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-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-44{height:11rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-72{height:18rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-\[550px\]{height:550px}.h-\[60vh\]{height:60vh}.h-\[650px\]{height:650px}.h-\[65vh\]{height:65vh}.h-\[76px\]{height:76px}.h-full{height:100%}.max-h-64{max-height:16rem}.max-h-\[720px\]{max-height:720px}.max-h-\[85vh\]{max-height:85vh}.max-h-\[92vh\]{max-height:92vh}.min-h-\[280px\]{min-height:280px}.min-h-\[500px\]{min-height:500px}.min-h-\[82px\]{min-height:82px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-0\.5{width:.125rem}.w-1\/2{width:50%}.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-2\/5{width:40%}.w-20{width:5rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-4\/5{width:80%}.w-48{width:12rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[165px\]{width:165px}.w-\[260px\]{width:260px}.w-\[400px\]{width:400px}.w-\[500px\]{width:500px}.w-\[550px\]{width:550px}.w-\[650px\]{width:650px}.w-\[90\%\]{width:90%}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-none{flex:none}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-6{--tw-translate-y: -1.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-105{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\[1\.03\]{--tw-scale-x: 1.03;--tw-scale-y: 1.03;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.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}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-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-4{grid-template-columns:repeat(4,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}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.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-3\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-md-outline-variant\/20>:not([hidden])~:not([hidden]){border-color:#49454f33}.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}.scroll-smooth{scroll-behavior:smooth}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-modal{border-radius:28px}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l-\[6px\]{border-left-width:6px}.border-r{border-right-width:1px}.border-r-\[6px\]{border-right-width:6px}.border-t{border-top-width:1px}.border-t-\[8px\]{border-top-width:8px}.border-accent{--tw-border-opacity: 1;border-color:rgb(255 92 147 / var(--tw-border-opacity, 1))}.border-amber-500\/40{border-color:#f59e0b66}.border-cream\/10{border-color:#fff1ea1a}.border-cream\/15{border-color:#fff1ea26}.border-emerald-500\/30{border-color:#10b9814d}.border-md-outline-variant{--tw-border-opacity: 1;border-color:rgb(73 69 79 / var(--tw-border-opacity, 1))}.border-md-outline-variant\/10{border-color:#49454f1a}.border-md-outline-variant\/15{border-color:#49454f26}.border-md-outline-variant\/20{border-color:#49454f33}.border-md-outline-variant\/30{border-color:#49454f4d}.border-md-outline-variant\/40{border-color:#49454f66}.border-md-outline-variant\/50{border-color:#49454f80}.border-md-outline-variant\/60{border-color:#49454f99}.border-md-primary{--tw-border-opacity: 1;border-color:rgb(255 92 147 / var(--tw-border-opacity, 1))}.border-md-primary\/20{border-color:#ff5c9333}.border-md-primary\/30{border-color:#ff5c934d}.border-md-primary\/50{border-color:#ff5c9380}.border-md-secondary{--tw-border-opacity: 1;border-color:rgb(138 92 255 / var(--tw-border-opacity, 1))}.border-rose\/30{border-color:#e0306f4d}.border-transparent{border-color:transparent}.border-white\/15{border-color:#ffffff26}.border-yellow-400\/20{border-color:#facc1533}.border-l-transparent{border-left-color:transparent}.border-r-transparent{border-right-color:transparent}.border-t-emerald-400{--tw-border-opacity: 1;border-top-color:rgb(52 211 153 / var(--tw-border-opacity, 1))}.bg-accent{--tw-bg-opacity: 1;background-color:rgb(255 92 147 / var(--tw-bg-opacity, 1))}.bg-accent\/20{background-color:#ff5c9333}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-bg{--tw-bg-opacity: 1;background-color:rgb(15 11 19 / var(--tw-bg-opacity, 1))}.bg-bg-2{--tw-bg-opacity: 1;background-color:rgb(26 20 32 / var(--tw-bg-opacity, 1))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/95{background-color:#000000f2}.bg-cream\/15{background-color:#fff1ea26}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity, 1))}.bg-emerald-400\/70{background-color:#34d399b3}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-500\/20{background-color:#10b98133}.bg-md-on-primary-container\/20{background-color:#ffd9e233}.bg-md-outline-variant\/20{background-color:#49454f33}.bg-md-outline-variant\/30{background-color:#49454f4d}.bg-md-outline-variant\/40{background-color:#49454f66}.bg-md-primary{--tw-bg-opacity: 1;background-color:rgb(255 92 147 / var(--tw-bg-opacity, 1))}.bg-md-primary-container{--tw-bg-opacity: 1;background-color:rgb(92 0 43 / var(--tw-bg-opacity, 1))}.bg-md-primary\/10{background-color:#ff5c931a}.bg-md-primary\/15{background-color:#ff5c9326}.bg-md-primary\/20{background-color:#ff5c9333}.bg-md-secondary-container{--tw-bg-opacity: 1;background-color:rgb(56 30 114 / var(--tw-bg-opacity, 1))}.bg-md-surface{--tw-bg-opacity: 1;background-color:rgb(20 18 24 / var(--tw-bg-opacity, 1))}.bg-md-surface-container{--tw-bg-opacity: 1;background-color:rgb(32 30 36 / var(--tw-bg-opacity, 1))}.bg-md-surface-container-high{--tw-bg-opacity: 1;background-color:rgb(43 40 48 / var(--tw-bg-opacity, 1))}.bg-md-surface-container-high\/60{background-color:#2b283099}.bg-md-surface-container-high\/70{background-color:#2b2830b3}.bg-md-surface-container-high\/80{background-color:#2b2830cc}.bg-md-surface-container-high\/90{background-color:#2b2830e6}.bg-md-surface-container-high\/95{background-color:#2b2830f2}.bg-md-surface-container-highest{--tw-bg-opacity: 1;background-color:rgb(54 51 59 / var(--tw-bg-opacity, 1))}.bg-md-surface-container-highest\/70{background-color:#36333bb3}.bg-md-surface-container-highest\/80{background-color:#36333bcc}.bg-md-surface-container-low{--tw-bg-opacity: 1;background-color:rgb(28 26 32 / var(--tw-bg-opacity, 1))}.bg-md-surface-container-lowest{--tw-bg-opacity: 1;background-color:rgb(15 13 19 / var(--tw-bg-opacity, 1))}.bg-md-surface-container-lowest\/80{background-color:#0f0d13cc}.bg-md-surface-container\/70{background-color:#201e24b3}.bg-md-surface-container\/90{background-color:#201e24e6}.bg-md-surface-container\/95{background-color:#201e24f2}.bg-md-surface\/85{background-color:#141218d9}.bg-md-tertiary-container{--tw-bg-opacity: 1;background-color:rgb(0 82 54 / var(--tw-bg-opacity, 1))}.bg-md-tertiary\/15{background-color:#7be3b826}.bg-mint{--tw-bg-opacity: 1;background-color:rgb(123 227 184 / var(--tw-bg-opacity, 1))}.bg-mint\/20{background-color:#7be3b833}.bg-orange{--tw-bg-opacity: 1;background-color:rgb(255 154 92 / var(--tw-bg-opacity, 1))}.bg-rose{--tw-bg-opacity: 1;background-color:rgb(224 48 111 / var(--tw-bg-opacity, 1))}.bg-rose\/10{background-color:#e0306f1a}.bg-rose\/15{background-color:#e0306f26}.bg-rose\/20{background-color:#e0306f33}.bg-sky{--tw-bg-opacity: 1;background-color:rgb(106 208 255 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-violet{--tw-bg-opacity: 1;background-color:rgb(138 92 255 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/15{background-color:#ffffff26}.bg-white\/20{background-color:#fff3}.bg-yellow-400\/10{background-color:#facc151a}.bg-zinc-200{--tw-bg-opacity: 1;background-color:rgb(228 228 231 / var(--tw-bg-opacity, 1))}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-l{background-image:linear-gradient(to left,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right,var(--tw-gradient-stops))}.from-accent{--tw-gradient-from: #ff5c93 var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 92 147 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-black\/80{--tw-gradient-from: rgb(0 0 0 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-black\/95{--tw-gradient-from: rgb(0 0 0 / .95) var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cream{--tw-gradient-from: #fff1ea var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 241 234 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-md-primary{--tw-gradient-from: #ff5c93 var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 92 147 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-md-primary-container\/90{--tw-gradient-from: rgb(92 0 43 / .9) var(--tw-gradient-from-position);--tw-gradient-to: rgb(92 0 43 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-md-surface{--tw-gradient-from: #141218 var(--tw-gradient-from-position);--tw-gradient-to: rgb(20 18 24 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-md-surface-container{--tw-gradient-from: #201e24 var(--tw-gradient-from-position);--tw-gradient-to: rgb(32 30 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-md-surface-container-high{--tw-gradient-from: #2b2830 var(--tw-gradient-from-position);--tw-gradient-to: rgb(43 40 48 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-md-surface-container\/80{--tw-gradient-from: rgb(32 30 36 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(32 30 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-md-surface-container\/90{--tw-gradient-from: rgb(32 30 36 / .9) var(--tw-gradient-from-position);--tw-gradient-to: rgb(32 30 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-md-surface\/40{--tw-gradient-from: rgb(20 18 24 / .4) var(--tw-gradient-from-position);--tw-gradient-to: rgb(20 18 24 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-black\/50{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(0 0 0 / .5) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-md-secondary{--tw-gradient-to: rgb(138 92 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #8a5cff var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-md-surface-container\/60{--tw-gradient-to: rgb(32 30 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(32 30 36 / .6) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-md-surface-container\/90{--tw-gradient-to: rgb(32 30 36 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(32 30 36 / .9) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-md-surface\/65{--tw-gradient-to: rgb(20 18 24 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(20 18 24 / .65) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-md-surface\/85{--tw-gradient-to: rgb(20 18 24 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(20 18 24 / .85) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-pink{--tw-gradient-to: rgb(255 194 226 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #ffc2e2 var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-rose{--tw-gradient-to: rgb(224 48 111 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #e0306f var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-violet{--tw-gradient-to: rgb(138 92 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #8a5cff var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-accent{--tw-gradient-to: #ff5c93 var(--tw-gradient-to-position)}.to-md-secondary-container\/90{--tw-gradient-to: rgb(56 30 114 / .9) var(--tw-gradient-to-position)}.to-md-surface-container\/70{--tw-gradient-to: rgb(32 30 36 / .7) var(--tw-gradient-to-position)}.to-md-tertiary{--tw-gradient-to: #7be3b8 var(--tw-gradient-to-position)}.to-orange{--tw-gradient-to: #ff9a5c var(--tw-gradient-to-position)}.to-rose{--tw-gradient-to: #e0306f var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.bg-center{background-position:center}.fill-current{fill:currentColor}.stroke-\[2\.5\]{stroke-width:2.5}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.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-3\.5{padding-left:.875rem;padding-right:.875rem}.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}.px-7{padding-left:1.75rem;padding-right:1.75rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-6{padding-bottom:1.5rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-10{padding-top:2.5rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:JetBrains Mono,monospace}.font-sans{font-family:Be Vietnam Pro,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[100px\]{font-size:100px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-\[1\.08\]{line-height:1.08}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.text-accent{--tw-text-opacity: 1;color:rgb(255 92 147 / var(--tw-text-opacity, 1))}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-bg{--tw-text-opacity: 1;color:rgb(15 11 19 / var(--tw-text-opacity, 1))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-cream{--tw-text-opacity: 1;color:rgb(255 241 234 / var(--tw-text-opacity, 1))}.text-cream-50{--tw-text-opacity: 1;color:rgb(134 116 127 / var(--tw-text-opacity, 1))}.text-cream-75{--tw-text-opacity: 1;color:rgb(201 184 191 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-md-on-primary{--tw-text-opacity: 1;color:rgb(56 0 24 / var(--tw-text-opacity, 1))}.text-md-on-primary-container{--tw-text-opacity: 1;color:rgb(255 217 226 / var(--tw-text-opacity, 1))}.text-md-on-secondary-container{--tw-text-opacity: 1;color:rgb(232 222 248 / var(--tw-text-opacity, 1))}.text-md-on-surface{--tw-text-opacity: 1;color:rgb(230 224 233 / var(--tw-text-opacity, 1))}.text-md-on-surface-variant{--tw-text-opacity: 1;color:rgb(202 196 208 / var(--tw-text-opacity, 1))}.text-md-on-surface-variant\/50{color:#cac4d080}.text-md-on-surface-variant\/70{color:#cac4d0b3}.text-md-on-surface-variant\/80{color:#cac4d0cc}.text-md-on-surface-variant\/90{color:#cac4d0e6}.text-md-on-surface-variant\/95{color:#cac4d0f2}.text-md-on-surface\/90{color:#e6e0e9e6}.text-md-on-tertiary-container{--tw-text-opacity: 1;color:rgb(152 252 211 / var(--tw-text-opacity, 1))}.text-md-outline-variant\/60{color:#49454f99}.text-md-primary{--tw-text-opacity: 1;color:rgb(255 92 147 / var(--tw-text-opacity, 1))}.text-md-surface-container-highest{--tw-text-opacity: 1;color:rgb(54 51 59 / var(--tw-text-opacity, 1))}.text-md-tertiary,.text-mint{--tw-text-opacity: 1;color:rgb(123 227 184 / var(--tw-text-opacity, 1))}.text-rose{--tw-text-opacity: 1;color:rgb(224 48 111 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/70{color:#ffffffb3}.text-white\/90{color:#ffffffe6}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-zinc-700{--tw-text-opacity: 1;color:rgb(63 63 70 / var(--tw-text-opacity, 1))}.text-zinc-950{--tw-text-opacity: 1;color:rgb(9 9 11 / var(--tw-text-opacity, 1))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.placeholder-cream-50::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(134 116 127 / var(--tw-placeholder-opacity, 1))}.placeholder-cream-50::placeholder{--tw-placeholder-opacity: 1;color:rgb(134 116 127 / var(--tw-placeholder-opacity, 1))}.placeholder-md-on-surface-variant\/50::-moz-placeholder{color:#cac4d080}.placeholder-md-on-surface-variant\/50::placeholder{color:#cac4d080}.placeholder-md-on-surface-variant\/60::-moz-placeholder{color:#cac4d099}.placeholder-md-on-surface-variant\/60::placeholder{color:#cac4d099}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-100{opacity:1}.opacity-15{opacity:.15}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);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 rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(52\,211\,153\,0\.8\)\]{--tw-shadow: 0 0 8px rgba(52,211,153,.8);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-1{--tw-shadow: 0px 1px 3px 1px rgba(0, 0, 0, .25), 0px 1px 2px 0px rgba(0, 0, 0, .4);--tw-shadow-colored: 0px 1px 3px 1px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-2{--tw-shadow: 0px 2px 6px 2px rgba(0, 0, 0, .25), 0px 1px 2px 0px rgba(0, 0, 0, .4);--tw-shadow-colored: 0px 2px 6px 2px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-3{--tw-shadow: 0px 4px 8px 3px rgba(0, 0, 0, .25), 0px 1px 3px 0px rgba(0, 0, 0, .4);--tw-shadow-colored: 0px 4px 8px 3px var(--tw-shadow-color), 0px 1px 3px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-4{--tw-shadow: 0px 6px 10px 4px rgba(0, 0, 0, .25), 0px 2px 3px 0px rgba(0, 0, 0, .4);--tw-shadow-colored: 0px 6px 10px 4px var(--tw-shadow-color), 0px 2px 3px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-elevation-5{--tw-shadow: 0px 8px 12px 6px rgba(0, 0, 0, .25), 0px 4px 4px 0px rgba(0, 0, 0, .4);--tw-shadow-colored: 0px 8px 12px 6px var(--tw-shadow-color), 0px 4px 4px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-accent\/10{--tw-shadow-color: rgb(255 92 147 / .1);--tw-shadow: var(--tw-shadow-colored)}.shadow-accent\/20{--tw-shadow-color: rgb(255 92 147 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-md-primary\/50{--tw-shadow-color: rgb(255 92 147 / .5);--tw-shadow: var(--tw-shadow-colored)}.shadow-rose\/20{--tw-shadow-color: rgb(224 48 111 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-rose\/5{--tw-shadow-color: rgb(224 48 111 / .05);--tw-shadow: var(--tw-shadow-colored)}.ring-2{--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, 0 0 #0000)}.ring-emerald-400{--tw-ring-opacity: 1;--tw-ring-color: rgb(52 211 153 / var(--tw-ring-opacity, 1))}.blur-\[110px\]{--tw-blur: blur(110px);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)}.blur-\[120px\]{--tw-blur: blur(120px);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)}.blur-\[130px\]{--tw-blur: blur(130px);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)}.blur-\[140px\]{--tw-blur: blur(140px);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)}.blur-\[2px\]{--tw-blur: blur(2px);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)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));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)}.drop-shadow-2xl{--tw-drop-shadow: drop-shadow(0 25px 25px rgb(0 0 0 / .15));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)}.drop-shadow-lg{--tw-drop-shadow: drop-shadow(0 10px 8px rgb(0 0 0 / .04)) drop-shadow(0 4px 3px rgb(0 0 0 / .1));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)}.drop-shadow-md{--tw-drop-shadow: drop-shadow(0 4px 3px rgb(0 0 0 / .07)) drop-shadow(0 2px 2px rgb(0 0 0 / .06));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)}.drop-shadow-sm{--tw-drop-shadow: drop-shadow(0 1px 1px rgb(0 0 0 / .05));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)}.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-2xl{--tw-backdrop-blur: blur(40px);-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)}.backdrop-blur-lg{--tw-backdrop-blur: blur(16px);-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)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-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)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-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-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-1000{transition-duration:1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.duration-\[8000ms\]{transition-duration:8s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--md-sys-color-surface: #141218;--md-sys-color-surface-dim: #110f14;--md-sys-color-surface-bright: #38353c;--md-sys-color-surface-container-lowest: #0f0d13;--md-sys-color-surface-container-low: #1c1a20;--md-sys-color-surface-container: #201e24;--md-sys-color-surface-container-high: #2b2830;--md-sys-color-surface-container-highest: #36333b;--md-sys-color-on-surface: #e6e0e9;--md-sys-color-on-surface-variant: #cac4d0;--md-sys-color-outline: #938f99;--md-sys-color-outline-variant: #49454f;--md-sys-color-primary: #ff5c93;--md-sys-color-on-primary: #380018;--md-sys-color-primary-container: #5c002b;--md-sys-color-on-primary-container: #ffd9e2;--md-sys-color-secondary: #8a5cff;--md-sys-color-on-secondary: #ffffff;--md-sys-color-secondary-container: #381e72;--md-sys-color-on-secondary-container: #e8def8;--md-sys-color-tertiary: #7be3b8;--md-sys-color-on-tertiary: #003824;--md-sys-color-tertiary-container: #005236;--md-sys-color-on-tertiary-container: #98fcd3;--md-sys-shape-corner-none: 0px;--md-sys-shape-corner-extra-small: 4px;--md-sys-shape-corner-small: 8px;--md-sys-shape-corner-medium: 12px;--md-sys-shape-corner-large: 16px;--md-sys-shape-corner-extra-large: 28px;--md-sys-shape-corner-full: 9999px;--md-sys-motion-easing-emphasized: cubic-bezier(.2, 0, 0, 1);--md-sys-motion-easing-emphasized-decelerate: cubic-bezier(.05, .7, .1, 1);--md-sys-motion-easing-emphasized-accelerate: cubic-bezier(.3, 0, .8, .15);--md-sys-motion-easing-standard: cubic-bezier(.2, 0, 0, 1);--g-accent: linear-gradient(135deg, #ff5c93 0%, #8a5cff 50%, #ff9a5c 100%);--g-cinema: linear-gradient(180deg, rgba(20, 18, 24, 0) 0%, rgba(20, 18, 24, .7) 60%, rgba(20, 18, 24, 1) 100%);--g-rail-edge-l: linear-gradient(90deg, #141218 0%, transparent 100%);--g-rail-edge-r: linear-gradient(270deg, #141218 0%, transparent 100%)}body{background-color:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface);font-family:Be Vietnam Pro,-apple-system,BlinkMacSystemFont,sans-serif;overflow-x:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--md-sys-color-surface-container-highest);border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:var(--md-sys-color-primary)}.surface-container{background-color:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface)}.surface-container-high{background-color:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}.surface-container-low{background-color:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface)}.state-layer{position:relative;overflow:hidden}.state-layer:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-color:currentColor;opacity:0;transition:opacity .2s var(--md-sys-motion-easing-standard);pointer-events:none}.state-layer:hover:after{opacity:.08}.state-layer:active:after{opacity:.12}.cinema-glass{background:#201e24b8;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(230,224,233,.08)}@keyframes md3-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-shimmer{background:linear-gradient(90deg,var(--md-sys-color-surface-container-low) 25%,var(--md-sys-color-surface-container-high) 37%,var(--md-sys-color-surface-container-low) 63%);background-size:200% 100%;animation:md3-shimmer 1.8s infinite ease-in-out}.selection\:bg-accent *::-moz-selection{--tw-bg-opacity: 1;background-color:rgb(255 92 147 / var(--tw-bg-opacity, 1))}.selection\:bg-accent *::selection{--tw-bg-opacity: 1;background-color:rgb(255 92 147 / var(--tw-bg-opacity, 1))}.selection\:bg-md-primary *::-moz-selection{--tw-bg-opacity: 1;background-color:rgb(255 92 147 / var(--tw-bg-opacity, 1))}.selection\:bg-md-primary *::selection{--tw-bg-opacity: 1;background-color:rgb(255 92 147 / var(--tw-bg-opacity, 1))}.selection\:text-bg *::-moz-selection{--tw-text-opacity: 1;color:rgb(15 11 19 / var(--tw-text-opacity, 1))}.selection\:text-bg *::selection{--tw-text-opacity: 1;color:rgb(15 11 19 / var(--tw-text-opacity, 1))}.selection\:text-md-on-primary *::-moz-selection{--tw-text-opacity: 1;color:rgb(56 0 24 / var(--tw-text-opacity, 1))}.selection\:text-md-on-primary *::selection{--tw-text-opacity: 1;color:rgb(56 0 24 / var(--tw-text-opacity, 1))}.selection\:bg-accent::-moz-selection{--tw-bg-opacity: 1;background-color:rgb(255 92 147 / var(--tw-bg-opacity, 1))}.selection\:bg-accent::selection{--tw-bg-opacity: 1;background-color:rgb(255 92 147 / var(--tw-bg-opacity, 1))}.selection\:bg-md-primary::-moz-selection{--tw-bg-opacity: 1;background-color:rgb(255 92 147 / var(--tw-bg-opacity, 1))}.selection\:bg-md-primary::selection{--tw-bg-opacity: 1;background-color:rgb(255 92 147 / var(--tw-bg-opacity, 1))}.selection\:text-bg::-moz-selection{--tw-text-opacity: 1;color:rgb(15 11 19 / var(--tw-text-opacity, 1))}.selection\:text-bg::selection{--tw-text-opacity: 1;color:rgb(15 11 19 / var(--tw-text-opacity, 1))}.selection\:text-md-on-primary::-moz-selection{--tw-text-opacity: 1;color:rgb(56 0 24 / var(--tw-text-opacity, 1))}.selection\:text-md-on-primary::selection{--tw-text-opacity: 1;color:rgb(56 0 24 / var(--tw-text-opacity, 1))}.focus-within\:border-md-primary:focus-within{--tw-border-opacity: 1;border-color:rgb(255 92 147 / var(--tw-border-opacity, 1))}.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)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-\[1\.02\]:hover{--tw-scale-x: 1.02;--tw-scale-y: 1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-\[1\.03\]:hover{--tw-scale-x: 1.03;--tw-scale-y: 1.03;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-cream\/30:hover{border-color:#fff1ea4d}.hover\:border-md-outline:hover{--tw-border-opacity: 1;border-color:rgb(147 143 153 / var(--tw-border-opacity, 1))}.hover\:border-md-outline\/60:hover{border-color:#938f9999}.hover\:border-md-primary:hover{--tw-border-opacity: 1;border-color:rgb(255 92 147 / var(--tw-border-opacity, 1))}.hover\:border-md-primary\/40:hover{border-color:#ff5c9366}.hover\:border-md-primary\/50:hover{border-color:#ff5c9380}.hover\:border-md-primary\/60:hover{border-color:#ff5c9399}.hover\:border-rose\/30:hover{border-color:#e0306f4d}.hover\:bg-amber-400:hover{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.hover\:bg-cream\/5:hover{background-color:#fff1ea0d}.hover\:bg-md-on-surface-variant:hover{--tw-bg-opacity: 1;background-color:rgb(202 196 208 / var(--tw-bg-opacity, 1))}.hover\:bg-md-primary:hover{--tw-bg-opacity: 1;background-color:rgb(255 92 147 / var(--tw-bg-opacity, 1))}.hover\:bg-md-primary\/90:hover{background-color:#ff5c93e6}.hover\:bg-md-surface-container-high:hover{--tw-bg-opacity: 1;background-color:rgb(43 40 48 / var(--tw-bg-opacity, 1))}.hover\:bg-md-surface-container-high\/30:hover{background-color:#2b28304d}.hover\:bg-md-surface-container-highest:hover{--tw-bg-opacity: 1;background-color:rgb(54 51 59 / var(--tw-bg-opacity, 1))}.hover\:bg-rose\/20:hover{background-color:#e0306f33}.hover\:bg-rose\/80:hover{background-color:#e0306fcc}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/20:hover{background-color:#fff3}.hover\:bg-white\/25:hover{background-color:#ffffff40}.hover\:text-cream:hover{--tw-text-opacity: 1;color:rgb(255 241 234 / var(--tw-text-opacity, 1))}.hover\:text-md-on-primary:hover{--tw-text-opacity: 1;color:rgb(56 0 24 / var(--tw-text-opacity, 1))}.hover\:text-md-on-surface:hover{--tw-text-opacity: 1;color:rgb(230 224 233 / var(--tw-text-opacity, 1))}.hover\:text-md-primary:hover{--tw-text-opacity: 1;color:rgb(255 92 147 / var(--tw-text-opacity, 1))}.hover\:text-rose:hover{--tw-text-opacity: 1;color:rgb(224 48 111 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-elevation-2:hover{--tw-shadow: 0px 2px 6px 2px rgba(0, 0, 0, .25), 0px 1px 2px 0px rgba(0, 0, 0, .4);--tw-shadow-colored: 0px 2px 6px 2px var(--tw-shadow-color), 0px 1px 2px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-elevation-3:hover{--tw-shadow: 0px 4px 8px 3px rgba(0, 0, 0, .25), 0px 1px 3px 0px rgba(0, 0, 0, .4);--tw-shadow-colored: 0px 4px 8px 3px var(--tw-shadow-color), 0px 1px 3px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-md-primary:focus{--tw-border-opacity: 1;border-color:rgb(255 92 147 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-40:disabled{opacity:.4}.group\/prov:hover .group-hover\/prov\:flex{display:flex}.group:hover .group-hover\:scale-105{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/row:hover .group-hover\/row\:bg-md-surface-container-high{--tw-bg-opacity: 1;background-color:rgb(43 40 48 / var(--tw-bg-opacity, 1))}.group:hover .group-hover\:bg-md-primary{--tw-bg-opacity: 1;background-color:rgb(255 92 147 / var(--tw-bg-opacity, 1))}.group:hover .group-hover\:bg-md-primary\/20{background-color:#ff5c9333}.group:hover .group-hover\:bg-md-surface-container-high{--tw-bg-opacity: 1;background-color:rgb(43 40 48 / var(--tw-bg-opacity, 1))}.group:hover .group-hover\:text-current{color:currentColor}.group:hover .group-hover\:text-md-on-primary{--tw-text-opacity: 1;color:rgb(56 0 24 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-md-on-surface{--tw-text-opacity: 1;color:rgb(230 224 233 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:text-md-primary{--tw-text-opacity: 1;color:rgb(255 92 147 / var(--tw-text-opacity, 1))}.group\/billboard:hover .group-hover\/billboard\:opacity-100,.group\/rail:hover .group-hover\/rail\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}@media(min-width:640px){.sm\:right-8{right:2rem}.sm\:-mx-8{margin-left:-2rem;margin-right:-2rem}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-12{margin-top:3rem;margin-bottom:3rem}.sm\:line-clamp-4{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:inline-flex{display:inline-flex}.sm\:h-10{height:2.5rem}.sm\:h-96{height:24rem}.sm\:min-h-\[440px\]{min-height:440px}.sm\:w-10{width:2.5rem}.sm\:w-36{width:9rem}.sm\:w-40{width:10rem}.sm\:w-52{width:13rem}.sm\:w-64{width:16rem}.sm\:w-\[195px\]{width:195px}.sm\:w-\[300px\]{width:300px}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:gap-1\.5{gap:.375rem}.sm\:gap-10{gap:2.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:self-auto{align-self:auto}.sm\:p-12{padding:3rem}.sm\:p-5{padding:1.25rem}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-14{padding-top:3.5rem;padding-bottom:3.5rem}.sm\:pb-16{padding-bottom:4rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:focus-within\:w-64:focus-within{width:16rem}}@media(min-width:768px){.md\:col-span-2{grid-column:span 2 / span 2}.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-44{width:11rem}.md\:w-\[215px\]{width:215px}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:pb-0{padding-bottom:0}.md\:pl-20{padding-left:5rem}}@media(min-width:1024px){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:text-6xl{font-size:3.75rem;line-height:1}}@media(min-width:1280px){.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}@media(prefers-color-scheme:dark){.dark\:bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.dark\:text-zinc-950{--tw-text-opacity: 1;color:rgb(9 9 11 / var(--tw-text-opacity, 1))}}
|