303 lines
7.2 KiB
CSS
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;
|
|
}
|