Features: - HP Control component with damage/heal/direct modes (mobile-optimized) - Conditions system with PF2e condition database - Equipment database with 5,482 items from PF2e (weapons, armor, equipment) - AddItemModal with search, category filters, and pagination - Bulk tracking with encumbered/overburdened status display - Item management (add, remove, toggle equipped) Backend: - Equipment module with search/filter endpoints - Prisma migration for equipment detail fields - Equipment seed script importing from JSON data files - Extended Equipment model (damage, hands, AC, etc.) Frontend: - New components: HpControl, AddConditionModal, AddItemModal - Improved character sheet with tabbed interface - API methods for equipment search and item management Documentation: - CLAUDE.md with project philosophy and architecture decisions Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
171 lines
3.7 KiB
CSS
171 lines
3.7 KiB
CSS
@import "tailwindcss";
|
|
|
|
/* Dimension47 Design System */
|
|
@theme {
|
|
/* Primary Colors - Dimension47 Magenta */
|
|
--color-primary-50: #fdf2fc;
|
|
--color-primary-100: #fce8fa;
|
|
--color-primary-200: #f9cef4;
|
|
--color-primary-300: #f5a5ea;
|
|
--color-primary-400: #ed6dd9;
|
|
--color-primary-500: #c26dbc;
|
|
--color-primary-600: #9a4a94;
|
|
--color-primary-700: #7a3977;
|
|
--color-primary-800: #5e2e5a;
|
|
--color-primary-900: #4a274a;
|
|
--color-primary-950: #2d0f2c;
|
|
|
|
/* Secondary Colors - Dark Purple (47) */
|
|
--color-secondary-50: #f9f5f9;
|
|
--color-secondary-100: #f4eaf3;
|
|
--color-secondary-200: #e7d5e6;
|
|
--color-secondary-300: #d4b4d2;
|
|
--color-secondary-400: #b988b5;
|
|
--color-secondary-500: #9a6495;
|
|
--color-secondary-600: #7d4d79;
|
|
--color-secondary-700: #663d62;
|
|
--color-secondary-800: #542e52;
|
|
--color-secondary-900: #472945;
|
|
--color-secondary-950: #2a1429;
|
|
|
|
/* Background Colors (Dark Mode) */
|
|
--color-bg-primary: #0f0f12;
|
|
--color-bg-secondary: #1a1a1f;
|
|
--color-bg-tertiary: #242429;
|
|
--color-bg-elevated: #2a2a30;
|
|
|
|
/* Text Colors */
|
|
--color-text-primary: #f5f5f7;
|
|
--color-text-secondary: #a1a1a6;
|
|
--color-text-muted: #6b6b70;
|
|
--color-text-inverse: #0f0f12;
|
|
|
|
/* Border Colors */
|
|
--color-border: #2a2a2f;
|
|
--color-border-hover: #3a3a3f;
|
|
--color-border-focus: #c26dbc;
|
|
|
|
/* Semantic Colors */
|
|
--color-success-50: #f0fdf4;
|
|
--color-success-500: #22c55e;
|
|
--color-success-600: #16a34a;
|
|
|
|
--color-warning-50: #fffbeb;
|
|
--color-warning-500: #f59e0b;
|
|
--color-warning-600: #d97706;
|
|
|
|
--color-error-50: #fef2f2;
|
|
--color-error-500: #ef4444;
|
|
--color-error-600: #dc2626;
|
|
|
|
--color-info-50: #eff6ff;
|
|
--color-info-500: #3b82f6;
|
|
--color-info-600: #2563eb;
|
|
|
|
/* Fonts */
|
|
--font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif;
|
|
--font-mono: 'JetBrains Mono', ui-monospace, monospace;
|
|
|
|
/* Border Radius */
|
|
--radius-sm: 0.25rem;
|
|
--radius-md: 0.375rem;
|
|
--radius-lg: 0.5rem;
|
|
--radius-xl: 0.75rem;
|
|
--radius-2xl: 1rem;
|
|
--radius-full: 9999px;
|
|
|
|
/* Shadows */
|
|
--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.3);
|
|
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.4);
|
|
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.5);
|
|
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.5), 0 8px 10px -6px rgb(0 0 0 / 0.5);
|
|
|
|
/* Animations */
|
|
--animate-fade-in: fade-in 0.2s ease-out;
|
|
--animate-slide-up: slide-up 0.3s ease-out;
|
|
--animate-slide-down: slide-down 0.3s ease-out;
|
|
}
|
|
|
|
@keyframes fade-in {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes slide-up {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(10px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes slide-down {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(-10px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
/* Base Styles */
|
|
html {
|
|
background-color: var(--color-bg-primary);
|
|
color: var(--color-text-primary);
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
body {
|
|
font-family: var(--font-sans);
|
|
min-height: 100vh;
|
|
margin: 0;
|
|
overflow-x: hidden;
|
|
max-width: 100vw;
|
|
}
|
|
|
|
#root {
|
|
overflow-x: hidden;
|
|
max-width: 100vw;
|
|
}
|
|
|
|
/* Focus Styles */
|
|
*:focus-visible {
|
|
outline: none;
|
|
box-shadow: 0 0 0 2px var(--color-bg-primary), 0 0 0 4px var(--color-primary-500);
|
|
}
|
|
|
|
/* Selection */
|
|
::selection {
|
|
background-color: rgba(194, 109, 188, 0.3);
|
|
}
|
|
|
|
/* Scrollbar Styles */
|
|
::-webkit-scrollbar {
|
|
width: 8px;
|
|
height: 8px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background-color: var(--color-bg-secondary);
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background-color: var(--color-border);
|
|
border-radius: 9999px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background-color: var(--color-border-hover);
|
|
}
|