@import 'tailwindcss'; @import 'tw-animate-css'; @import 'animate.css/animate.min.css'; @import 'noty/lib/noty.css'; @import 'remixicon/fonts/remixicon.css'; @import 'vue-sonner/style.css'; @import 'vue-json-pretty/lib/styles.css'; @import './flags.css'; @import './animated-emoji.css'; @import './fonts.css'; @import './noty.css'; @import './status-icon.css'; @import './options-container.css'; @custom-variant dark (&:is(.dark *)); :root { --background: oklch(1 0 0); --foreground: oklch(0.145 0 0); --card: oklch(1 0 0); --card-foreground: oklch(0.145 0 0); --popover: oklch(1 0 0); --popover-foreground: oklch(0.145 0 0); --primary: oklch(0.205 0 0); --primary-foreground: oklch(0.985 0 0); --secondary: oklch(0.97 0 0); --secondary-foreground: oklch(0.205 0 0); --muted: oklch(0.97 0 0); --muted-foreground: oklch(0.556 0 0); --accent: oklch(0.97 0 0); --accent-foreground: oklch(0.205 0 0); --destructive: oklch(0.577 0.245 27.325); /* --destructive-foreground: oklch(0.577 0.245 27.325); */ --border: oklch(0.922 0 0); --input: oklch(0.922 0 0); --ring: oklch(0.708 0 0); --chart-1: oklch(0.646 0.222 41.116); --chart-2: oklch(0.6 0.118 184.704); --chart-3: oklch(0.398 0.07 227.392); --chart-4: oklch(0.828 0.189 84.429); --chart-5: oklch(0.769 0.188 70.08); /* defalut 0.625rem */ --radius: 0.375rem; --sidebar: oklch(0.985 0 0); --sidebar-foreground: oklch(0.145 0 0); --sidebar-primary: oklch(0.205 0 0); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.97 0 0); --sidebar-accent-foreground: oklch(0.205 0 0); --sidebar-border: oklch(0.922 0 0); --sidebar-ring: oklch(0.708 0 0); /* VRChat Status Colors */ --status-online: #67c23a; --status-joinme: #00b8ff; --status-askme: #ff9500; --status-busy: #ff2c2c; --status-active: #f4e05e; --status-offline: #909399; --status-offline-alt: #808080; --status-offline-card: #737f8d; /* Platform Colors */ --platform-pc: #0078d4; --platform-quest: #3ddc84; --platform-ios: #8e8e93; /* Favorite Group Visibility Colors */ --visibility-public: #22c55e; --visibility-friends: #0ea5e9; --visibility-private: #ef4444; } .dark { /* --background: oklch(0.145 0 0); */ --background: oklch(0.205 0 0); --foreground: oklch(0.985 0 0); --card: oklch(0.205 0 0); --card-foreground: oklch(0.985 0 0); --popover: oklch(0.205 0 0); --popover-foreground: oklch(0.985 0 0); --primary: oklch(0.922 0 0); --primary-foreground: oklch(0.205 0 0); --secondary: oklch(0.269 0 0); --secondary-foreground: oklch(0.985 0 0); --muted: oklch(0.269 0 0); --muted-foreground: oklch(0.708 0 0); --accent: oklch(0.269 0 0); --accent-foreground: oklch(0.985 0 0); --destructive: oklch(0.704 0.191 22.216); /* --destructive-foreground: oklch(0.637 0.237 25.331); */ --border: oklch(1 0 0 / 10%); --input: oklch(1 0 0 / 15%); --ring: oklch(0.556 0 0); --chart-1: oklch(0.488 0.243 264.376); --chart-2: oklch(0.696 0.17 162.48); --chart-3: oklch(0.769 0.188 70.08); --chart-4: oklch(0.627 0.265 303.9); --chart-5: oklch(0.645 0.246 16.439); --sidebar: oklch(0.205 0 0); --sidebar-foreground: oklch(0.985 0 0); --sidebar-primary: oklch(0.488 0.243 264.376); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.269 0 0); --sidebar-accent-foreground: oklch(0.985 0 0); --sidebar-border: oklch(1 0 0 / 10%); --sidebar-ring: oklch(0.556 0 0); } @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); --color-destructive-foreground: var(--destructive-foreground); --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); --color-chart-1: var(--chart-1); --color-chart-2: var(--chart-2); --color-chart-3: var(--chart-3); --color-chart-4: var(--chart-4); --color-chart-5: var(--chart-5); --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: calc(var(--radius)); --radius-xl: calc(var(--radius) + 2px); --color-sidebar: var(--sidebar); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); /* VRChat Status Colors */ --color-status-online: var(--status-online); --color-status-joinme: var(--status-joinme); --color-status-askme: var(--status-askme); --color-status-busy: var(--status-busy); --color-status-active: var(--status-active); --color-status-offline: var(--status-offline); --color-status-offline-alt: var(--status-offline-alt); --color-status-offline-card: var(--status-offline-card); /* Platform Colors */ --color-platform-pc: var(--platform-pc); --color-platform-quest: var(--platform-quest); --color-platform-ios: var(--platform-ios); /* Favorite Group Visibility Colors */ --color-visibility-public: var(--visibility-public); --color-visibility-friends: var(--visibility-friends); --color-visibility-private: var(--visibility-private); } html { overflow: hidden; } .lucide.is-loading { animation: rotating 2s linear infinite; } .x-container { position: relative; padding: 8px; overflow: hidden auto; box-sizing: border-box; min-width: 0; background: var(--background); height: calc(100% - 20px); margin: 8px 0 8px 0; border-radius: var(--radius); border: 1px solid var(--border); } .aside-collapsed .x-container { margin-right: 8px; } html.dark .x-container { background: var(--sidebar); } [data-sonner-toast] [data-content] [data-description] { white-space: pre-line; } * { @apply border-border outline-ring/50; scrollbar-width: thin; scrollbar-color: var(--border) transparent; } body { @apply bg-background text-foreground; font-family: var(--font-western), var(--font-symbol), var(--font-primary-cjk), var(--font-fallback-cjk); margin: 0; } ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background-color: var(--border); border-radius: var(--rounded-full); border: 2px solid transparent; background-clip: content-box; } .scrollbar-hidden { scrollbar-width: none; -ms-overflow-style: none; } .scrollbar-hidden::-webkit-scrollbar { width: 0; height: 0; display: none; } [data-slot='table-header'], [data-slot='table-header'] [data-slot='table-row'] { background-color: transparent; } .lucide { width: 1em; height: 1em; } /* ========================================================================== * VRCX UI Standards * These are project-wide conventions. * Use them when building new components. * ==========================================================================*/ /* Hover Transitions * Smooth hover state changes to avoid harsh flickering. * x-hover-card — Cards & panels (0.2s, bg + shadow) * x-hover-list — List items (0.15s, bg). Skip for high-density lists (e.g. friend sidebar). * x-hover-icon — Icon buttons (0.1s, bg + color) */ .x-hover-card { transition: background-color 0.2s ease, box-shadow 0.2s ease; } .x-hover-list { transition: background-color 0.15s ease; } .x-hover-icon { transition: background-color 0.1s ease, color 0.1s ease; }