:root {
  --bg: #f4f5f7;
  --card: #ffffff;
  --text: #1c2430;
  --muted: #6b7684;
  --border: #dde1e7;
  --primary: #2563eb;
  --primary-dark: #1d4ed8;
  --ok: #16a34a;
  --warn: #d97706;
  --err: #dc2626;
}

* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
  background: var(--bg);
  color: var(--text);
  font-size: 14px;
}

/* ---------- layout ---------- */
.topbar {
  background: #101827;
  color: #fff;
  position: sticky;
  top: 0;
  z-index: 20;
}
.topbar-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 16px;
  display: flex;
  align-items: center;
  gap: 20px;
  height: 52px;
}
.brand { color: #fff; text-decoration: none; font-weight: 700; font-size: 16px; }
.topbar nav { display: flex; gap: 4px; }
.topbar nav a {
  color: #c7cdd6;
  text-decoration: none;
  padding: 6px 12px;
  border-radius: 6px;
}
.topbar nav a:hover { background: #1f2a3d; color: #fff; }
.topbar nav a.active { background: #2563eb; color: #fff; }
.sync-indicator { margin-left: auto; color: #fbbf24; }

main { max-width: 1280px; margin: 0 auto; padding: 20px 16px 60px; }

.page-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 4px 0 16px;
}
.page-head h1 { margin: 0; font-size: 22px; }

.card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 14px 16px;
  margin-bottom: 14px;
}
.card h2 { margin: 0 0 10px; font-size: 15px; }

/* ---------- flash ---------- */
.flash { padding: 10px 14px; border-radius: 8px; margin-bottom: 12px; }
.flash-ok { background: #dcfce7; border: 1px solid #86efac; }
.flash-error { background: #fee2e2; border: 1px solid #fca5a5; }

.warn-banner {
  display: block;
  background: #fef3c7;
  border: 1px solid #fcd34d;
  color: #92400e;
  padding: 10px 14px;
  border-radius: 8px;
  margin-bottom: 14px;
  text-decoration: none;
}
.warn-banner:hover { background: #fde68a; }

/* ---------- dashboard ---------- */
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 12px;
}
.network-card { margin-bottom: 0; }
.card-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.stat-row { display: flex; gap: 8px; }
.stat {
  flex: 1;
  text-align: center;
  padding: 8px 4px;
  border-radius: 8px;
  background: #f8fafc;
  text-decoration: none;
  color: var(--text);
}
a.stat:hover { background: #eef2ff; }
.stat-highlight { background: #fef9c3; }
.stat-num { display: block; font-size: 20px; font-weight: 700; }
.stat-label { color: var(--muted); font-size: 12px; }
.card-foot { margin-top: 10px; font-size: 12.5px; color: var(--muted); }
.sync-results ul { margin: 6px 0 0; padding-left: 18px; }

/* ---------- filtry ---------- */
.filters .filter-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.filters .filter-row + .filter-row { margin-top: 8px; }
.filters input[type="search"], .filters select, .note-form textarea {
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: 7px;
  font: inherit;
  background: #fff;
}
.grow { flex: 1; min-width: 180px; }
.network-checks { display: flex; flex-wrap: wrap; gap: 6px; }
.check-badge { cursor: pointer; user-select: none; }
.check-badge input { display: none; }
.check-badge .badge { opacity: 0.42; }
.check-badge input:checked + .badge { opacity: 1; outline: 2px solid #1c2430; }

/* ---------- tabulka ---------- */
.data-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 10px;
  overflow: hidden;
}
.data-table th, .data-table td {
  padding: 8px 10px;
  border-bottom: 1px solid var(--border);
  text-align: left;
  vertical-align: top;
}
.data-table th { background: #f8fafc; font-size: 12.5px; white-space: nowrap; }
.data-table tbody tr:hover { background: #f8fafc; }
.data-table .num { text-align: right; }
.row-new { background: #fefce8; }
.row-gone td { opacity: 0.6; }
.empty { text-align: center; color: var(--muted); padding: 26px !important; }
.col-check { width: 30px; }
.col-shop { max-width: 170px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.col-title { max-width: 420px; }
.col-title a { color: var(--text); text-decoration: none; font-weight: 600; }
.col-title a:hover { color: var(--primary); text-decoration: underline; }
.col-code { white-space: nowrap; }
.col-validity { white-space: nowrap; font-size: 13px; }
.col-validity.expiring { color: var(--warn); font-weight: 600; }
.col-validity.expired { color: var(--err); }
.col-actions { white-space: nowrap; }

/* ---------- badge + status ---------- */
.badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 20px;
  font-size: 11.5px;
  font-weight: 700;
  color: #fff;
  background: #64748b;
  white-space: nowrap;
}
.net-Awin { background: #ff6633; }
.net-CJ { background: #14532d; }
.net-Admitad { background: #7c3aed; }
.net-eHub { background: #0284c7; }
.net-Tradedoubler { background: #be123c; }
.net-Dognet { background: #ca8a04; }
.net-Webgains { background: #0f766e; }
.net-Affilmax { background: #475569; }

.domain { color: var(--muted); font-size: 11.5px; }
.col-market { white-space: nowrap; }
.market {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 6px;
  border: 1px solid var(--border);
  background: #f8fafc;
  color: var(--muted);
}
.market-cz { border-color: #93c5fd; background: #eff6ff; color: #1d4ed8; }
.market-sk { border-color: #a5b4fc; background: #eef2ff; color: #4338ca; }

.status { font-size: 12px; font-weight: 600; padding: 2px 8px; border-radius: 6px; white-space: nowrap; }
.status-new { background: #fef9c3; color: #854d0e; }
.status-processed { background: #dcfce7; color: #166534; }
.status-hidden { background: #e2e8f0; color: #475569; }

.tag {
  font-size: 10.5px;
  padding: 1px 6px;
  border-radius: 5px;
  margin-left: 5px;
  vertical-align: middle;
}
.tag-exclusive { background: #ede9fe; color: #6d28d9; font-weight: 700; }
.tag-action { background: #e0f2fe; color: #075985; }
.tag-gone { background: #fee2e2; color: #b91c1c; }
.tag-note { background: transparent; }

.code {
  background: #f1f5f9;
  border: 1px dashed #94a3b8;
  padding: 2px 7px;
  border-radius: 6px;
  font-family: Consolas, monospace;
  font-size: 13px;
}
.code-big { font-size: 16px; padding: 4px 10px; }
.copy-btn {
  border: none;
  background: transparent;
  cursor: pointer;
  font-size: 13px;
  color: var(--muted);
  padding: 2px 4px;
}
.copy-btn:hover { color: var(--primary); }
.copy-btn.copied { color: var(--ok); }

/* ---------- tlacitka ---------- */
.btn {
  display: inline-block;
  padding: 7px 14px;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: #fff;
  color: var(--text);
  font: inherit;
  text-decoration: none;
  cursor: pointer;
}
.btn:hover { border-color: #94a3b8; background: #f8fafc; }
.btn:disabled { opacity: 0.5; cursor: not-allowed; }
.btn-primary { background: var(--primary); border-color: var(--primary); color: #fff; }
.btn-primary:hover { background: var(--primary-dark); }
.btn-small { padding: 4px 10px; font-size: 12.5px; }
.btn-tiny { padding: 2px 7px; font-size: 12px; }

.bulk-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 2px;
  position: sticky;
  bottom: 0;
  background: linear-gradient(transparent, var(--bg) 30%);
}
.pagination { display: flex; align-items: center; gap: 8px; }

/* ---------- detail ---------- */
.detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 900px) { .detail-grid { grid-template-columns: 1fr; } }
.detail-list { display: grid; grid-template-columns: 130px 1fr; gap: 6px 10px; margin: 0; }
.detail-list dt { color: var(--muted); }
.detail-list dd { margin: 0; }
.break { word-break: break-all; }
.action-row { display: flex; gap: 8px; margin: 14px 0; }
.note-form { display: flex; flex-direction: column; gap: 8px; }
.note-form textarea { resize: vertical; }
.raw-json {
  background: #0f172a;
  color: #e2e8f0;
  padding: 12px;
  border-radius: 8px;
  overflow-x: auto;
  font-size: 12px;
  max-height: 480px;
}

.muted { color: var(--muted); }
.error-text { color: var(--err); font-size: 12px; }

/* ---------- login + uzivatele ---------- */
.login-box {
  max-width: 360px;
  margin: 80px auto;
  text-align: center;
}
.login-box h1 { font-size: 20px; margin: 4px 0 18px; }
.login-box form { display: flex; flex-direction: column; gap: 8px; text-align: left; }
.login-box input {
  padding: 9px 11px;
  border: 1px solid var(--border);
  border-radius: 7px;
  font: inherit;
}
.login-box label { font-size: 12.5px; color: var(--muted); margin-bottom: -4px; }
.login-box .btn { margin-top: 10px; }

.user-menu { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.topbar .sync-indicator + .user-menu { margin-left: 16px; }
.user-menu a { color: #c7cdd6; text-decoration: none; padding: 6px 10px; border-radius: 6px; }
.user-menu a:hover, .user-menu a.active { background: #1f2a3d; color: #fff; }
.btn-link {
  background: none;
  border: none;
  color: #8b95a5;
  cursor: pointer;
  font: inherit;
  padding: 6px 8px;
}
.btn-link:hover { color: #fff; text-decoration: underline; }
.inline-form { display: inline-block; }
.user-create-form { display: flex; gap: 8px; flex-wrap: wrap; }
.user-create-form input, .user-create-form select {
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: 7px;
  font: inherit;
}
.account-note { margin-top: 10px; }
