/* Schreibfeder – Editor
 * Farben und Schriften kommen zur Laufzeit aus dem aktiven Style (siehe --sf-…).
 * Wer etwas fest einstellen möchte, kann die Variablen im eigenen Style überschreiben:
 *   .sf-editor { --sf-accent: #a0522d !important; }
 */

.sf-editor {
	--sf-bg: #fff;
	--sf-fg: #222;
	--sf-accent: #105289;
	--sf-panel: #fff;
	--sf-border: color-mix(in srgb, var(--sf-fg) 22%, var(--sf-bg));
	--sf-soft: color-mix(in srgb, var(--sf-fg) 5%, var(--sf-bg));
	--sf-softer: color-mix(in srgb, var(--sf-fg) 9%, var(--sf-bg));
	--sf-hover: color-mix(in srgb, var(--sf-accent) 13%, transparent);
	--sf-active: color-mix(in srgb, var(--sf-accent) 20%, transparent);
	--sf-muted: color-mix(in srgb, var(--sf-fg) 58%, var(--sf-bg));
	--sf-icon: 18px;
	--sf-radius: 4px;
	--sf-base: 13px;
	--sf-line: 1.48;
	--sf-ui-font: inherit;
	--sf-content-font: inherit;
	--sf-quote-bg: var(--sf-soft);
	--sf-quote-border: var(--sf-border);
	position: relative;
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	margin: 0;
	color: var(--sf-fg);
	background: var(--sf-bg);
	border: 1px solid var(--sf-border);
	border-radius: var(--sf-radius);
	font-family: var(--sf-ui-font);
	text-align: left;
}
.sf-editor *, .sf-editor *::before, .sf-editor *::after { box-sizing: border-box; }
.sf-editor.sf-focus { border-color: color-mix(in srgb, var(--sf-accent) 60%, var(--sf-border)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--sf-accent) 14%, transparent); }

/* ---------- Werkzeugleiste ---------- */
.sf-toolbar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 2px 0;
	padding: 4px 4px;
	background: var(--sf-soft);
	border-bottom: 1px solid var(--sf-border);
	border-radius: var(--sf-radius) var(--sf-radius) 0 0;
	z-index: 3;
}
.sf-sticky .sf-toolbar { position: sticky; top: 0; }
.sf-group { display: flex; align-items: center; gap: 1px; padding: 0 3px; }
.sf-group + .sf-group { border-left: 1px solid color-mix(in srgb, var(--sf-fg) 14%, transparent); }

.sf-editor .sf-btn {
	all: unset;
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 1px;
	min-width: calc(var(--sf-icon) + 10px);
	height: calc(var(--sf-icon) + 10px);
	padding: 0 4px;
	border-radius: calc(var(--sf-radius) * .8);
	color: var(--sf-fg);
	cursor: pointer;
	line-height: 1;
	font: 600 12px/1 var(--sf-ui-font);
	user-select: none;
	-webkit-tap-highlight-color: transparent;
}
.sf-editor .sf-btn:hover { background: var(--sf-hover); color: var(--sf-accent); }
.sf-editor .sf-btn:focus-visible { outline: 2px solid var(--sf-accent); outline-offset: 1px; }
.sf-editor .sf-btn.sf-active, .sf-editor .sf-btn.sf-open { background: var(--sf-active); color: var(--sf-accent); }
.sf-editor .sf-btn[disabled] { opacity: .35; cursor: default; background: none; color: var(--sf-fg); }
.sf-editor .sf-icon { width: var(--sf-icon); height: var(--sf-icon); display: block; flex: none; }
.sf-editor .sf-caret { width: calc(var(--sf-icon) * .6); height: calc(var(--sf-icon) * .6); margin-left: -1px; opacity: .7; }
.sf-editor .sf-btn-text { padding: 0 2px; font-size: 12px; letter-spacing: .02em; }
.sf-editor .sf-colorbar { fill: var(--sf-accent); }

