.form { padding: var(--page-padding); display: flex; flex-direction: column; gap: var(--badge-spacing); width: 100%; } .form label { margin-top: var(--box-spacing); } .more { margin: var(--box-spacing) auto; cursor: pointer; } /* ── Avatar Preview (in Formularen) ── */ .avatar-preview { width: 8em; height: 8em; background: var(--f2-bg); border: var(--border-width) solid var(--f2-border); display: flex; align-items: center; justify-content: center; overflow: hidden; flex-shrink: 0; border-radius: var(--border-radius); cursor: pointer; transition: border-color var(--transition-duration); } .avatar-preview:hover { border-color: var(--primary); } .avatar-preview img { width: 100%; height: 100%; object-fit: cover; } /* ── Avatar Editor Modal ── */ .av-overlay { position: fixed; inset: 0; background: rgb(from var(--f1-bg) r g b / var(--semi-transparent)); display: flex; align-items: center; justify-content: center; z-index: 1000; } .av-modal { background: var(--f2-bg); border: var(--border-width) solid var(--f2-border); border-radius: var(--border-radius); width: 90vw; max-width: 420px; display: flex; flex-direction: column; overflow: hidden; } .av-header { display: flex; align-items: center; justify-content: space-between; padding: var(--box-padding); border-bottom: var(--border-width) solid var(--f1-border); background: var(--f1-bg); } .av-body { padding: var(--box-padding); display: flex; flex-direction: column; align-items: center; gap: var(--box-spacing); } .av-preview-large { width: 16em; height: 16em; background: var(--f3-bg); border: var(--border-width) solid var(--f2-border); border-radius: var(--border-radius); display: flex; align-items: center; justify-content: center; overflow: hidden; } .av-preview-large img { width: 100%; height: 100%; object-fit: cover; } .av-controls { width: 100%; display: flex; flex-direction: column; gap: var(--badge-spacing); } .av-scale-row, .av-offset-row { display: flex; align-items: center; gap: var(--badge-spacing); } .av-scale-row label, .av-offset-row label { margin: 0; white-space: nowrap; min-width: 2.5em; } .av-scale-row input[type="range"], .av-offset-row input[type="range"] { flex: 1; accent-color: var(--primary); } .av-scale-row .av-scale-value, .av-offset-row span[class*="-value"] { font-size: 0.85em; min-width: 2.5em; text-align: right; opacity: 0.7; } .av-actions { display: flex; gap: var(--badge-spacing); } .av-ai-section { width: 100%; } .input-with-btn { display: flex; gap: var(--badge-spacing); } .input-with-btn input { flex: 1; } .input-with-btn button { align-self: center; } #agentFilesSection { margin-top: var(--box-spacing); } .form-actions { display: flex; gap: var(--badge-spacing); margin-block: var(--box-spacing) calc(var(--page-spacing) * 2); } /* ── Custom Commands ── */ .custom-commands { display: flex; flex-direction: column; gap: var(--badge-spacing); } .custom-command-item { display: flex; } .custom-command-fields { flex: 1; display: flex; gap: var(--badge-spacing); overflow: hidden; } .custom-command-fields .cmd-type { flex: 0 0 auto; width: 10em; } .custom-command-fields .cmd-name { flex: 2; } .custom-command-fields .cmd-command { flex: 5; } .custom-command-item .remove-cmd-btn { margin-left: var(--badge-spacing); color: var(--dangerous); align-self: center; } .custom-command-item .remove-cmd-btn:hover { background: var(--dangerous); color: var(--f1-bg); } .add-cmd-btn { align-self: flex-start; } /* ── Checkbox ── */ label.checkbox-label { display: flex; align-items: center; gap: var(--badge-spacing); cursor: pointer; margin-top: var(--badge-spacing); } .checkbox-label input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--accent); cursor: pointer; } .checkbox-hint { opacity: var(--semi-transparent); font-size: var(--font-size); } /* ── Skills ── */ .skill-list { display: flex; flex-direction: column; gap: var(--badge-spacing); } label.skill-item { display: flex; align-items: center; gap: var(--badge-spacing); cursor: pointer; padding: var(--badge-spacing) var(--box-spacing); background: var(--f2-bg); border: var(--border-width) solid var(--f2-border); border-radius: var(--border-radius); margin-top: 0; } .skill-item:hover { border-color: var(--accent); } .skill-item input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--accent); cursor: pointer; } .skill-version { opacity: var(--semi-transparent); } .skill-desc { opacity: var(--semi-transparent); font-size: var(--font-size); margin-left: auto; } .skill-empty { opacity: var(--semi-transparent); padding: var(--box-spacing); } .skill-empty code { background: var(--f2-bg); padding: 2px 6px; border-radius: var(--border-radius); } .skill-unavailable { opacity: var(--semi-transparent); cursor: not-allowed; } .skill-unavailable:hover { border-color: var(--f2-border); } .skill-warning { color: var(--dangerous); margin-left: auto; } /* ── Select Cards (Agent / Session in Formularen) ── */ .agent-select-card, .session-select-card { display: flex; align-items: center; gap: var(--box-spacing); padding: var(--box-padding); background: var(--f3-bg); border: var(--border-width) solid var(--f3-border); border-radius: var(--border-radius); cursor: pointer; transition: border-color var(--transition-duration); } .agent-select-card:hover, .session-select-card:hover { border-color: var(--primary); } .agent-select-card .card-image, .session-select-card .card-image { flex: 0 0 4em; height: 4em; } .agent-select-empty, .session-select-empty { opacity: var(--semi-transparent); display: flex; align-items: center; gap: var(--badge-spacing); } .agent-select-change, .session-select-change { margin-left: auto; opacity: var(--semi-transparent); flex-shrink: 0; transition: opacity var(--transition-duration); } .agent-select-card:hover .agent-select-change, .session-select-card:hover .session-select-change { opacity: 1; color: var(--primary); } /* ── Agent Picker Modal ── */ .agent-picker-overlay { position: fixed; inset: 0; background: rgb(from var(--f1-bg) r g b / var(--semi-transparent)); display: flex; align-items: center; justify-content: center; z-index: 1000; } .agent-picker-modal { background: var(--f2-bg); border: var(--border-width) solid var(--f2-border); border-radius: var(--border-radius); width: 90vw; max-width: var(--modal-width); max-height: 80vh; display: flex; flex-direction: column; overflow: hidden; } .agent-picker-header { display: flex; align-items: center; justify-content: space-between; padding: var(--box-padding); border-bottom: var(--border-width) solid var(--f1-border); background: var(--f1-bg); font-weight: bold; } .agent-picker-body { padding: var(--badge-spacing); overflow-y: auto; display: flex; flex-direction: column; gap: var(--badge-spacing); } .agent-picker-item { cursor: pointer; transition: border-color var(--transition-duration), filter var(--transition-duration); } .agent-picker-item:hover { border-color: var(--primary); filter: var(--hover-filter); } .agent-picker-item.selected { border-color: var(--primary); } .danger-btn { color: var(--dangerous); border-color: currentcolor; } .danger-btn:hover { color: var(--f1-bg); background: var(--dangerous); } .positive-btn { color: var(--secondary); border-color: currentcolor; } .positive-btn:hover { color: var(--f1-bg); background: var(--secondary); } /* Toggle Switch */ .toggle-switch { position: relative; display: inline-block; width: 2.4em; height: 1.4em; cursor: pointer; } .toggle-switch input { opacity: 0; width: 0; height: 0; } .toggle-slider { position: absolute; inset: 0; background: var(--f2-border); border-radius: 1em; transition: background var(--transition-duration); } .toggle-slider::before { content: ''; position: absolute; width: 1em; height: 1em; left: .2em; top: .2em; background: var(--f1-bg); border-radius: 50%; transition: transform var(--transition-duration); } .toggle-switch input:checked + .toggle-slider { background: var(--secondary); } .toggle-switch input:checked + .toggle-slider::before { transform: translateX(1em); } /* ── Cronjob Status ── */ .form-status-box { padding: var(--box-padding); background: var(--f3-bg); border: var(--border-width) solid var(--f2-border); border-radius: var(--border-radius); display: flex; flex-direction: column; gap: var(--badge-spacing); } .form-group:has(.form-status-box:empty) { display: none; } .form-status-box .status-active { color: var(--secondary); } .form-status-box .status-inactive { opacity: var(--semi-transparent); } .form-status-box .status-error { color: var(--dangerous); } .form-group { display: flex; flex-direction: column; gap: var(--badge-spacing); padding: var(--box-padding); padding-inline: 0; } .form-check-group { display: flex; gap: var(--badge-spacing); } .form-check-group label { display: flex; align-items: center; gap: var(--badge-spacing); cursor: pointer; margin-top: 0; } .form-check-group input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--accent); cursor: pointer; } .form-hint { display: block; opacity: var(--semi-transparent); } .form-hint code { background: var(--f1-bg); padding: var(--badge-padding); border-radius: var(--border-radius); } .form-field { display: flex; flex-direction: column; gap: var(--badge-spacing); margin-bottom: var(--box-spacing); } .form-field label { margin-top: var(--badge-spacing); } .form-field .toggle-label { display: flex; align-items: center; gap: var(--badge-spacing); cursor: pointer; margin-top: 0; } .form-field .toggle-label input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--accent); cursor: pointer; } .form-error { color: var(--dangerous); } /* ── Admin User List ── */ .admin-user-list { display: flex; flex-direction: column; gap: var(--badge-spacing); } .admin-user-row { display: flex; align-items: center; justify-content: space-between; padding: var(--box-padding); border: 1px solid var(--f1-border); border-radius: var(--border-radius); background: color-mix(in srgb, var(--f1-bg) 25%, transparent); } .admin-user-info { display: flex; flex-direction: column; overflow: hidden; } .admin-user-name { font-weight: bold; overflow: hidden; text-overflow: ellipsis; } .admin-user-meta { opacity: var(--semi-transparent); } a.admin-user-meta { opacity: unset; font-size: var(--font-size); overflow: hidden; text-overflow: ellipsis; } .admin-user-actions { display: flex; gap: var(--badge-spacing); flex-shrink: 0; } .admin-checkbox-row { margin: var(--badge-spacing) 0; } .admin-checkbox-row .toggle-label { display: flex; align-items: center; gap: var(--badge-spacing); cursor: pointer; } .login-link-desc { opacity: var(--semi-transparent); margin: 0; } .login-link-input-row { display: flex; gap: var(--badge-spacing); } .login-link-input { flex: 1; min-width: 0; } /* ── EasyMDE in Formularen ── */ /* Nutzt fe-mde-wrap Styles aus file-explorer.css für Dark-Theme, überschreibt aber die Fullscreen-Layout-Regeln für den Formular-Kontext. */ .form .fe-mde-wrap { display: block; flex: none; height: auto; overflow: visible; } .form .fe-mde-wrap .CodeMirror { height: auto !important; border: var(--border-width) solid var(--f2-border) !important; border-top: none !important; border-radius: 0 0 var(--border-radius) var(--border-radius) !important; padding: var(--box-padding) !important; } .form .fe-mde-wrap .editor-toolbar { border-radius: var(--border-radius) var(--border-radius) 0 0 !important; } /* ── Inline Actions (Buttons nebeneinander) ── */ .form-actions-inline { display: flex; gap: var(--badge-spacing); flex-wrap: wrap; margin-top: var(--badge-spacing); } .form-actions-inline button { font-size: 0.85em; padding: 0.4em 0.8em; } /* ── Usage Bars (API Keys) ── */ .usage-badge { display: inline-flex; flex-direction: column; padding: var(--badge-padding); background: var(--f3-bg); border: var(--border-width) solid var(--f2-border); border-radius: var(--border-radius); font-size: var(--font-size); width: 20em; margin-top: var(--badge-spacing); } .usage-row { display: flex; align-items: center; } .usage-label { width: 5em; opacity: var(--semi-transparent); flex-shrink: 0; } .usage-track { flex: 1; height: 6px; background: var(--f1-bg); border-radius: 3px; overflow: hidden; } .usage-fill { height: 100%; border-radius: 3px; background: var(--secondary); transition: width .3s; } .usage-fill.warn { background: var(--warning); } .usage-fill.danger { background: var(--dangerous); } .usage-pct { width: 3em; text-align: right; flex-shrink: 0; } /* ── Checkbox Group (string_array Settings) ── */ .checkbox-group { display: flex; flex-wrap: wrap; gap: 6px; } .checkbox-group-actions { width: 100%; display: flex; gap: 6px; margin-bottom: 2px; } .checkbox-group-actions .btn-xs { padding: 2px 8px; font-size: 0.75em; border-radius: var(--border-radius); cursor: pointer; } .checkbox-item { display: flex; align-items: center; gap: 4px; padding: 4px 8px; border: 1px solid var(--f1-border); border-radius: var(--border-radius); cursor: pointer; font-size: 0.85em; background: color-mix(in srgb, var(--f1-bg) 25%, transparent); transition: border-color 0.15s, background 0.15s; user-select: none; } .checkbox-item:hover { border-color: var(--accent); } .checkbox-item:has(input:checked) { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 15%, transparent); } .checkbox-item input[type="checkbox"] { width: 14px; height: 14px; accent-color: var(--accent); cursor: pointer; margin: 0; } /* ── Database Explorer ── */ .db-table { width: 100%; border-collapse: collapse; } .db-table th, .db-table tr:not(:last-child) td { text-align: left; border-bottom: 1px solid var(--f1-border); } .db-table th, .db-table td { padding: var(--badge-padding); } .db-table th { white-space: nowrap; } .db-table-row.clickable { cursor: pointer; } .db-table-row.clickable:hover .db-table-name { color: var(--primary); } .db-table-name i { margin-right: var(--badge-spacing); opacity: var(--semi-transparent); } .db-table-num { font-variant-numeric: tabular-nums; } .db-table-wrapper { overflow-x: auto; } .db-data-table td { max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .db-null { opacity: var(--semi-transparent); font-style: italic; } .db-info-bar { display: flex; justify-content: space-between; align-items: center; padding: var(--box-padding); } .db-pagination { display: flex; align-items: center; gap: var(--badge-spacing) } .db-back-link:hover { color: var(--primary); } /* ── Utility Classes (Inline-Style Replacements) ── */ .clickable { cursor: pointer } .semi-dim { opacity: var(--semi-transparent) } .text-danger { color: var(--dangerous) } .text-accent { color: var(--accent) } .text-primary { color: var(--primary) } .text-error { color: var(--color-error) } .text-secondary { color: var(--text-secondary) } .icon-dim { opacity: var(--semi-transparent) } .icon-dim-sm { opacity: var(--semi-transparent); font-size: var(--font-size) } .chevron-separator { opacity: var(--semi-transparent); font-size: var(--font-size); margin: 0 .3em } .pad-v { padding: 1rem 0 } .loading-state { opacity: var(--semi-transparent); pointer-events: none } .flex-row { display: flex; align-items: center; gap: .5rem } .flex-row-tight { display: flex; align-items: center; gap: 8px; margin-top: 2px } .min-w-0 { min-width: 0 } .ml-auto { margin-left: auto } .mr-badge { margin-right: var(--badge-spacing) } .ml-sm { margin-left: 8px } .mt-xs { margin-top: 4px } .lh-relaxed { line-height: 1.7 } .scan-status { font-size: .85em; color: var(--text-secondary); padding: 0 0 .5rem 0 } .check-status-line { padding: 0 var(--box-padding) .5rem; display: none; font-size: .85em } .empty-hint { padding: 1rem; text-align: center; opacity: .7 } .scanner-toolbar { display: flex; align-items: center; gap: 8px; padding: 8px var(--box-padding); border-bottom: 1px solid var(--border) } .event-scanner-status { padding: 1em 2em } .event-scanner-log { white-space: pre-line } .remote-hint { font-size: var(--font-size); opacity: var(--semi-transparent); margin-bottom: var(--box-spacing) } .remote-card-content { font-size: var(--font-size); display: flex; align-items: center; gap: var(--box-spacing) } .remote-card-info { flex: 1; opacity: var(--semi-transparent) } .none-card-image { display: flex; align-items: center; justify-content: center } .none-card-icon { font-size: 2em; opacity: var(--semi-transparent) }