/* Weboberfläche Service (Fernzugriff). Ohne fremde Bibliotheken; hell und dunkel nach dem System. Schmal (Handy) zuerst, ab 900 px
   Liste und Maschine nebeneinander. */

:root {
	--bg: #f4f5f7;
	--surface: #ffffff;
	--surface_2: #f0f2f5;
	--text: #161a22;
	--muted: #6a7282;
	--line: #e3e6eb;
	--accent: #3563e9;
	--accent_soft: #e8eefd;
	--on_accent: #ffffff;
	--ok: #17924f;
	--ok_soft: #e3f5eb;
	--warn: #b86e00;
	--warn_soft: #fdf1df;
	--danger: #d1343a;
	--danger_soft: #fce9ea;
	--off: #9aa1ad;
	--shadow: 0 1px 2px rgb(16 24 40 / 6%), 0 1px 3px rgb(16 24 40 / 8%);
	--shadow_lift: 0 8px 28px rgb(16 24 40 / 16%);
	--radius: 14px;
	--radius_small: 10px;
	--bar_height: 56px;
	color-scheme: light dark;
}

@media (prefers-color-scheme: dark) {
	:root {
		--bg: #0e1014;
		--surface: #171a20;
		--surface_2: #1f232b;
		--text: #e9ecf1;
		--muted: #949cab;
		--line: #2a2f39;
		--accent: #6b90ff;
		--accent_soft: #1e2a4a;
		--on_accent: #0b1020;
		--ok: #3cc47a;
		--ok_soft: #15301f;
		--warn: #f0a63c;
		--warn_soft: #3a2a12;
		--danger: #ff6b70;
		--danger_soft: #3d1a1d;
		--off: #5d6472;
		--shadow: 0 1px 2px rgb(0 0 0 / 40%);
		--shadow_lift: 0 10px 34px rgb(0 0 0 / 55%);
	}
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }

html { -webkit-text-size-adjust: 100%; }

body {
	margin: 0;
	min-height: 100dvh;
	background: var(--bg);
	color: var(--text);
	font: 15px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	-webkit-tap-highlight-color: transparent;
}

h1, h2, h3 { margin: 0; font-weight: 650; letter-spacing: -0.01em; }
h3 { font-size: 13px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted); margin: 26px 0 10px; }
p { margin: 0; }
a { color: var(--accent); text-decoration: none; }
code, .mono, .code { font-family: ui-monospace, "SF Mono", Consolas, monospace; }
code { font-size: 13px; }
.muted { color: var(--muted); }
.small { font-size: 13px; }
.grow { flex: 1; }

.sprite { display: none; }
svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; flex: none; }

/* ------------------------------------------------------------------------------------------------------------------------- */
/* Kopfzeile */

.bar {
	position: sticky;
	top: 0;
	z-index: 20;
	height: calc(var(--bar_height) + env(safe-area-inset-top));
	padding: env(safe-area-inset-top) max(16px, env(safe-area-inset-right)) 0 max(16px, env(safe-area-inset-left));
	display: flex;
	align-items: center;
	gap: 12px;
	background: color-mix(in srgb, var(--bg) 82%, transparent);
	backdrop-filter: saturate(1.6) blur(14px);
	-webkit-backdrop-filter: saturate(1.6) blur(14px);
	border-bottom: 1px solid var(--line);
}

