Quelltext des aktuellen Standes
.orders-fullwidth {}
/* Tabs */
.orders-tabs-bar {
background: var(--color-bg);
border-bottom: 2px solid var(--color-gray-300);
padding: 0 1rem;
display: flex;
justify-content: space-between;
align-items: center;
gap: 1rem;
max-width: 100%;
overflow-x: auto;
}
.orders-tabs {
display: flex;
gap: 0;
}
.tab-dot {
width: 8px; height: 8px;
border-radius: 50%;
display: inline-block;
}
.tab-dot-open { background: var(--red-500); }
.tab-dot-delivered { background: var(--amber-500); }
.tab-dot-abholbereit { background: var(--violet-500); }
.tab-dot-closed { background: var(--green-500); }
.tab-count {
background: var(--gray-100);
color: var(--gray-500);
font-size: 0.75rem;
font-weight: 600;
padding: 0.1rem 0.5rem;
border-radius: 9999px;
}
.subnav-tab.active .tab-count { background: var(--alert-info-bg); color: var(--alert-info-text); }
.orders-filter { flex-shrink: 0; }
.orders-search-input { width: 220px; }
/* Content */
.orders-content { padding: 1.5rem 1rem 3rem; }
/* Status-Tabs als Subnav-Pills in der Filter-Card (Styleguide) */
.orders-subnav { margin-bottom: 0; flex: 1 1 auto; }
.orders-subnav .subnav-tab { display: inline-flex; align-items: center; gap: 0.4rem; }
/* Such-/Sortier-/Filter-Leiste: Suche rückt rechts (Subnav wächst), Selects kompakt */
.orders-search-wrap { flex: 0 1 240px; }
.orders-search-wrap input { width: 100%; }
.orders-filter-select { flex: 0 0 auto; width: auto; }
/* Suchergebnis-Kopfzeile */
.orders-search-head { font-size: 0.85rem; color: var(--gray-500); margin: 0 0 0.6rem 0.25rem; }
.orders-search-head strong { color: var(--gray-900); }
.tab-panel { display: none; }
.tab-panel.active { display: block; }
.section-label {
font-size: 0.8rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
color: var(--gray-500);
margin: 1.5rem 0 0.75rem;
padding-bottom: 0.5rem;
border-bottom: 1px solid var(--gray-200);
}
.section-label:first-child { margin-top: 0; }
/* Abstand zwischen mehreren Tabellen (Alle-Tab) */
.tab-panel .orders-table + .section-label { margin-top: 1.75rem; }
/* Empty State */
.empty-state { text-align: center; padding: 3rem 1rem; color: var(--gray-400); }
.empty-state svg { margin-bottom: 1rem; opacity: 0.4; }
.empty-state p { font-size: 0.95rem; margin: 0; }
.empty-mini { color: var(--gray-400); font-size: 0.8rem; padding: 0.5rem 0; }
/* ── Orders-Tabelle ──────────────────────────────────── */
/* Container und Kopfzeile folgen der zentralen Tabellen-Optik
(.table-wrapper / .data-table th); das Grid mit <details>-Zeilen
bleibt wegen der Aufklapp-Funktion erhalten. */
.orders-table {
background: var(--color-bg);
border: 1px solid var(--color-border);
border-radius: var(--radius);
overflow: hidden;
}
.orders-thead {
display: grid;
grid-template-columns: 4px 56px 1fr 200px 200px 140px 36px;
align-items: center;
background: var(--color-gray-50);
border-bottom: 2px solid var(--color-border);
}
.orders-thead > div {
padding: 0.625rem 0.75rem;
font-size: 0.8125rem; font-weight: 600; text-transform: uppercase;
letter-spacing: 0.03em; color: var(--color-gray-700); white-space: nowrap;
}
.orders-thead .th-id { text-align: right; padding-right: 1rem; }
.orders-thead > div:first-child, .orders-thead > div:last-child { padding: 0; }
/* Zeile = <details> */
.order-card {
border-bottom: 1px solid var(--color-border);
transition: background 0.12s;
}
.order-card:last-child { border-bottom: none; }
.order-card[open] { background: var(--color-gray-50); }
.order-summary {
list-style: none;
cursor: pointer;
display: grid;
grid-template-columns: 4px 56px 1fr 200px 200px 140px 36px;
align-items: center;
}
.order-summary:hover { background: var(--color-gray-100); }
.order-summary::-webkit-details-marker { display: none; }
/* Status-Streifen links */
.order-stripe { align-self: stretch; background: var(--red-500); }
.order-stripe.delivered { background: var(--amber-500); }
.order-stripe.abholbereit { background: var(--violet-500); }
.order-stripe.closed { background: var(--green-500); }
/* Zellen */
.os-cell { padding: 0.8rem 0.75rem; min-width: 0; }
.os-id { font-size: 0.78rem; color: var(--gray-400); text-align: right; padding-right: 1rem; font-variant-numeric: tabular-nums; }
.os-title { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; }
.os-name-row { display: flex; align-items: center; gap: 0.4rem; min-width: 0; }
.os-name { font-weight: 600; font-size: 0.92rem; color: var(--gray-900); flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.os-sub { font-size: 0.72rem; color: var(--gray-400); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Empfänger nur auf schmalen Screens in der Sub-Zeile zeigen (Spalte ist dort ausgeblendet) */
.os-sub-recipient { display: none; }
.os-person, .os-supplier { color: var(--gray-700); font-size: 0.83rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.os-person.empty, .os-supplier.empty { color: var(--gray-300); }
/* Priorität: kleiner Punkt vor dem Titel (nur wenn != normal) */
.pri-mark { display: inline-block; width: 7px; height: 7px; border-radius: 50%; vertical-align: middle; flex-shrink: 0; }
.pri-mark.low { background: var(--gray-300); }
.pri-mark.high { background: var(--amber-500); }
.pri-mark.urgent { background: var(--red-500); }
/* Anhang-/Kommentar-Counts dezent neben dem Titel */
.os-counts { display: inline-flex; gap: 0.5rem; color: var(--gray-400); font-size: 0.68rem; flex-shrink: 0; font-variant-numeric: tabular-nums; }
.os-counts span { white-space: nowrap; }
/* Fortschritt */
.os-progress { display: flex; flex-direction: column; gap: 0.3rem; }
.progress-label { display: flex; justify-content: space-between; font-size: 0.7rem; color: var(--gray-500); font-variant-numeric: tabular-nums; }
.progress-label span:first-child { color: var(--gray-900); font-weight: 600; }
.progress-bar { height: 4px; background: var(--color-gray-100); border-radius: 2px; overflow: hidden; }
.progress-fill { height: 100%; background: var(--color-primary); border-radius: 2px; transition: width 0.3s; }
.progress-fill.complete { background: var(--green-500); }
/* Aktion */
.os-actions { display: flex; justify-content: center; }
.btn-icon-sm {
width: 26px; height: 26px;
display: flex; align-items: center; justify-content: center;
border: none; background: transparent; color: var(--gray-300);
border-radius: 0.25rem; cursor: pointer; transition: all 0.12s; font-size: 1rem;
/* Dezent sichtbar (statt nur bei Hover) – auch auf Touch-Geraeten erreichbar. */
opacity: 0.5;
}
.order-summary:hover .btn-icon-sm { opacity: 1; }
.btn-icon-sm:hover { background: var(--red-100); color: var(--red-500); }
/* Zwei-Spalten-Zeile in Order-Formularen (Modal), bricht schmal auf 1 Spalte um. */
.oc-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 0 0.75rem; }
@media (max-width: 560px) { .oc-2col { grid-template-columns: 1fr; gap: 0; } }
/* Detail View */
.order-detail {
border-top: 1px solid var(--gray-100);
background: var(--slate-50);
padding: 1.25rem;
display: grid;
grid-template-columns: 1.7fr 1fr;
gap: 1.25rem;
}
/* Lade-Platzhalter (Detail wird per Lazy-Load nachgeholt): kein Grid */
.order-detail--lazy { display: block; }
.detail-section-title {
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--gray-500);
margin-bottom: 0.75rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
/* Komponenten */
.comp-list { background: transparent; }
/* Fortschritts-Leiste oben im Komponenten-Panel */
.comp-progress {
display: flex; align-items: center; gap: 0.6rem;
padding: 0.55rem 1rem; border-bottom: 1px solid var(--slate-100);
}
.comp-progress .cp-bar { flex: 1; height: 6px; background: var(--slate-100); border-radius: 3px; overflow: hidden; }
.comp-progress .cp-fill { height: 100%; background: var(--color-primary); border-radius: 3px; transition: width 0.3s; }
.comp-progress .cp-fill.complete { background: var(--green-500); }
.comp-progress .cp-txt { font-size: 0.74rem; color: var(--gray-500); font-variant-numeric: tabular-nums; white-space: nowrap; }
.comp-progress .cp-txt b { color: var(--gray-900); }
.comp-item {
display: flex;
align-items: center;
gap: 0.7rem;
padding: 0.55rem 1rem;
border-bottom: 1px solid var(--slate-100);
font-size: 0.875rem;
}
.comp-item:last-child { border-bottom: none; }
.comp-item:hover { background: var(--slate-50); }
.comp-item form { display: flex; align-items: center; }
.comp-checkbox { width: 18px; height: 18px; accent-color: var(--color-primary); cursor: pointer; flex-shrink: 0; }
/* Teil-Lieferung: erhaltene-Menge-Pille statt Checkbox (öffnet das Mengen-Modal) */
.comp-recv-btn {
flex-shrink: 0;
min-width: 3.1rem;
padding: 0.12rem 0.5rem;
border: 1px solid var(--gray-300);
border-radius: 999px;
background: var(--color-bg);
color: var(--gray-600);
font-size: 0.74rem;
font-weight: 700;
font-variant-numeric: tabular-nums;
cursor: pointer;
transition: all 0.12s;
}
.comp-recv-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }
.comp-recv-btn.partial { border-color: var(--amber-500); color: var(--amber-700); background: var(--amber-50); }
.comp-recv-btn.done { border-color: var(--green-500); color: var(--color-on-accent); background: var(--green-500); }
.comp-recv-static { flex-shrink: 0; min-width: 3.1rem; font-size: 0.74rem; font-weight: 700; color: var(--gray-500); font-variant-numeric: tabular-nums; }
.comp-recv-static.done { color: var(--green-600); }
/* Teil-Lieferung-Modal (kompakt) */
.modal-card-sm { max-width: 360px; }
.recv-comp-name { font-weight: 600; margin: 0 0 0.6rem; }
.recv-input-row { display: flex; align-items: center; gap: 0.6rem; }
.recv-input-row .form-control { width: 6rem; text-align: center; font-size: 1.1rem; font-weight: 700; }
.recv-of { color: var(--gray-500); font-size: 0.9rem; }
.comp-name { flex: 1; font-weight: 500; color: var(--gray-900); min-width: 0; }
.comp-name.done { color: var(--gray-400); text-decoration: line-through; font-weight: 400; }
.comp-qty { font-size: 0.85rem; color: var(--color-on-accent); background: var(--color-gray-500); border-radius: 4px; padding: 0.12rem 0.5rem; font-weight: 700; margin-left: 0.4rem; vertical-align: middle; }
.comp-meta { font-size: 0.72rem; color: var(--gray-400); text-align: right; white-space: nowrap; line-height: 1.25; }
.comp-delete { background: none; border: none; color: var(--gray-300); cursor: pointer; font-size: 1rem; padding: 0 0.25rem; transition: color 0.15s; opacity: 0; }
.comp-item:hover .comp-delete { opacity: 1; }
.comp-delete:hover { color: var(--red-500); }
/* Komponente bearbeiten */
.comp-row-actions { display: flex; align-items: center; gap: 0.15rem; flex-shrink: 0; }
.comp-edit { background: none; border: none; color: var(--slate-300); cursor: pointer; padding: 0.15rem 0.25rem; display: flex; align-items: center; transition: color 0.15s; opacity: 0; }
.comp-item:hover .comp-edit { opacity: 1; }
.comp-edit:hover { color: var(--color-primary); }
.comp-edit-form { display: flex; align-items: center; gap: 0.5rem; padding: 0.55rem 1rem; border-bottom: 1px solid var(--slate-100); background: var(--slate-50); }
.comp-edit-form[hidden] { display: none; }
.comp-edit-form .comp-edit-name { flex: 1; }
.comp-edit-form .comp-edit-qty { width: 72px; flex: 0 0 auto; text-align: center; }
.comp-edit-cancel { background: none; border: none; color: var(--gray-400); cursor: pointer; font-size: 1.2rem; line-height: 1; padding: 0 0.3rem; transition: color 0.15s; }
.comp-edit-cancel:hover { color: var(--red-500); }
.comp-add {
display: flex;
gap: 0.5rem;
padding: 0.6rem 1rem;
border-top: 1px solid var(--color-gray-100);
background: var(--color-gray-50);
align-items: center;
}
.comp-add-input {
flex: 1;
padding: 0.4rem 0.75rem;
border: 1px solid var(--gray-300);
border-radius: 0.25rem;
font-size: 0.8rem;
outline: none;
}
.comp-add-input:focus { border-color: var(--color-primary); }
.comp-qty-input {
width: 56px;
padding: 0.4rem 0.5rem;
border: 1px solid var(--gray-300);
border-radius: 0.25rem;
font-size: 0.8rem;
outline: none;
text-align: center;
}
.comp-qty-input:focus { border-color: var(--color-primary); }
.comp-add-btn {
padding: 0.4rem 0.75rem;
background: var(--color-primary);
color: var(--color-on-accent);
border: none;
border-radius: 0.25rem;
font-size: 0.8rem;
font-weight: 600;
cursor: pointer;
}
.comp-add-btn:hover { background: var(--color-primary-dark); }
/* Komponenten-Zeilen im Neue-Bestellung-Modal */
.oc-rows { display: flex; flex-direction: column; gap: 0.4rem; }
.oc-row { display: flex; gap: 0.5rem; align-items: center; }
.oc-row .oc-name { flex: 1; }
.oc-row .oc-qty { width: 72px; flex: 0 0 auto; text-align: center; }
.oc-row-remove {
background: none; border: none; color: var(--gray-300); cursor: pointer;
font-size: 1.2rem; line-height: 1; padding: 0 0.3rem; transition: color 0.15s;
}
.oc-row-remove:hover { color: var(--red-500); }
.oc-add-row {
margin-top: 0.5rem; background: none; border: 1px dashed var(--slate-300);
color: var(--color-primary); border-radius: 0.25rem; padding: 0.35rem 0.7rem;
font-size: 0.8rem; font-weight: 600; cursor: pointer; transition: border-color 0.15s, background 0.15s;
}
.oc-add-row:hover { border-color: var(--color-primary); background: var(--blue-50); }
/* Comments */
.comments-list { margin-bottom: 0.75rem; }
.comment-item {
background: var(--color-bg);
border: 1px solid var(--gray-200);
border-radius: 0.25rem;
padding: 0.625rem 0.875rem;
margin-bottom: 0.5rem;
font-size: 0.85rem;
}
.comment-meta {
display: flex;
align-items: center;
gap: 0.5rem;
margin-bottom: 0.375rem;
}
.comment-author { font-weight: 600; color: var(--gray-700); font-size: 0.8rem; }
.comment-time { color: var(--gray-400); font-size: 0.7rem; }
.comment-del-form { display: flex; }
/* Bearbeiten-Stift links neben dem Löschen-Kreuz, beide rechtsbündig */
.comment-meta .comp-edit { margin-left: auto; }
.comment-body { color: var(--gray-700); white-space: pre-wrap; word-break: break-word; }
/* Kommentar-Aktionen wie bei Komponenten auf Hover/Fokus einblenden */
.comment-item:hover .comp-edit,
.comment-item:focus-within .comp-edit,
.comment-item:hover .comp-delete,
.comment-item:focus-within .comp-delete { opacity: 1; }
.comment-edit-form { display: flex; flex-direction: column; gap: 0.4rem; margin-top: 0.4rem; }
.comment-edit-form[hidden] { display: none; }
.comment-edit-actions { display: flex; gap: 0.5rem; align-items: center; }
.btn-link-cancel { background: none; border: none; color: var(--gray-500); font-size: 0.8rem; cursor: pointer; padding: 0; }
.btn-link-cancel:hover { text-decoration: underline; }
.comment-form {
display: flex;
flex-direction: column;
gap: 0.4rem;
}
.comment-input {
width: 100%;
padding: 0.5rem 0.75rem;
border: 1px solid var(--gray-300);
border-radius: 0.25rem;
font-size: 0.85rem;
outline: none;
resize: vertical;
font-family: inherit;
}
.comment-input:focus { border-color: var(--color-primary); }
/* Supplier Search (Empfänger-Suche kommt aus person-search.css) */
.supplier-form, .person-form { position: relative; }
.supplier-dropdown {
position: absolute;
z-index: 100;
background: var(--color-bg);
border: 1px solid var(--gray-200);
border-radius: 0.25rem;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
max-height: 200px;
overflow-y: auto;
width: 100%;
display: none;
}
.supplier-option {
padding: 0.5rem 0.875rem;
font-size: 0.85rem;
cursor: pointer;
color: var(--gray-900);
}
.supplier-option:hover { background: var(--gray-100); }
.supplier-no-result { padding: 0.5rem 0.875rem; font-size: 0.8rem; color: var(--gray-400); }
/* Metadaten */
.meta-card {
background: var(--color-bg);
border: 1px solid var(--color-gray-300);
border-radius: 0.25rem;
padding: 1rem;
position: relative;
}
.meta-field { margin-bottom: 0.75rem; }
.meta-field:last-child { margin-bottom: 0; }
.meta-field label { display: block; font-size: 0.7rem; font-weight: 600; text-transform: uppercase; color: var(--gray-500); margin-bottom: 0.25rem; }
.meta-field .meta-value { font-size: 0.875rem; color: var(--gray-900); }
.info-save-btn {
padding: 0.4rem 0.75rem;
background: var(--color-primary);
color: var(--color-on-accent);
border: none;
border-radius: 0.25rem;
font-size: 0.8rem;
font-weight: 500;
cursor: pointer;
align-self: flex-end;
}
.info-save-btn:hover { background: var(--color-primary-dark); }
/* Verlauf */
.history-toggle {
display: inline-flex;
align-items: center;
gap: 0.375rem;
padding: 0.375rem 0.75rem;
background: var(--gray-100);
border: 1px solid var(--gray-200);
border-radius: 0.25rem;
font-size: 0.75rem;
color: var(--gray-500);
cursor: pointer;
transition: all 0.15s;
margin-top: 0.75rem;
width: 100%;
justify-content: center;
}
.history-toggle:hover { background: var(--gray-200); color: var(--gray-700); }
.history-log {
margin-top: 0.75rem;
background: var(--gray-50);
border: 1px solid var(--gray-200);
border-radius: 0.25rem;
padding: 0.75rem;
max-height: 200px;
overflow-y: auto;
font-size: 0.8rem;
}
.log-entry { padding-bottom: 0.5rem; margin-bottom: 0.5rem; border-bottom: 1px dashed var(--gray-200); }
.log-entry:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.log-author { font-weight: 600; color: var(--gray-900); font-size: 0.8rem; }
.log-change { color: var(--gray-500); font-size: 0.75rem; }
.log-field { font-weight: 600; color: var(--gray-700); }
.log-empty { color: var(--gray-400); font-style: italic; }
.log-time { font-size: 0.7rem; color: var(--gray-400); text-align: right; }
/* Abschluss-Formular */
.close-section { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--gray-200); }
.close-form { display: flex; flex-direction: column; gap: 0.5rem; }
.close-form select, .close-form input {
padding: 0.5rem 0.75rem;
border: 1px solid var(--gray-300);
border-radius: 0.25rem;
font-size: 0.85rem;
outline: none;
width: 100%;
}
.close-form select:focus, .close-form input:focus { border-color: var(--color-primary); }
.close-btn {
padding: 0.5rem 1rem;
background: var(--green-500);
color: var(--color-on-accent);
border: none;
border-radius: 0.25rem;
font-size: 0.85rem;
font-weight: 600;
cursor: pointer;
transition: background 0.15s;
width: 100%;
}
.close-btn:hover { background: var(--green-600); }
.abholbereit-btn { background: var(--violet-500); }
.abholbereit-btn:hover { background: var(--violet-600); }
/* "Assets aus Bestellung anlegen": Navigations-Aktion, daher im App-Blau
statt im grellen Aktions-Grün; Icon + Text zentriert. */
.assets-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 0.4rem;
text-decoration: none;
background: var(--color-primary);
}
.assets-btn:hover { background: var(--color-primary-dark); }
.assets-btn svg { flex-shrink: 0; }
/* "Zurück auf Eingetroffen" (Reaktivieren) */
.reopen-section { margin-top: 0.75rem; }
.close-btn-reopen { background: var(--amber-500); }
.close-btn-reopen:hover { background: var(--amber-600); }
/* Abholbereit-Bestätigung nutzt das zentrale Modal (.modal-overlay/.modal-card).
Formulare im Footer ohne Außenabstand, damit sie wie Buttons in einer Reihe sitzen. */
.order-detail .modal-footer form { margin: 0; }
.delivery-info { margin-top: 0.75rem; font-size: 0.8rem; color: var(--gray-500); }
.delivery-info--closed { margin-top: 1rem; }
.delivery-info strong { color: var(--gray-900); }
/* Archive Footer */
.archive-footer { text-align: right; margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid var(--gray-200); }
/* Modal */
/* Modal: Standard-Klassen kommen aus app.css */
/* Form Elements */
.form-group { margin-bottom: 1rem; }
.form-group:last-child { margin-bottom: 0; }
.form-group label { display: block; font-size: 0.8rem; font-weight: 600; color: var(--gray-700); margin-bottom: 0.375rem; }
.form-hint { font-weight: 400; color: var(--gray-400); }
/* Eingabefelder nutzen die zentrale .form-control aus app.css (kein eigenes .form-input). */
/* Responsive */
@media (max-width: 1024px) {
.orders-thead, .order-summary { grid-template-columns: 4px 48px 1fr 170px 130px 34px; }
.os-supplier, .th-supplier { display: none; }
}
@media (max-width: 900px) {
.order-detail { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
.orders-thead, .order-summary { grid-template-columns: 4px 1fr 92px 30px; }
.os-id, .th-id, .os-person, .th-person { display: none; }
.os-sub-recipient { display: block; }
}
@media (max-width: 600px) {
/* Filter-Card auf Mobil: Tabs horizontal scrollbar, Suche/Sortierung/Filter
und Buttons stapeln über die volle Breite. */
.orders-subnav { flex: 1 1 100%; flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.orders-subnav .subnav-tab { white-space: nowrap; flex: 0 0 auto; }
.orders-search-wrap { flex: 1 1 100%; }
.orders-filter-select { flex: 1 1 100%; width: 100%; }
#ordersFilterForm .btn { flex: 1 1 auto; }
}
/* ── Datei-Upload (Design wie /contracts) ──────────────── */
.cs-upload-form { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; }
.cs-upload-hidden { display: none; }
.cs-upload-drop {
flex: 1; display: flex; align-items: center; gap: 0.5rem;
padding: 0.45rem 0.75rem; background: var(--color-bg); border: 1px dashed var(--gray-300);
border-radius: 0.25rem; cursor: pointer; font-size: 0.8rem; color: var(--gray-400);
transition: all 0.15s;
}
.cs-upload-drop:hover, .cs-upload-drop.cs-upload-dragging { border-color: var(--color-primary); background: var(--color-primary-pale); color: var(--color-primary); }
.cs-upload-drop.cs-upload-dragging { border-style: solid; }
.cs-upload-drop svg { flex-shrink: 0; }
.cs-upload-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cs-btn {
display: inline-flex; align-items: center; gap: 0.375rem;
padding: 0.5rem 1rem; border-radius: 0.25rem; font-weight: 500;
font-size: 0.875rem; border: none; cursor: pointer; text-decoration: none;
transition: all 0.15s;
}
.cs-btn-sm { padding: 0.4rem 0.85rem; font-size: 0.8rem; }
.cs-btn-primary { background: var(--color-primary); color: var(--color-on-accent); }
.cs-btn-primary:hover { background: var(--color-primary-dark); color: var(--color-on-accent); }
.cs-btn-ghost { background: var(--color-bg); color: var(--gray-500); border: 1px solid var(--gray-300); }
.cs-btn-ghost:hover { background: var(--gray-100); color: var(--gray-700); }
.cs-btn[disabled] { opacity: 0.6; cursor: default; }
.closed-more-wrap { text-align: center; margin: 0.5rem 0 1rem; }
/* Datei-Karten auf weißem Grund (order-detail hat grauen Hintergrund) */
.order-detail .cs-file-row { background: var(--gray-50); border-color: var(--color-gray-100); }
/* ── Strukturierte Detail-Panels ───────────────────────── */
.detail-panel {
background: var(--color-bg);
border: 1px solid var(--color-gray-200);
border-radius: 0.5rem;
margin-bottom: 1rem;
box-shadow: 0 1px 2px rgba(0,0,0,0.03);
overflow: hidden;
}
.detail-panel:last-child { margin-bottom: 0; }
/* Metadaten-Panel: Overflow sichtbar, damit die Autocomplete-Dropdowns
(Empfänger-/Lieferantensuche) nicht am Panel-Rand abgeschnitten werden. */
.detail-panel.order-meta-panel { overflow: visible; }
.panel-head {
display: flex; align-items: center; gap: 0.5rem;
padding: 0.7rem 1rem; border-bottom: 1px solid var(--color-gray-100);
}
.panel-ico { color: var(--color-gray-500); display: flex; align-items: center; flex-shrink: 0; }
.panel-title {
font-size: 0.72rem; font-weight: 700; text-transform: uppercase;
letter-spacing: 0.05em; color: var(--gray-500);
}
.panel-count {
margin-left: auto;
font-size: 0.7rem; font-weight: 600; color: var(--gray-500);
background: var(--color-gray-100); border-radius: 999px;
padding: 0.05rem 0.5rem; min-width: 1.4rem; text-align: center;
}
.head-action {
margin-left: auto; background: none; border: none; cursor: pointer;
font-size: 0.7rem; font-weight: 600; color: var(--color-primary); padding: 0;
}
.head-action:hover { text-decoration: underline; }
.panel-body { padding: 0.75rem 1rem; }
.detail-panel .comments-list { margin-bottom: 0.75rem; }
.detail-panel .comment-item { background: var(--gray-50); border-color: var(--color-gray-100); }
/* Metadaten – Lese-Ansicht als Definitionsliste */
.meta-dl { display: grid; grid-template-columns: auto 1fr; gap: 0.5rem 0.9rem; align-items: baseline; margin: 0; }
.meta-dl dt { font-size: 0.7rem; font-weight: 600; color: var(--gray-400); text-transform: uppercase; letter-spacing: 0.03em; }
.meta-dl dd { margin: 0; font-size: 0.86rem; color: var(--gray-900); min-width: 0; }
.meta-link { color: var(--blue-600); text-decoration: none; }
.meta-link:hover { color: var(--blue-700); text-decoration: none; }
/* Links im Bestell-Modul werden generell nicht unterstrichen (auch nicht im Hover). */
.orders-fullwidth a,
.orders-fullwidth a:hover { text-decoration: none; }
.meta-pri { display: inline-block; font-size: 0.7rem; font-weight: 700; padding: 0.08rem 0.5rem; border-radius: 999px; }
.meta-pri.pri-low { background: var(--gray-100); color: var(--gray-500); }
.meta-pri.pri-normal { background: var(--sky-100); color: var(--sky-800); }
.meta-pri.pri-high { background: var(--amber-100); color: var(--amber-800); }
.meta-pri.pri-urgent { background: var(--red-100); color: var(--red-800); }
.rcp-name { font-size: 0.86rem; color: var(--gray-900); }
.rcp-chips { display: flex; flex-wrap: wrap; gap: 0.35rem; margin-top: 0.3rem; }
.rcp-chip {
display: inline-flex; align-items: center; gap: 0.3rem;
font-size: 0.74rem; color: var(--gray-700); background: var(--slate-100);
border: 1px solid var(--gray-200); border-radius: 999px; padding: 0.12rem 0.55rem;
text-decoration: none; transition: all 0.15s; max-width: 100%;
}
.rcp-chip:hover { background: var(--color-primary-pale); border-color: var(--color-primary-muted); color: var(--color-primary-strong); }
.rcp-chip svg { width: 11px; height: 11px; opacity: 0.7; flex-shrink: 0; }
.rcp-chip span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Verlauf – Timeline */
.order-timeline { position: relative; padding-left: 0.85rem; max-height: 260px; overflow-y: auto; }
.order-timeline::before { content: ''; position: absolute; left: 3px; top: 4px; bottom: 4px; width: 2px; background: var(--slate-100); }
.tl-item { position: relative; padding: 0 0 0.7rem 0.65rem; }
.tl-item:last-child { padding-bottom: 0; }
.tl-item::before { content: ''; position: absolute; left: -0.6rem; top: 5px; width: 8px; height: 8px; border-radius: 50%; background: var(--color-primary); border: 2px solid var(--color-bg); }
.tl-line { font-size: 0.78rem; color: var(--gray-700); line-height: 1.35; }
.tl-line .log-field { font-weight: 600; color: var(--gray-900); }
.tl-meta { font-size: 0.7rem; color: var(--gray-400); margin-top: 0.1rem; }
.log-empty { color: var(--gray-400); font-style: italic; }
/* Aktionen-Panel: gleichmäßige Abstände, keine Doppel-Trennlinien */
.detail-panel--actions .close-section,
.detail-panel--actions > div[style] { margin-top: 0; padding-top: 0; border-top: none; }
.detail-panel--actions .close-section + div[style],
.detail-panel--actions .close-section ~ .delivery-info { margin-top: 0.75rem; }
/* Mehrere Aktions-Abschnitte (z. B. „Assets aus Bestellung anlegen" gefolgt
vom Abschluss-/Abholbereit-Abschnitt) brauchen wieder Abstand zueinander. */
.detail-panel--actions .close-section + .close-section { margin-top: 0.75rem; }
.detail-panel--actions .delivery-info { margin-top: 0; }
/* Metadaten-Bearbeiten: Formular mit einem Speichern-Button */
.meta-form .meta-field-edit { margin-bottom: 0.6rem; position: relative; }
.meta-form .meta-field-edit label {
display: flex; align-items: center; justify-content: space-between; gap: 0.5rem;
font-size: 0.78rem; font-weight: 600; color: var(--gray-500); margin-bottom: 0.2rem;
}
.meta-clear-btn {
background: none; border: none; padding: 0; cursor: pointer;
color: var(--red-500); font-size: 0.72rem; font-weight: 600;
}
.meta-clear-btn:hover { text-decoration: underline; }
.meta-actions {
display: flex; align-items: center; gap: 0.75rem;
margin-top: 0.75rem;
}
.meta-edit-cancel { background: none; border: none; color: var(--gray-500); font-size: 0.8rem; cursor: pointer; }
.meta-edit-cancel:hover { text-decoration: underline; }
.meta-save-btn { flex: 0 0 auto; }
.meta-save-status { font-size: 0.8rem; font-weight: 600; }
.meta-save-status.meta-save-ok { color: var(--green-600); }
.meta-save-status.meta-save-err { color: var(--red-600); }
@media (max-width: 600px) {
.cs-upload-form { flex-direction: column; align-items: stretch; }
}