/* ============================================================
   Konnex Community 1.0 - Stylesheet
   Eigenstaendiges Design, Light- und Dark-Mode, responsiv.
   Aufbau: 1) Tokens 2) Basis 3) Layout 4) Komponenten
           5) Seiten 6) Responsive
   ============================================================ */

/* ---------- 1) Design-Tokens ---------- */
:root {
  --font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

  --ink-900:#12141c; --ink-800:#1d2030; --ink-700:#2b2f42;
  --ink-500:#5b6178; --ink-400:#7d849c; --ink-300:#a8aec4;
  --paper-000:#ffffff; --paper-050:#f7f8fc; --paper-100:#eef0f7; --paper-200:#e2e5f0;

  --brand-600:#3d4ed8; --brand-500:#4c6ef5; --brand-400:#7089f8; --brand-050:#eef1fe;
  --accent-500:#e8578f; --accent-050:#fdeef4;
  --mint-500:#0fa678; --mint-050:#e6f7f1;
  --amber-500:#e0a020; --amber-050:#fdf5e3;
  --danger-500:#dc3b4a; --danger-050:#fdecee;

  --bg: var(--paper-050);
  --surface: var(--paper-000);
  --surface-2: var(--paper-050);
  --border: var(--paper-200);
  --text: var(--ink-900);
  --text-soft: var(--ink-500);
  --text-mute: var(--ink-400);
  --brand: var(--brand-500);
  --brand-soft: var(--brand-050);
  --shadow-sm: 0 1px 2px rgba(18,20,28,.06), 0 1px 3px rgba(18,20,28,.04);
  --shadow-md: 0 4px 16px rgba(18,20,28,.08);
  --shadow-lg: 0 18px 48px rgba(18,20,28,.14);

  --r-sm:8px; --r-md:12px; --r-lg:18px; --r-full:999px;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px; --sp-7:48px;
  --header-h:60px;
  --wrap:1200px;
}

html[data-theme="dark"] {
  --bg:#0e1017; --surface:#161a24; --surface-2:#1c2130; --border:#262c3b;
  --text:#eef0f7; --text-soft:#a8aec4; --text-mute:#7d849c;
  --brand:#7089f8; --brand-soft:#1b2240;
  --shadow-sm: 0 1px 2px rgba(0,0,0,.4);
  --shadow-md: 0 6px 20px rgba(0,0,0,.45);
  --shadow-lg: 0 20px 50px rgba(0,0,0,.55);
}