/* ---------- Schreibfläche ---------- */
.sf-body { position: relative; }
.sf-area {
	display: block;
	outline: none;
	overflow-y: auto;
	padding: 10px 12px;
	color: var(--sf-fg);
	background: var(--sf-bg);
	font-family: var(--sf-content-font);
	font-size: var(--sf-base);
	line-height: var(--sf-line);
	word-wrap: break-word;
	overflow-wrap: anywhere;
	white-space: normal;
	cursor: text;
	border-radius: 0 0 var(--sf-radius) var(--sf-radius);
	resize: vertical;
}
.sf-empty .sf-area::before {
	content: attr(data-placeholder);
	position: absolute;
	color: var(--sf-muted);
	pointer-events: none;
}
.sf-editor textarea.sf-source {
	display: block;
	width: 100% !important;
	max-width: 100%;
	margin: 0;
	border: 0 !important;
	border-radius: 0 0 var(--sf-radius) var(--sf-radius) !important;
	box-shadow: none !important;
	padding: 10px 12px;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
	font-size: 12.5px;
	line-height: 1.5;
	background: var(--sf-bg);
	color: var(--sf-fg);
	resize: vertical;
}

/* Inhalte im Editor – nah an der Darstellung im Beitrag */
.sf-content strong { font-weight: bold; }
.sf-content a { color: var(--sf-accent); text-decoration: underline; cursor: text; }
.sf-content span[data-size] { font-size: calc(var(--sf-base) * var(--sf-size) / 100); line-height: normal; }
.sf-content span[data-color="auto"] { color: var(--sf-fg) !important; }
.sf-content img { max-width: 100%; height: auto; vertical-align: middle; }
.sf-content img:not(.sf-smiley) { cursor: default; }
.sf-content img.sf-smiley { vertical-align: middle; max-width: none; }
.sf-content blockquote {
	margin: 6px 1px 6px 14px;
	padding: 6px 10px;
	background: var(--sf-quote-bg);
	border: 1px solid var(--sf-quote-border);
	border-left: 3px solid color-mix(in srgb, var(--sf-accent) 55%, var(--sf-quote-border));
	border-radius: 2px;
	font-size: inherit;
	overflow: visible;
}
.sf-content blockquote[data-cite]::before {
	content: attr(data-cite);
	display: block;
	font-weight: bold;
	font-size: .92em;
	margin-bottom: 2px;
	color: var(--sf-muted);
	user-select: none;
	pointer-events: none;
}
.sf-content pre {
	margin: 6px 0;
	padding: 8px 10px;
	background: var(--sf-softer);
	border: 1px solid var(--sf-border);
	border-radius: 3px;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
	font-size: .92em;
	line-height: 1.45;
	white-space: pre-wrap;
	overflow-wrap: anywhere;
	color: var(--sf-fg);
}
.sf-content pre[data-lang]::before { content: attr(data-lang); float: right; font-size: .8em; color: var(--sf-muted); margin-left: 8px; }
.sf-content ul, .sf-content ol { margin: 4px 0 4px 2.2em; padding: 0; }
.sf-content ul { list-style-type: disc; }
.sf-content ul ul { list-style-type: circle; }
.sf-content ul ul ul { list-style-type: square; }
.sf-content ol { list-style-type: decimal; }
.sf-content ol[data-type="a"] { list-style-type: lower-alpha; }
.sf-content ol[data-type="A"] { list-style-type: upper-alpha; }
.sf-content ol[data-type="i"] { list-style-type: lower-roman; }
.sf-content ol[data-type="I"] { list-style-type: upper-roman; }
.sf-content li { margin: 1px 0; list-style: inherit; }
.sf-content hr { border: 0; border-top: 1px solid var(--sf-border); height: 0; margin: 10px 0; }
.sf-content table {
	border-collapse: collapse;
	margin: 6px 0;
	max-width: 100%;
}
.sf-content td, .sf-content th {
	border: 1px solid var(--sf-border);
	padding: 4px 8px;
	min-width: 4em;
	vertical-align: top;
	text-align: left;
}
.sf-content th { background: var(--sf-soft); font-weight: bold; }
.sf-content td:focus-within, .sf-content th:focus-within { outline: 2px solid color-mix(in srgb, var(--sf-accent) 45%, transparent); outline-offset: -2px; }
.sf-content sup, .sf-content sub { font-size: .75em; line-height: 0; }

/* Bausteine: eigene BBCodes und Dateianhänge */
.sf-chip {
	display: inline-block;
	margin: 0 2px;
	padding: 0 6px;
	border-radius: 999px;
	font: 600 11px/1.6 var(--sf-ui-font);
	vertical-align: 1px;
	white-space: nowrap;
	background: color-mix(in srgb, var(--sf-accent) 14%, var(--sf-bg));
	color: var(--sf-accent);
	border: 1px solid color-mix(in srgb, var(--sf-accent) 30%, transparent);
	user-select: all;
	cursor: default;
}
.sf-chip-close { opacity: .8; }
.sf-chip-attach { color: var(--sf-fg); background: var(--sf-softer); border-color: var(--sf-border); }

