.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; } }