/* ---------- 2) Basis ---------- */
*,*::before,*::after { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; }
body {
  margin:0; font-family:var(--font-sans); background:var(--bg); color:var(--text);
  font-size:15px; line-height:1.55; -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4 { margin:0 0 var(--sp-3); line-height:1.2; font-weight:650; letter-spacing:-.01em; }
h1 { font-size:1.75rem; } h2 { font-size:1.3rem; } h3 { font-size:1.05rem; } h4 { font-size:.95rem; }
p { margin:0 0 var(--sp-3); }
a { color:var(--brand); text-decoration:none; }
a:hover { text-decoration:underline; }
img { max-width:100%; display:block; }
hr { border:0; border-top:1px solid var(--border); margin:var(--sp-5) 0; }
small, .small { font-size:.82rem; }
.muted { color:var(--text-soft); }
.mute-2 { color:var(--text-mute); }
.center { text-align:center; }
.nowrap { white-space:nowrap; }
.mt-0{margin-top:0}.mt-2{margin-top:var(--sp-2)}.mt-3{margin-top:var(--sp-3)}
.mt-4{margin-top:var(--sp-4)}.mt-5{margin-top:var(--sp-5)}
.mb-0{margin-bottom:0}.mb-3{margin-bottom:var(--sp-3)}.mb-4{margin-bottom:var(--sp-4)}.mb-5{margin-bottom:var(--sp-5)}
.flex { display:flex; gap:var(--sp-3); }
.flex-between { display:flex; align-items:center; justify-content:space-between; gap:var(--sp-3); }
.flex-center { display:flex; align-items:center; gap:var(--sp-2); }
.flex-wrap { flex-wrap:wrap; }
.grow { flex:1 1 auto; min-width:0; }
.truncate { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
:focus-visible { outline:2px solid var(--brand); outline-offset:2px; border-radius:4px; }
.visually-hidden {
  position:absolute!important; width:1px; height:1px; overflow:hidden;
  clip:rect(0 0 0 0); white-space:nowrap;
}
.skip-link { position:absolute; left:-999px; }
.skip-link:focus { left:var(--sp-3); top:var(--sp-3); z-index:100; background:var(--surface); padding:var(--sp-2) var(--sp-3); box-shadow:var(--shadow-md); border-radius:var(--r-sm); }

/* ---------- 3) Layout ---------- */
.wrap { width:100%; max-width:var(--wrap); margin:0 auto; padding:0 var(--sp-4); }

.site-header {
  position:sticky; top:0; z-index:50; height:var(--header-h);
  background:color-mix(in srgb, var(--surface) 92%, transparent);
  backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--border);
}
.header-inner { display:flex; align-items:center; gap:var(--sp-4); height:var(--header-h); }
.logo { display:flex; align-items:center; gap:var(--sp-2); font-weight:750; font-size:1.1rem; color:var(--text); letter-spacing:-.02em; }
.logo:hover { text-decoration:none; }
.logo svg { color:var(--brand); flex:none; }

.header-search { flex:1 1 320px; max-width:420px; position:relative; }
.header-search input[type="search"] {
  width:100%; height:38px; border-radius:var(--r-full); border:1px solid var(--border);
  background:var(--surface-2); color:var(--text); padding:0 var(--sp-4) 0 38px; font-size:.9rem;
}
.header-search svg { position:absolute; left:12px; top:10px; color:var(--text-mute); }

.header-nav { display:flex; align-items:center; gap:var(--sp-1); margin-left:auto; }
.icon-btn {
  position:relative; display:inline-flex; align-items:center; justify-content:center;
  width:38px; height:38px; border-radius:var(--r-full); color:var(--text-soft);
  background:transparent; border:0; cursor:pointer;
}
.icon-btn:hover { background:var(--surface-2); color:var(--text); text-decoration:none; }
.icon-btn.active { color:var(--brand); background:var(--brand-soft); }
[hidden] { display:none !important; }

.badge-dot {
  position:absolute; top:2px; right:2px; min-width:17px; height:17px; padding:0 4px;
  border-radius:var(--r-full); background:var(--accent-500); color:#fff;
  font-size:.66rem; font-weight:700; display:flex; align-items:center; justify-content:center;
  border:2px solid var(--surface);
}

.avatar { border-radius:var(--r-full); object-fit:cover; background:var(--surface-2); flex:none; }
.avatar-20{width:20px;height:20px}.avatar-24{width:24px;height:24px}.avatar-36{width:36px;height:36px}.avatar-28{width:28px;height:28px}.avatar-32{width:32px;height:32px}
.avatar-40{width:40px;height:40px}.avatar-48{width:48px;height:48px}.avatar-64{width:64px;height:64px}
.avatar-96{width:96px;height:96px}.avatar-128{width:128px;height:128px}
.avatar-ring { box-shadow:0 0 0 2px var(--surface), 0 0 0 4px var(--brand-400); }

.presence { position:relative; display:inline-block; flex:none; }
.presence::after {
  content:""; position:absolute; right:-1px; bottom:-1px; width:11px; height:11px;
  border-radius:var(--r-full); border:2px solid var(--surface); background:var(--ink-300);
}
.presence.is-online::after { background:var(--mint-500); }
.presence.is-away::after { background:var(--amber-500); }

.menu { position:relative; }
.menu-panel {
  position:absolute; right:0; top:46px; min-width:260px; background:var(--surface);
  border:1px solid var(--border); border-radius:var(--r-md); box-shadow:var(--shadow-lg);
  padding:var(--sp-2); display:none; z-index:60; max-height:min(70vh,520px); overflow:auto;
}
.menu-panel.open { display:block; }
.menu-panel a, .menu-panel button {
  display:flex; align-items:center; gap:var(--sp-3); width:100%; text-align:left;
  padding:var(--sp-2) var(--sp-3); border-radius:var(--r-sm); color:var(--text);
  background:none; border:0; font:inherit; cursor:pointer;
}
.menu-panel a:hover, .menu-panel button:hover { background:var(--surface-2); text-decoration:none; }
.menu-sep { height:1px; background:var(--border); margin:var(--sp-2) 0; }

.layout { display:grid; grid-template-columns:240px minmax(0,1fr) 300px; gap:var(--sp-5); padding:var(--sp-5) 0 var(--sp-7); align-items:start; }
.layout.layout-2 { grid-template-columns:240px minmax(0,1fr); }
.layout.layout-1 { grid-template-columns:minmax(0,1fr); }
.col-side { position:sticky; top:calc(var(--header-h) + var(--sp-5)); }
.col-right { position:sticky; top:calc(var(--header-h) + var(--sp-5)); }

.sidenav { display:flex; flex-direction:column; gap:2px; }
.sidenav a {
  display:flex; align-items:center; gap:var(--sp-3); padding:10px var(--sp-3);
  border-radius:var(--r-md); color:var(--text-soft); font-weight:550; font-size:.92rem;
}
.sidenav a:hover { background:var(--surface-2); color:var(--text); text-decoration:none; }
.sidenav a.active { background:var(--brand-soft); color:var(--brand); }
.sidenav a svg { flex:none; }
.sidenav .count { margin-left:auto; font-size:.75rem; background:var(--accent-500); color:#fff; border-radius:var(--r-full); padding:1px 7px; font-weight:700; }
.sidenav-label { font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; color:var(--text-mute); padding:var(--sp-4) var(--sp-3) var(--sp-1); font-weight:700; }

/* ---------- 4) Komponenten ---------- */
.card {
  background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg);
  box-shadow:var(--shadow-sm); padding:var(--sp-4); margin-bottom:var(--sp-4);
}
.card-tight { padding:var(--sp-3); }
.card-flat { box-shadow:none; }
.card-head { display:flex; align-items:center; justify-content:space-between; gap:var(--sp-3); margin-bottom:var(--sp-3); }
.card-head h2, .card-head h3 { margin:0; }
.card-title-sm { font-size:.78rem; text-transform:uppercase; letter-spacing:.07em; color:var(--text-mute); font-weight:700; margin-bottom:var(--sp-3); }

.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:var(--sp-2);
  height:40px; padding:0 var(--sp-4); border-radius:var(--r-md); border:1px solid transparent;
  background:var(--brand); color:#fff; font:inherit; font-weight:600; cursor:pointer;
  transition:transform .08s ease, filter .15s ease; white-space:nowrap;
}
.btn:hover { filter:brightness(1.06); text-decoration:none; }
.btn:active { transform:translateY(1px); }
.btn[disabled] { opacity:.55; cursor:not-allowed; }
.btn-ghost { background:transparent; color:var(--text); border-color:var(--border); }
.btn-ghost:hover { background:var(--surface-2); }
.btn-soft { background:var(--brand-soft); color:var(--brand); }
.btn-danger { background:var(--danger-500); }
.btn-accent { background:var(--accent-500); }
.btn-mint { background:var(--mint-500); }
.btn-sm { height:32px; padding:0 var(--sp-3); font-size:.85rem; border-radius:var(--r-sm); }
.btn-lg { height:46px; padding:0 var(--sp-5); font-size:1rem; }
.btn-block { width:100%; }
.btn-row { display:flex; gap:var(--sp-2); flex-wrap:wrap; }