/* ---------- Aufklapp-Fenster ---------- */
.sf-pop {
	position: absolute;
	z-index: 30;
	min-width: 160px;
	max-width: min(420px, calc(100vw - 24px));
	padding: 6px;
	background: var(--sf-panel);
	color: var(--sf-fg);
	border: 1px solid var(--sf-border);
	border-radius: calc(var(--sf-radius) + 2px);
	box-shadow: 0 8px 28px rgba(0, 0, 0, .18), 0 1px 3px rgba(0, 0, 0, .1);
	font-family: var(--sf-ui-font);
	font-size: 13px;
}
.sf-dark .sf-pop { box-shadow: 0 10px 30px rgba(0, 0, 0, .55); }
.sf-menu { display: flex; flex-direction: column; gap: 1px; }
.sf-menu-compact { flex-direction: row; }
.sf-editor .sf-menu-item {
	all: unset;
	box-sizing: border-box;
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 6px 10px 6px 8px;
	border-radius: var(--sf-radius);
	cursor: pointer;
	color: var(--sf-fg);
	font: 13px/1.3 var(--sf-ui-font);
	white-space: nowrap;
}
.sf-menu-compact .sf-menu-item { padding: 6px; }
.sf-menu-compact .sf-menu-item span { display: none; }
.sf-editor .sf-menu-item:hover, .sf-editor .sf-menu-item:focus-visible { background: var(--sf-hover); color: var(--sf-accent); }
.sf-editor .sf-menu-item.sf-active { background: var(--sf-active); color: var(--sf-accent); }
.sf-size-menu .sf-menu-item span { line-height: 1.2; }

.sf-colors { width: 232px; }
.sf-editor .sf-color-auto {
	all: unset; box-sizing: border-box; display: block; width: 100%; padding: 5px 8px; margin-bottom: 6px;
	border: 1px solid var(--sf-border); border-radius: var(--sf-radius); cursor: pointer; text-align: center; font: 12px/1.3 var(--sf-ui-font); color: var(--sf-fg);
}
.sf-editor .sf-color-auto:hover { background: var(--sf-hover); }
.sf-color-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 3px; }
.sf-editor .sf-swatch {
	all: unset; box-sizing: border-box; display: block; aspect-ratio: 1; border-radius: 3px; cursor: pointer;
	border: 1px solid color-mix(in srgb, var(--sf-fg) 20%, transparent);
}
.sf-editor .sf-swatch:hover { transform: scale(1.18); box-shadow: 0 1px 4px rgba(0, 0, 0, .3); }
.sf-color-custom { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 8px; font-size: 12px; }
.sf-color-custom label { display: flex; align-items: center; gap: 6px; }
.sf-color-custom input[type=color] { width: 34px; height: 24px; padding: 0; border: 1px solid var(--sf-border); background: none; cursor: pointer; }

.sf-tablepick { width: 196px; }
.sf-tgrid { display: grid; gap: 2px; }
.sf-editor .sf-tcell {
	all: unset; box-sizing: border-box; display: block; aspect-ratio: 1; cursor: pointer;
	border: 1px solid color-mix(in srgb, var(--sf-fg) 22%, transparent); border-radius: 2px; background: var(--sf-bg);
}
.sf-editor .sf-tcell.sf-on { background: color-mix(in srgb, var(--sf-accent) 30%, var(--sf-bg)); border-color: var(--sf-accent); }
.sf-tlabel { text-align: center; margin: 6px 0 0; font-size: 13px; font-weight: 600; color: var(--sf-fg); font-variant-numeric: tabular-nums; }
.sf-tlabel-hint { text-align: center; margin: 0 0 4px; font-size: 11px; color: var(--sf-muted); }
.sf-check { display: flex; align-items: center; gap: 4px; justify-content: center; font-size: 12px; cursor: pointer; }

