/* Familien-Portal – helles Formular, dunkle Live-Vorschau des Dashboards.
   Die Akzentfarbe (--accent) ist die Farbe, die die Familie gerade wählt. */

@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-display: swap;
  font-weight: 200 800;
  src: url("../fonts/manrope-latin-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-display: swap;
  font-weight: 200 800;
  src: url("../fonts/manrope-latin-ext-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* VOLT-Look: schwarz wie das Logo, Rot aus dem Ring (--volt kommt aus PORTAL_COLOR) */
:root {
  color-scheme: dark;
  --paper: #050506;
  --sheet: #0d0d10;
  --sheet-2: #15151a;
  --ink: #f4f4f5;
  --ink-2: #a9a9b2;
  --ink-3: #6d6d77;
  --rule: rgba(255, 255, 255, .08);
  --rule-strong: rgba(255, 255, 255, .16);
  --input-bg: #08080a;
  --accent: #cf181e;
  --accent-ink: #ffffff;
  --accent-soft: color-mix(in srgb, var(--accent) 14%, transparent);
  --good: #5ad08f; --good-bg: rgba(46, 160, 95, .15);
  --warn: #f2bd5c; --warn-bg: rgba(242, 170, 40, .13);
  --bad: #ff7b6e; --bad-bg: rgba(240, 70, 60, .15);
  --info: #9fbbe6; --info-bg: rgba(90, 130, 200, .15);
  --r-s: 7px;
  --r: 11px;
  --r-l: 18px;
  --lift: 0 0 0 1px var(--rule), 0 30px 60px -34px rgba(0, 0, 0, .95);
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; background: var(--paper); }
body {
  --primary: var(--volt);
  --primary-ink: #ffffff;
  --volt-glow: color-mix(in srgb, var(--volt) 55%, transparent);
  margin: 0;
  min-height: 100vh;
  background:
    radial-gradient(1100px 520px at 50% -260px, color-mix(in srgb, var(--volt) 13%, transparent), transparent 70%),
    var(--paper);
  color: var(--ink);
  font: 500 15px/1.55 "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;
  font-feature-settings: "ss01", "cv11";
  -webkit-font-smoothing: antialiased;
  position: relative;
  isolation: isolate;  /* damit der Ring (.eclipse) über dem Hintergrund liegt */
  overflow-x: hidden;
}
::selection { background: color-mix(in srgb, var(--volt) 55%, transparent); color: #fff; }
img { max-width: 100%; display: block; }
a { color: inherit; }
.i { flex: none; vertical-align: -0.15em; }
[hidden] { display: none !important; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* Der Ring aus dem Logo – groß, leise, hinter allem */
.eclipse {
  position: fixed; z-index: -1; pointer-events: none;
  width: 980px; height: 980px; right: -430px; top: -470px; border-radius: 50%;
  border: 2px solid color-mix(in srgb, var(--volt) 70%, transparent);
  box-shadow: 0 0 34px 4px color-mix(in srgb, var(--volt) 40%, transparent),
              inset 0 0 70px 6px color-mix(in srgb, var(--volt) 22%, transparent);
  opacity: .5;
}
@media (max-width: 720px) { .eclipse { width: 460px; height: 460px; right: -300px; top: -290px; opacity: .4; } }

h1, h2, h3 { margin: 0; line-height: 1.15; letter-spacing: -0.015em; }
h1 { font-size: clamp(1.75rem, 1.2rem + 2vw, 2.4rem); font-weight: 800; letter-spacing: -0.03em; }
h2 { font-size: 1.125rem; font-weight: 750; }
h3 { font-size: .9375rem; font-weight: 700; }
p { margin: 0; }
.muted { color: var(--ink-2); }
.faint { color: var(--ink-3); }
.small { font-size: .8125rem; }
.mono { font-family: ui-monospace, "SF Mono", "Cascadia Mono", Consolas, monospace; font-size: .85em; }

/* ---------- Kopfzeile ---------- */
.top {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  max-width: 1240px; margin: 0 auto; padding: 18px 24px;
}
.top .mark { display: inline-flex; align-items: center; text-decoration: none; }

/* VOLT-Marke: Logo + Wortmarke */
.volt-mark { display: inline-flex; align-items: center; gap: 11px; }
.volt-logo { width: 38px; height: 38px; border-radius: 50%; flex: none; object-fit: cover; background: #000;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--volt) 35%, transparent), 0 0 18px -2px var(--volt-glow); }
.volt-mark b { font-size: 1.125rem; font-weight: 800; letter-spacing: .16em; }
.volt-tag { color: var(--ink-3); font-weight: 650; font-size: .8125rem; padding-left: 11px; border-left: 1px solid var(--rule-strong); }
@media (max-width: 420px) { .volt-tag { display: none; } }

/* Start & Anmeldung: das Logo spielt einmal seinen Einschlag ab und bleibt leuchtend stehen */
.solo-mark { display: flex; flex-direction: column; align-items: center; gap: 14px; margin-bottom: 26px; text-align: center; }
.volt-hero { width: 148px; height: 148px; border-radius: 50%; object-fit: cover; background: #000;
  box-shadow: 0 0 60px -6px var(--volt-glow); }
.solo-mark b { font-size: 1.375rem; font-weight: 800; letter-spacing: .2em; padding-left: .2em; }
.solo-mark span { color: var(--ink-3); font-weight: 650; font-size: .8125rem; letter-spacing: .04em; margin-top: -10px; }

.volt-foot { display: flex; gap: 10px; align-items: center; margin-top: 40px; color: var(--ink-3); font-size: .875rem; }
.volt-foot img { width: 26px; height: 26px; border-radius: 50%; background: #000; }
.volt-foot b { color: var(--ink-2); letter-spacing: .1em; }

.filters a.on { background: var(--volt); color: #fff; }
.top nav { display: flex; gap: 6px; align-items: center; }

/* ---------- Grundlayout ---------- */
.wrap { max-width: 1240px; margin: 0 auto; padding: 8px 24px 80px; }
.two { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: 40px; align-items: start; }
.two > .side { position: sticky; top: 20px; display: grid; gap: 16px; }
@media (max-width: 1020px) {
  .two { grid-template-columns: 1fr; gap: 24px; }
  .two > .side { position: static; }
  .two.preview-first > .side { order: -1; }
}

.intro { padding: 18px 0 28px; max-width: 46rem; }
.intro p { margin-top: 12px; font-size: 1.0625rem; color: var(--ink-2); max-width: 40rem; }

/* ---------- Bogen (das eigentliche Formular) ---------- */
.sheet { background: linear-gradient(180deg, rgba(255, 255, 255, .025), transparent 180px), var(--sheet); border-radius: var(--r-l); box-shadow: var(--lift); }
.part { padding: 28px 32px; border-top: 1px solid var(--rule); }
.part:first-child { border-top: 0; }
.part > header { margin-bottom: 20px; max-width: 38rem; }
.part > header p { margin-top: 6px; color: var(--ink-2); font-size: .9375rem; }
@media (max-width: 620px) { .part { padding: 24px 18px; } }

.fields { display: grid; gap: 18px; }
.fields.cols { grid-template-columns: 1fr 1fr; }
@media (max-width: 620px) { .fields.cols { grid-template-columns: 1fr; } }
.field { display: grid; gap: 6px; min-width: 0; align-content: start; }
.field > label, .label { font-size: .875rem; font-weight: 700; }
.field .opt { font-weight: 500; color: var(--ink-3); }
.hint { font-size: .8125rem; color: var(--ink-3); line-height: 1.45; }
.err { font-size: .8125rem; color: var(--bad); font-weight: 650; }
.field.has-error .input { border-color: var(--bad); }

.input, textarea.input, select.input {
  width: 100%; min-height: 42px; padding: 9px 12px;
  border: 1px solid var(--rule-strong); border-radius: var(--r-s);
  background: var(--input-bg); color: var(--ink);
  font: inherit; font-weight: 550;
}
textarea.input { min-height: 96px; resize: vertical; line-height: 1.5; }
.input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.input::placeholder { color: var(--ink-3); font-weight: 500; }
.input-suffix { display: flex; align-items: stretch; }
.input-suffix .input { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.input-suffix span { display: grid; place-items: center; padding: 0 12px; border: 1px solid var(--rule-strong); border-left: 0;
  border-radius: 0 var(--r-s) var(--r-s) 0; background: var(--sheet-2); color: var(--ink-2); font-weight: 650; }

/* Farbe */
.colors { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.swatch {
  width: 34px; height: 34px; border-radius: 50%; border: 2px solid var(--sheet); padding: 0; cursor: pointer;
  background: var(--c); box-shadow: 0 0 0 1px var(--rule-strong);
}
.swatch.on { box-shadow: 0 0 0 2px var(--ink); }
.color-own { display: flex; gap: 8px; align-items: center; margin-top: 10px; }
.color-own input[type="color"] { width: 42px; height: 42px; padding: 3px; border: 1px solid var(--rule-strong); border-radius: var(--r-s); background: var(--input-bg); cursor: pointer; }
.color-own .input { width: 120px; font-family: ui-monospace, Consolas, monospace; }

/* Logo-Upload */
.upload { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 14px; align-items: center;
  padding: 12px; border: 1px dashed var(--rule-strong); border-radius: var(--r); }
.upload.wide { grid-template-columns: 150px minmax(0, 1fr); }
.thumb { width: 76px; height: 76px; border-radius: 14px; background: #000; border: 1px solid var(--rule); display: grid; place-items: center; overflow: hidden;
  color: #fff; font-weight: 800; font-size: 1.25rem; }
.upload.wide .thumb { width: 150px; height: 76px; border-radius: 10px; }
.thumb img { width: 100%; height: 100%; object-fit: contain; }
input[type="file"] { font: inherit; font-size: .875rem; max-width: 100%; color: var(--ink-2); }
input[type="file"].input { padding: 6px; }
input[type="file"]::file-selector-button {
  font: inherit; font-weight: 700; margin-right: 10px; padding: 7px 12px; border-radius: var(--r-s);
  border: 1px solid var(--rule-strong); background: var(--sheet-2); color: var(--ink); cursor: pointer;
}
.check { display: inline-flex; gap: 8px; align-items: center; font-size: .8125rem; color: var(--ink-2); margin-top: 6px; }

/* System-Schalter */
.mod-groups { display: grid; gap: 22px; }
.mod-group h3 { margin-bottom: 8px; color: var(--ink-2); }
.toggles { display: grid; border: 1px solid var(--rule); border-radius: var(--r); overflow: hidden; }
.toggle { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: start; padding: 13px 10px 13px 14px; border-top: 1px solid var(--rule); }
.toggle:first-child { border-top: 0; }
.toggle-hit { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 12px; cursor: pointer; }
.sys-pv-btn { color: var(--ink-2); }
.toggle input { position: absolute; opacity: 0; pointer-events: none; }
.switch { width: 38px; height: 22px; margin-top: 1px; border-radius: 99px; background: var(--rule-strong); position: relative; transition: background .15s; }
.switch::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; transition: transform .15s; box-shadow: 0 1px 2px rgba(0,0,0,.25); }
.toggle input:checked + .switch { background: var(--accent); }
.toggle input:checked + .switch::after { transform: translateX(16px); background: var(--accent-ink); }
.toggle input:focus-visible + .switch { outline: 2px solid var(--accent); outline-offset: 2px; }
.t-name { display: flex; gap: 8px; align-items: center; font-weight: 700; }
.t-desc { display: block; color: var(--ink-2); font-size: .8125rem; line-height: 1.45; margin-top: 2px; }
.t-warn { display: none; margin-top: 6px; font-size: .8125rem; color: var(--warn); font-weight: 650; }
.toggle.off .t-warn { display: block; }
.toggle.off .t-name { color: var(--ink-3); }

/* Aktionsleiste */
.actionbar {
  position: sticky; bottom: 0; z-index: 5;
  display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: space-between;
  padding: 16px 32px; border-top: 1px solid var(--rule);
  background: color-mix(in srgb, var(--sheet) 92%, transparent); backdrop-filter: blur(8px);
  border-radius: 0 0 var(--r-l) var(--r-l);
}
.actionbar .buttons { display: flex; gap: 10px; flex-wrap: wrap; }
@media (max-width: 620px) {
  .actionbar { padding: 12px 14px; }
  .actionbar > span { display: none; }
  .actionbar .buttons { width: 100%; flex-wrap: nowrap; gap: 8px; }
  .actionbar .btn { flex: 1; padding: 9px 10px; font-size: .875rem; }
}

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 42px; padding: 9px 16px; border-radius: var(--r-s);
  border: 1px solid var(--rule-strong); background: var(--sheet); color: var(--ink);
  font: inherit; font-weight: 750; text-decoration: none; cursor: pointer; white-space: nowrap;
}
.btn:hover { background: var(--sheet-2); }
.btn.primary { background: var(--primary); border-color: var(--primary); color: var(--primary-ink); }
.btn.primary:hover { box-shadow: 0 0 26px -6px var(--volt-glow); filter: brightness(1.08); }
.btn.accent { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.btn.danger { color: var(--bad); }
.btn.ghost { border-color: transparent; background: transparent; }
.btn.ghost:hover { background: color-mix(in srgb, var(--ink) 7%, transparent); }
.btn.small { min-height: 34px; padding: 6px 11px; font-size: .8125rem; }
.btn.block { width: 100%; }
.linkish { background: none; border: 0; padding: 0; font: inherit; color: var(--ink-2); text-decoration: underline; cursor: pointer; }

/* ---------- Hinweise ---------- */
.banner { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border-radius: var(--r); margin-bottom: 18px; font-weight: 600; }
.banner .i { margin-top: 3px; }
.banner.good { background: var(--good-bg); color: var(--good); }
.banner.warn { background: var(--warn-bg); color: var(--warn); }
.banner.bad { background: var(--bad-bg); color: var(--bad); }
.banner.info { background: var(--info-bg); color: var(--info); }
.banner p + p { margin-top: 6px; }
.banner .quote { white-space: pre-line; font-weight: 550; color: var(--ink); margin-top: 6px; }

.pill { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 99px; font-size: .8125rem; font-weight: 700; white-space: nowrap; }
.pill::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.pill.good { background: var(--good-bg); color: var(--good); }
.pill.warn { background: var(--warn-bg); color: var(--warn); }
.pill.bad { background: var(--bad-bg); color: var(--bad); }
.pill.info { background: var(--info-bg); color: var(--info); }

/* ---------- Live-Vorschau (dunkel, wie das echte Dashboard) ---------- */
.pv { --pv-bg: #050506; --pv-card: #101013; --pv-line: rgba(255,255,255,.08); --pv-text: #f4f4f5; --pv-dim: #8d8d96; }
.pv-screen {
  display: grid; grid-template-columns: 150px minmax(0, 1fr); min-height: 300px;
  background: var(--pv-bg); color: var(--pv-text); border-radius: 14px; overflow: hidden;
  box-shadow: 0 30px 60px -30px rgba(0,0,0,.9), 0 0 0 1px rgba(255,255,255,.09);
  font-size: 12px;
}
.pv-side { border-right: 1px solid var(--pv-line); padding: 12px 8px; background: #08080a; }
.pv-brand { display: flex; gap: 8px; align-items: center; padding: 2px 4px 12px; }
.pv-logo { width: 30px; height: 30px; border-radius: 8px; flex: none; display: grid; place-items: center; overflow: hidden;
  background: var(--accent); color: var(--accent-ink); font-weight: 800; font-size: 11px; }
.pv-logo.has-img { background: transparent; }
.pv-logo img { width: 100%; height: 100%; object-fit: contain; }
.pv-name { display: block; font-weight: 800; font-size: 12px; line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 96px; }
.pv-tag { display: block; color: var(--pv-dim); font-size: 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 96px; }
.pv-nav { display: grid; gap: 1px; }
.pv-group { color: var(--pv-dim); font-size: 10px; font-weight: 700; padding: 8px 6px 3px; }
.pv-item { display: flex; gap: 7px; align-items: center; padding: 5px 6px; border-radius: 6px; color: #c9c9cf; font-weight: 600;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pv-item .i { color: var(--pv-dim); }
.pv-item.on { background: color-mix(in srgb, var(--accent) 18%, transparent); color: #fff; box-shadow: inset 2px 0 0 var(--accent); }
.pv-item.on .i { color: var(--accent); }
.pv-main { padding: 16px; position: relative; overflow: hidden; }
.pv-main::before { content: ""; position: absolute; inset: -40% -30% auto auto; width: 260px; height: 220px;
  background: radial-gradient(closest-side, color-mix(in srgb, var(--accent) 28%, transparent), transparent); pointer-events: none; }
.pv-hello { color: var(--pv-dim); font-size: 11px; font-weight: 650; }
.pv-title { font-size: 17px; font-weight: 800; letter-spacing: -0.02em; margin: 2px 0 14px; }
.pv-card { position: relative; background: var(--pv-card); border: 1px solid var(--pv-line); border-radius: 10px; padding: 10px 12px; margin-bottom: 8px; }
.pv-card small { color: var(--pv-dim); font-weight: 650; font-size: 10px; display: block; }
.pv-card b { font-size: 15px; font-weight: 800; letter-spacing: -0.01em; }
.pv-bar { height: 5px; border-radius: 9px; background: rgba(255,255,255,.07); margin-top: 8px; overflow: hidden; }
.pv-bar span { display: block; height: 100%; width: 68%; background: var(--accent); border-radius: inherit; }
.pv-btn { display: inline-flex; margin-top: 4px; padding: 6px 10px; border-radius: 7px; background: var(--accent); color: var(--accent-ink); font-weight: 750; font-size: 11px; }

.pv-note { margin-top: 12px; font-size: .8125rem; color: var(--ink-3); }

/* ---------- Zusammenfassung (nach dem Absenden) ---------- */
.summary { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 12px 20px; padding: 28px 32px; }
.summary dt { color: var(--ink-3); font-weight: 650; font-size: .875rem; }
.summary dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; white-space: pre-line; }
.chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 9px; border-radius: 6px; background: var(--sheet-2); font-size: .8125rem; font-weight: 650; margin: 0 4px 4px 0; }
@media (max-width: 620px) { .summary { grid-template-columns: 1fr; gap: 4px; padding: 22px 18px; } .summary dd { margin-bottom: 10px; } }

/* ---------- Startseite / Anmeldung ---------- */
.center { min-height: 100vh; display: grid; place-items: center; padding: 24px; }
.solo { width: min(440px, 100%); padding: 40px 32px 32px; text-align: center; }
.solo form { text-align: left; }
.solo h1 { font-size: 1.75rem; }
.solo p { margin-top: 10px; color: var(--ink-2); }
.solo form { margin-top: 24px; display: grid; gap: 14px; }

/* ---------- Admin ---------- */
.admin-head { display: flex; flex-wrap: wrap; gap: 16px 24px; align-items: end; justify-content: space-between; padding: 14px 0 24px; }
.invite { display: flex; gap: 8px; flex-wrap: wrap; }
.invite .input { width: 260px; }
@media (max-width: 620px) { .invite, .invite .input, .invite .btn { width: 100%; } }

.filters { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.filters a { display: inline-flex; gap: 6px; align-items: center; padding: 6px 12px; border-radius: 99px; text-decoration: none; font-weight: 700; font-size: .875rem; color: var(--ink-2); }
.filters a:hover { background: color-mix(in srgb, var(--ink) 6%, transparent); }
.filters a span { opacity: .65; font-weight: 600; }

.fam-list { list-style: none; margin: 0; padding: 0; }
.fam-row { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 14px 18px;
  text-decoration: none; border-top: 1px solid var(--rule); }
.fam-list li:first-child .fam-row { border-top: 0; }
.fam-row:hover { background: var(--sheet-2); }
.fam-list li:first-child .fam-row:hover { border-radius: var(--r-l) var(--r-l) 0 0; }
.fam-list li:last-child .fam-row:hover { border-radius: 0 0 var(--r-l) var(--r-l); }
.fam-logo { width: 44px; height: 44px; border-radius: 11px; display: grid; place-items: center; overflow: hidden; background: var(--accent); color: var(--accent-ink); font-weight: 800; }
.fam-logo.has-img { background: #0d0d0f; }
.fam-logo img { width: 100%; height: 100%; object-fit: contain; }
.fam-main b { display: block; font-weight: 750; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fam-main small { display: block; color: var(--ink-3); font-size: .8125rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fam-meta { display: grid; justify-items: end; gap: 4px; }
.fam-meta small { color: var(--ink-3); font-size: .75rem; }
.empty { padding: 44px 32px; text-align: center; color: var(--ink-2); }
.empty h2 { margin-bottom: 8px; color: var(--ink); }

.panel { background: var(--sheet); border-radius: var(--r-l); box-shadow: var(--lift); padding: 20px 22px; }
.panel h2 { margin-bottom: 4px; }
.panel > p { color: var(--ink-2); font-size: .875rem; }
.panel .stack { display: grid; gap: 10px; margin-top: 14px; }
.facts { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 6px 14px; margin: 14px 0 0; font-size: .875rem; }
.facts dt { color: var(--ink-3); font-weight: 650; }
.facts dd { margin: 0; font-weight: 650; overflow-wrap: anywhere; }
.copyrow { display: flex; gap: 8px; }
.copyrow .input { font-family: ui-monospace, Consolas, monospace; font-size: .8125rem; }
.code { white-space: pre; overflow-x: auto; }
.code { width: 100%; min-height: 150px; font-family: ui-monospace, Consolas, monospace; font-size: .8125rem; line-height: 1.6;
  background: var(--sheet-2); border: 1px solid var(--rule); border-radius: var(--r-s); padding: 10px 12px; color: var(--ink); resize: vertical; }
.steps { margin: 12px 0 0; padding-left: 20px; display: grid; gap: 8px; font-size: .875rem; color: var(--ink-2); }
.steps li::marker { font-weight: 800; color: var(--ink); }
.steps b { color: var(--ink); }
.notes { margin: 12px 0 0; padding: 0; list-style: none; display: grid; gap: 8px; }
.notes li { display: flex; gap: 8px; font-size: .8125rem; color: var(--warn); font-weight: 650; }
.notes .i { margin-top: 3px; }
details.more { margin-top: 12px; }
details.more summary { cursor: pointer; font-weight: 700; font-size: .875rem; color: var(--ink-2); }
details.more[open] summary { margin-bottom: 10px; }
.detail-head { display: flex; flex-wrap: wrap; gap: 16px; align-items: center; padding: 10px 0 24px; }
.detail-head .fam-logo { width: 60px; height: 60px; border-radius: 15px; font-size: 1.2rem; }
.detail-head .meta { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 8px; color: var(--ink-3); font-size: .8125rem; font-weight: 600; }
.back { display: inline-flex; gap: 6px; align-items: center; color: var(--ink-2); font-weight: 700; text-decoration: none; font-size: .875rem; padding-top: 8px; }
.back:hover { color: var(--ink); }
.danger-zone { display: flex; justify-content: flex-end; }

.narrow-only { display: none; }
@media (max-width: 1020px) {
  .wide-only { display: none; }
  .narrow-only { display: inline; font-weight: 700; }
}

@media (prefers-reduced-motion: reduce) { * { transition: none !important; scroll-behavior: auto !important; } }

/* ---------- Sanktionskatalog ---------- */
.kat { border: 1px solid var(--rule); border-radius: var(--r); overflow: hidden; }
.kat-head, .kat-row { display: grid; grid-template-columns: 92px minmax(0, 1fr) 128px auto 40px; gap: 8px; align-items: center; }
.kat-head { padding: 9px 12px; background: var(--sheet-2); font-size: .75rem; font-weight: 750; color: var(--ink-3); }
.kat-row { padding: 8px 12px; border-top: 1px solid var(--rule); }
.kat-rows .kat-row:first-child { border-top: 0; }
.kat-row .input { min-height: 38px; padding: 7px 10px; }
.kat-row.has-error { background: var(--bad-bg); }
.kat-err { grid-column: 1 / -1; margin: 0; }
.kat-blood { display: inline-flex; gap: 6px; align-items: center; font-size: .8125rem; font-weight: 650; color: var(--ink-2); white-space: nowrap; cursor: pointer; }
.kat-blood input { accent-color: var(--accent); width: 16px; height: 16px; }
.kat-empty { padding: 14px 12px; }
.kat-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.kat-paste { display: grid; gap: 8px; margin-top: 12px; padding: 14px; border-radius: var(--r); background: var(--sheet-2); }
.kat-amount:disabled { opacity: .45; }
@media (max-width: 620px) {
  .kat-head { display: none; }
  .kat-row { grid-template-columns: 112px minmax(0, 1fr) auto; grid-template-areas: "p t t" "a b d"; }
  .kat-row > :nth-child(1) { grid-area: p; } .kat-row > :nth-child(2) { grid-area: t; } .kat-row > :nth-child(3) { grid-area: a; }
  .kat-row > :nth-child(4) { grid-area: b; } .kat-row > :nth-child(5) { grid-area: d; }
}

/* ---------- Discord-Nachrichten im Formular ---------- */
.nm-groups { display: grid; gap: 22px; }
.nm-group h3 { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; color: var(--ink-2); }
.nm-list { border: 1px solid var(--rule); border-radius: var(--r); overflow: hidden; }
.nm { border-top: 1px solid var(--rule); }
.nm:first-child { border-top: 0; }
.nm summary { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0 10px; padding: 12px 14px; cursor: pointer; list-style: none; }
.nm summary::-webkit-details-marker { display: none; }
.nm summary:hover { background: var(--sheet-2); }
.nm[open] summary { background: var(--accent-soft); }
.nm-name { font-weight: 750; }
.nm-wo { grid-column: 1; font-size: .8125rem; color: var(--ink-3); }
.nm-mark { grid-row: 1 / span 2; grid-column: 2; align-self: center; background: var(--accent-soft); color: var(--ink); }
.nm-body { display: grid; gap: 14px; padding: 16px 14px 18px; border-top: 1px solid var(--rule); }
.nm-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.nm-chip { border: 1px solid var(--rule-strong); background: var(--sheet); color: var(--ink); border-radius: 7px; padding: 4px 9px; cursor: pointer;
  font: 650 .78rem/1.3 ui-monospace, "Cascadia Mono", Consolas, monospace; }
.nm-chip:hover { border-color: var(--accent); }
.nm-chip small { font: 500 .72rem/1 "Manrope", system-ui, sans-serif; color: var(--ink-3); margin-left: 5px; }
.nm-opts { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 760px) { .nm-opts { grid-template-columns: 1fr; } }
.seg { border: 0; padding: 0; margin: 0; min-width: 0; display: grid; gap: 8px; }
.seg legend { font-size: .875rem; font-weight: 700; padding: 0; margin-bottom: 6px; }
.seg-row { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.seg-opt { position: relative; }
.seg-opt input { position: absolute; opacity: 0; }
.seg-opt span { display: inline-flex; padding: 6px 11px; border-radius: 99px; border: 1px solid var(--rule-strong); font-size: .8125rem; font-weight: 700; cursor: pointer; color: var(--ink-2); }
.seg-opt input:checked + span { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.seg-opt input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
.nm-color { width: 40px; height: 32px; padding: 2px; border: 1px solid var(--rule-strong); border-radius: var(--r-s); background: var(--input-bg); cursor: pointer; }
.nm-bild { display: grid; gap: 8px; }
.nm-thumb { max-height: 90px; width: auto; border-radius: 6px; border: 1px solid var(--rule); }
.nm-reset { justify-self: start; color: var(--ink-2); }
.nm-inline-pv { display: none; }
@media (max-width: 1020px) { .nm-inline-pv:not(:empty) { display: block; margin-top: 4px; } }
/* Akzent-Töne immer aus der gewählten Familienfarbe (nicht aus :root) */
[data-accent-root] { --accent-soft: color-mix(in srgb, var(--accent) 12%, transparent); }

/* ---------- Mitlaufende Vorschau ---------- */
.pv-panel { display: grid; gap: 10px; animation: pv-in .18s ease; }
@keyframes pv-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
.pv-cap { font-size: .8125rem; font-weight: 750; color: var(--ink-2); }
.pv-cap-2 { margin-top: 6px; }
.pv-kat { display: grid; gap: 4px; font-size: .8125rem; color: var(--ink-2); }
.pv-kat b { color: var(--ink); }
.side > .pv > .pv-note { margin-top: 2px; }

/* ---------- Vorschau pro System (Dialog) ---------- */
.sysdlg { width: min(1180px, calc(100vw - 32px)); max-height: calc(100vh - 32px); padding: 0; border: 0; border-radius: var(--r-l);
  background: var(--sheet); color: var(--ink); box-shadow: 0 0 0 1px var(--rule-strong), 0 40px 90px -30px #000; }
.sysdlg::backdrop { background: rgba(0, 0, 0, .72); backdrop-filter: blur(4px); }
.sysdlg[open] { display: flex; flex-direction: column; animation: pv-in .18s ease; }
.sysdlg-head { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; padding: 22px 26px 16px; border-bottom: 1px solid var(--rule); }
.sysdlg-head h2 { font-size: 1.375rem; font-weight: 800; }
.sysdlg-head p { color: var(--ink-2); margin-top: 6px; max-width: 46rem; }
.sysdlg-body { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 24px; padding: 20px 26px 26px; overflow-y: auto; }
.sysdlg-body .pv-cap { margin-bottom: 10px; }
.sysdlg-msgs { display: grid; gap: 16px; }
.sysdlg-msgs h4 { font-size: .8125rem; font-weight: 750; color: var(--ink-2); margin: 0 0 6px; }
@media (max-width: 900px) { .sysdlg-body { grid-template-columns: 1fr; } .sysdlg-head, .sysdlg-body { padding-left: 16px; padding-right: 16px; } }

.mock { display: grid; grid-template-columns: 56px minmax(0, 1fr); background: #050506; color: #f4f4f5; border-radius: 14px; overflow: hidden;
  box-shadow: 0 0 0 1px rgba(255,255,255,.09); font-size: 12.5px; min-height: 360px; }
.mock-side { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 14px 0; background: #08080a; border-right: 1px solid rgba(255,255,255,.07); }
.mock-logo { width: 32px; height: 32px; border-radius: 9px; display: grid; place-items: center; overflow: hidden; margin-bottom: 10px;
  background: var(--accent); color: var(--accent-ink); font-weight: 800; font-size: 11px; }
.mock-logo.has-img { background: transparent; }
.mock-logo img { width: 100%; height: 100%; object-fit: contain; }
.mock-nav { width: 34px; height: 30px; border-radius: 8px; display: grid; place-items: center; color: #8d8d96; }
.mock-nav.on { background: color-mix(in srgb, var(--accent) 20%, transparent); color: var(--accent); box-shadow: inset 2px 0 0 var(--accent); }
.mock-main { padding: 18px 20px; position: relative; overflow: hidden; min-width: 0; }
.mock-main::before { content: ""; position: absolute; inset: -30% -20% auto auto; width: 340px; height: 260px; pointer-events: none;
  background: radial-gradient(closest-side, color-mix(in srgb, var(--accent) 22%, transparent), transparent); }
.mock-head { position: relative; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; align-items: flex-end; margin-bottom: 16px; }
.mock-head small { display: block; color: #8d8d96; font-weight: 650; font-size: 11px; }
.mock-head b { font-size: 20px; font-weight: 800; letter-spacing: -0.02em; }
.mock-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.mock-btn { padding: 6px 11px; border-radius: 8px; background: #17171a; border: 1px solid rgba(255,255,255,.09); font-weight: 700; font-size: 11.5px; }
.mock-btn.primary { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.mock-tiles { position: relative; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-bottom: 14px; }
.mock-tile { background: #101013; border: 1px solid rgba(255,255,255,.08); border-radius: 10px; padding: 10px 12px; min-width: 0; }
.mock-tile small { display: block; color: #8d8d96; font-size: 10.5px; font-weight: 650; }
.mock-tile b { display: block; font-size: 15px; font-weight: 800; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mock-tile span { display: block; color: #8d8d96; font-size: 10.5px; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mock-table { position: relative; background: #0c0c0e; border: 1px solid rgba(255,255,255,.08); border-radius: 10px; overflow: hidden; }
.mock-tr { display: grid; grid-template-columns: repeat(var(--cols), minmax(0, 1fr)); gap: 10px; padding: 9px 12px; border-top: 1px solid rgba(255,255,255,.06); align-items: center; }
.mock-tr span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mock-th { border-top: 0; color: #8d8d96; font-weight: 700; font-size: 11px; background: #101013; }
.mock-badge { font-style: normal; font-weight: 700; font-size: 10.5px; padding: 2px 7px; border-radius: 99px; }
.mock-badge.good { background: rgba(34,197,94,.15); color: #4ade80; }
.mock-badge.warn { background: rgba(245,165,36,.15); color: #fbbf24; }
.mock-badge.bad { background: rgba(255,77,94,.15); color: #ff6b78; }
.mock-badge.accent { background: color-mix(in srgb, var(--accent) 20%, transparent); color: color-mix(in srgb, var(--accent) 75%, #fff); }
.mock-empty { color: #8d8d96; }
@media (max-width: 620px) { .mock { grid-template-columns: 1fr; } .mock-side { display: none; } .mock-tiles { grid-template-columns: 1fr 1fr; } }

/* ---------- Discord-Vorschau (gleich im Dashboard und im Familien-Portal) ---------- */
.dcv { background: #313338; color: #dbdee1; border-radius: 12px; padding: 14px 16px 16px; font: 400 14px/1.375 "gg sans", "Noto Sans", "Manrope", system-ui, sans-serif; text-align: left; }
.dcv-dm { font-size: 11px; font-weight: 700; color: #949ba4; margin: -2px 0 10px; padding-bottom: 8px; border-bottom: 1px solid #3f4147; }
.dcv-msg { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 14px; }
.dcv-avatar { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; overflow: hidden; color: #fff; font-weight: 800; font-size: 13px; }
.dcv-avatar.has-img, .dcv-foot-icon.has-img { background: #1e1f22; }
.dcv-avatar img, .dcv-foot-icon img { width: 100%; height: 100%; object-fit: cover; }
.dcv-head { display: flex; flex-wrap: wrap; gap: 6px; align-items: baseline; }
.dcv-head b { color: #f2f3f5; font-weight: 600; }
.dcv-app { background: #5865f2; color: #fff; font-size: 10px; font-weight: 700; padding: 0 4px; border-radius: 3px; line-height: 15px; }
.dcv-time { color: #949ba4; font-size: 12px; }
.dcv-content { margin-top: 2px; }
.dcv-embed { margin-top: 6px; max-width: 520px; background: #2b2d31; border-left: 4px solid #e11d2e; border-radius: 4px; padding: 10px 16px 14px 12px; }
.dcv-embed-grid { display: block; }
.dcv-embed-grid.with-thumb { display: grid; grid-template-columns: minmax(0, 1fr) 80px; gap: 16px; }
.dcv-title { color: #f2f3f5; font-weight: 700; font-size: 15px; margin-top: 2px; overflow-wrap: anywhere; }
.dcv-desc { margin-top: 6px; font-size: 13.5px; overflow-wrap: anywhere; }
.dcv-fields { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 8px 12px; margin-top: 10px; }
.dcv-field { grid-column: 1 / -1; min-width: 0; font-size: 13.5px; }
.dcv-field.inline { grid-column: auto; }
.dcv-fname { color: #f2f3f5; font-weight: 700; font-size: 13px; margin-bottom: 2px; }
.dcv-fvalue { overflow-wrap: break-word; }
.dcv-thumb { width: 80px; height: 80px; object-fit: cover; border-radius: 4px; }
.dcv-image { display: block; max-width: 100%; max-height: 300px; border-radius: 4px; margin-top: 14px; }
.dcv-foot { display: flex; gap: 8px; align-items: center; margin-top: 10px; font-size: 12px; color: #b5bac1; }
.dcv-foot-icon { width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center; overflow: hidden; color: #fff; font-size: 8px; font-weight: 800; flex: none; }
.dcv-buttons { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.dcv-btn { display: inline-flex; align-items: center; min-height: 32px; padding: 2px 16px; border-radius: 4px; font-size: 14px; font-weight: 500; color: #fff; background: #4e5058; }
.dcv-btn.primary { background: #5865f2; }
.dcv-btn.success { background: #248046; }
.dcv-btn.danger { background: #da373c; }
.dcv-btn.secondary { background: #4e5058; }
.dcv strong { color: #f2f3f5; font-weight: 700; }
.dcv code { background: #1e1f22; border-radius: 3px; padding: 0 3px; font-size: 12.5px; font-family: ui-monospace, Consolas, monospace; }
.dcv-mention { color: #c9cdfb; background: rgba(88, 101, 242, .3); border-radius: 3px; padding: 0 2px; font-weight: 500; }
.dcv-spoiler { background: #1e1f22; color: #1e1f22; border-radius: 3px; padding: 0 2px; }
.dcv-quote { display: inline-block; border-left: 4px solid #4e5058; padding-left: 10px; }
@media (max-width: 520px) { .dcv { padding: 12px; } .dcv-msg { gap: 10px; grid-template-columns: 32px minmax(0, 1fr); } .dcv-avatar { width: 32px; height: 32px; } }
