Files
npc-portrait-pack/styles/npc-portrait-pack.css
T
2026-03-31 17:00:15 +01:00

303 lines
7.2 KiB
CSS

/* npc-portrait-pack.css — Portrait Picker dialog styles */
/* ── Dialog container ──────────────────────────────────────────────── */
.portrait-picker-container {
display: flex;
flex-direction: column;
height: 100%;
padding: 8px;
gap: 8px;
box-sizing: border-box;
}
/* ── Toolbar (category filter + random button) ────────────────────── */
.picker-toolbar {
display: flex;
align-items: center;
gap: 10px;
padding-bottom: 8px;
border-bottom: 1px solid #666;
flex-shrink: 0;
}
.picker-toolbar label {
display: flex;
align-items: center;
gap: 6px;
font-size: 0.85rem;
font-weight: 600;
color: #ddd;
}
.picker-toolbar .category-filter {
background: #1a1a1a;
color: #ddd;
border: 1px solid #555;
border-radius: 3px;
padding: 3px 6px;
font-size: 0.82rem;
}
.picker-portrait-count {
margin-left: auto;
font-size: 0.75rem;
color: #888;
font-style: italic;
}
/* ── Portrait grid ──────────────────────────────────────────────────── */
.portrait-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(72px, 1fr));
gap: 6px;
overflow-y: auto;
flex: 1;
padding: 4px 2px;
}
/* ── Individual portrait tile ───────────────────────────────────────── */
.portrait-item {
border: 2px solid transparent;
border-radius: 4px;
cursor: pointer;
transition: border-color 0.12s ease, transform 0.1s ease;
background: #111;
}
.portrait-item:hover {
border-color: #7aa;
transform: scale(1.06);
z-index: 2;
position: relative;
}
.portrait-thumb {
width: 100%;
aspect-ratio: 1 / 1;
object-fit: cover;
border-radius: 2px;
display: block;
filter: contrast(1.05);
}
/* ── Buttons ─────────────────────────────────────────────────────────── */
.btn-random {
padding: 4px 12px;
background: #2a3a4a;
color: #cde;
border: 1px solid #557;
border-radius: 4px;
cursor: pointer;
font-size: 0.82rem;
font-weight: 600;
white-space: nowrap;
}
.btn-random:hover {
background: #3a4a5a;
border-color: #88a;
color: #fff;
}
/* ── Empty state ──────────────────────────────────────────────────────── */
.no-portraits {
grid-column: 1 / -1;
text-align: center;
color: #777;
padding: 28px 8px;
font-style: italic;
}
/* ── Sheet header buttons (injected via renderActorSheet) ────────────── */
.npp-portrait-btn i,
.npp-generate-btn i {
margin-right: 3px;
}
/* ── Actors sidebar generate button ──────────────────────────────────── */
.npp-generate-sidebar-btn {
margin-top: 4px;
width: 100%;
padding: 4px 8px;
background: #2a3040;
color: #aac;
border: 1px solid #445;
border-radius: 3px;
cursor: pointer;
font-size: 0.8rem;
font-weight: 600;
}
.npp-generate-sidebar-btn:hover {
background: #3a4050;
color: #ddf;
}
/* ═══════════════════════════════════════════════════════════════════════
NPC GENERATOR DIALOG
═══════════════════════════════════════════════════════════════════════ */
.npc-generator-container {
display: flex;
flex-direction: column;
gap: 12px;
padding: 10px;
}
/* ── Section blocks ──────────────────────────────────────────────────── */
.gen-section {
display: flex;
flex-direction: column;
gap: 6px;
}
.gen-row {
flex-direction: row;
gap: 12px;
}
.gen-field {
display: flex;
flex-direction: column;
gap: 4px;
flex: 1;
}
.gen-field-sm {
flex: 0 0 80px;
}
.gen-label {
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
color: #aaa;
}
/* ── Archetype cards grid ─────────────────────────────────────────────── */
.archetype-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
gap: 6px;
}
.archetype-card {
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
padding: 8px 4px 6px;
border: 1px solid #444;
border-radius: 5px;
background: #1c1c1c;
cursor: pointer;
font-size: 0.78rem;
color: #bbb;
transition: border-color 0.1s, background 0.1s;
text-align: center;
line-height: 1.2;
}
.archetype-card input[type="radio"] {
display: none;
}
.archetype-card i {
font-size: 1.2rem;
color: #88aacc;
}
.archetype-card:has(input:checked),
.archetype-card.selected {
border-color: #6699bb;
background: #1e2a36;
color: #ddf;
}
.archetype-card:hover {
border-color: #668;
background: #202030;
}
.gen-hint {
font-size: 0.7rem;
font-weight: 400;
color: #666;
font-style: italic;
text-transform: none;
letter-spacing: 0;
}
.archetype-description {
font-size: 0.78rem;
color: #888;
font-style: italic;
margin: 0;
min-height: 2.2em;
}
/* ── Inputs ───────────────────────────────────────────────────────────── */
.npc-generator select,
.npc-generator input[type="number"],
.npc-generator input[type="text"] {
background: #1a1a1a;
color: #ddd;
border: 1px solid #555;
border-radius: 3px;
padding: 4px 6px;
font-size: 0.85rem;
width: 100%;
box-sizing: border-box;
}
/* ── Generate button ─────────────────────────────────────────────────── */
.gen-actions {
flex-direction: row;
justify-content: flex-end;
}
.btn-generate {
padding: 6px 18px;
background: #1e3a28;
color: #8dcc8d;
border: 1px solid #3a6a3a;
border-radius: 4px;
cursor: pointer;
font-size: 0.88rem;
font-weight: 700;
letter-spacing: 0.04em;
}
.btn-generate:hover {
background: #264a30;
border-color: #5a9a5a;
color: #aeeaae;
}
/* ── Output log ──────────────────────────────────────────────────────── */
.gen-log {
border-top: 1px solid #333;
padding-top: 10px;
}
.gen-log-list {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 3px;
}
.gen-log-list li {
font-size: 0.78rem;
color: #8dcc8d;
padding: 2px 4px;
background: rgba(0,80,0,0.12);
border-radius: 2px;
}
.gen-log-list li:not([class]) {
color: #cc8888;
}