.sf-form { width: 300px; max-width: 100%; display: flex; flex-direction: column; gap: 8px; padding: 4px; }
.sf-field { display: flex; flex-direction: column; gap: 3px; font-size: 12px; color: var(--sf-muted); }
.sf-editor .sf-field input {
	box-sizing: border-box; width: 100%; padding: 6px 8px; font: 13px/1.3 var(--sf-ui-font);
	color: var(--sf-fg); background: var(--sf-bg); border: 1px solid var(--sf-border); border-radius: var(--sf-radius);
}
.sf-editor .sf-field input:focus { outline: 2px solid color-mix(in srgb, var(--sf-accent) 40%, transparent); border-color: var(--sf-accent); }
.sf-hint { margin: 0; font-size: 11.5px; color: var(--sf-muted); line-height: 1.4; }
.sf-form-buttons { display: flex; justify-content: flex-end; gap: 6px; flex-wrap: wrap; }
.sf-form-buttons .sf-left { margin-right: auto; }
.sf-editor .sf-btn-primary, .sf-editor .sf-btn-secondary, .sf-editor .sf-link-btn {
	all: unset; box-sizing: border-box; padding: 5px 12px; border-radius: var(--sf-radius); cursor: pointer;
	font: 600 12px/1.3 var(--sf-ui-font);
}
.sf-editor .sf-btn-primary { background: var(--sf-accent); color: #fff; }
.sf-editor .sf-btn-primary:hover { filter: brightness(1.1); }
.sf-editor .sf-btn-secondary { color: var(--sf-fg); border: 1px solid var(--sf-border); }
.sf-editor .sf-btn-secondary:hover { background: var(--sf-hover); }

/* ---------- Tabellenleiste ---------- */
.sf-tablebar {
	flex: 1 0 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 1px;
	margin: 2px -4px -4px; padding: 3px 6px;
	border-top: 1px solid color-mix(in srgb, var(--sf-fg) 12%, transparent);
	background: color-mix(in srgb, var(--sf-accent) 7%, transparent);
}
.sf-tablebar[hidden] { display: none; }
.sf-tablebar-label { display: inline-flex; align-items: center; gap: 5px; margin-right: 6px; font-size: 12px; font-weight: bold; color: var(--sf-accent); }
.sf-tablebar-label .sf-icon { width: calc(var(--sf-icon) * .85); height: calc(var(--sf-icon) * .85); }
.sf-sep { width: 1px; align-self: stretch; margin: 3px 2px; background: color-mix(in srgb, var(--sf-fg) 16%, transparent); }

/* ---------- Hinweise ---------- */
.sf-banner {
	display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; padding: 6px 10px; font-size: 12.5px;
	background: color-mix(in srgb, var(--sf-accent) 10%, var(--sf-bg)); border-bottom: 1px solid var(--sf-border);
}
.sf-banner[hidden] { display: none; }
.sf-banner-text { margin-right: auto; }
.sf-editor .sf-link-btn { color: var(--sf-accent); padding: 3px 8px; }
.sf-editor .sf-link-btn:hover { background: var(--sf-hover); }
.sf-toast {
	position: absolute; right: 10px; bottom: 10px; z-index: 40; padding: 7px 12px; border-radius: var(--sf-radius);
	background: var(--sf-fg); color: var(--sf-bg); font-size: 12.5px; box-shadow: 0 4px 14px rgba(0, 0, 0, .2);
	transition: opacity .5s; max-width: 80%;
}
.sf-toast-out { opacity: 0; }

/* ---------- Vollbild ---------- */
html.sf-noscroll, html.sf-noscroll body { overflow: hidden !important; }
.sf-editor.sf-fullscreen {
	position: fixed; inset: 0; z-index: 10000; border-radius: 0; border: 0; display: flex; flex-direction: column;
	background: var(--sf-bg);
}
.sf-fullscreen .sf-toolbar { border-radius: 0; position: static; }
.sf-fullscreen .sf-body { flex: 1; display: flex; flex-direction: column; min-height: 0; }
.sf-fullscreen .sf-area { flex: 1; max-height: none !important; min-height: 0 !important; border-radius: 0; resize: none; padding: 16px max(16px, calc((100% - 920px) / 2)); }
.sf-fullscreen textarea.sf-source { flex: 1; height: auto !important; resize: none; }

/* phpBB-Dateiablage über dem Editor sichtbar machen */
.sf-editor .drag-n-drop { outline: none; }

@media (max-width: 700px) {
	.sf-editor { --sf-icon: 20px !important; }
	.sf-group { padding: 0 1px; }
	.sf-group + .sf-group { border-left: 0; }
	.sf-area { padding: 8px 9px; }
	.sf-pop { max-width: calc(100vw - 16px); }
}

@media (prefers-reduced-motion: reduce) {
	.sf-toast { transition: none; }
}