.chip {
  display:inline-flex; align-items:center; gap:6px; padding:4px 10px; border-radius:var(--r-full);
  background:var(--surface-2); border:1px solid var(--border); font-size:.8rem; color:var(--text-soft);
}
.chip-brand { background:var(--brand-soft); color:var(--brand); border-color:transparent; }
.chip-mint { background:var(--mint-050); color:var(--mint-500); border-color:transparent; }
.chip-accent { background:var(--accent-050); color:var(--accent-500); border-color:transparent; }
.chip-amber { background:var(--amber-050); color:var(--amber-500); border-color:transparent; }
.chip-danger { background:var(--danger-050); color:var(--danger-500); border-color:transparent; }
html[data-theme="dark"] .chip-mint,html[data-theme="dark"] .chip-accent,
html[data-theme="dark"] .chip-amber,html[data-theme="dark"] .chip-danger { background:var(--surface-2); }

.tabs { display:flex; gap:var(--sp-1); border-bottom:1px solid var(--border); margin-bottom:var(--sp-4); overflow-x:auto; }
.tabs a {
  padding:var(--sp-3) var(--sp-3); color:var(--text-soft); font-weight:600; font-size:.9rem;
  border-bottom:2px solid transparent; white-space:nowrap;
}
.tabs a:hover { color:var(--text); text-decoration:none; }
.tabs a.active { color:var(--brand); border-bottom-color:var(--brand); }

label { display:block; font-weight:600; font-size:.85rem; margin-bottom:6px; color:var(--text-soft); }
input[type=text],input[type=email],input[type=password],input[type=date],input[type=number],
input[type=search],input[type=url],select,textarea {
  width:100%; padding:10px var(--sp-3); border-radius:var(--r-md); border:1px solid var(--border);
  background:var(--surface); color:var(--text); font:inherit;
}
textarea { resize:vertical; min-height:96px; }
input:focus,select:focus,textarea:focus { border-color:var(--brand); outline:none; box-shadow:0 0 0 3px var(--brand-soft); }
.field { margin-bottom:var(--sp-4); }
.field-row { display:grid; grid-template-columns:1fr 1fr; gap:var(--sp-3); }
.field-hint { font-size:.8rem; color:var(--text-mute); margin-top:4px; }
.check { display:flex; align-items:flex-start; gap:var(--sp-2); font-weight:500; color:var(--text); margin-bottom:var(--sp-2); }
.check input { width:auto; margin-top:3px; }
input[type=file] { font-size:.9rem; }

