ff48ec8af0
ci/woodpecker/push/woodpecker Pipeline was successful
Visual: - Dark theme throughout (#111 bg, #1c1c1c panels, #2a2a2a borders) - Type badges with color: Monster=orange, Spell=green, Trap=purple - Owned count shown as ×3 (highlighted) or — (dimmed) - Printing column headers in CardRow - Card detail panel: type badge, attribute, race, level stars Cleanup: - Replace index.css (was Vite boilerplate) with dark base + shared CSS classes (.card-row-header:hover, .filter-chip, .icon-btn, modal styles) - Clear App.css (Vite boilerplate, unused) - Remove Footer.css (modal styles consolidated into index.css) - Extract useDebounce to src/hooks/useDebounce.js - Remove react-window (installed but never used) - App.jsx: remove unnecessary wrapper div - gitignore: add mockups/ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
95 lines
2.5 KiB
CSS
95 lines
2.5 KiB
CSS
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||
|
||
html, body, #root { height: 100%; }
|
||
|
||
body {
|
||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
||
background: #111;
|
||
color: #e0e0e0;
|
||
font-size: 14px;
|
||
-webkit-font-smoothing: antialiased;
|
||
}
|
||
|
||
/* Card row — :hover can't be done with inline styles */
|
||
.card-row-header:hover { background: #1a1a1a !important; }
|
||
|
||
/* Filter chips */
|
||
.filter-chip {
|
||
padding: 3px 12px;
|
||
border-radius: 20px;
|
||
border: 1px solid #333;
|
||
background: transparent;
|
||
color: #666;
|
||
font-size: 12px;
|
||
cursor: pointer;
|
||
transition: border-color 0.15s, color 0.15s;
|
||
}
|
||
.filter-chip:hover { border-color: #555; color: #bbb; }
|
||
.filter-chip.active { background: #e0e0e0; color: #111; border-color: #e0e0e0; }
|
||
.filter-chip.active-m { background: #c07020; color: #fff; border-color: #c07020; }
|
||
.filter-chip.active-s { background: #1a7a5e; color: #fff; border-color: #1a7a5e; }
|
||
.filter-chip.active-t { background: #7a2060; color: #fff; border-color: #7a2060; }
|
||
|
||
/* Amount +/− buttons */
|
||
.icon-btn {
|
||
width: 22px;
|
||
height: 22px;
|
||
border-radius: 4px;
|
||
border: 1px solid #333;
|
||
background: #222;
|
||
color: #aaa;
|
||
cursor: pointer;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-size: 14px;
|
||
line-height: 1;
|
||
}
|
||
.icon-btn:hover:not(:disabled) { background: #2e2e2e; border-color: #444; }
|
||
.icon-btn:disabled { opacity: 0.4; cursor: default; }
|
||
|
||
/* Import modal */
|
||
.modal-backdrop {
|
||
position: fixed;
|
||
inset: 0;
|
||
background: rgba(0, 0, 0, 0.6);
|
||
backdrop-filter: blur(2px);
|
||
z-index: 1000;
|
||
animation: fadeIn 0.15s ease;
|
||
}
|
||
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
|
||
|
||
.import-modal {
|
||
position: fixed;
|
||
top: 50%;
|
||
left: 50%;
|
||
transform: translate(-50%, -50%);
|
||
background: #1e1e1e;
|
||
color: #e0e0e0;
|
||
padding: 2rem 2.5rem;
|
||
border-radius: 12px;
|
||
border: 1px solid #333;
|
||
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.7);
|
||
z-index: 1001;
|
||
max-width: 90%;
|
||
min-width: 300px;
|
||
text-align: center;
|
||
animation: popIn 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
|
||
}
|
||
@keyframes popIn {
|
||
from { opacity: 0; transform: translate(-50%, -48%) scale(0.92); }
|
||
to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
|
||
}
|
||
.import-modal button {
|
||
margin-top: 1.25rem;
|
||
padding: 0.4rem 1.4rem;
|
||
cursor: pointer;
|
||
background: #2a2a2a;
|
||
color: #e0e0e0;
|
||
border: 1px solid #444;
|
||
border-radius: 6px;
|
||
font-size: 0.9rem;
|
||
transition: background 0.15s;
|
||
}
|
||
.import-modal button:hover { background: #333; }
|