/* HRIStudio Design System */ :root { /* Light mode colors */ --background: 200 30% 97%; --foreground: 200 50% 20%; --card: 0 0% 100%; --card-foreground: 200 50% 20%; --popover: 0 0% 100%; --popover-foreground: 200 50% 20%; --primary: 200 85% 45%; --primary-foreground: 0 0% 100%; --secondary: 200 30% 96%; --secondary-foreground: 200 50% 20%; --muted: 200 30% 96%; --muted-foreground: 200 30% 40%; --accent: 200 85% 45%; --accent-foreground: 0 0% 100%; --border: 200 30% 90%; --ring: 200 85% 45%; --radius: 0.5rem; } @media (prefers-color-scheme: dark) { :root { --background: 200 30% 8%; --foreground: 200 20% 96%; --card: 200 25% 15%; --card-foreground: 200 15% 85%; --popover: 200 50% 8%; --popover-foreground: 200 20% 96%; --primary: 200 70% 40%; --primary-foreground: 0 0% 100%; --secondary: 200 30% 20%; --secondary-foreground: 200 20% 96%; --muted: 200 30% 20%; --muted-foreground: 200 30% 65%; --accent: 200 70% 40%; --accent-foreground: 0 0% 100%; --border: 200 30% 20%; --ring: 200 70% 40%; } } /* Base styles */ * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: system-ui, -apple-system, sans-serif; line-height: 1.5; color: hsl(var(--foreground)); background: hsl(var(--background)); transition: background-color 0.3s ease; min-height: 100vh; } /* Layout */ .container { max-width: 80rem; margin: 0 auto; padding: 1.5rem; } .grid { display: grid; gap: 1.5rem; } .grid-cols-2 { grid-template-columns: repeat(2, 1fr); } /* Components */ .card { background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); transition: background-color 0.3s ease, border-color 0.3s ease; height: 100%; display: flex; flex-direction: column; } .card-header { padding: 1.5rem; border-bottom: 1px solid hsl(var(--border)); } .card-content { padding: 1.5rem; flex: 1; } .header-banner { position: relative; width: 100%; height: 20rem; background: hsl(var(--secondary)); margin-bottom: 2rem; border-radius: var(--radius); overflow: hidden; border: 1px solid hsl(var(--border)); transition: background-color 0.3s ease, border-color 0.3s ease; } .header-banner img { width: 100%; height: 100%; object-fit: cover; } .header-content { display: flex; align-items: flex-start; gap: 1.5rem; margin-bottom: 2rem; } .header-icon { width: 6rem; height: 6rem; border-radius: var(--radius); object-fit: contain; background: hsl(var(--secondary)); padding: 0.75rem; border: 1px solid hsl(var(--border)); transition: background-color 0.3s ease; } .title { font-size: 2rem; font-weight: 600; margin-bottom: 0.5rem; color: hsl(var(--foreground)); transition: color 0.3s ease; line-height: 1.2; } .description { color: hsl(var(--muted-foreground)); font-size: 1.125rem; transition: color 0.3s ease; } /* Tabs */ .tabs { display: flex; flex-direction: column; gap: 1.5rem; } .tabs-list { display: flex; gap: 0.5rem; border-bottom: 1px solid hsl(var(--border)); margin-bottom: 1.5rem; padding: 0 0.5rem; } .tab { position: relative; padding: 0.75rem 1rem; color: hsl(var(--muted-foreground)); font-weight: 500; font-size: 0.875rem; cursor: pointer; transition: all 0.2s ease; background: none; border: none; outline: none; user-select: none; margin-bottom: -1px; } .tab:hover { color: hsl(var(--foreground)); } .tab[data-state="active"] { color: hsl(var(--foreground)); } .tab[data-state="active"]::after { content: ''; position: absolute; left: 0; bottom: 0; width: 100%; height: 2px; background: hsl(var(--primary)); border-radius: var(--radius) var(--radius) 0 0; } .tab-content { display: none; } .tab-content[data-state="active"] { display: block; } /* Plugin Grid */ .plugin-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); } .plugin-card { display: flex; flex-direction: column; gap: 1rem; padding: 1.5rem; background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); transition: all 0.3s ease; } .plugin-card:hover { background: hsl(var(--accent) / 0.05); border-color: hsl(var(--accent) / 0.2); } .plugin-header { display: flex; align-items: flex-start; gap: 1rem; } .plugin-icon { width: 3rem; height: 3rem; min-width: 3rem; border-radius: calc(var(--radius) - 0.25rem); object-fit: contain; background: hsl(var(--secondary)); padding: 0.5rem; border: 1px solid hsl(var(--border)); } .plugin-info { flex: 1; min-width: 0; } .plugin-title { font-weight: 600; color: hsl(var(--foreground)); margin-bottom: 0.25rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .plugin-description { color: hsl(var(--muted-foreground)); font-size: 0.875rem; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } /* Images */ img { max-width: 100%; height: auto; } /* Badges */ .badge { display: inline-flex; align-items: center; padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 500; background: hsl(var(--primary) / 0.1); color: hsl(var(--primary)); transition: all 0.3s ease; margin: 0.25rem; } .badge-secondary { background: hsl(var(--secondary)); color: hsl(var(--secondary-foreground)); } /* Loading state */ #loading { display: flex; align-items: center; justify-content: center; min-height: 20rem; color: hsl(var(--muted-foreground)); font-size: 1.125rem; transition: color 0.3s ease; } .hidden { display: none; } /* Responsive */ @media (max-width: 768px) { .grid-cols-2 { grid-template-columns: 1fr; } .header-banner { height: 12rem; } .header-content { flex-direction: column; align-items: center; text-align: center; } .plugin-grid { grid-template-columns: 1fr; } }