.alert { padding:var(--sp-3) var(--sp-4); border-radius:var(--r-md); margin-bottom:var(--sp-4); border:1px solid transparent; font-size:.92rem; }
.alert-info { background:var(--brand-soft); color:var(--brand-600); }
.alert-success { background:var(--mint-050); color:#0b7a58; }
.alert-error, .alert-danger { background:var(--danger-050); color:#b32230; }
.alert-warn { background:var(--amber-050); color:#96690a; }
html[data-theme="dark"] .alert { background:var(--surface-2); color:var(--text); border-color:var(--border); }
.alert ul { margin:0; padding-left:var(--sp-5); }

.toasts { position:fixed; right:var(--sp-4); bottom:var(--sp-4); z-index:200; display:flex; flex-direction:column; gap:var(--sp-2); }
.toast {
  background:var(--ink-900); color:#fff; padding:var(--sp-3) var(--sp-4); border-radius:var(--r-md);
  box-shadow:var(--shadow-lg); font-size:.9rem; max-width:320px; animation:toast-in .2s ease;
}
.toast.err { background:var(--danger-500); }
@keyframes toast-in { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }

.empty { text-align:center; padding:var(--sp-6) var(--sp-4); color:var(--text-soft); }
.empty svg { color:var(--text-mute); margin-bottom:var(--sp-3); }
.skeleton { background:linear-gradient(90deg,var(--surface-2),var(--border),var(--surface-2)); background-size:200% 100%; animation:sk 1.2s infinite; border-radius:var(--r-sm); height:12px; }
@keyframes sk { from{background-position:200% 0} to{background-position:-200% 0} }

.pagination { display:flex; gap:6px; justify-content:center; flex-wrap:wrap; margin:var(--sp-5) 0; }
.pagination .page {
  min-width:38px; height:38px; display:inline-flex; align-items:center; justify-content:center;
  padding:0 var(--sp-3); border-radius:var(--r-md); border:1px solid var(--border);
  color:var(--text-soft); background:var(--surface); font-size:.9rem;
}
.pagination .page:hover { background:var(--surface-2); text-decoration:none; }
.pagination .page.active { background:var(--brand); border-color:var(--brand); color:#fff; font-weight:650; }
.pagination .dots { border:0; background:none; }

.stat-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:var(--sp-3); }
.stat {
  background:var(--surface); border:1px solid var(--border); border-radius:var(--r-md);
  padding:var(--sp-3) var(--sp-4);
}
.stat .value { font-size:1.5rem; font-weight:700; letter-spacing:-.02em; }
.stat .label { font-size:.78rem; color:var(--text-mute); text-transform:uppercase; letter-spacing:.06em; font-weight:650; }

.list { display:flex; flex-direction:column; gap:var(--sp-3); }
.list-item { display:flex; align-items:center; gap:var(--sp-3); }
.list-item .grow { min-width:0; }
.divide > * + * { border-top:1px solid var(--border); padding-top:var(--sp-3); margin-top:var(--sp-3); }

.grid-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:var(--sp-4); }
.user-card { text-align:center; padding:var(--sp-4); }
.user-card .name { font-weight:650; margin-top:var(--sp-2); }
.grid-photos { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:var(--sp-3); }
.photo-tile { position:relative; display:block; border-radius:var(--r-md); overflow:hidden; background:var(--surface-2); aspect-ratio:1; }
.photo-tile img { width:100%; height:100%; object-fit:cover; transition:transform .25s ease; }
.photo-tile:hover img { transform:scale(1.04); }
.photo-tile .meta {
  position:absolute; inset:auto 0 0 0; padding:6px 8px; font-size:.75rem; color:#fff;
  background:linear-gradient(transparent, rgba(0,0,0,.65)); display:flex; gap:var(--sp-3);
}

/* Beitraege */
.post { padding:var(--sp-4); }
.post-head { display:flex; gap:var(--sp-3); align-items:flex-start; }
.post-author { font-weight:650; color:var(--text); }
.post-meta { font-size:.8rem; color:var(--text-mute); }
.post-body { margin:var(--sp-3) 0; overflow-wrap:anywhere; }
.post-image { border-radius:var(--r-md); margin:var(--sp-3) 0; max-height:560px; width:100%; object-fit:cover; }
.post-stats { display:flex; gap:var(--sp-4); font-size:.82rem; color:var(--text-mute); padding-bottom:var(--sp-2); }
.post-actions { display:flex; gap:var(--sp-1); border-top:1px solid var(--border); padding-top:var(--sp-2); }
.action-btn {
  flex:1; display:inline-flex; align-items:center; justify-content:center; gap:6px;
  padding:8px; border-radius:var(--r-sm); border:0; background:none; color:var(--text-soft);
  font:inherit; font-size:.88rem; font-weight:600; cursor:pointer;
}
.action-btn > span, .action-btn { white-space:nowrap; }
.action-btn:hover { background:var(--surface-2); color:var(--text); }
.action-btn.is-active { color:var(--brand); }
.action-btn.is-active svg { fill:currentColor; }
.comments { margin-top:var(--sp-3); border-top:1px solid var(--border); padding-top:var(--sp-3); display:none; }
.comments.open { display:block; }
.comment { display:flex; gap:var(--sp-2); margin-bottom:var(--sp-3); }
.comment-bubble { background:var(--surface-2); border-radius:var(--r-md); padding:var(--sp-2) var(--sp-3); font-size:.9rem; }
.comment-bubble .who { font-weight:650; font-size:.85rem; }
.comment.reply { margin-left:var(--sp-5); }
.comment-form { display:flex; gap:var(--sp-2); align-items:flex-start; }
.comment-form textarea { min-height:40px; height:40px; padding:8px var(--sp-3); }

.composer textarea { min-height:70px; border:0; background:var(--surface-2); }
.composer-foot { display:flex; align-items:center; gap:var(--sp-3); margin-top:var(--sp-3); flex-wrap:wrap; }
.composer-foot .spacer { flex:1; }
.file-label {
  display:inline-flex; align-items:center; gap:6px; font-size:.86rem; color:var(--text-soft);
  cursor:pointer; padding:6px var(--sp-3); border-radius:var(--r-sm); background:var(--surface-2); font-weight:600;
}
.file-label:hover { color:var(--text); }
.file-label input { display:none; }
.preview-img { max-height:180px; border-radius:var(--r-md); margin-top:var(--sp-3); }

/* Profil */
.profile-cover {
  height:220px; border-radius:var(--r-lg); background:linear-gradient(135deg,var(--brand-400),var(--accent-500));
  background-size:cover; background-position:center; position:relative;
}
.profile-head { margin-top:-56px; padding:0 var(--sp-5) var(--sp-4); display:flex; gap:var(--sp-4); align-items:flex-end; flex-wrap:wrap; }
.profile-head .avatar { border:4px solid var(--surface); }
.profile-names { padding-bottom:var(--sp-2); }
.profile-names h1 { margin:0; display:flex; align-items:center; gap:var(--sp-2); flex-wrap:wrap; }
.profile-actions { margin-left:auto; display:flex; gap:var(--sp-2); flex-wrap:wrap; padding-bottom:var(--sp-2); }
.profile-meta { display:flex; gap:var(--sp-4); flex-wrap:wrap; color:var(--text-soft); font-size:.88rem; }
.info-rows { display:grid; gap:var(--sp-3); }
.info-row { display:grid; grid-template-columns:150px 1fr; gap:var(--sp-3); font-size:.92rem; }
.info-row dt { color:var(--text-mute); font-weight:600; }
.info-row dd { margin:0; overflow-wrap:anywhere; }
.verified-badge { color:var(--brand); }
.match-ring {
  display:inline-flex; align-items:center; justify-content:center; width:46px; height:46px;
  border-radius:var(--r-full); font-size:.8rem; font-weight:700; color:#fff;
  background:conic-gradient(var(--mint-500) calc(var(--p,0)*1%), var(--border) 0);
}
.match-ring span { background:var(--surface); color:var(--text); width:36px; height:36px; border-radius:var(--r-full); display:grid; place-items:center; font-size:.75rem; }

/* Chat */
.chat-shell { display:flex; flex-direction:column; padding:0; overflow:hidden;
  height:calc(100vh - var(--header-h) - 150px); min-height:440px; }
.chat-head { display:flex; align-items:center; justify-content:space-between; gap:var(--sp-3);
  padding:var(--sp-3) var(--sp-4); border-bottom:1px solid var(--border); }
.chat-body { flex:1; display:grid; grid-template-columns:minmax(0,1fr) 190px; min-height:0; }
.chat-stream { overflow-y:auto; padding:var(--sp-3) var(--sp-4); display:flex; flex-direction:column; gap:var(--sp-3); }
.chat-users { border-left:1px solid var(--border); padding:var(--sp-3); overflow-y:auto; }
.chat-msg { display:flex; gap:var(--sp-2); font-size:.92rem; align-items:flex-start; }
.chat-msg .grow { min-width:0; }
.chat-meta { display:flex; align-items:center; gap:var(--sp-2); font-size:.8rem; }
.chat-meta a { font-weight:650; }
.chat-text { overflow-wrap:anywhere; }
.chat-msg.system { color:var(--text-mute); font-style:italic; font-size:.85rem; }
.chat-form { display:flex; gap:var(--sp-2); padding:var(--sp-3); border-top:1px solid var(--border); }
.chat-form input { flex:1; }
.chat-rooms { display:flex; flex-wrap:wrap; gap:var(--sp-1); }
.chat-user { display:flex; align-items:center; gap:var(--sp-2); padding:6px var(--sp-2); border-radius:var(--r-sm); font-size:.86rem; }
.chat-user:hover { background:var(--surface-2); text-decoration:none; }
.room-link { display:block; padding:8px var(--sp-3); border-radius:var(--r-sm); color:var(--text-soft); font-size:.88rem; font-weight:600; }
.room-link:hover { background:var(--surface-2); text-decoration:none; }
.room-link.active { background:var(--brand-soft); color:var(--brand); }

/* Nachrichten */
.msg-shell { display:grid; grid-template-columns:300px minmax(0,1fr); gap:var(--sp-4); height:calc(100vh - var(--header-h) - 100px); min-height:460px; }
.thread-link { display:flex; gap:var(--sp-3); padding:var(--sp-3); border-radius:var(--r-md); color:var(--text); }
.thread-link:hover { background:var(--surface-2); text-decoration:none; }
.thread-link.active { background:var(--brand-soft); }
.thread-link.unread .snippet { font-weight:650; color:var(--text); }
.thread-link .snippet { font-size:.85rem; color:var(--text-soft); }
.bubble { max-width:72%; padding:var(--sp-2) var(--sp-3); border-radius:var(--r-lg); background:var(--surface-2); font-size:.93rem; overflow-wrap:anywhere; }
.bubble-row { display:flex; gap:var(--sp-2); margin-bottom:var(--sp-3); align-items:flex-end; }
.bubble-row.mine { flex-direction:row-reverse; }
.bubble-row.mine .bubble { background:var(--brand); color:#fff; }
.bubble-time { font-size:.7rem; color:var(--text-mute); margin-top:3px; }

/* Startseite (ausgeloggt) */
.hero { padding:var(--sp-7) 0; display:grid; grid-template-columns:1.05fr .95fr; gap:var(--sp-7); align-items:center; }
.hero h1 { font-size:2.6rem; letter-spacing:-.03em; }
.hero p.lead { font-size:1.1rem; color:var(--text-soft); max-width:46ch; }
.hero-art { position:relative; }
.feature-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:var(--sp-4); }
.feature { padding:var(--sp-4); border-radius:var(--r-lg); background:var(--surface); border:1px solid var(--border); }
.feature .ico { width:40px; height:40px; border-radius:var(--r-md); background:var(--brand-soft); color:var(--brand); display:grid; place-items:center; margin-bottom:var(--sp-3); }
.section { padding:var(--sp-6) 0; }
.section-head { text-align:center; max-width:60ch; margin:0 auto var(--sp-5); }

.site-footer { border-top:1px solid var(--border); padding:var(--sp-5) 0; margin-top:var(--sp-7); color:var(--text-soft); font-size:.88rem; background:var(--surface); }
.footer-inner { display:flex; justify-content:space-between; gap:var(--sp-4); flex-wrap:wrap; }
.footer-links { display:flex; gap:var(--sp-4); flex-wrap:wrap; }

.table-wrap { overflow-x:auto; }
table.data { width:100%; border-collapse:collapse; font-size:.9rem; }
table.data th, table.data td { padding:10px var(--sp-3); text-align:left; border-bottom:1px solid var(--border); vertical-align:middle; }
table.data th { font-size:.78rem; text-transform:uppercase; letter-spacing:.05em; color:var(--text-mute); }
table.data tr:hover td { background:var(--surface-2); }

.cookie-bar {
  position:fixed; inset:auto var(--sp-4) var(--sp-4) var(--sp-4); z-index:150; background:var(--surface);
  border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--shadow-lg);
  padding:var(--sp-4); display:flex; gap:var(--sp-4); align-items:center; justify-content:space-between; flex-wrap:wrap;
}

.mobile-nav { display:none; }
.hamburger { display:none; }

/* ---------- 6) Responsive ---------- */
@media (max-width:1080px) {
  .layout, .layout.layout-2 { grid-template-columns:200px minmax(0,1fr); }
  .col-right { display:none; }
  .chat-body { grid-template-columns:minmax(0,1fr); }
  .chat-users { display:none; }
}
@media (max-width:860px) {
  .hero { grid-template-columns:1fr; padding:var(--sp-5) 0; }
  .hero h1 { font-size:2rem; }
  .hero-art { display:none; }
  .header-search { display:none; }
  .layout, .layout.layout-2 { grid-template-columns:minmax(0,1fr); padding-bottom:84px; }
  .col-side { display:none; position:static; }
  .col-side.mobile-open {
    display:block; position:fixed; inset:var(--header-h) 0 0 0; z-index:70; background:var(--bg);
    padding:var(--sp-4); overflow-y:auto;
  }
  .hamburger { display:inline-flex; }
  .msg-shell { grid-template-columns:minmax(0,1fr); height:auto; }
  .msg-shell .thread-col.hide-mobile { display:none; }
  .chat-shell { height:auto; }
  .chat-stream { min-height:50vh; }
  .profile-head { padding:0 var(--sp-3) var(--sp-3); }
  .profile-cover { height:150px; }
  .info-row { grid-template-columns:1fr; gap:2px; }
  .field-row { grid-template-columns:1fr; }
  .mobile-nav {
    display:flex; position:fixed; inset:auto 0 0 0; z-index:60; background:var(--surface);
    border-top:1px solid var(--border); padding:6px var(--sp-2) 8px; justify-content:space-around;
  }
  .mobile-nav a { display:flex; flex-direction:column; align-items:center; gap:2px; font-size:.65rem; color:var(--text-soft); position:relative; padding:4px 10px; }
  .mobile-nav a.active { color:var(--brand); }
  .btn, .action-btn, .icon-btn { min-height:40px; }   /* Touch-Ziele */
  .wrap { padding:0 var(--sp-3); }
}
@media (max-width:520px) {
  h1 { font-size:1.45rem; }
  .card { padding:var(--sp-3); border-radius:var(--r-md); }
  .grid-cards { grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); }
  .grid-photos { grid-template-columns:repeat(auto-fill,minmax(110px,1fr)); }
  .profile-actions { width:100%; margin-left:0; }
}
@media (prefers-reduced-motion:reduce) {
  * { animation:none!important; transition:none!important; }
}
@media print {
  .site-header,.col-side,.col-right,.mobile-nav,.site-footer { display:none; }
}