.brand { display: flex; align-items: center; gap: 10px; color: var(--text); font-size: 15px; min-width: 0; }
.brand_text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.brand b { font-weight: 650; }
.logo {
	display: grid;
	place-items: center;
	width: 32px;
	height: 32px;
	border-radius: 9px;
	background: linear-gradient(135deg, #ff8a4c, #e8456b);
	color: #fff;
	flex: none;
}
.logo svg { width: 19px; height: 19px; stroke-width: 2; }
.logo.big { width: 64px; height: 64px; border-radius: 18px; margin: 0 auto 18px; }
.logo.big svg { width: 36px; height: 36px; }

.bar_right { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.conn { width: 8px; height: 8px; border-radius: 50%; background: var(--ok); transition: background 0.2s; }
.conn.lost { background: var(--danger); animation: blink 1s infinite; }

.chip {
	display: flex;
	align-items: center;
	gap: 6px;
	height: 34px;
	padding: 0 12px 0 10px;
	border-radius: 17px;
	border: 1px solid var(--line);
	background: var(--surface);
	color: var(--text);
	font: inherit;
	font-size: 14px;
	cursor: pointer;
}
.chip svg { width: 18px; height: 18px; color: var(--muted); }

/* ------------------------------------------------------------------------------------------------------------------------- */
/* Knöpfe */

.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 18px;
	border-radius: var(--radius_small);
	border: 1px solid var(--line);
	background: var(--surface);
	color: var(--text);
	font: inherit;
	font-weight: 560;
	cursor: pointer;
	transition: transform 0.08s, background 0.15s, opacity 0.15s;
	user-select: none;
}
.btn:active:not(:disabled) { transform: scale(0.98); }
.btn:disabled { opacity: 0.45; cursor: default; }
.btn.primary { background: var(--accent); border-color: var(--accent); color: var(--on_accent); }
.btn.warn { background: var(--warn); border-color: var(--warn); color: #fff; }
.btn.danger { background: var(--danger); border-color: var(--danger); color: #fff; }
.btn.quiet { background: transparent; border-color: transparent; color: var(--muted); }
.btn.quiet:hover:not(:disabled) { background: var(--surface_2); }
.btn.small { min-height: 36px; padding: 0 12px; font-size: 14px; }
.btn.small svg { width: 18px; height: 18px; }
.btn.wide { width: 100%; }

.icon_btn {
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	border: 0;
	background: transparent;
	color: var(--text);
	cursor: pointer;
	flex: none;
}
.icon_btn:hover { background: var(--surface_2); }
.icon_btn:disabled { opacity: 0.4; }

button:focus-visible, a:focus-visible, input:focus-visible, label:focus-within.drop {
	outline: 2px solid var(--accent);
	outline-offset: 2px;
}

/* ------------------------------------------------------------------------------------------------------------------------- */
/* Anmeldung */

.login { display: grid; place-items: center; min-height: calc(100dvh - var(--bar_height)); padding: 24px 16px 60px; }
.login_card {
	width: 100%;
	max-width: 380px;
	text-align: center;
	background: var(--surface);
	border-radius: 20px;
	padding: 36px 28px 28px;
	box-shadow: var(--shadow);
}
.login_card h1 { font-size: 26px; margin-bottom: 8px; }
.login_card .muted { margin-bottom: 26px; font-size: 14px; }
.register { margin-top: 22px; padding-top: 22px; border-top: 1px solid var(--line); display: grid; gap: 12px; }
.note { margin-top: 16px; font-size: 14px; min-height: 1em; }
.note.error { color: var(--danger); }

/* ------------------------------------------------------------------------------------------------------------------------- */
/* Aufteilung */

.app { display: block; }
.list_pane, .detail_pane { padding: 16px max(16px, env(safe-area-inset-right)) calc(32px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left)); }
.app.show_detail .list_pane { display: none; }
.app:not(.show_detail) .detail_pane { display: none; }

@media (min-width: 900px) {
	.app { display: grid; grid-template-columns: 340px minmax(0, 1fr); }
	.app .list_pane, .app .detail_pane { display: block !important; }
	.list_pane {
		position: sticky;
		top: var(--bar_height);
		height: calc(100dvh - var(--bar_height));
		overflow-y: auto;
		border-right: 1px solid var(--line);
		padding: 20px 16px;
	}
	.detail_pane { padding: 20px 32px 48px; max-width: 980px; }
	.back { display: none !important; }
}

.pane_head { display: flex; align-items: baseline; justify-content: space-between; margin: 4px 4px 14px; }
.pane_head h2 { font-size: 22px; }

.search {
	display: flex;
	align-items: center;
	gap: 8px;
	height: 42px;
	padding: 0 12px;
	margin-bottom: 12px;
	border-radius: var(--radius_small);
	background: var(--surface);
	border: 1px solid var(--line);
	color: var(--muted);
}
.search input { flex: 1; border: 0; background: transparent; color: var(--text); font: inherit; outline: none; min-width: 0; }

/* ------------------------------------------------------------------------------------------------------------------------- */
/* Maschinenliste */

.machines { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
.machine {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 14px 12px 14px 14px;
	border-radius: var(--radius);
	background: var(--surface);
	box-shadow: var(--shadow);
	color: var(--text);
	border: 1.5px solid transparent;
	cursor: pointer;
	transition: border-color 0.15s, transform 0.08s;
	min-width: 0;
}
.machine:active { transform: scale(0.99); }
.machine.selected { border-color: var(--accent); }
.machine .body { flex: 1; min-width: 0; }
.machine .line1 { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.machine .code { font-weight: 650; font-size: 15px; letter-spacing: 0.02em; white-space: nowrap; flex: none; }
.machine .note { color: var(--muted); font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 1; }
.machine .line2 { color: var(--muted); font-size: 13px; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.machine > svg { color: var(--off); }

.dot { width: 10px; height: 10px; border-radius: 50%; flex: none; background: var(--off); }
.dot.online { background: var(--ok); box-shadow: 0 0 0 4px var(--ok_soft); }
.dot.busy { background: var(--accent); box-shadow: 0 0 0 4px var(--accent_soft); animation: blink 1.2s infinite; }
.dot.blocked { background: var(--danger); box-shadow: 0 0 0 4px var(--danger_soft); }

.empty { color: var(--muted); text-align: center; padding: 28px 12px; font-size: 14px; }
.empty:empty { display: none; }

/* ------------------------------------------------------------------------------------------------------------------------- */
/* Maschine */

.placeholder { display: grid; place-items: center; gap: 10px; color: var(--off); padding-top: 22vh; }
.placeholder svg { width: 56px; height: 56px; stroke-width: 1.2; }
@media (max-width: 899px) { .placeholder { display: none; } }

.detail_top { display: flex; align-items: center; gap: 8px; margin: 0 0 14px -8px; }
.detail_top .title { flex: 1; min-width: 0; }
.detail_top h1 { font-size: 24px; letter-spacing: 0.02em; white-space: nowrap; }
.detail_top #d_note { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (min-width: 900px) { .detail_top { margin-left: 0; } .detail_top h1 { font-size: 28px; } }

.badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	height: 28px;
	padding: 0 12px;
	border-radius: 14px;
	font-size: 13px;
	font-weight: 600;
	background: var(--surface_2);
	color: var(--muted);
	white-space: nowrap;
}
.badge.online { background: var(--ok_soft); color: var(--ok); }
.badge.busy { background: var(--accent_soft); color: var(--accent); }
.badge.blocked { background: var(--danger_soft); color: var(--danger); }

.job { background: var(--accent_soft); border-radius: var(--radius_small); padding: 10px 14px 12px; margin-bottom: 14px; font-size: 14px; }
.job_line { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 8px; }

.progress { height: 6px; border-radius: 3px; background: color-mix(in srgb, var(--accent) 18%, transparent); overflow: hidden; }
.progress i { display: block; height: 100%; width: 0; background: var(--accent); border-radius: 3px; transition: width 0.4s; }
.progress.thin { height: 4px; }
.progress.indeterminate i { width: 35% !important; animation: slide 1.2s infinite ease-in-out; }

/* Reiter */
.tabs {
	position: sticky;
	top: calc(var(--bar_height) + env(safe-area-inset-top));
	z-index: 10;
	display: flex;
	gap: 4px;
	margin: 0 -16px 18px;
	padding: 8px 16px;
	background: color-mix(in srgb, var(--bg) 88%, transparent);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	overflow-x: auto;
	scrollbar-width: none;
}
.tabs a {
	padding: 7px 14px;
	border-radius: 18px;
	color: var(--muted);
	font-size: 14px;
	font-weight: 560;
	white-space: nowrap;
	cursor: pointer;
}
.tabs a.on { background: var(--text); color: var(--bg); }
@media (min-width: 900px) { .tabs { margin: 0 -32px 22px; padding: 8px 32px; } }

.tab { animation: fade 0.18s; }

/* Kacheln */
.tiles { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
@media (min-width: 640px) { .tiles { grid-template-columns: repeat(4, 1fr); } }
.tile { background: var(--surface); border-radius: var(--radius); padding: 14px; box-shadow: var(--shadow); min-width: 0; }
.tile .label { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; }
.tile .value { font-size: 18px; font-weight: 650; margin-top: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tile .sub { font-size: 12.5px; color: var(--muted); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tile .progress { margin-top: 8px; }

.banner {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	padding: 12px 14px;
	border-radius: var(--radius_small);
	margin-bottom: 12px;
	font-size: 14px;
	background: var(--surface_2);
}
.banner svg { margin-top: 1px; }
.banner.ok { background: var(--ok_soft); color: var(--ok); }
.banner.warn { background: var(--warn_soft); color: var(--warn); }
.banner.error { background: var(--danger_soft); color: var(--danger); }

/* Befehle */
.actions { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
@media (min-width: 640px) { .actions { grid-template-columns: repeat(3, 1fr); } }
.action {
	display: flex;
	align-items: center;
	gap: 10px;
	min-height: 56px;
	padding: 0 14px;
	border-radius: var(--radius);
	border: 0;
	background: var(--surface);
	box-shadow: var(--shadow);
	color: var(--text);
	font: inherit;
	font-weight: 560;
	text-align: left;
	cursor: pointer;
	transition: transform 0.08s, opacity 0.15s;
}
.action svg { width: 22px; height: 22px; color: var(--accent); }
.action:active:not(:disabled) { transform: scale(0.98); }
.action:disabled { opacity: 0.4; cursor: default; }
.action.danger svg { color: var(--danger); }
.action.quiet { background: transparent; box-shadow: none; border: 1px dashed var(--line); }
.action.quiet svg { color: var(--muted); }

/* Einzelheiten */
.facts {
	margin: 0;
	background: var(--surface);
	border-radius: var(--radius);
	box-shadow: var(--shadow);
	padding: 4px 14px;
	display: grid;
	grid-template-columns: minmax(110px, 34%) 1fr;
}
.facts dt, .facts dd { padding: 10px 0; border-top: 1px solid var(--line); margin: 0; font-size: 14px; min-width: 0; }
.facts dt { color: var(--muted); padding-right: 12px; }
.facts dd { overflow-wrap: anywhere; }
.facts dt:first-of-type, .facts dt:first-of-type + dd { border-top: 0; }

/* Update */
.steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.step { background: var(--surface); border-radius: var(--radius); box-shadow: var(--shadow); padding: 16px; display: grid; gap: 10px; }
.step_head { display: flex; align-items: center; gap: 10px; font-weight: 620; }
.step_head b {
	display: grid;
	place-items: center;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--surface_2);
	color: var(--muted);
	font-size: 13px;
}
.step.done .step_head b { background: var(--ok); color: #fff; }
.step.active .step_head b { background: var(--accent); color: var(--on_accent); }
.step.locked { opacity: 0.55; }
.step .btn { justify-self: start; }

.drop {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 18px;
	border: 1.5px dashed var(--line);
	border-radius: var(--radius_small);
	color: var(--muted);
	cursor: pointer;
	transition: border-color 0.15s, background 0.15s;
}
.drop input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.drop.over, .drop:hover { border-color: var(--accent); background: var(--accent_soft); color: var(--accent); }
.drop svg { width: 26px; height: 26px; }

.check { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; padding: 10px 12px; border-radius: var(--radius_small); background: var(--surface_2); }
.check.ok { background: var(--ok_soft); color: var(--ok); }
.check.error { background: var(--danger_soft); color: var(--danger); }
.check.busy { background: var(--accent_soft); color: var(--accent); }
.check .lines { display: grid; gap: 2px; }
.check .lines span { color: var(--text); opacity: 0.8; font-size: 13px; }

/* Dateien */
.toolbar { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.seg { display: inline-flex; padding: 3px; border-radius: 11px; background: var(--surface_2); }
.seg button {
	border: 0;
	background: transparent;
	color: var(--muted);
	font: inherit;
	font-size: 14px;
	font-weight: 560;
	padding: 6px 12px;
	border-radius: 8px;
	cursor: pointer;
}
.seg button.on { background: var(--surface); color: var(--text); box-shadow: var(--shadow); }
@media (max-width: 420px) { #f_upload_label span { display: none; } #f_upload_label { padding: 0 10px; } }

.cardbar { display: grid; gap: 6px; margin: 0 2px 14px; }

.files { list-style: none; margin: 0 0 14px; padding: 0; background: var(--surface); border-radius: var(--radius); box-shadow: var(--shadow); }
.files:empty { display: none; }
.file { display: flex; align-items: center; gap: 12px; padding: 10px 6px 10px 14px; border-top: 1px solid var(--line); }
.file:first-child { border-top: 0; }
.file > svg { color: var(--muted); }
.file.is_log > svg { color: var(--accent); }
.file .body { flex: 1; min-width: 0; }
.file .name { font-family: ui-monospace, "SF Mono", Consolas, monospace; font-size: 14px; font-weight: 560; }
.file .meta { font-size: 12.5px; color: var(--muted); }
.file .tag { font-size: 11px; padding: 1px 6px; border-radius: 6px; background: var(--surface_2); color: var(--muted); margin-left: 6px; font-family: system-ui, sans-serif; font-weight: 500; }
.file a.icon_btn { color: var(--accent); }
.file .icon_btn.del { color: var(--muted); }
.file .icon_btn.del:hover { color: var(--danger); }

/* Protokoll */
.history { list-style: none; margin: 0 0 14px; padding: 0; background: var(--surface); border-radius: var(--radius); box-shadow: var(--shadow); }
.history:empty { display: none; }
.history li { display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; padding: 10px 14px; border-top: 1px solid var(--line); font-size: 14px; }
.history li:first-child { border-top: 0; }
.history .what { font-weight: 560; min-width: 0; overflow-wrap: anywhere; }
.history .when { color: var(--muted); font-size: 12.5px; white-space: nowrap; text-align: right; }
.history .info { grid-column: 1 / -1; color: var(--muted); font-size: 13px; overflow-wrap: anywhere; }
.history .info.error { color: var(--danger); }

/* ------------------------------------------------------------------------------------------------------------------------- */
/* Dialoge: schmal als Blatt von unten, breit in der Mitte */

dialog.sheet {
	border: 0;
	padding: 0;
	width: 100%;
	max-width: 100%;
	margin: auto 0 0;
	border-radius: 20px 20px 0 0;
	background: var(--surface);
	color: var(--text);
	box-shadow: var(--shadow_lift);
}
dialog.sheet[open] { animation: rise 0.22s cubic-bezier(0.2, 0.9, 0.3, 1); }
dialog.sheet::backdrop { background: rgb(8 10 14 / 45%); backdrop-filter: blur(2px); }
dialog.sheet form { padding: 24px 20px calc(16px + env(safe-area-inset-bottom)); display: grid; gap: 12px; }
dialog.sheet h3 { font-size: 19px; text-transform: none; letter-spacing: -0.01em; color: var(--text); margin: 0; }
dialog.sheet p { font-size: 15px; }
.sheet_icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--danger_soft); color: var(--danger); }
.sheet_icon.warn { background: var(--warn_soft); color: var(--warn); }
.sheet_icon.info { background: var(--accent_soft); color: var(--accent); }
.sheet_icon svg { width: 24px; height: 24px; }
.sheet_buttons { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 8px; }
.sheet_buttons .btn.quiet { background: var(--surface_2); color: var(--text); }

@media (min-width: 640px) {
	dialog.sheet { max-width: 440px; margin: auto; border-radius: 20px; }
	dialog.sheet[open] { animation: pop 0.18s ease-out; }
	dialog.sheet form { padding: 24px; }
}

.field { display: grid; gap: 6px; font-size: 13px; color: var(--muted); }
.field input {
	height: 46px;
	padding: 0 12px;
	border-radius: var(--radius_small);
	border: 1px solid var(--line);
	background: var(--bg);
	color: var(--text);
	font: 16px ui-monospace, "SF Mono", Consolas, monospace;
}
#ud_name { font-family: inherit; }
#up_hint.error { color: var(--danger); }

/* ------------------------------------------------------------------------------------------------------------------------- */
/* Meldungen */

.toasts {
	position: fixed;
	left: 50%;
	bottom: calc(18px + env(safe-area-inset-bottom));
	transform: translateX(-50%);
	z-index: 50;
	display: grid;
	gap: 8px;
	width: min(92vw, 420px);
	pointer-events: none;
}
.toast {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 12px 16px;
	border-radius: 12px;
	background: var(--text);
	color: var(--bg);
	box-shadow: var(--shadow_lift);
	font-size: 14px;
	animation: rise 0.2s ease-out;
	pointer-events: auto;
}
.toast svg { width: 18px; height: 18px; }
.toast.ok svg { color: var(--ok); }
.toast.error { background: var(--danger); color: #fff; }
.toast.out { opacity: 0; transform: translateY(8px); transition: 0.25s; }

@keyframes fade { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
@keyframes rise { from { transform: translateY(24px); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes pop { from { transform: scale(0.96); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes blink { 50% { opacity: 0.35; } }
@keyframes slide { 0% { transform: translateX(-100%); } 100% { transform: translateX(300%); } }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation: none !important; transition: none !important; }
}

/* Dosier-Log: Tabellen der Auswertung */
.table_box { overflow-x: auto; background: var(--surface); border-radius: var(--radius); box-shadow: var(--shadow); }
.dtable { width: 100%; border-collapse: collapse; font-size: 13px; font-variant-numeric: tabular-nums; }
.dtable th, .dtable td { padding: 7px 10px; text-align: right; white-space: nowrap; border-bottom: 1px solid var(--line, rgba(127, 127, 127, 0.18)); }
.dtable th { font-weight: 600; color: var(--muted); font-size: 12px; }
.dtable td.left, .dtable th.left { text-align: left; }
.dtable tr:last-child td { border-bottom: 0; }
.dtable td.bad { color: var(--danger); font-weight: 600; }
.dtable td.good { color: var(--ok); }
.toolbar.wrap { flex-wrap: wrap; }
.toolbar.wrap .btn { white-space: nowrap; }
@media (max-width: 420px) { .tabs a { padding: 7px 10px; } }

/* Ton bei fertigem Cocktail, Filter der Ereignisse */
.icon_btn.sound { color: var(--muted); }
.icon_btn.sound.on { color: var(--accent); background: var(--accent_soft); }
.chip.on { background: var(--danger_soft); color: var(--danger); border-color: transparent; }
.dtable td.left.bad { color: var(--danger); }
#d_events td:last-child { white-space: normal; min-width: 260px; }
