Initial commit: Arcanum TD — medieval fantasy tower defense
Vite + React + PixiJS + TypeScript. Features: - 4-level campaign (King's Road → Obsidian Keep) - Isometric 2.5D grid with ley-line mechanics - ECS architecture (entities, components, systems) - 4 tower types, hero spellcaster, 10+ enemy types - Lich King boss with 3-phase AI - Meta-progression: essence, rune unlocks - Full UI redesign with fantasy design system Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
export default {
|
||||
content: ['./index.html', './src/**/*.{ts,tsx}'],
|
||||
theme: {
|
||||
extend: {
|
||||
colors: {
|
||||
midnight: '#0E1220',
|
||||
'midnight-light': '#1a2035',
|
||||
'midnight-deep': '#070b14',
|
||||
parchment: '#E9DCC0',
|
||||
gold: '#C9A14A',
|
||||
'gold-dark': '#8B6914',
|
||||
'gold-bright': '#f0c060',
|
||||
ember: '#E8702A',
|
||||
frost: '#6ECBD5',
|
||||
'frost-dark': '#3a9aa8',
|
||||
arcane: '#9b4de8',
|
||||
'arcane-dark': '#5a1ea0',
|
||||
void: '#050810',
|
||||
},
|
||||
fontFamily: {
|
||||
cinzel: ['Cinzel', 'serif'],
|
||||
garamond: ['"EB Garamond"', 'serif'],
|
||||
},
|
||||
keyframes: {
|
||||
'rune-glow': {
|
||||
'0%, 100%': { boxShadow: '0 0 8px 2px rgba(201, 161, 74, 0.4)' },
|
||||
'50%': { boxShadow: '0 0 20px 6px rgba(201, 161, 74, 0.8)' },
|
||||
},
|
||||
'pulse-soft': {
|
||||
'0%, 100%': { opacity: '0.65' },
|
||||
'50%': { opacity: '1' },
|
||||
},
|
||||
float: {
|
||||
'0%, 100%': { transform: 'translateY(0px)' },
|
||||
'50%': { transform: 'translateY(-6px)' },
|
||||
},
|
||||
flicker: {
|
||||
'0%, 100%': { opacity: '1' },
|
||||
'30%': { opacity: '0.75' },
|
||||
'60%': { opacity: '0.9' },
|
||||
'80%': { opacity: '0.7' },
|
||||
},
|
||||
'spin-slow': {
|
||||
from: { transform: 'rotate(0deg)' },
|
||||
to: { transform: 'rotate(360deg)' },
|
||||
},
|
||||
'spin-slow-rev': {
|
||||
from: { transform: 'rotate(0deg)' },
|
||||
to: { transform: 'rotate(-360deg)' },
|
||||
},
|
||||
shimmer: {
|
||||
'0%': { backgroundPosition: '-200% center' },
|
||||
'100%': { backgroundPosition: '200% center' },
|
||||
},
|
||||
'slide-up': {
|
||||
from: { opacity: '0', transform: 'translateY(16px)' },
|
||||
to: { opacity: '1', transform: 'translateY(0)' },
|
||||
},
|
||||
'fade-in': {
|
||||
from: { opacity: '0' },
|
||||
to: { opacity: '1' },
|
||||
},
|
||||
'scale-in': {
|
||||
from: { opacity: '0', transform: 'scale(0.92)' },
|
||||
to: { opacity: '1', transform: 'scale(1)' },
|
||||
},
|
||||
'glow-pulse-rose': {
|
||||
'0%, 100%': { boxShadow: '0 0 8px rgba(244,63,94,0.4)' },
|
||||
'50%': { boxShadow: '0 0 22px rgba(244,63,94,0.9)' },
|
||||
},
|
||||
'glow-pulse-frost': {
|
||||
'0%, 100%': { boxShadow: '0 0 8px rgba(110,203,213,0.4)' },
|
||||
'50%': { boxShadow: '0 0 22px rgba(110,203,213,0.9)' },
|
||||
},
|
||||
'sweep-in': {
|
||||
from: { clipPath: 'inset(0 100% 0 0)' },
|
||||
to: { clipPath: 'inset(0 0% 0 0)' },
|
||||
},
|
||||
},
|
||||
animation: {
|
||||
'rune-glow': 'rune-glow 2s ease-in-out infinite',
|
||||
'pulse-soft': 'pulse-soft 3s ease-in-out infinite',
|
||||
float: 'float 4s ease-in-out infinite',
|
||||
flicker: 'flicker 3s ease-in-out infinite',
|
||||
'spin-slow': 'spin-slow 24s linear infinite',
|
||||
'spin-slow-rev': 'spin-slow-rev 18s linear infinite',
|
||||
shimmer: 'shimmer 2.5s linear infinite',
|
||||
'slide-up': 'slide-up 0.4s ease-out',
|
||||
'fade-in': 'fade-in 0.5s ease-out',
|
||||
'scale-in': 'scale-in 0.35s cubic-bezier(0.16,1,0.3,1)',
|
||||
'glow-pulse-rose': 'glow-pulse-rose 2s ease-in-out infinite',
|
||||
'glow-pulse-frost': 'glow-pulse-frost 2s ease-in-out infinite',
|
||||
'sweep-in': 'sweep-in 0.6s ease-out forwards',
|
||||
},
|
||||
backgroundImage: {
|
||||
'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
|
||||
'gradient-conic': 'conic-gradient(var(--tw-gradient-stops))',
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: [],
|
||||
}
|
||||
Reference in New Issue
Block a user