/* =============================================================
   Adminbereich
   ========================================================== */
.admin { background:var(--bg); }
.admin-top {
  position:sticky; top:0; z-index:40; display:flex; align-items:center; gap:var(--sp-3);
  padding:var(--sp-3) var(--sp-4); background:var(--surface); border-bottom:1px solid var(--border);
}
.admin-brand { display:flex; align-items:center; gap:var(--sp-2); font-weight:700; color:var(--text); }
.admin-brand:hover { text-decoration:none; }
.admin-shell { display:grid; grid-template-columns:230px minmax(0,1fr); gap:var(--sp-5); align-items:start;
  max-width:1400px; margin:0 auto; padding:var(--sp-5) var(--sp-4); }
.admin-nav { position:sticky; top:68px; display:grid; gap:var(--sp-4); }
.admin-nav-group { display:grid; gap:2px; }
.admin-nav-title { font-size:.72rem; text-transform:uppercase; letter-spacing:.08em;
  color:var(--text-mute); font-weight:700; margin-bottom:4px; }
.admin-nav a {
  display:flex; align-items:center; gap:var(--sp-2); padding:7px var(--sp-3);
  border-radius:var(--r-sm); color:var(--text-soft); font-size:.92rem; font-weight:550;
}
.admin-nav a:hover { background:var(--surface-2); color:var(--text); text-decoration:none; }
.admin-nav a.active { background:var(--brand-soft); color:var(--brand); }
.admin-nav a .badge { margin-left:auto; background:var(--danger-500); color:#fff;
  border-radius:999px; font-size:.7rem; padding:1px 7px; font-weight:700; }
