All checks were successful
Ajout de la possibilité de lié un PNJ à une page de lore Ajout d'un graphe de liaison entre lore / PNJs Passage en v.0.12.3-beta
374 lines
6.9 KiB
SCSS
374 lines
6.9 KiB
SCSS
.page {
|
|
padding: 2rem 3rem;
|
|
max-width: 1000px;
|
|
}
|
|
|
|
.page-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 2rem;
|
|
|
|
h1 {
|
|
font-size: 1.6rem;
|
|
font-weight: 700;
|
|
color: white;
|
|
margin: 0 0 0.25rem;
|
|
}
|
|
.subtitle {
|
|
color: #9ca3af;
|
|
font-size: 0.85rem;
|
|
margin: 0;
|
|
}
|
|
|
|
.header-actions {
|
|
display: flex;
|
|
gap: 0.6rem;
|
|
}
|
|
}
|
|
|
|
.template-form {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 2rem 2.5rem;
|
|
|
|
.col-left, .col-right {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1.25rem;
|
|
}
|
|
}
|
|
|
|
.field {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.4rem;
|
|
|
|
label {
|
|
font-size: 0.82rem;
|
|
font-weight: 500;
|
|
color: #d1d5db;
|
|
}
|
|
|
|
input, textarea, select {
|
|
background: #1a1a2e;
|
|
border: 1px solid #2a2a3d;
|
|
color: white;
|
|
padding: 0.7rem 0.9rem;
|
|
border-radius: 6px;
|
|
font-size: 0.9rem;
|
|
font-family: inherit;
|
|
|
|
&:focus {
|
|
outline: none;
|
|
border-color: #6c63ff;
|
|
}
|
|
}
|
|
|
|
textarea { resize: vertical; }
|
|
}
|
|
|
|
.hint {
|
|
font-size: 0.76rem;
|
|
color: #6b7280;
|
|
margin: 0;
|
|
}
|
|
|
|
.section-label {
|
|
font-size: 0.82rem;
|
|
font-weight: 500;
|
|
color: #d1d5db;
|
|
margin-bottom: 0.4rem;
|
|
}
|
|
|
|
.fields-list {
|
|
list-style: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
// Sous-ligne des libellés d'un champ Tableau (KEY_VALUE_LIST).
|
|
.kv-labels-row {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
gap: 0.4rem;
|
|
// Aligne visuellement sous le chip du champ (décalage = reorder-stack + gap).
|
|
padding-left: 30px;
|
|
|
|
.kv-label-chip {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.2rem;
|
|
background: #1a1a2e;
|
|
border: 1px solid #4a3a1f;
|
|
border-radius: 5px;
|
|
padding: 0.15rem 0.3rem;
|
|
|
|
input {
|
|
width: 90px;
|
|
background: transparent;
|
|
border: none;
|
|
color: #fbd38d;
|
|
font-size: 0.8rem;
|
|
padding: 0.2rem 0.3rem;
|
|
|
|
&:focus { outline: none; }
|
|
}
|
|
|
|
.kv-label-remove {
|
|
background: transparent;
|
|
border: none;
|
|
color: #6b7280;
|
|
cursor: pointer;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
padding: 2px;
|
|
|
|
&:hover { color: #f87171; }
|
|
}
|
|
}
|
|
|
|
.btn-kv-add-label {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.25rem;
|
|
background: transparent;
|
|
border: 1px dashed #4a3a1f;
|
|
border-radius: 5px;
|
|
color: #fbd38d;
|
|
font-size: 0.78rem;
|
|
padding: 0.3rem 0.55rem;
|
|
cursor: pointer;
|
|
|
|
&:hover { background: rgba(251, 211, 141, 0.08); }
|
|
}
|
|
|
|
.kv-labels-hint {
|
|
font-size: 0.75rem;
|
|
color: #6b7280;
|
|
font-style: italic;
|
|
}
|
|
}
|
|
|
|
.field-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
|
|
.field-chip {
|
|
flex: 1;
|
|
background: #1a1a2e;
|
|
border: 1px solid #2a2a3d;
|
|
color: white;
|
|
padding: 0.6rem 0.9rem;
|
|
border-radius: 6px;
|
|
font-size: 0.88rem;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.45rem;
|
|
|
|
// Champ existant, chargé depuis le backend — orange ambre.
|
|
&.field-chip-existing {
|
|
background: #5a3a1a;
|
|
border-color: #7a4f22;
|
|
color: #fde4c0;
|
|
}
|
|
|
|
// Champ ajouté pendant cette session, pas encore sauvegardé — vert.
|
|
&.field-chip-new {
|
|
background: #2a5f3f;
|
|
border-color: #347a4f;
|
|
color: #d1fae5;
|
|
}
|
|
|
|
// Champ IMAGE (palette indigo) — prioritaire sur existing/new.
|
|
&.field-chip-image {
|
|
background: #312b5c;
|
|
border-color: #3d3566;
|
|
color: #c7b8ff;
|
|
}
|
|
|
|
// Champ Liste clé/valeur (palette ambre) — prioritaire sur existing/new.
|
|
&.field-chip-kv {
|
|
background: #4a3a1f;
|
|
border-color: #6b5328;
|
|
color: #fbd38d;
|
|
}
|
|
|
|
// Champ Tableau (palette sarcelle) — prioritaire sur existing/new.
|
|
&.field-chip-table {
|
|
background: #134e4a;
|
|
border-color: #14b8a6;
|
|
color: #99f6e4;
|
|
}
|
|
}
|
|
|
|
.btn-type-toggle {
|
|
width: auto;
|
|
padding: 0 0.7rem;
|
|
background: #2a2a3d;
|
|
color: #d1d5db;
|
|
font-size: 0.72rem;
|
|
letter-spacing: 0.02em;
|
|
border: none;
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
transition: background 0.15s, color 0.15s;
|
|
height: 32px;
|
|
|
|
&:hover { background: #363650; color: white; }
|
|
}
|
|
|
|
.btn-icon-danger {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 32px;
|
|
height: 32px;
|
|
background: #3f1f1f;
|
|
color: #fca5a5;
|
|
border: none;
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
transition: background 0.15s;
|
|
|
|
&:hover { background: #5a2a2a; }
|
|
}
|
|
|
|
.type-select,
|
|
.layout-select {
|
|
background: #1a1a2e;
|
|
border: 1px solid #2a2a3d;
|
|
color: white;
|
|
padding: 0 0.6rem;
|
|
height: 36px;
|
|
border-radius: 6px;
|
|
font-size: 0.82rem;
|
|
cursor: pointer;
|
|
|
|
&:focus { outline: none; border-color: #6c63ff; }
|
|
}
|
|
|
|
.layout-select {
|
|
height: 28px;
|
|
font-size: 0.72rem;
|
|
padding: 0 0.45rem;
|
|
}
|
|
|
|
input {
|
|
flex: 1;
|
|
background: #1a1a2e;
|
|
border: 1px solid #2a2a3d;
|
|
color: white;
|
|
padding: 0.6rem 0.9rem;
|
|
border-radius: 6px;
|
|
font-size: 0.88rem;
|
|
|
|
&:focus {
|
|
outline: none;
|
|
border-color: #6c63ff;
|
|
}
|
|
|
|
&::placeholder { color: #6b7280; }
|
|
}
|
|
|
|
&.add-row { margin-top: 0.5rem; }
|
|
|
|
.reorder-stack {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 2px;
|
|
|
|
.btn-reorder {
|
|
width: 22px;
|
|
height: 16px;
|
|
background: transparent;
|
|
color: #6b7280;
|
|
border: 1px solid #2a2a3d;
|
|
border-radius: 3px;
|
|
padding: 0;
|
|
cursor: pointer;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
transition: background 0.12s, color 0.12s, border-color 0.12s;
|
|
|
|
&:hover:not(:disabled) {
|
|
background: #2a2a3d;
|
|
color: white;
|
|
border-color: #6c63ff;
|
|
}
|
|
|
|
&:disabled { opacity: 0.3; cursor: not-allowed; }
|
|
}
|
|
}
|
|
}
|
|
|
|
.btn-icon-ghost {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 32px;
|
|
height: 32px;
|
|
background: transparent;
|
|
color: #6b7280;
|
|
border: none;
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
transition: color 0.15s, background 0.15s;
|
|
|
|
&:hover { color: #fca5a5; background: #2a1f1f; }
|
|
}
|
|
|
|
.btn-add {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 36px;
|
|
height: 36px;
|
|
background: #6c63ff;
|
|
color: white;
|
|
border: none;
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
transition: background 0.15s;
|
|
|
|
&:hover { background: #5a52d6; }
|
|
}
|
|
|
|
.btn-primary, .btn-secondary, .btn-danger {
|
|
padding: 0.6rem 1.1rem;
|
|
border: none;
|
|
border-radius: 6px;
|
|
font-size: 0.88rem;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
transition: background 0.15s, opacity 0.15s;
|
|
}
|
|
|
|
.btn-primary {
|
|
background: #6c63ff;
|
|
color: white;
|
|
|
|
&:hover:not(:disabled) { background: #5a52e0; }
|
|
&:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
}
|
|
|
|
.btn-secondary {
|
|
background: #2a2a3d;
|
|
color: #d1d5db;
|
|
|
|
&:hover { background: #363650; }
|
|
}
|
|
|
|
.btn-danger {
|
|
background: #3f1f1f;
|
|
color: #fca5a5;
|
|
|
|
&:hover { background: #5a2a2a; }
|
|
}
|