Portierung aus dem Lokal-Fork (AegisSight-Monitor-Local, Commit 9613610). Vier Angleichungen an das klassische Dashboard. 1. "Klassische Ansicht" ist jetzt derselbe Knopf wie "Studio-Ansicht" im Dashboard, mit Symbol, an erster Stelle im rechten Kopfzeilen-Block. 2. Oben rechts fehlten Barrierefreiheit, Konto-Menü und Abmelden. Der A11yManager liegt jetzt in js/a11y.js und wird von beiden Oberflächen eingebunden, denn das Studio lädt app.js nicht. Konto-Menü (Organisation, Lizenz, Credits, Über KI-Inhalte) und Abmelden nachgezogen, der Theme-Schalter ist derselbe Schiebeschalter wie im Dashboard. 3. Die Fall-Liste hat jetzt die Umschaltung "Alle" / "Eigene" in der Knopf-Optik der klassischen Seitenleiste, der Reiter-Zähler zieht mit. 4. Der Hinweis "Wähle links einen Fall aus" endet vor der Bausteine-Spalte statt am Fensterrand, im gestapelten Layout nimmt er die volle Breite. Das info@-Gating des Studios bleibt unverändert bestehen. Versionsmarker der angefassten Dateien auf 20260725a angehoben. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1375 Zeilen
44 KiB
CSS
1375 Zeilen
44 KiB
CSS
/* AegisSight Studio - NotebookLM-artiges 3-Spalten-Layout
|
|
Nutzt ausschliesslich die Design-Tokens aus style.css (Navy/Gold). */
|
|
|
|
.studio {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100vh;
|
|
background: var(--bg-primary);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
/* === Kopfzeile === */
|
|
.studio-top {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--sp-lg);
|
|
padding: var(--sp-md) var(--sp-xl);
|
|
background: var(--bg-topbar);
|
|
border-bottom: 1px solid var(--border);
|
|
flex-shrink: 0;
|
|
min-height: 52px;
|
|
}
|
|
|
|
.studio-brand {
|
|
font-family: var(--font-title);
|
|
font-weight: 700;
|
|
font-size: 16px;
|
|
letter-spacing: 0.5px;
|
|
white-space: nowrap;
|
|
}
|
|
.studio-brand span { color: var(--accent); }
|
|
|
|
/* Kopfzeile: Knopf zum Anlegen (an der Stelle des frueheren Dropdowns) + Titel des Falls */
|
|
.studio-new-btn { flex-shrink: 0; }
|
|
.studio-incident-title {
|
|
font-family: var(--font-title);
|
|
font-weight: 600;
|
|
font-size: 14px;
|
|
color: var(--text-primary);
|
|
max-width: 460px;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.studio-type-badge {
|
|
font-size: 10px;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.5px;
|
|
padding: 3px 8px;
|
|
border-radius: var(--radius);
|
|
background: var(--tint-accent);
|
|
color: var(--accent);
|
|
white-space: nowrap;
|
|
}
|
|
.studio-type-badge.type-research { background: var(--tint-info); color: var(--info); }
|
|
|
|
.studio-btn {
|
|
background: var(--accent);
|
|
color: #fff;
|
|
border: none;
|
|
border-radius: var(--radius);
|
|
padding: 7px 14px;
|
|
font-family: var(--font-body);
|
|
font-size: 13px;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
white-space: nowrap;
|
|
transition: background 0.15s;
|
|
}
|
|
.studio-btn:hover { background: var(--accent-hover); }
|
|
.studio-btn:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
.studio-btn-ghost {
|
|
background: transparent;
|
|
color: var(--text-secondary);
|
|
border: 1px solid var(--border);
|
|
}
|
|
.studio-btn-ghost:hover { background: var(--bg-hover); color: var(--text-primary); }
|
|
|
|
/* Pipeline-Statusstreifen */
|
|
.studio-status {
|
|
display: none;
|
|
align-items: center;
|
|
gap: 8px;
|
|
font-size: 12px;
|
|
color: var(--text-secondary);
|
|
background: var(--tint-accent-subtle);
|
|
border: 1px solid var(--tint-accent);
|
|
border-radius: var(--radius);
|
|
padding: 4px 10px;
|
|
max-width: 360px;
|
|
overflow: hidden;
|
|
}
|
|
.studio-status.active { display: flex; }
|
|
.studio-status .mini-spinner {
|
|
width: 12px; height: 12px;
|
|
border: 2px solid var(--tint-accent);
|
|
border-top-color: var(--accent);
|
|
border-radius: 50%;
|
|
animation: studio-spin 0.8s linear infinite;
|
|
flex-shrink: 0;
|
|
}
|
|
.studio-status-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
.studio-status-timer { font-family: var(--font-mono); font-size: 11px; color: var(--text-disabled); }
|
|
@keyframes studio-spin { to { transform: rotate(360deg); } }
|
|
|
|
.studio-top-right {
|
|
margin-left: auto;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--sp-md);
|
|
}
|
|
/* Reine Textlinks in der Kopfzeile. Links, die als Knopf auftreten (.btn),
|
|
bleiben ausgenommen, sonst ueberschreibt die Farbe hier die Knopf-Optik. */
|
|
.studio-top-right a:not(.btn) { color: var(--text-secondary); font-size: 12px; text-decoration: none; }
|
|
.studio-top-right a:not(.btn):hover { color: var(--accent); }
|
|
|
|
/* === 3 Spalten === */
|
|
.studio-cols {
|
|
position: relative; /* Bezug fuer die Hinweis-Auflage (.studio-empty) */
|
|
flex: 1;
|
|
display: grid;
|
|
grid-template-columns: 300px 1fr 320px;
|
|
gap: 1px;
|
|
background: var(--border);
|
|
min-height: 0;
|
|
}
|
|
|
|
.studio-col {
|
|
background: var(--bg-primary);
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
}
|
|
.studio-col-artifacts { background: var(--bg-secondary); }
|
|
.studio-col-center { position: relative; } /* Bezug fuer das Startpanel (.start-panel) */
|
|
|
|
/* === Linke Spalte: Reiter "Fälle" / "Quellen" === */
|
|
.left-tabs {
|
|
display: flex;
|
|
flex-shrink: 0;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
.left-tab {
|
|
flex: 1;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 6px;
|
|
white-space: nowrap;
|
|
padding: var(--sp-lg) var(--sp-md);
|
|
background: none;
|
|
border: none;
|
|
border-bottom: 2px solid transparent;
|
|
cursor: pointer;
|
|
font-family: var(--font-title);
|
|
font-weight: 600;
|
|
font-size: 12px;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.8px;
|
|
color: var(--text-secondary);
|
|
transition: color .15s, border-color .15s, background .15s;
|
|
}
|
|
.left-tab:hover { background: var(--bg-hover); color: var(--text-primary); }
|
|
.left-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
|
|
.left-tab .lt-count {
|
|
font-family: var(--font-body);
|
|
font-weight: 500;
|
|
font-size: 11px;
|
|
text-transform: none;
|
|
letter-spacing: 0;
|
|
color: var(--text-disabled);
|
|
}
|
|
.left-pane {
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-height: 0;
|
|
flex: 1;
|
|
overflow: hidden;
|
|
}
|
|
.left-pane[hidden] { display: none; }
|
|
|
|
/* "Alle" / "Eigene" ueber der Fall-Liste. Nutzt die Knopf-Optik der klassischen
|
|
Seitenleiste (.sidebar-filter-btn aus style.css), braucht hier aber den
|
|
Innenabstand der Studio-Spalte statt des Seitenleisten-Abstands. */
|
|
.case-scope {
|
|
padding: var(--sp-md) var(--sp-xl) 0;
|
|
margin-bottom: 0;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
/* Fall-Liste (ersetzt das Dropdown in der Kopfzeile) */
|
|
.case-group {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
width: 100%;
|
|
padding: var(--sp-lg) var(--sp-md) var(--sp-sm);
|
|
background: none;
|
|
border: none;
|
|
font-size: 10px;
|
|
text-transform: uppercase;
|
|
letter-spacing: .06em;
|
|
color: var(--text-disabled);
|
|
text-align: left;
|
|
}
|
|
.case-group span { color: var(--text-disabled); opacity: .8; }
|
|
.case-group-toggle { cursor: pointer; }
|
|
.case-group-toggle:hover { color: var(--text-secondary); }
|
|
.case-group-toggle svg { transition: transform .15s; }
|
|
.case-group-toggle.open svg { transform: rotate(90deg); }
|
|
|
|
.case-item {
|
|
display: flex;
|
|
align-items: stretch;
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-md, 6px);
|
|
background: var(--bg-card);
|
|
margin-bottom: 4px;
|
|
overflow: hidden;
|
|
transition: border-color .15s, background .15s;
|
|
}
|
|
.case-item:hover { border-color: var(--accent); }
|
|
.case-item.active { border-color: var(--accent); background: var(--tint-accent-faint); }
|
|
.case-open {
|
|
flex: 1;
|
|
min-width: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 8px 10px;
|
|
background: none;
|
|
border: none;
|
|
cursor: pointer;
|
|
text-align: left;
|
|
color: var(--text-primary);
|
|
font-family: var(--font-body);
|
|
font-size: 12.5px;
|
|
}
|
|
.case-item.active .case-open { color: var(--accent); font-weight: 600; }
|
|
.case-title {
|
|
flex: 1;
|
|
min-width: 0;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
.case-count {
|
|
flex-shrink: 0;
|
|
font-size: 10.5px;
|
|
color: var(--text-disabled);
|
|
}
|
|
/* === Startpanel: frisch angelegter Fall, der Nutzer entscheidet aktiv === */
|
|
.start-panel {
|
|
position: absolute;
|
|
inset: 0;
|
|
z-index: 6;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: var(--sp-xl);
|
|
background: var(--bg-primary);
|
|
overflow-y: auto;
|
|
}
|
|
.start-panel[hidden] { display: none; }
|
|
.sp-inner { width: 100%; max-width: 560px; }
|
|
.sp-head { margin-bottom: var(--sp-xl); text-align: center; }
|
|
.sp-title {
|
|
font-family: var(--font-title);
|
|
font-weight: 700;
|
|
font-size: 19px;
|
|
color: var(--text-primary);
|
|
}
|
|
.sp-sub { margin-top: 4px; font-size: 13px; color: var(--text-secondary); }
|
|
|
|
.sp-warn {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: var(--sp-md);
|
|
padding: var(--sp-md) var(--sp-lg);
|
|
margin-bottom: var(--sp-lg);
|
|
border: 1px solid var(--warning);
|
|
border-radius: var(--radius-md, 6px);
|
|
background: var(--tint-warning);
|
|
color: var(--warning);
|
|
font-size: 12px;
|
|
line-height: 1.45;
|
|
}
|
|
.sp-warn[hidden] { display: none; }
|
|
.sp-warn svg { flex-shrink: 0; margin-top: 1px; }
|
|
|
|
.sp-options { display: flex; flex-direction: column; gap: var(--sp-md); }
|
|
.sp-opt {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: var(--sp-lg);
|
|
width: 100%;
|
|
padding: var(--sp-lg);
|
|
background: var(--bg-card);
|
|
border: 1px solid var(--border);
|
|
border-radius: 10px;
|
|
cursor: pointer;
|
|
text-align: left;
|
|
color: var(--text-primary);
|
|
font-family: var(--font-body);
|
|
transition: border-color .15s, background .15s, transform .08s;
|
|
}
|
|
.sp-opt:hover { border-color: var(--accent); background: var(--bg-hover); }
|
|
.sp-opt:active { transform: translateY(1px); }
|
|
.sp-opt:disabled { opacity: .45; cursor: not-allowed; }
|
|
.sp-ico { flex-shrink: 0; display: inline-flex; color: var(--accent); margin-top: 2px; }
|
|
.sp-text { min-width: 0; }
|
|
.sp-name {
|
|
display: block;
|
|
font-family: var(--font-title);
|
|
font-weight: 600;
|
|
font-size: 13.5px;
|
|
margin-bottom: 3px;
|
|
}
|
|
.sp-desc { display: block; font-size: 12px; color: var(--text-secondary); line-height: 1.45; }
|
|
|
|
/* Rueckfrage-Dialog (ersetzt das Browser-confirm) */
|
|
.modal.modal-confirm { max-width: 460px; }
|
|
.confirm-list {
|
|
list-style: none;
|
|
margin: 0 0 var(--sp-lg);
|
|
padding: var(--sp-md) var(--sp-lg);
|
|
background: var(--bg-elevated);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-md, 6px);
|
|
max-height: 190px;
|
|
overflow-y: auto;
|
|
}
|
|
.confirm-list li {
|
|
font-size: 12.5px;
|
|
color: var(--text-primary);
|
|
padding: 3px 0;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
.confirm-list li.cd-more { color: var(--text-disabled); font-style: italic; }
|
|
.confirm-warn { font-size: 13px; color: var(--text-primary); margin-bottom: var(--sp-md); }
|
|
.confirm-warn strong { color: var(--danger, #EF4444); }
|
|
.confirm-hint { font-size: 12px; color: var(--text-disabled); }
|
|
|
|
/* Mehrfachauswahl. Achtung: .col-actions setzt display:flex und wuerde das
|
|
hidden-Attribut ueberstimmen - deshalb hier explizit ausblenden. */
|
|
#case-select-row[hidden] { display: none; }
|
|
.case-check {
|
|
flex-shrink: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 0 2px 0 8px;
|
|
cursor: pointer;
|
|
}
|
|
.case-check input { cursor: pointer; accent-color: var(--accent); }
|
|
.case-item.picked { border-color: var(--accent); background: var(--tint-accent); }
|
|
.case-sel-hint { font-size: 11px; color: var(--accent); }
|
|
|
|
.bulk-bar {
|
|
flex-shrink: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--sp-md);
|
|
padding: var(--sp-lg);
|
|
border-top: 1px solid var(--border);
|
|
background: var(--bg-secondary);
|
|
}
|
|
.bulk-bar[hidden] { display: none; }
|
|
.bulk-count {
|
|
font-family: var(--font-title);
|
|
font-weight: 600;
|
|
font-size: 12px;
|
|
color: var(--text-primary);
|
|
}
|
|
.bulk-actions { display: flex; flex-wrap: wrap; gap: var(--sp-sm); }
|
|
.btn-bulk {
|
|
flex: 1;
|
|
min-width: 84px;
|
|
padding: 6px 10px;
|
|
border-radius: var(--radius-md, 6px);
|
|
border: 1px solid var(--border);
|
|
background: var(--bg-card);
|
|
color: var(--text-primary);
|
|
font-family: var(--font-body);
|
|
font-size: 11.5px;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
transition: border-color .15s, background .15s, color .15s;
|
|
}
|
|
.btn-bulk:hover { border-color: var(--accent); color: var(--accent); }
|
|
.btn-bulk[hidden] { display: none; }
|
|
.btn-bulk.danger { color: var(--danger, #EF4444); }
|
|
.btn-bulk.danger:hover { border-color: var(--danger, #EF4444); background: var(--tint-error, rgba(239,68,68,.12)); }
|
|
.btn-bulk.ghost { color: var(--text-disabled); font-weight: 500; }
|
|
.btn-bulk.ghost:hover { color: var(--text-primary); border-color: var(--border); }
|
|
|
|
.case-menu-btn {
|
|
flex-shrink: 0;
|
|
width: 28px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background: none;
|
|
border: none;
|
|
border-left: 1px solid var(--border);
|
|
color: var(--text-disabled);
|
|
cursor: pointer;
|
|
}
|
|
.case-menu-btn:hover { color: var(--accent); background: var(--bg-hover); }
|
|
|
|
.case-menu {
|
|
position: fixed;
|
|
z-index: 300;
|
|
min-width: 170px;
|
|
padding: 4px;
|
|
background: var(--bg-card);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg, 8px);
|
|
box-shadow: 0 8px 28px rgba(0,0,0,.28);
|
|
}
|
|
.case-menu button {
|
|
display: block;
|
|
width: 100%;
|
|
padding: 7px 10px;
|
|
background: none;
|
|
border: none;
|
|
border-radius: var(--radius-md, 6px);
|
|
text-align: left;
|
|
cursor: pointer;
|
|
font-family: var(--font-body);
|
|
font-size: 12.5px;
|
|
color: var(--text-primary);
|
|
}
|
|
.case-menu button:hover { background: var(--bg-hover); }
|
|
.case-menu button.danger { color: var(--danger, #EF4444); }
|
|
.case-menu button.danger:hover { background: var(--tint-error, rgba(239,68,68,.12)); }
|
|
|
|
.col-head {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: var(--sp-lg) var(--sp-xl);
|
|
font-family: var(--font-title);
|
|
font-weight: 600;
|
|
font-size: 13px;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.8px;
|
|
color: var(--text-secondary);
|
|
border-bottom: 1px solid var(--border);
|
|
flex-shrink: 0;
|
|
}
|
|
.col-head .col-count {
|
|
margin-left: auto;
|
|
font-size: 11px;
|
|
font-weight: 500;
|
|
letter-spacing: 0;
|
|
text-transform: none;
|
|
color: var(--text-disabled);
|
|
}
|
|
.col-body {
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
padding: var(--sp-lg) var(--sp-xl);
|
|
min-height: 0;
|
|
}
|
|
|
|
/* === Spalte 1: Quellen === */
|
|
.col-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: var(--sp-md) var(--sp-xl);
|
|
border-bottom: 1px solid var(--border);
|
|
flex-shrink: 0;
|
|
}
|
|
.col-actions label {
|
|
display: flex; align-items: center; gap: 6px;
|
|
font-size: 12px; color: var(--text-secondary); cursor: pointer;
|
|
}
|
|
.col-actions input[type="checkbox"] { accent-color: var(--accent); cursor: pointer; }
|
|
.col-actions .spacer { margin-left: auto; }
|
|
.ingest-add-btn { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; padding: 4px 10px; }
|
|
|
|
/* --- Quellen-Ingest: Dropzone + Job-Liste --- */
|
|
.ingest-panel {
|
|
padding: var(--sp-md) var(--sp-xl);
|
|
border-bottom: 1px solid var(--border);
|
|
flex-shrink: 0;
|
|
}
|
|
.dropzone {
|
|
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
|
gap: 4px; text-align: center;
|
|
padding: 16px 12px;
|
|
border: 1.5px dashed var(--border);
|
|
border-radius: 10px;
|
|
color: var(--text-secondary);
|
|
cursor: pointer;
|
|
transition: border-color .15s, background .15s;
|
|
}
|
|
.dropzone:hover, .dropzone.drag { border-color: var(--accent); background: var(--bg-hover); }
|
|
.dropzone .dz-icon { color: var(--accent); }
|
|
.dropzone .dz-hint { font-size: 12.5px; color: var(--text-primary); }
|
|
.dropzone .dz-sub { font-size: 11px; color: var(--text-disabled); }
|
|
.ingest-url { display: flex; gap: 6px; margin-top: 8px; }
|
|
.ingest-url input {
|
|
flex: 1; min-width: 0; font-size: 12px;
|
|
padding: 6px 10px; border-radius: 8px;
|
|
border: 1px solid var(--border); background: var(--bg-card); color: var(--text-primary);
|
|
}
|
|
.ingest-url input:focus { outline: none; border-color: var(--accent); }
|
|
|
|
.ingest-jobs { flex-shrink: 0; overflow-y: auto; max-height: 40%; padding: 0 var(--sp-xl); }
|
|
.ingest-jobs:not(:empty) { padding-top: var(--sp-sm); padding-bottom: var(--sp-sm); border-bottom: 1px solid var(--border); }
|
|
.ju-group { margin-bottom: 8px; }
|
|
.ju-group-head {
|
|
display: flex; align-items: center; gap: 6px;
|
|
font-size: 11px; font-weight: 600; letter-spacing: .02em;
|
|
color: var(--text-secondary); text-transform: uppercase;
|
|
margin: 4px 0;
|
|
}
|
|
.ju-group-head .ju-count {
|
|
margin-left: auto; background: var(--bg-card); border: 1px solid var(--border);
|
|
border-radius: 8px; padding: 0 6px; font-weight: 500; text-transform: none;
|
|
}
|
|
.ju-item {
|
|
background: var(--bg-card); border: 1px solid var(--border);
|
|
border-radius: 8px; padding: 7px 9px; margin-bottom: 5px;
|
|
}
|
|
.ju-item.error { border-color: var(--danger, #d9534f); }
|
|
.ju-row { display: flex; align-items: center; gap: 6px; }
|
|
.ju-name { flex: 1; min-width: 0; font-size: 12.5px; color: var(--text-primary);
|
|
white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
.ju-del { background: none; border: none; color: var(--text-disabled); font-size: 16px;
|
|
line-height: 1; cursor: pointer; padding: 0 2px; }
|
|
.ju-del:hover { color: var(--danger, #d9534f); }
|
|
.ju-bar { height: 4px; background: var(--bg-hover); border-radius: 3px; overflow: hidden; margin-top: 6px; }
|
|
.ju-bar span { display: block; height: 100%; background: var(--accent); transition: width .4s ease; }
|
|
.ju-stage { font-size: 10.5px; color: var(--text-disabled); margin-top: 3px; }
|
|
.ju-err { font-size: 11px; color: var(--danger, #d9534f); margin-top: 4px; }
|
|
.ju-actions { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
|
|
.ju-btn {
|
|
font-size: 11px; padding: 3px 9px; border-radius: 12px;
|
|
border: 1px solid var(--border); background: var(--bg-elevated, var(--bg-card));
|
|
color: var(--text-secondary); cursor: pointer; text-decoration: none;
|
|
}
|
|
.ju-btn:hover { border-color: var(--accent); color: var(--accent); }
|
|
.ju-media:not(:empty) { margin-top: 6px; }
|
|
.ju-text {
|
|
font-size: 12px; line-height: 1.5; color: var(--text-secondary);
|
|
background: var(--bg-hover); border-radius: 8px; padding: 8px 10px;
|
|
max-height: 220px; overflow-y: auto; white-space: normal;
|
|
}
|
|
|
|
/* Kategorie-Gliederung der regulären Quellenliste (Webseiten/Dokumente/…) */
|
|
.src-cat { margin-bottom: 2px; }
|
|
.src-cat-head {
|
|
display: flex; align-items: center; gap: 6px;
|
|
padding: 10px var(--sp-xl) 4px;
|
|
font-size: 11px; font-weight: 600; letter-spacing: .03em; text-transform: uppercase;
|
|
color: var(--text-secondary);
|
|
cursor: pointer; user-select: none;
|
|
}
|
|
.src-cat-head:hover { color: var(--text-primary); }
|
|
.src-cat-head svg.src-cat-icon, .src-cat-head > svg:not(.src-cat-chevron) { color: var(--accent); }
|
|
.src-cat-head .src-cat-count { margin-left: auto; color: var(--text-disabled); font-weight: 500; }
|
|
.src-cat-chevron { color: var(--text-disabled); transition: transform .15s ease; flex-shrink: 0; }
|
|
.src-cat.collapsed .src-cat-chevron { transform: rotate(-90deg); }
|
|
.src-cat.collapsed .src-item { display: none; }
|
|
.src-upload { display: flex; flex-direction: column; gap: 4px; }
|
|
.src-upload .ju-actions { margin-top: 2px; }
|
|
.ju-btn-del { color: var(--text-disabled); }
|
|
.ju-btn-del:hover { border-color: var(--danger, #d9534f); color: var(--danger, #d9534f); }
|
|
|
|
/* Historie (frühere Lageberichte / Faktencheck-Läufe, aufklappbar) */
|
|
.hist-item { border: 1px solid var(--border); border-radius: 8px; margin-bottom: 6px; background: var(--bg-card); }
|
|
.hist-item > summary {
|
|
list-style: none; cursor: pointer; padding: 8px 10px;
|
|
display: flex; align-items: center; gap: 10px; font-size: 12.5px;
|
|
}
|
|
.hist-item > summary::-webkit-details-marker { display: none; }
|
|
.hist-item > summary::before {
|
|
content: "\25B8"; color: var(--text-disabled); transition: transform .15s; font-size: 11px;
|
|
}
|
|
.hist-item[open] > summary::before { transform: rotate(90deg); }
|
|
.hist-time { color: var(--text-primary); font-weight: 600; }
|
|
.hist-meta { color: var(--text-disabled); margin-left: auto; }
|
|
.hist-body { padding: 4px 12px 12px; }
|
|
.hist-prev { font-size: 12px; color: var(--text-secondary); line-height: 1.5; }
|
|
.fc-history { margin-top: 14px; border-top: 1px solid var(--border); padding-top: 10px; }
|
|
.fc-history > summary {
|
|
cursor: pointer; font-size: 12px; font-weight: 600; color: var(--text-secondary);
|
|
list-style: none; padding: 2px 0;
|
|
}
|
|
.fc-history > summary::-webkit-details-marker { display: none; }
|
|
.fc-history > summary::before { content: "\25B8 "; color: var(--text-disabled); }
|
|
.fc-history[open] > summary::before { content: "\25BE "; }
|
|
.fc-history-body { margin-top: 8px; }
|
|
|
|
/* Quellen-Suchfeld (oberster Punkt der Quellen-Spalte) */
|
|
.src-search {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: var(--sp-md) var(--sp-xl);
|
|
border-bottom: 1px solid var(--border);
|
|
flex-shrink: 0;
|
|
}
|
|
.src-search-icon {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
color: var(--text-disabled);
|
|
flex-shrink: 0;
|
|
}
|
|
.src-search input {
|
|
flex: 1;
|
|
min-width: 0;
|
|
background: var(--input-bg);
|
|
border: 1px solid var(--input-border);
|
|
border-radius: var(--radius);
|
|
color: var(--text-primary);
|
|
font-family: var(--font-body);
|
|
font-size: 13px;
|
|
padding: 7px 10px;
|
|
}
|
|
.src-search input:focus { outline: none; border-color: var(--accent); }
|
|
.src-item.filtered-out { display: none; }
|
|
|
|
.src-item {
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius);
|
|
margin-bottom: 6px;
|
|
background: var(--bg-card);
|
|
overflow: hidden;
|
|
}
|
|
.src-item.deselected { opacity: 0.45; }
|
|
.src-head {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 8px 10px;
|
|
cursor: pointer;
|
|
}
|
|
.src-head:hover { background: var(--bg-hover); }
|
|
.src-check { accent-color: var(--accent); cursor: pointer; flex-shrink: 0; }
|
|
.src-name {
|
|
font-size: 13px;
|
|
font-weight: 500;
|
|
color: var(--text-primary);
|
|
flex: 1;
|
|
min-width: 0;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
.src-count {
|
|
font-size: 11px;
|
|
color: var(--text-disabled);
|
|
background: var(--bg-elevated);
|
|
border-radius: 10px;
|
|
padding: 1px 7px;
|
|
flex-shrink: 0;
|
|
}
|
|
.src-badges { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }
|
|
.src-lang { font-size: 10px; color: var(--text-disabled); flex-shrink: 0; }
|
|
|
|
.src-articles {
|
|
display: none;
|
|
border-top: 1px solid var(--border);
|
|
padding: 4px 10px 8px;
|
|
}
|
|
.src-item.open .src-articles { display: block; }
|
|
.src-article {
|
|
display: block;
|
|
font-size: 12px;
|
|
color: var(--text-secondary);
|
|
padding: 4px 0;
|
|
text-decoration: none;
|
|
border-bottom: 1px solid var(--tint-hover-subtle);
|
|
line-height: 1.4;
|
|
}
|
|
.src-article:last-child { border-bottom: none; }
|
|
.src-article:hover { color: var(--accent); }
|
|
.src-article .src-article-date { color: var(--text-disabled); font-size: 10px; margin-right: 6px; }
|
|
|
|
/* Quelle beim Zitat-Klick hervorheben */
|
|
.src-item.cite-flash {
|
|
animation: cite-flash 1.6s ease;
|
|
border-color: var(--accent);
|
|
}
|
|
@keyframes cite-flash {
|
|
0%, 30% { box-shadow: 0 0 0 2px var(--accent), var(--glow-accent); }
|
|
100% { box-shadow: none; }
|
|
}
|
|
|
|
/* Reliability-/Bias-Badges (Wiederverwendung der style.css-Klassen, hier nur Ausrichtung) */
|
|
.src-badges .source-reliability-dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
|
|
.src-badges .source-political-badge,
|
|
.src-badges .source-ifcn-badge,
|
|
.src-badges .source-eu-disinfo-badge,
|
|
.src-badges .source-state-badge,
|
|
.src-badges .source-alignment-chip-badge { font-size: 9px; }
|
|
|
|
/* === Spalte 2: Konversation === */
|
|
.chat-messages {
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
padding: var(--sp-lg) var(--sp-xl);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--sp-lg);
|
|
min-height: 0;
|
|
}
|
|
.chat-msg { max-width: 92%; }
|
|
.chat-msg-user {
|
|
align-self: flex-end;
|
|
background: var(--accent);
|
|
color: #fff;
|
|
border-radius: 12px 12px 2px 12px;
|
|
padding: 8px 12px;
|
|
font-size: 13px;
|
|
line-height: 1.5;
|
|
}
|
|
.chat-msg-assistant {
|
|
align-self: flex-start;
|
|
background: var(--bg-card);
|
|
border: 1px solid var(--border);
|
|
border-radius: 12px 12px 12px 2px;
|
|
padding: 10px 14px;
|
|
font-size: 13px;
|
|
line-height: 1.6;
|
|
color: var(--text-primary);
|
|
}
|
|
.chat-msg-assistant.pinned {
|
|
border-color: var(--tint-accent);
|
|
background: var(--tint-accent-faint);
|
|
max-width: 100%;
|
|
align-self: stretch;
|
|
}
|
|
.chat-msg-assistant .briefing-content { font-size: 13px; }
|
|
.chat-pin-label {
|
|
font-size: 10px; text-transform: uppercase; letter-spacing: 0.6px;
|
|
color: var(--accent); font-weight: 600; margin-bottom: 6px;
|
|
}
|
|
.chat-cite {
|
|
display: inline-block;
|
|
color: var(--accent);
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
font-size: 11px;
|
|
vertical-align: super;
|
|
padding: 0 1px;
|
|
}
|
|
.chat-cite:hover { text-decoration: underline; }
|
|
.chat-thinking { color: var(--text-disabled); font-style: italic; font-size: 12px; }
|
|
|
|
.chat-suggestions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
padding: 0 var(--sp-xl) var(--sp-md);
|
|
flex-shrink: 0;
|
|
}
|
|
.chat-chip {
|
|
background: var(--bg-card);
|
|
border: 1px solid var(--border);
|
|
color: var(--text-secondary);
|
|
border-radius: 14px;
|
|
padding: 5px 12px;
|
|
font-size: 12px;
|
|
cursor: pointer;
|
|
white-space: nowrap;
|
|
}
|
|
.chat-chip:hover { border-color: var(--accent); color: var(--accent); }
|
|
|
|
.chat-scope {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 0 var(--sp-xl) var(--sp-sm);
|
|
font-size: 12px;
|
|
color: var(--text-disabled);
|
|
cursor: pointer;
|
|
user-select: none;
|
|
flex-shrink: 0;
|
|
}
|
|
.chat-scope input { accent-color: var(--accent); cursor: pointer; margin: 0; }
|
|
.chat-scope:hover { color: var(--text-secondary); }
|
|
.chat-scope.on { color: var(--accent); }
|
|
|
|
.chat-input-row {
|
|
display: flex;
|
|
gap: 8px;
|
|
padding: var(--sp-md) var(--sp-xl) var(--sp-lg);
|
|
border-top: 1px solid var(--border);
|
|
flex-shrink: 0;
|
|
}
|
|
.chat-input-row textarea {
|
|
flex: 1;
|
|
resize: none;
|
|
background: var(--input-bg);
|
|
border: 1px solid var(--input-border);
|
|
border-radius: var(--radius-lg);
|
|
color: var(--text-primary);
|
|
font-family: var(--font-body);
|
|
font-size: 13px;
|
|
padding: 10px 12px;
|
|
max-height: 120px;
|
|
line-height: 1.5;
|
|
}
|
|
.chat-input-row textarea:focus { outline: none; border-color: var(--accent); }
|
|
.chat-send {
|
|
align-self: flex-end;
|
|
background: var(--accent);
|
|
color: #fff;
|
|
border: none;
|
|
border-radius: var(--radius-lg);
|
|
width: 40px; height: 40px;
|
|
font-size: 16px;
|
|
cursor: pointer;
|
|
flex-shrink: 0;
|
|
}
|
|
.chat-send:hover { background: var(--accent-hover); }
|
|
.chat-send:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
|
|
/* === Spalte 2: Mitte = Tab-Panel (oben) + Konversation (unten) === */
|
|
.studio-col-center { min-height: 0; }
|
|
|
|
/* Tab-Panel: nur sichtbar, wenn mindestens ein Studio-Teil geoeffnet ist */
|
|
.center-tabs {
|
|
display: none;
|
|
flex-direction: column;
|
|
min-height: 0;
|
|
}
|
|
.studio-col-center.has-tabs .center-tabs { display: flex; flex: 1 1 auto; min-height: 120px; }
|
|
|
|
.center-tabbar {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
gap: 4px;
|
|
padding: 6px 8px 0;
|
|
overflow-x: auto;
|
|
flex-shrink: 0;
|
|
background: var(--bg-topbar);
|
|
border-bottom: 1px solid var(--border);
|
|
box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.35);
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
.center-tab {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 7px 8px 7px 12px;
|
|
border: 1px solid var(--border);
|
|
border-top: 2px solid transparent;
|
|
border-bottom: none;
|
|
border-radius: var(--radius) var(--radius) 0 0;
|
|
background: var(--bg-secondary);
|
|
color: var(--text-secondary);
|
|
font-family: var(--font-title);
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
white-space: nowrap;
|
|
cursor: pointer;
|
|
max-width: 210px;
|
|
margin-bottom: 0;
|
|
transition: background 0.15s, color 0.15s;
|
|
}
|
|
.center-tab:hover { background: var(--bg-hover); color: var(--text-primary); }
|
|
.center-tab .ct-icon { display: inline-flex; align-items: center; color: var(--accent); flex-shrink: 0; }
|
|
.center-tab .ct-icon svg { width: 14px; height: 14px; }
|
|
.center-tab .ct-title { overflow: hidden; text-overflow: ellipsis; }
|
|
.center-tab.active {
|
|
color: var(--text-primary);
|
|
background: var(--bg-primary);
|
|
border-color: var(--border);
|
|
border-top: 2px solid var(--accent);
|
|
margin-bottom: -1px; /* verbindet den aktiven Tab mit dem Inhalt darunter */
|
|
}
|
|
/* Drag&Drop-Umsortierung */
|
|
.center-tab.dragging-tab { opacity: 0.45; }
|
|
.center-tab.drop-before { box-shadow: inset 2px 0 0 var(--accent); }
|
|
.center-tab.drop-after { box-shadow: inset -2px 0 0 var(--accent); }
|
|
.center-tab-close {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 17px;
|
|
height: 17px;
|
|
border-radius: 4px;
|
|
color: var(--text-disabled);
|
|
flex-shrink: 0;
|
|
}
|
|
.center-tab-close:hover { background: var(--bg-hover); color: var(--text-primary); }
|
|
|
|
.center-tab-content {
|
|
flex: 1;
|
|
min-height: 0;
|
|
display: flex;
|
|
background: var(--bg-primary);
|
|
}
|
|
.tab-panel {
|
|
display: none;
|
|
flex: 1;
|
|
min-height: 0;
|
|
overflow-y: auto;
|
|
padding: var(--sp-xl);
|
|
font-size: 13px;
|
|
line-height: 1.7;
|
|
}
|
|
.tab-panel.active { display: block; }
|
|
.tab-panel[data-art="map"] { padding: 0; }
|
|
/* Grosszuegigere Abstaende, damit Bericht/Zusammenfassung nicht gequetscht wirken */
|
|
.tab-panel h3,
|
|
.tab-panel .briefing-heading { margin: 18px 0 8px; font-size: 14px; }
|
|
.tab-panel > *:first-child,
|
|
.tab-panel .briefing-content > *:first-child { margin-top: 0; }
|
|
.tab-panel ul { margin: 10px 0 14px 20px; }
|
|
.tab-panel li { margin-bottom: 7px; }
|
|
.tab-panel p { margin: 10px 0; }
|
|
|
|
/* Verschiebbare Trennung zwischen Tab-Panel und Konversation */
|
|
.center-divider {
|
|
display: none;
|
|
flex: 0 0 12px;
|
|
height: 12px;
|
|
align-items: center;
|
|
justify-content: center;
|
|
cursor: row-resize;
|
|
background: var(--bg-secondary);
|
|
border-top: 1px solid var(--border);
|
|
border-bottom: 1px solid var(--border);
|
|
touch-action: none;
|
|
flex-shrink: 0;
|
|
}
|
|
.studio-col-center.has-tabs .center-divider { display: flex; }
|
|
.center-divider::before {
|
|
content: "";
|
|
width: 44px;
|
|
height: 3px;
|
|
border-radius: 3px;
|
|
background: var(--text-disabled);
|
|
opacity: 0.55;
|
|
transition: background 0.15s, opacity 0.15s;
|
|
}
|
|
.center-divider:hover::before,
|
|
.center-divider.dragging::before { background: var(--accent); opacity: 1; }
|
|
|
|
/* Konversation unten (immer sichtbar) */
|
|
.chat-region {
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-height: 0;
|
|
flex: 1 1 auto;
|
|
}
|
|
.studio-col-center.has-tabs .chat-region { flex: 0 0 var(--chat-h, 42%); min-height: 150px; }
|
|
|
|
/* === Spalte 3: Studio-Menue (oeffnet Tabs in der Mitte) === */
|
|
.studio-menu { padding: var(--sp-md); }
|
|
.studio-menu-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
width: 100%;
|
|
background: var(--bg-card);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 10px 12px;
|
|
margin-bottom: 8px;
|
|
cursor: pointer;
|
|
text-align: left;
|
|
color: var(--text-primary);
|
|
font-family: var(--font-body);
|
|
transition: background 0.15s, border-color 0.15s;
|
|
}
|
|
.studio-menu-item:hover { background: var(--bg-hover); border-color: var(--accent); }
|
|
.studio-menu-item.open { border-color: var(--tint-accent); }
|
|
.studio-menu-item.active { border-color: var(--accent); background: var(--tint-accent-faint); }
|
|
.studio-menu-item .mi-icon {
|
|
flex-shrink: 0;
|
|
width: 20px;
|
|
height: 20px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
color: var(--accent);
|
|
}
|
|
.studio-menu-item .mi-title {
|
|
flex: 1;
|
|
min-width: 0;
|
|
font-family: var(--font-title);
|
|
font-weight: 600;
|
|
font-size: 13px;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
.studio-menu-item .mi-meta { font-size: 11px; color: var(--text-disabled); flex-shrink: 0; }
|
|
|
|
/* === Spalte 3: Artefakt-Karten (Ergebnis UND Erzeuger in einem Element) ===
|
|
Klick auf den Kopf oeffnet das Ergebnis in der Mitte, das Symbol rechts rechnet
|
|
es neu, die Zeile darunter meldet den Datenstand (aktuell / veraltet / laeuft). */
|
|
@keyframes st-spin { to { transform: rotate(360deg); } }
|
|
|
|
/* Kompletter Lauf: orchestriert alles, daher als Primaerknopf ueber den Karten */
|
|
.run-all {
|
|
display: flex; align-items: center; justify-content: center; gap: 8px;
|
|
width: 100%;
|
|
padding: 9px 12px;
|
|
margin-bottom: 12px;
|
|
border-radius: var(--radius-md, 6px);
|
|
border: 1px solid var(--accent);
|
|
background: var(--accent);
|
|
color: #fff;
|
|
font-family: var(--font-title);
|
|
font-weight: 600;
|
|
font-size: 12.5px;
|
|
cursor: pointer;
|
|
transition: background .15s, opacity .15s;
|
|
}
|
|
.run-all:hover:not(:disabled) { background: var(--accent-hover); }
|
|
.run-all:disabled { opacity: .45; cursor: not-allowed; }
|
|
/* display:flex wuerde das hidden-Attribut ueberstimmen - explizit ausblenden */
|
|
.run-all[hidden] { display: none; }
|
|
.run-all .ra-icon { display: inline-flex; }
|
|
.run-all .ra-state { display: none; }
|
|
.run-all.running .ra-icon { display: none; }
|
|
.run-all.running .ra-state {
|
|
display: inline-flex; align-items: center; gap: 6px; font-weight: 400; font-size: 11.5px;
|
|
}
|
|
.run-all.running .ra-state::before {
|
|
content: ''; width: 11px; height: 11px; flex-shrink: 0;
|
|
border: 2px solid currentColor; border-right-color: transparent;
|
|
border-radius: 50%; animation: st-spin .8s linear infinite;
|
|
}
|
|
|
|
/* Die Karte selbst */
|
|
.art-card {
|
|
background: var(--bg-card);
|
|
border: 1px solid var(--border);
|
|
border-radius: 10px;
|
|
margin-bottom: 8px;
|
|
overflow: hidden;
|
|
transition: border-color .15s;
|
|
}
|
|
.art-card:hover { border-color: var(--accent); }
|
|
.art-card:has(.studio-menu-item.active) { border-color: var(--accent); }
|
|
.art-card.busy { border-color: var(--accent); }
|
|
.art-card-soon { opacity: .6; }
|
|
.art-row { display: flex; align-items: stretch; }
|
|
|
|
/* Kartenkopf: uebernimmt die Rolle des alten Menue-Eintrags, aber ohne eigenen Rahmen */
|
|
.studio-menu .art-head {
|
|
flex: 1; min-width: 0;
|
|
display: flex; align-items: center; gap: 10px;
|
|
padding: 10px var(--sp-lg);
|
|
margin: 0;
|
|
background: none;
|
|
border: none;
|
|
border-radius: 0;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
color: var(--text-primary);
|
|
font-family: var(--font-body);
|
|
}
|
|
.studio-menu .art-head:hover { background: var(--bg-hover); }
|
|
.studio-menu .art-head.active { background: var(--tint-accent-faint); }
|
|
.studio-menu .art-head-static { cursor: default; }
|
|
.studio-menu .art-head-static:hover { background: none; }
|
|
.art-head .mi-icon { flex-shrink: 0; width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; color: var(--accent); }
|
|
.art-head .mi-text { flex: 1; min-width: 0; }
|
|
.art-head .mi-title {
|
|
display: block;
|
|
font-family: var(--font-title);
|
|
font-weight: 600;
|
|
font-size: 13px;
|
|
line-height: 1.25;
|
|
white-space: normal;
|
|
overflow: visible;
|
|
text-overflow: clip;
|
|
}
|
|
.art-head .mi-meta { display: block; margin-top: 1px; font-size: 10.5px; color: var(--text-disabled); }
|
|
|
|
/* Erzeuger-Aktion (rechnet das Ergebnis neu) */
|
|
.art-run {
|
|
flex-shrink: 0;
|
|
width: 36px;
|
|
display: flex; align-items: center; justify-content: center;
|
|
background: none;
|
|
border: none;
|
|
border-left: 1px solid var(--border);
|
|
color: var(--text-disabled);
|
|
cursor: pointer;
|
|
transition: color .15s, background .15s;
|
|
}
|
|
.art-run:hover:not(:disabled) { color: var(--accent); background: var(--bg-hover); }
|
|
.art-run:disabled { opacity: .35; cursor: not-allowed; }
|
|
|
|
/* Datenstand-Zeile */
|
|
.art-note {
|
|
display: none;
|
|
align-items: center;
|
|
gap: var(--sp-md);
|
|
padding: 7px var(--sp-lg);
|
|
border-top: 1px solid var(--border);
|
|
font-size: 11px;
|
|
line-height: 1.35;
|
|
}
|
|
.art-note.show { display: flex; }
|
|
.art-note.fresh { background: var(--tint-success); color: var(--success); }
|
|
.art-note.stale { background: var(--tint-warning); color: var(--warning); }
|
|
.art-note.blocked { background: var(--bg-elevated); color: var(--text-disabled); }
|
|
.art-note.running { background: var(--tint-accent); color: var(--accent); }
|
|
.art-note .an-spin {
|
|
width: 11px; height: 11px; flex-shrink: 0;
|
|
border: 2px solid currentColor; border-right-color: transparent;
|
|
border-radius: 50%; animation: st-spin .8s linear infinite;
|
|
}
|
|
.art-note button {
|
|
margin-left: auto;
|
|
white-space: nowrap;
|
|
padding: 3px 9px;
|
|
font-size: 10.5px;
|
|
font-weight: 600;
|
|
border-radius: var(--radius-md, 6px);
|
|
border: 1px solid currentColor;
|
|
background: transparent;
|
|
color: inherit;
|
|
cursor: pointer;
|
|
font-family: var(--font-body);
|
|
}
|
|
.art-note button:hover { background: var(--tint-hover-subtle); }
|
|
|
|
/* Unter-Ansichten: gehoeren zum selben Erzeuger (Analyse) */
|
|
.art-subs { border-top: 1px solid var(--border); }
|
|
.studio-menu .art-sub {
|
|
display: flex; align-items: center; gap: 8px;
|
|
width: 100%;
|
|
padding: 6px var(--sp-lg);
|
|
margin: 0;
|
|
background: none;
|
|
border: none;
|
|
border-radius: 0;
|
|
cursor: pointer;
|
|
text-align: left;
|
|
color: var(--text-secondary);
|
|
font-family: var(--font-body);
|
|
font-size: 11.5px;
|
|
}
|
|
.studio-menu .art-sub:hover { background: var(--bg-hover); color: var(--text-primary); }
|
|
.studio-menu .art-sub.active { background: var(--tint-accent-faint); color: var(--accent); }
|
|
.art-sub .mi-icon { flex-shrink: 0; color: var(--text-disabled); display: inline-flex; }
|
|
.art-sub.active .mi-icon { color: var(--accent); }
|
|
.art-sub .mi-title {
|
|
flex: 1; min-width: 0;
|
|
font-family: var(--font-body);
|
|
font-weight: 500;
|
|
font-size: 11.5px;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
.art-sub .mi-meta { flex-shrink: 0; font-size: 10px; color: var(--text-disabled); }
|
|
|
|
/* Export: Ausgabe-Aktion, kein Artefakt -> Fusszeile */
|
|
.art-foot { margin-top: var(--sp-lg); padding-top: var(--sp-lg); border-top: 1px solid var(--border); }
|
|
.studio-menu .art-export { justify-content: center; gap: 8px; margin-bottom: 0; padding: 8px; font-size: 12px; }
|
|
.art-export .mi-title { font-family: var(--font-body); font-weight: 600; font-size: 12px; flex: 0 0 auto; }
|
|
.art-export .mi-icon { color: var(--accent); display: inline-flex; }
|
|
|
|
/* "Sammeln" in der Quellenspalte (sein Ergebnis landet dort) */
|
|
.collect-btn:disabled { opacity: .45; cursor: not-allowed; }
|
|
.collect-btn.running .cb-label { display: none; }
|
|
.collect-btn.running::after {
|
|
content: 'Sammelt …';
|
|
display: inline-flex; align-items: center;
|
|
}
|
|
|
|
/* Karten-Container fuellt den Karte-Tab */
|
|
#map-container {
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 320px;
|
|
overflow: hidden;
|
|
}
|
|
#map-empty {
|
|
display: none;
|
|
align-items: center;
|
|
justify-content: center;
|
|
height: 120px;
|
|
color: var(--text-disabled);
|
|
font-size: 13px;
|
|
}
|
|
|
|
/* Timeline (schlank) */
|
|
.tl-item {
|
|
padding: 6px 0;
|
|
border-bottom: 1px solid var(--tint-hover-subtle);
|
|
font-size: 12px;
|
|
}
|
|
.tl-item:last-child { border-bottom: none; }
|
|
.tl-time { color: var(--text-disabled); font-size: 11px; margin-right: 8px; font-family: var(--font-mono); }
|
|
.tl-item a { color: var(--text-secondary); text-decoration: none; }
|
|
.tl-item a:hover { color: var(--accent); }
|
|
|
|
/* Aktivitaets-/Ereignis-Timeline (in Untersektionen gegliedert) */
|
|
.ev-section { border-bottom: 1px solid var(--border); }
|
|
.ev-section:last-child { border-bottom: none; }
|
|
.ev-section-head {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 10px 2px;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
list-style: none;
|
|
}
|
|
.ev-section-head::-webkit-details-marker { display: none; }
|
|
.ev-section-head:hover .ev-section-title { color: var(--accent); }
|
|
.ev-section-icon { display: inline-flex; align-items: center; color: var(--accent); flex-shrink: 0; }
|
|
.ev-section-icon svg { width: 16px; height: 16px; }
|
|
.ev-section-title {
|
|
flex: 1;
|
|
font-family: var(--font-title);
|
|
font-weight: 600;
|
|
font-size: 13px;
|
|
color: var(--text-primary);
|
|
}
|
|
.ev-section-count {
|
|
font-size: 11px;
|
|
color: var(--text-disabled);
|
|
background: var(--bg-elevated);
|
|
border-radius: 10px;
|
|
padding: 1px 8px;
|
|
flex-shrink: 0;
|
|
}
|
|
.ev-section-head::after {
|
|
content: "\25B8";
|
|
display: inline-block;
|
|
color: var(--text-secondary);
|
|
font-size: 10px;
|
|
transition: transform 0.15s;
|
|
}
|
|
.ev-section[open] .ev-section-head::after { transform: rotate(90deg); }
|
|
.ev-section-body { padding: 2px 0 10px 6px; }
|
|
|
|
/* Sektions-Akzente (Icon-Farbe je Typ) */
|
|
.sec-refresh .ev-section-icon { color: var(--info); }
|
|
.sec-source_change .ev-section-icon { color: var(--success); }
|
|
.sec-article_ingest .ev-section-icon { color: var(--text-secondary); }
|
|
|
|
/* Einzel-Ereignis (kompakt: Zeit links, Inhalt rechts) */
|
|
.ev-item {
|
|
display: flex;
|
|
gap: 10px;
|
|
padding: 7px 0;
|
|
border-bottom: 1px solid var(--tint-hover-subtle);
|
|
}
|
|
.ev-item:last-child { border-bottom: none; }
|
|
.ev-time {
|
|
font-size: 11px;
|
|
color: var(--text-disabled);
|
|
font-family: var(--font-mono);
|
|
flex-shrink: 0;
|
|
min-width: 78px;
|
|
padding-top: 1px;
|
|
}
|
|
.ev-main { flex: 1; min-width: 0; }
|
|
.ev-title { font-size: 12px; line-height: 1.5; color: var(--text-primary); word-break: break-word; }
|
|
.ev-title a { color: var(--text-secondary); text-decoration: none; }
|
|
.ev-title a:hover { color: var(--accent); text-decoration: underline; }
|
|
.ev-src { font-size: 11px; color: var(--text-disabled); margin-top: 2px; }
|
|
|
|
/* Q&A: ausklappbare Antwort */
|
|
.ev-answer { margin-top: 6px; }
|
|
.ev-answer summary {
|
|
cursor: pointer;
|
|
font-size: 12px;
|
|
color: var(--accent);
|
|
list-style: none;
|
|
user-select: none;
|
|
}
|
|
.ev-answer summary::-webkit-details-marker { display: none; }
|
|
.ev-answer summary::before { content: "\25B8 "; }
|
|
.ev-answer[open] summary::before { content: "\25BE "; }
|
|
.ev-answer-body {
|
|
margin-top: 6px;
|
|
padding: 8px 10px;
|
|
background: var(--bg-card);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius);
|
|
font-size: 12px;
|
|
line-height: 1.6;
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
/* Faktencheck im Tab */
|
|
.tab-panel .factcheck-item { padding: 8px 0; border-bottom: 1px solid var(--tint-hover-subtle); }
|
|
.tab-panel .factcheck-item:last-child { border-bottom: none; }
|
|
|
|
/* Export-Karte */
|
|
.export-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
|
|
.export-row select {
|
|
background: var(--input-bg); color: var(--text-primary);
|
|
border: 1px solid var(--input-border); border-radius: var(--radius);
|
|
padding: 6px 10px; font-size: 12px;
|
|
}
|
|
|
|
/* Empty / Leerzustaende */
|
|
/* Ohne offenen Fall: Mitte + rechte Spalte bleiben SICHTBAR, nur ausgegraut und
|
|
nicht bedienbar. Der Hinweis liegt als Auflage darueber (Spalte 1 bleibt aktiv). */
|
|
.studio-cols.idle .studio-col-center,
|
|
.studio-cols.idle .studio-col-artifacts {
|
|
opacity: .32;
|
|
filter: grayscale(.55);
|
|
pointer-events: none;
|
|
user-select: none;
|
|
}
|
|
.studio-empty {
|
|
position: absolute;
|
|
top: 0;
|
|
bottom: 0;
|
|
left: 301px; /* rechts neben der Fall-Liste (300px + 1px Fuge) */
|
|
right: 321px; /* und links neben der Bausteine-Spalte (320px + 1px Fuge),
|
|
sonst sitzt der Hinweis sichtbar zu weit rechts */
|
|
z-index: 5;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: var(--sp-xl);
|
|
pointer-events: none; /* nur Hinweis, faengt keine Klicks ab */
|
|
}
|
|
.se-box {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 10px;
|
|
padding: 22px 28px;
|
|
background: var(--bg-card);
|
|
border: 1px solid var(--border);
|
|
border-radius: 10px;
|
|
box-shadow: 0 12px 34px rgba(0, 0, 0, .28);
|
|
color: var(--text-secondary);
|
|
font-size: 14px;
|
|
text-align: center;
|
|
max-width: 340px;
|
|
}
|
|
.se-box svg { color: var(--accent); }
|
|
.tab-panel .empty-hint { color: var(--text-disabled); font-size: 12px; }
|
|
|
|
/* === Responsiv === */
|
|
@media (max-width: 1100px) {
|
|
.studio-cols { grid-template-columns: 1fr; grid-auto-rows: minmax(0, 1fr); }
|
|
.studio-col { max-height: 60vh; }
|
|
/* Gestapelte Spalten: der Hinweis nimmt die volle Breite */
|
|
.studio-empty { left: 0; right: 0; }
|
|
}
|
|
|
|
/* Fall-Chat: Recherche-Angebot des Analysten (Phase 3) */
|
|
.chat-offer{margin-top:10px;padding:12px 14px;border:1px solid var(--studio-border,#8aa0c022);border-radius:10px;background:var(--studio-panel-2,rgba(120,140,180,.08));font-size:13px;}
|
|
.chat-offer-title{font-weight:600;margin-bottom:4px;}
|
|
.chat-offer-text{opacity:.85;margin-bottom:8px;line-height:1.45;}
|
|
.chat-offer-label{display:block;font-size:12px;opacity:.7;margin-bottom:4px;}
|
|
.chat-offer-add{width:100%;box-sizing:border-box;resize:vertical;font:inherit;padding:6px 8px;border:1px solid var(--studio-border,#8aa0c033);border-radius:8px;background:rgba(127,127,127,.06);color:inherit;margin-bottom:6px;}
|
|
.chat-offer-focus{font-size:12px;opacity:.7;margin-bottom:8px;}
|
|
.chat-offer-btn{cursor:pointer;}
|
|
.chat-offer-btn:disabled{opacity:.6;cursor:default;}
|