.admin-main { min-width:0; display:grid; gap:var(--sp-4); }
.admin-h1 { font-size:1.4rem; margin:0; }
.admin-foot { display:flex; flex-wrap:wrap; gap:var(--sp-3); justify-content:space-between;
  padding:var(--sp-4); border-top:1px solid var(--border); font-size:.85rem; color:var(--text-mute); }
.admin .card { margin:0; }

.grid-2 { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:var(--sp-4); align-items:start; }
.right { text-align:right; }
.pos { color:var(--mint-500); font-variant-numeric:tabular-nums; }
.neg { color:var(--danger-500); font-variant-numeric:tabular-nums; }
.chip-green { background:var(--mint-050); color:var(--mint-500); border-color:transparent; }
html[data-theme="dark"] .chip-green { background:var(--surface-2); }
.chip-list { display:flex; flex-wrap:wrap; gap:var(--sp-2); }
.stat-alert { border-color:var(--danger-500); }
.row-muted td { opacity:.55; }
.hint { display:block; font-size:.8rem; color:var(--text-mute); margin-top:4px; }

.filter-bar { display:flex; flex-wrap:wrap; gap:var(--sp-2); align-items:center; margin-bottom:var(--sp-3); }
.filter-bar input, .filter-bar select { width:auto; min-width:150px; height:34px; }
.inline-form { display:flex; flex-wrap:wrap; gap:var(--sp-2); align-items:center; margin-top:var(--sp-2); }
.inline-form input, .inline-form select { width:auto; min-width:120px; height:32px; margin:0; }

