:root{
  --bg:#0f1117;
  --panel:#171a23;
  --panel-2:#1f2430;
  --line:rgba(255,255,255,.08);
  --text:#e8eaf0;
  --muted:rgba(232,234,240,.5);
  --accent:#6366f1;
  --accent-2:#818cf8;
  --danger:#ef4444;
  --ok:#10b981;
}

*{box-sizing:border-box;margin:0;padding:0}

body{
  background:var(--bg);color:var(--text);
  font:15px/1.55 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  min-height:100vh;
}

code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.9em;background:rgba(255,255,255,.06);padding:1px 5px;border-radius:5px}

/* шапка */
.topbar{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px 28px;background:var(--panel);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:10;
}
.topbar .brand{color:var(--text);text-decoration:none;font-weight:600;font-size:16px}
.topbar nav{display:flex;align-items:center;gap:18px}
.topbar nav a{color:var(--muted);text-decoration:none;font-size:14px}
.topbar nav a:hover{color:var(--text)}

.wrap{max-width:1180px;margin:0 auto;padding:32px 28px 64px}

h1{font-size:26px;font-weight:650;margin-bottom:8px}
h2{font-size:16px;font-weight:600;margin-bottom:14px}
.muted{color:var(--muted);font-size:13.5px}

/* кнопки */
.btn{
  display:inline-block;padding:8px 16px;border:0;border-radius:9px;cursor:pointer;
  background:var(--accent);color:#fff;font:inherit;font-size:14px;font-weight:500;
  text-decoration:none;transition:.15s;
}
.btn:hover{background:var(--accent-2)}
.btn--ghost{background:transparent;border:1px solid var(--line);color:var(--text)}
.btn--ghost:hover{background:var(--panel-2)}
.btn--danger{background:transparent;border:1px solid rgba(239,68,68,.4);color:#fca5a5}
.btn--danger:hover{background:rgba(239,68,68,.12)}
.btn--big{padding:12px 28px;font-size:15px}

/* сообщения */
.flash{padding:12px 16px;border-radius:10px;margin-bottom:22px;font-size:14px;
  background:rgba(16,185,129,.12);border:1px solid rgba(16,185,129,.35);color:#6ee7b7}
.flash--warn{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.35);color:#fca5a5}
.flash--info{background:rgba(99,102,241,.1);border-color:rgba(99,102,241,.35);color:#c7d2fe}

.empty{margin-top:40px;padding:48px;text-align:center;border:1px dashed var(--line);border-radius:14px}
.empty p{color:var(--muted);margin-bottom:18px}

/* таблица */
.grid{width:100%;border-collapse:collapse;margin-top:22px;background:var(--panel);border-radius:12px;overflow:hidden}
.grid th{
  text-align:left;padding:12px 14px;font-size:12px;font-weight:600;text-transform:uppercase;
  letter-spacing:.4px;color:var(--muted);background:var(--panel-2);border-bottom:1px solid var(--line);
}
.grid td{padding:14px;border-bottom:1px solid var(--line);vertical-align:middle;font-size:14px}
.grid tr:last-child td{border-bottom:0}
.grid .right{text-align:right;white-space:nowrap}
.grid .right form{display:inline;margin-left:6px}

.links{display:flex;flex-wrap:wrap;gap:6px;max-width:280px}
.links a{
  font-size:12px;padding:3px 8px;border-radius:6px;text-decoration:none;
  background:var(--panel-2);color:var(--muted);border:1px solid var(--line);
}
.links a:hover{color:var(--text);border-color:var(--accent)}

.swatch{display:inline-block;width:14px;height:14px;border-radius:4px;vertical-align:-2px;border:1px solid var(--line)}

/* логотип МФО в таблице офферов: фон белый — логотипы в SVG и часто тёмные,
   на тёмной админке они иначе просто не видны */
.logo-cell{display:flex;align-items:center;justify-content:center;width:104px;height:40px;
  padding:5px;background:#fff;border-radius:8px}
.logo-cell img{max-width:100%;max-height:30px;object-fit:contain}
.link-cell code{display:block;max-width:420px;overflow-x:auto;white-space:nowrap;font-size:12px}

/* «Полные условия»: список целей оффера. У большинства цель одна, но встречаются и 16 —
   поэтому ограничиваем ширину и не даём строке разъезжать таблицу. */
.goals-cell{min-width:260px;max-width:380px;font-size:13px;line-height:1.5}
.goals-cell div{white-space:normal}

/* сортируемые заголовки таблицы: ссылка не должна выглядеть ссылкой — это заголовок */
.grid th a{color:inherit;text-decoration:none;border-bottom:1px dashed var(--line)}
.grid th a:hover{color:var(--text);border-bottom-color:var(--accent)}

/* формы */
.form{margin-top:24px;display:flex;flex-direction:column;gap:18px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px 24px}
.card > .muted{margin-bottom:16px}

label{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
label > span{font-size:13px;color:var(--muted)}
label small{font-size:12px;color:var(--muted)}

input[type=text],input[type=color],select{
  padding:9px 12px;border-radius:9px;border:1px solid var(--line);
  background:var(--panel-2);color:var(--text);font:inherit;font-size:14px;
}
input[type=text]:focus,select:focus{outline:0;border-color:var(--accent)}
input[type=color]{padding:3px;height:40px;width:80px;cursor:pointer}

.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 20px}
.cols .wide{grid-column:1 / -1}
.pair{display:flex;gap:8px}
.pair input{width:100%}

.actions{display:flex;align-items:center;gap:12px}

.inline-form{display:flex;align-items:center;gap:16px;margin-top:20px;padding:14px 18px;
  background:var(--panel);border:1px solid var(--line);border-radius:12px}
.inline-form label{flex-direction:row;align-items:center;gap:10px;margin:0}
.inline-form small{color:var(--muted);font-size:12px}

.raw{margin-top:12px;padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:12px;
  font-family:ui-monospace,Consolas,monospace;font-size:12px;line-height:1.5;color:var(--muted);
  max-height:460px;overflow:auto;white-space:pre}

/* счётчик офферов в заголовке */
.count{display:inline-block;margin-left:6px;padding:2px 9px;border-radius:20px;font-size:12px;
  background:var(--accent);color:#fff;vertical-align:middle}

/* отчёт парсера условий займа */
.parse-report{margin:-4px 0 16px;padding:12px 14px;border-radius:10px;font-size:13px;line-height:1.5;
  background:rgba(99,102,241,.08);border:1px solid rgba(99,102,241,.25);color:#c7d2fe}
.parse-report .muted{font-size:12.5px}

/* происхождение значения в поле */
input.is-offer{border-color:rgba(59,130,246,.55);background:rgba(59,130,246,.07)}    /* точные данные */
input.is-ai{border-color:rgba(16,185,129,.55);background:rgba(16,185,129,.08)}       /* знания модели */
input.is-web{border-color:rgba(249,115,22,.6);background:rgba(249,115,22,.09)}       /* из интернета, не проверено */
input.is-missing{border-color:rgba(245,158,11,.55);background:rgba(245,158,11,.07)}  /* типовое/заглушка */
input.is-manual{border-color:rgba(255,255,255,.14);background:rgba(255,255,255,.03)}
input.is-edited{border-color:rgba(168,85,247,.55);background:rgba(168,85,247,.08)}   /* правил человек — ИИ не трогает */

/* легенда цветов */
.legend{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:10px;padding-top:9px;
  border-top:1px solid rgba(255,255,255,.08);font-size:12.5px}
.legend .dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px}
.legend .dot--offer{background:#3b82f6}
.legend .dot--ai{background:#10b981}
.legend .dot--web{background:#f97316}
.legend .dot--default{background:#f59e0b}
.legend .dot--edited{background:#a855f7}

/* поиск по реестру ЦБ */
.cbr-results{margin:-8px 0 14px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel-2)}
.cbr-row{display:flex;flex-direction:column;gap:2px;width:100%;padding:10px 14px;border:0;
  border-bottom:1px solid var(--line);background:transparent;color:var(--text);
  font:inherit;font-size:13px;text-align:left;cursor:pointer}
.cbr-row:last-child{border-bottom:0}
.cbr-row:hover{background:rgba(99,102,241,.15)}
.cbr-row span{font-size:12px;color:var(--muted)}

/* поле, заполненное моделью — требует проверки */
#ai-fill{margin-top:4px}
#ai-status{display:block;margin-top:8px}

/* просмотр лендинга в админке */
.preview-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin:16px 0 10px}
.preview-pages,.preview-sizes{display:flex;flex-wrap:wrap;gap:6px}
.preview-bar .btn{padding:6px 12px;font-size:13px}
.preview-bar .btn.is-active{background:var(--accent);border-color:var(--accent);color:#fff}

/* рамка на всю ширину окна: колонка админки (1180px) сжимала лендинг и он выглядел кривым */
.preview-frame{
  width:100vw;
  margin-left:calc(50% - 50vw);          /* вырываемся из центрированной колонки */
  height:calc(100vh - 190px);
  min-height:600px;
  display:flex;justify-content:center;
  background:#0b0b10;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:0;
}
.preview-frame iframe{width:100%;height:100%;border:0;background:#fff;transition:width .2s ease}
.preview-frame:fullscreen{height:100vh;margin:0;width:100vw}

/* карточка выбранного оффера: логотип МФО */
.offer-card{display:flex;align-items:center;gap:14px;margin:12px 0 14px;padding:12px 14px;
  background:var(--panel-2);border:1px solid var(--line);border-radius:12px}
.offer-card img{width:120px;height:38px;object-fit:contain;background:#fff;border-radius:8px;padding:4px}
.offer-card__info{display:flex;flex-direction:column;gap:2px;font-size:14px}

/* выбор моделей в настройках */
.models{display:flex;flex-direction:column;gap:2px;margin:-6px 0 14px;
  border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel-2)}
.model-row{display:flex;align-items:center;gap:10px;margin:0;padding:10px 14px;
  border-bottom:1px solid var(--line);cursor:pointer;flex-direction:row}
.model-row:last-child{border-bottom:0}
.model-row:hover{background:rgba(99,102,241,.08)}
.model-row input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}
/* имя модели: раньше лежало прямым потомком .model-row, теперь внутри label.model-pick —
   без второго селектора оно теряло моноширинный шрифт и становилось мелким серым */
.model-row > span,
.model-pick > span{font-size:14px;font-family:ui-monospace,Consolas,monospace;color:var(--text)}
.model-row em{margin-left:auto;font-size:12px;color:var(--muted);font-style:normal}

/* очередь опроса моделей: номер, галочка, замеры, стрелки */
.model-num{min-width:22px;font-size:13px;color:var(--muted);font-family:ui-monospace,Consolas,monospace}

/* --- Статистика трекера --- */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:22px 0}
.card{padding:16px 18px;background:var(--panel);border:1px solid var(--line);border-radius:12px;
  display:flex;flex-direction:column;gap:4px}
.card b{font-size:24px;line-height:1.1}
.card span{font-size:12px;color:var(--muted)}

.filters{display:flex;gap:16px;align-items:flex-end;margin:18px 0 0}
.filters label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}
.filters select{padding:9px 12px;background:var(--panel);color:var(--text);
  border:1px solid var(--line);border-radius:9px;font-size:14px;min-width:170px}

.code{margin-top:10px;padding:14px 16px;background:var(--panel);border:1px solid var(--line);
  border-radius:10px;font-family:ui-monospace,Consolas,monospace;font-size:12.5px;
  color:var(--text);white-space:pre-wrap;word-break:break-all}

.stream-form{margin-top:24px;padding:18px;background:var(--panel);border:1px solid var(--line);border-radius:12px}
.stream-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin:14px 0}
.stream-grid label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--muted)}
.stream-grid input,.stream-grid select{padding:9px 12px;background:var(--bg,#0f0f16);color:var(--text);border:1px solid var(--line);border-radius:9px;font-size:14px}

/* --- Ротация офферов --- */
.rot-head{display:flex;justify-content:space-between;align-items:center;margin:18px 0;font-size:14px;color:var(--muted)}
.rot-actions{display:flex;gap:10px}
.rot-weight{width:80px;padding:7px 10px;background:var(--bg,#0f0f16);color:var(--text);
  border:1px solid var(--line);border-radius:8px;font-size:14px}
.rot-off{opacity:.45}
.rot-foot{margin-top:18px}
.rot-badge{margin-left:8px;padding:2px 8px;border-radius:100px;font-size:11px;
  background:rgba(239,68,68,.14);color:#fca5a5;border:1px solid rgba(239,68,68,.3)}

/* панель массовых действий и сортируемая таблица ротации */
.rot-bulk{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:16px 0;padding:12px 14px;
  background:var(--panel);border:1px solid var(--line);border-radius:12px}
.rot-bulk #rot-search{flex:1;min-width:200px;padding:9px 12px;background:var(--bg,#0f0f16);color:var(--text);
  border:1px solid var(--line);border-radius:9px;font-size:14px}
.rot-sep{width:1px;height:24px;background:var(--line)}
.rot-bulk-set{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.rot-bulk-set input{width:80px;padding:8px 10px;background:var(--bg,#0f0f16);color:var(--text);
  border:1px solid var(--line);border-radius:8px;font-size:14px}
.rot-table th.rot-sort{cursor:pointer;user-select:none}
.rot-table th.rot-sort:hover{color:var(--text)}
.rot-table th.rot-sort::after{content:"↕";margin-left:6px;opacity:.35;font-size:11px}
.rot-table th.is-asc::after{content:"↑";opacity:1}
.rot-table th.is-desc::after{content:"↓";opacity:1}
.rot-check{width:36px;text-align:center}
.rot-check input{width:16px;height:16px;accent-color:#6366f1;cursor:pointer}

/* --- Домены --- */
.dom-search{display:flex;gap:10px;margin:14px 0 18px}
.dom-search input{flex:1;padding:10px 14px;background:var(--bg,#0f0f16);color:var(--text);
  border:1px solid var(--line);border-radius:10px;font-size:15px}
.dom-free{color:#4ade80;font-size:13px}
.dom-buy{display:inline-block;position:relative}
.dom-buy summary{list-style:none;cursor:pointer}
.dom-buy summary::-webkit-details-marker{display:none}
.dom-buy-form{position:absolute;right:0;top:calc(100% + 6px);z-index:10;width:280px;text-align:left;
  padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:12px;
  box-shadow:0 20px 50px rgba(0,0,0,.4)}
.dom-buy-form p{font-size:13px;margin-bottom:12px;line-height:1.5}
.dom-buy-form label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--muted);margin-bottom:12px}
.dom-buy-form select{padding:8px 10px;background:var(--bg,#0f0f16);color:var(--text);border:1px solid var(--line);border-radius:8px}
.dom-rebind{display:flex;gap:8px;align-items:center}
.dom-rebind select{padding:8px 10px;background:var(--bg,#0f0f16);color:var(--text);border:1px solid var(--line);border-radius:8px;font-size:13px}
.chk{flex-direction:row!important;align-items:flex-start;gap:10px!important}
.chk input{width:16px;height:16px;margin-top:2px;accent-color:#6366f1}
.dom-tag{margin-left:8px;padding:2px 8px;border-radius:100px;font-size:11px;
  background:rgba(74,222,128,.14);color:#4ade80;border:1px solid rgba(74,222,128,.3)}
.dom-external{display:flex;gap:10px;margin-top:14px}
.dom-external input{flex:1;padding:9px 12px;background:var(--bg,#0f0f16);color:var(--text);
  border:1px solid var(--line);border-radius:9px;font-size:14px}
.dom-line{display:flex;align-items:center;gap:10px;padding:5px 0}
.dom-inline{display:inline;margin:0}
.dom-inline .btn{padding:5px 10px;font-size:12px}
#domain h3{font-size:14px;margin:18px 0 10px;color:var(--muted)}
.buy-chosen{margin-top:10px;padding:10px 14px;border-radius:10px;font-size:13px;
  background:rgba(74,222,128,.12);border:1px solid rgba(74,222,128,.3);color:var(--text)}
.buy-chosen a{color:#fca5a5;margin-left:8px}
.dom-pick{padding:6px 14px;font-size:13px}