.admin-media-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:var(--sp-3); }
.admin-media { margin:0; border:1px solid var(--border); border-radius:var(--r-md); overflow:hidden; background:var(--surface-2); }
.admin-media img { width:100%; aspect-ratio:1/1; object-fit:cover; display:block; }
.admin-media figcaption { display:grid; gap:4px; padding:var(--sp-2); font-size:.8rem; }

.bars { display:flex; align-items:flex-end; gap:3px; height:130px; padding-top:var(--sp-2); }
.bars .bar { flex:1 1 0; display:flex; align-items:flex-end; height:100%; }
.bars .bar span { display:block; width:100%; background:var(--brand); border-radius:3px 3px 0 0; min-height:4px; }
.rank-list { margin:0; padding-left:var(--sp-5); display:grid; gap:6px; font-size:.92rem; }
.rank-list span { float:right; font-variant-numeric:tabular-nums; }
.check-list { margin:0 0 var(--sp-3); padding-left:var(--sp-5); display:grid; gap:4px;
  font-size:.9rem; color:var(--text-soft); }
.sticky-save { position:sticky; bottom:0; padding:var(--sp-3) 0; background:var(--bg);
  border-top:1px solid var(--border); }

@media (max-width:900px) {
  .admin-shell { grid-template-columns:1fr; }
  .admin-nav { position:static; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); }
}

/* Kompakte Beitragsaktionen auf schmalen Displays */
@media (max-width: 430px) {
  .post-actions { gap:0; }
  .action-btn { font-size:.8rem; gap:4px; padding:8px 2px; }
}

/* ==========================================================================
   Ergaenzende Komponenten und Hilfsklassen
   ========================================================================== */
.narrow { max-width:820px; margin-inline:auto; }
.strong { font-weight:650; color:var(--text); }
.block { display:block; }
.between { justify-content:space-between; width:100%; }
.mb-1 { margin-bottom:var(--sp-1); }
.mb-2 { margin-bottom:var(--sp-2); }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
  clip:rect(0 0 0 0); white-space:nowrap; border:0; }

/* Kommentare */
.comment-list { display:flex; flex-direction:column; gap:var(--sp-3); }
.comment-head { display:flex; align-items:center; gap:var(--sp-2); font-size:.85rem; margin-bottom:2px; }
.comment-head a { font-weight:650; }
.comment-body { font-size:.93rem; overflow-wrap:anywhere; }

/* Nachrichten */
.msg-shell.card { padding:0; overflow:hidden; }
.msg-list { border-right:1px solid var(--border); display:flex; flex-direction:column; overflow-y:auto; min-height:0; }
.msg-list-head { display:flex; align-items:center; justify-content:space-between; gap:var(--sp-2);
  padding:var(--sp-3) var(--sp-4); border-bottom:1px solid var(--border); }
.msg-thread { display:flex; align-items:center; gap:var(--sp-3); padding:var(--sp-3) var(--sp-4);
  border-bottom:1px solid var(--border); color:var(--text); }
.msg-thread:hover { background:var(--surface-2); text-decoration:none; }
.msg-thread.active { background:var(--brand-soft); }
.msg-thread-meta { display:flex; flex-direction:column; align-items:flex-end; gap:4px; flex:0 0 auto; }
.msg-main { display:flex; flex-direction:column; min-width:0; min-height:0; }
.msg-head { display:flex; align-items:center; gap:var(--sp-3); padding:var(--sp-3) var(--sp-4);
  border-bottom:1px solid var(--border); }
.msg-scroll { flex:1; overflow-y:auto; padding:var(--sp-4); display:flex; flex-direction:column; gap:var(--sp-2); }
.msg-form { display:flex; gap:var(--sp-2); padding:var(--sp-3); border-top:1px solid var(--border); }
.msg-form input[name="body"], .msg-form textarea { flex:1; }
.bubble { align-self:flex-start; }
.bubble.mine { align-self:flex-end; background:var(--brand); color:#fff; }
.bubble-body { overflow-wrap:anywhere; }
.bubble-meta { font-size:.7rem; opacity:.75; margin-top:3px; display:flex; align-items:center; gap:4px; }
.bubble.mine .bubble-meta { justify-content:flex-end; }

/* Fotos, Alben, Videos */
.photo-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:var(--sp-3); }
.photo-tile-wrap { position:relative; }
.photo-tile-meta { position:absolute; left:6px; bottom:6px; padding:2px 7px; border-radius:var(--r-full);
  background:rgba(0,0,0,.6); color:#fff; font-size:.72rem; display:inline-flex; align-items:center; gap:4px; }
.photo-view { background:#000; border-radius:var(--r-lg); overflow:hidden; display:grid; place-items:center; }
.photo-view img { max-width:100%; max-height:74vh; display:block; }
.album-card { display:block; padding:0; overflow:hidden; }
.album-card img { width:100%; aspect-ratio:4/3; object-fit:cover; display:block; }
.album-card .pad { padding:var(--sp-3); }
.video-card { padding:0; overflow:hidden; }
.video-card img { width:100%; aspect-ratio:16/9; object-fit:cover; display:block; }
.video-card .pad { padding:var(--sp-3); }
.video-card .play, a .play { position:absolute; inset:0; margin:auto; width:46px; height:46px;
  border-radius:var(--r-full); background:rgba(0,0,0,.55); color:#fff; display:grid; place-items:center; }
.video-player { width:100%; max-height:70vh; background:#000; border-radius:var(--r-lg); display:block; }

/* Gruppen */
.group-thumb { width:56px; height:56px; border-radius:var(--r-md); object-fit:cover; flex:0 0 auto; }
.group-avatar { width:84px; height:84px; border-radius:var(--r-lg); object-fit:cover; flex:0 0 auto; }
.composer-bar { display:flex; align-items:center; justify-content:space-between; gap:var(--sp-3);
  margin-top:var(--sp-2); flex-wrap:wrap; }
.forum-post { display:grid; grid-template-columns:150px minmax(0,1fr); gap:var(--sp-4); }
.forum-side { border-right:1px solid var(--border); padding-right:var(--sp-4); text-align:center; }
.breadcrumb { display:flex; align-items:center; gap:6px; flex-wrap:wrap; color:var(--text-mute);
  margin-bottom:var(--sp-3); }

/* Ranglisten, Shop, Matching, Statistik */
.rank-item { display:flex; align-items:center; gap:var(--sp-3); padding:var(--sp-2) 0;
  border-bottom:1px solid var(--border); }
.rank-item:last-child { border-bottom:0; }
.rank-no { flex:0 0 auto; width:28px; height:28px; border-radius:var(--r-full); background:var(--surface-2);
  color:var(--text-mute); display:grid; place-items:center; font-size:.8rem; font-variant-numeric:tabular-nums; }
.rank-no.rank-top { background:var(--brand); color:#fff; }
.shop-item { display:flex; flex-direction:column; gap:var(--sp-2); }
.shop-icon { width:40px; height:40px; border-radius:var(--r-md); background:var(--brand-soft);
  color:var(--brand); display:grid; place-items:center; }
.match-card { display:flex; flex-direction:column; height:100%; }
.match-card > .user-card { flex:1; margin:0; border-bottom:0; border-radius:var(--r-lg) var(--r-lg) 0 0; }
.match-actions { display:flex; justify-content:center; gap:var(--sp-2); padding:var(--sp-3);
  background:var(--surface); border:1px solid var(--border); border-top:0;
  border-radius:0 0 var(--r-lg) var(--r-lg); }
.feature-icon { width:32px; height:32px; border-radius:var(--r-sm); background:var(--brand-soft);
  color:var(--brand); display:inline-grid; place-items:center; flex:0 0 auto; }
.bar-chart { display:flex; align-items:flex-end; gap:5px; height:150px; }
.bar-col { flex:1 1 0; display:flex; flex-direction:column; justify-content:flex-end;
  align-items:center; gap:4px; height:100%; min-width:0; }
.bar-col .bar { width:100%; background:var(--brand); border-radius:3px 3px 0 0; min-height:4px; }
.bar-label { font-size:.62rem; color:var(--text-mute); white-space:nowrap; }

/* Benachrichtigungen, Hilfe, Regeln */
.notif-list { display:flex; flex-direction:column; }
.notif-icon { width:34px; height:34px; border-radius:var(--r-full); background:var(--surface-2);
  color:var(--brand); display:grid; place-items:center; flex:0 0 auto; }
.rules-list { display:grid; gap:var(--sp-3); padding-left:var(--sp-5); }
.faq { border:1px solid var(--border); border-radius:var(--r-md); padding:var(--sp-3) var(--sp-4);
  background:var(--surface); margin-bottom:var(--sp-2); }
.faq > summary { cursor:pointer; font-weight:650; }
.faq[open] > summary { margin-bottom:var(--sp-2); }

/* Fehlerseiten */
body.standalone { display:grid; place-items:center; min-height:100vh; padding:var(--sp-5); }
.page-error .error-card, .error-card { max-width:560px; margin-inline:auto; text-align:center;
  padding:var(--sp-6) var(--sp-5); }
.error-code { font-size:3.2rem; font-weight:700; line-height:1; color:var(--brand); }
.error-icon { width:64px; height:64px; margin:0 auto var(--sp-3); border-radius:var(--r-full);
  background:var(--brand-soft); color:var(--brand); display:grid; place-items:center; }

/* Installer */
.inst { max-width:760px; margin:var(--sp-6) auto; padding:0 var(--sp-4); }
.steps { display:flex; gap:var(--sp-2); flex-wrap:wrap; list-style:none; padding:0;
  margin:0 0 var(--sp-4); font-size:.85rem; }
.steps li { padding:4px 12px; border-radius:var(--r-full); background:var(--surface-2); color:var(--text-mute); }
.steps li.active { background:var(--brand); color:#fff; }
.steps li.done { background:var(--mint-050); color:var(--mint-500); }
.chk { display:flex; align-items:center; gap:var(--sp-2); padding:6px 0; font-size:.92rem; }
.chk.bad { color:var(--danger-500); }

@media (max-width:860px) {
  .msg-list { display:none; }
  .msg-shell.no-thread .msg-list, .msg-shell:not(.has-thread) .msg-list { display:flex; }
  .forum-post { grid-template-columns:minmax(0,1fr); }
  .forum-side { border-right:0; border-bottom:1px solid var(--border); padding:0 0 var(--sp-3);
    text-align:left; display:flex; align-items:center; gap:var(--sp-3); }
}
@media (max-width:680px) {
  .msg-shell { grid-template-columns:minmax(0,1fr); height:auto; }
  .msg-scroll { min-height:50vh; }
  .photo-grid { grid-template-columns:repeat(auto-fill,minmax(110px,1fr)); }
}
