:root{
  --bg:#f3f5f8; --panel:#fff; --line:#e3e7ee; --line-soft:#eef1f5; --text:#1f2733; --muted:#6b7684;
  --accent:#2fbf8f; --accent-dark:#1a8f68; --accent-soft:#e6f7f0; --link:#2f7be5; --btn:#2f7be5; --btn-hover:#2468c8;
  --warn:#b5771b; --warn-soft:#fdf3e2; --danger:#c03f3f; --danger-bar:#e15b5b; --danger-soft:#fdeaea;
  --info-soft:#eef6fe; --gray-soft:#eef1f5;
  /* поверхности и линии (для тёмной темы переопределяются ниже) */
  --surface-2:#fafbfc; --hover:#f6f8fa; --row-hover:#fafcfd; --input-line:#d6dbe3; --input-bg:#fff;
  --faint:#a3abb7; --danger-line:#f0c4c4; --warn-line:#f3dfb8; --accent-line:#c2ebdb; --info-line:#d5e6fb;
  --info-text:#2468c8; --avatar:#dfe4ea; --chat-bg:#efeae2; --compose-bg:#f0f2f5; --bubble:#fff;
  --bubble-out:#d9fdd3; --shadow:rgba(16,24,40,.06); --on-accent:#fff;
  color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:13px;color:var(--text);background:var(--bg)}
a{color:var(--link);text-decoration:none}
a:hover{text-decoration:underline}
h1{margin:2px 0 0;font-size:18px}
h3{margin:0 0 14px;font-size:14.5px}
.app{display:flex;min-height:100vh}

/* ---------- sidebar ---------- */
.side{width:214px;flex:none;background:var(--panel);border-right:1px solid var(--line);padding:12px 0 0;position:sticky;top:0;height:100vh;overflow:hidden}
.side .logo{flex:none}
.side .nav{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.side .nav::-webkit-scrollbar{width:6px}.side .nav::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.side-foot,.side-credit{flex:none}
.logo{display:flex;align-items:center;gap:8px;padding:4px 18px 14px;font-weight:700;font-size:15px;color:var(--text)}
.logo:hover{text-decoration:none}
.logo i{width:26px;height:26px;border-radius:7px;background:var(--accent);display:grid;place-items:center;color:#fff;font-style:normal;font-size:13px}
.sec{font-size:10.5px;font-weight:600;letter-spacing:.06em;color:var(--accent);padding:11px 18px 4px;text-transform:uppercase}
.sec.gray{color:var(--muted)}
.nav a{display:flex;align-items:center;gap:10px;padding:7px 18px;color:var(--text);position:relative;line-height:1.3}
.nav a:hover{background:var(--hover);text-decoration:none}
.nav a svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.7;flex:none}
.nav a.on{background:var(--accent);color:#fff;font-weight:600}
.badge{margin-left:auto;background:var(--danger-bar);color:#fff;font-size:10.5px;border-radius:10px;padding:1px 7px;font-weight:600}
.nav a.on .badge{background:var(--panel);color:var(--accent-dark)}
.side-foot{padding:10px 12px 8px;border-top:1px solid var(--line);margin-top:0;font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:8px}
.me-card{display:flex;align-items:center;gap:6px;padding:2px 0 2px 4px}
.me-card .me-ava{margin-right:4px}
.me-ava{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:12.5px;font-weight:600;letter-spacing:.3px;color:#fff;background:linear-gradient(135deg,var(--accent),#1e7fd6)}
.me-name{min-width:0;flex:1;line-height:1.3}
.me-name b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--text);font-weight:600;font-size:12.5px;line-height:1.25;overflow-wrap:anywhere}
.me-name span{display:block;font-size:11.5px;color:var(--muted)}
.side-foot form{margin:0}
.me-icon{width:32px;height:32px;display:grid;place-items:center;border:1px solid transparent;border-radius:8px;background:none;color:var(--muted);cursor:pointer}
.me-icon.sec-ic{color:var(--accent)}.me-icon.sec-ic:hover,.me-icon.sec-ic.on{background:var(--accent-soft);color:var(--accent)}
.me-icon:not(.sec-ic):hover{background:var(--danger-soft,rgba(220,53,69,.08));color:var(--danger);border-color:transparent}
.me-icon svg,.me-link svg,.seg svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.me-link{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;color:var(--text);font-size:12.5px}
.me-link:hover{background:var(--hover);text-decoration:none}
.me-link.on{background:var(--accent-soft);color:var(--accent);font-weight:600}
.me-link svg{color:var(--accent)}
.me-prefs{display:flex;gap:6px;align-items:center}
.me-prefs .me-icon{margin-left:auto;width:30px;height:30px}
.seg{display:flex;flex:none;gap:2px;padding:3px;border-radius:9px;background:var(--gray-soft)}
.seg button{width:26px;height:24px;flex:none;display:grid;place-items:center;border:0;border-radius:6px;background:none;color:var(--muted);font:inherit;font-size:11.5px;font-weight:600;letter-spacing:.2px;cursor:pointer;transition:background .12s,color .12s}
.seg button:hover{color:var(--text)}
.seg button[aria-pressed="true"]{background:var(--panel);color:var(--text);box-shadow:0 1px 2px var(--shadow,rgba(0,0,0,.08))}

/* ---------- main ---------- */
.main{flex:1;padding:22px 26px 40px;min-width:0}
.head{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.head .ico{width:40px;height:40px;border-radius:9px;background:var(--accent);display:grid;place-items:center;color:#fff;font-weight:700;flex:none}
.head .ico svg{width:20px;height:20px;stroke:#fff;fill:none;stroke-width:1.8}
.head .grow{flex:1;min-width:0}
.head-actions{display:flex;gap:8px;flex-wrap:wrap}
.crumbs{font-size:12.5px}
.crumbs span{color:var(--muted);margin:0 3px}

.tabs{display:flex;gap:4px;background:var(--panel);border:1px solid var(--line);border-bottom:none;border-radius:8px 8px 0 0;padding:6px 6px 0;overflow-x:auto}
.tabs a{padding:8px 12px;color:var(--muted);font-size:13.5px;border-radius:6px 6px 0 0;white-space:nowrap}
.tabs a:hover{color:var(--text);text-decoration:none}
.tabs a.on{background:var(--surface-2);color:var(--text);font-weight:600}
.tabs a .cnt{font-size:11px;color:var(--muted);margin-left:4px}
.body{background:var(--surface-2);border:1px solid var(--line);border-radius:0 0 8px 8px;padding:16px}
.body.alone{border-radius:8px}
.grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:18px}
.grid.even{grid-template-columns:1fr 1fr}

.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:16px 16px 18px;margin-bottom:18px}
.card:last-child{margin-bottom:0}
.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.card-head h3{margin:0}

/* ---------- forms ---------- */
label{display:block;font-size:12px;color:var(--text);margin:10px 0 4px}
input[type=text],input[type=email],input[type=tel],input[type=number],input[type=password],input[type=date],input[type=search],input[type=url],input[type=file],select,textarea{
  width:100%;font:inherit;color:var(--text);border:1px solid var(--input-line);border-radius:5px;padding:7px 9px;background:var(--input-bg)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
textarea{min-height:64px;resize:vertical}
input[type=checkbox]{accent-color:var(--accent)}
.row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
.help{font-size:11.5px;color:var(--muted);margin-top:3px}
.errorlist{list-style:none;margin:4px 0 0;padding:0;color:var(--danger);font-size:12px}
.field-error input,.field-error select,.field-error textarea{border-color:var(--danger-bar)}
.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.check{display:flex;align-items:center;gap:8px;margin-top:12px}
.check label{margin:0}

.btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-weight:500;border:none;border-radius:5px;padding:8px 16px;background:var(--btn);color:#fff;cursor:pointer;white-space:nowrap}
.btn:hover{background:var(--btn-hover);text-decoration:none}
.btn.ghost{background:var(--panel);color:var(--text);border:1px solid var(--input-line)}
.btn.ghost:hover{background:var(--hover)}
.btn.green{background:var(--accent)}
.btn.green:hover{background:var(--accent-dark)}
.btn.danger{background:var(--panel);color:var(--danger);border:1px solid var(--danger-line)}
.btn.sm{padding:5px 10px;font-size:12px}
.btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.8}

/* ---------- tables ---------- */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th{font-weight:500;color:var(--muted);text-align:left;font-size:11.5px;padding:7px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:9px 8px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
tr:last-child td{border-bottom:none}
tbody tr:hover td{background:var(--row-hover)}
td.num,th.num{text-align:right;white-space:nowrap}
.small{font-size:11.5px;color:var(--muted)}
.strong{font-weight:600}
.empty{padding:28px;text-align:center;color:var(--muted)}

.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.toolbar input[type=search]{max-width:280px}
.toolbar select{width:auto}
.toolbar .spacer{flex:1}

.pager{display:flex;gap:6px;justify-content:flex-end;align-items:center;margin-top:12px;font-size:12px;color:var(--muted)}

/* ---------- widgets ---------- */
.tag{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;white-space:nowrap;background:var(--gray-soft);color:var(--muted)}
.tag.green{background:var(--accent-soft);color:var(--accent-dark)}
.tag.yellow{background:var(--warn-soft);color:var(--warn)}
.tag.red{background:var(--danger-soft);color:var(--danger)}
.tag.blue{background:var(--info-soft);color:var(--info-text)}
.bar{height:6px;background:var(--line-soft);border-radius:4px;overflow:hidden;margin-top:4px;width:120px;max-width:100%}
.bar b{display:block;height:100%;background:var(--accent)}
.bar b.over{background:var(--danger-bar)}
.kv{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px dashed var(--line-soft)}
.kv:last-child{border:none}
.big{font-size:24px;font-weight:700}
.big.red{color:var(--danger-bar)}
.big.green{color:var(--accent-dark)}
.tg{display:flex;align-items:center;gap:10px;background:var(--info-soft);border-radius:7px;padding:10px}
.tg.off{background:var(--gray-soft)}
.dot{width:9px;height:9px;border-radius:50%;background:var(--accent);flex:none}
.tg.off .dot{background:var(--faint)}
.list-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line-soft)}
.list-item:last-child{border:none}

.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:18px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px 16px}
.stat .label{font-size:12px;color:var(--muted)}
.stat .value{font-size:22px;font-weight:700;margin-top:4px}
.stat .sub{font-size:11.5px;color:var(--muted);margin-top:2px}

.messages{margin-bottom:14px}
.msg{padding:10px 14px;border-radius:7px;margin-bottom:8px;background:var(--info-soft);border:1px solid var(--info-line)}
.msg.success{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-dark)}
.msg.error{background:var(--danger-soft);border-color:var(--danger-line);color:var(--danger)}
.msg.warning{background:var(--warn-soft);border-color:var(--warn-line);color:var(--warn)}

.chart{display:flex;align-items:flex-end;gap:3px;height:120px;padding-top:6px}
.chart div{flex:1;background:var(--accent);border-radius:3px 3px 0 0;min-height:2px;position:relative}
.chart div:hover{background:var(--accent-dark)}
.chart-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:4px}

/* ---------- logo ---------- */
.logo img{display:block;width:100%;max-width:170px;height:auto}
.login-logo{display:block;width:100%;max-width:280px;height:auto;margin:0 auto 22px}

/* ---------- login ---------- */
.login{min-height:100vh;display:grid;place-items:center;padding:16px}
.login .card{width:100%;max-width:360px;padding:26px}
.login .logo{padding:0 0 18px}

@media (max-width:1000px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:900px){
  .side{display:none}.main{padding:16px}
  .grid,.grid.even,.row,.row3{grid-template-columns:1fr}
}

/* адрес: улица широкая, дом и квартира узкие */
.addr-row{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,1fr) minmax(0,1.2fr);gap:14px}
.sub-h{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:18px 0 2px}
@media (max-width:900px){.addr-row{grid-template-columns:1fr 1fr}.addr-row>div:first-child{grid-column:1/-1}}

/* подпись внизу бокового меню */
.side{display:flex;flex-direction:column}
.side-credit{padding:0 18px 10px;font-size:10.5px;color:var(--faint);letter-spacing:.01em}
.side-credit a{color:inherit;text-decoration:underline;text-decoration-color:var(--input-line);text-underline-offset:2px}
.side-credit a:hover{color:var(--link);text-decoration-color:currentColor}
/* рассылка клиентам */
.bc-aud{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.bc-opt{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--line);border-radius:8px;cursor:pointer;font-weight:400;margin:0}
.bc-opt:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.bc-opt span{flex:1}.bc-opt b{font-size:12px;color:var(--muted);font-weight:600}
.bc-tools{display:flex;gap:10px;align-items:center;margin-bottom:6px}
.bc-tools input[type=search]{flex:1}
.bc-all{display:flex;align-items:center;gap:6px;white-space:nowrap;margin:0;font-weight:400}
.bc-list{max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:8px;margin-bottom:12px}
.bc-row{display:flex;align-items:center;gap:10px;padding:7px 12px;border-bottom:1px solid var(--line-soft);margin:0;font-weight:400;cursor:pointer}
.bc-row:last-child{border-bottom:0}.bc-row:hover{background:var(--bg)}
.bc-row span:nth-child(2){flex:1}
.bc-row[hidden]{display:none}
.bc .form-actions{align-items:center}.bc #bc-sum{margin-right:auto}
/* удаление клиента */
.row-del{display:inline-flex;padding:5px;border-radius:6px;color:var(--faint)}
.row-del:hover{color:var(--danger);background:var(--danger-soft)}
.del-list{margin:0 0 12px;padding-left:20px;line-height:1.8}
.btn.danger:disabled{opacity:.45;cursor:not-allowed}
.del-warn{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger-line);border-radius:8px;padding:10px 12px;line-height:1.55;margin-bottom:10px}
.del-inv{display:flex;flex-wrap:wrap;gap:6px 14px;margin-bottom:12px;font-size:13px}
.btn.danger.solid{background:var(--danger);color:#fff;border-color:var(--danger)}

/* ================= WhatsApp поддержка ================= */
.badge.green{background:#25d366}
.wa-body{padding:0}
.wa-note{margin:12px 12px 0;padding:10px 14px;border-radius:8px;background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn-line);line-height:1.5}
.wa{display:grid;grid-template-columns:330px minmax(0,1fr);height:calc(100vh - 150px);min-height:480px}
.wa-side{border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;background:var(--panel);border-radius:0 0 0 8px}
.wa-search{padding:12px 12px 8px}.wa-search input{width:100%}
.wa-filters{display:flex;flex-wrap:wrap;gap:4px;padding:0 12px 10px;border-bottom:1px solid var(--line)}
.wa-filters a{font-size:12px;padding:4px 9px;border-radius:12px;color:var(--muted);background:var(--gray-soft)}
.wa-filters a:hover{text-decoration:none;color:var(--text)}
.wa-filters a.on{background:var(--accent);color:#fff}
.wa-filters a b{font-weight:600}
.wa-list{overflow-y:auto;flex:1}
.wa-item{display:flex;gap:10px;padding:11px 12px;border-bottom:1px solid var(--line-soft);color:var(--text)}
.wa-item:hover{background:var(--hover);text-decoration:none}
.wa-item.on{background:var(--accent-soft)}
.wa-ava{width:38px;height:38px;flex:none;border-radius:50%;background:var(--avatar);color:var(--muted);display:grid;place-items:center;font-weight:600;font-size:15px}
.wa-ava.known{background:var(--accent-soft);color:var(--accent-dark)}
.wa-ava.big{width:42px;height:42px}
.wa-it{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.wa-top,.wa-bot{display:flex;align-items:center;gap:8px}
.wa-top b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.wa-top time{font-size:11px;color:var(--muted)}
.wa-item.unread .wa-top time{color:#1aa553;font-weight:600}
.wa-prev{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12.5px}
.wa-item.unread .wa-prev{color:var(--text);font-weight:500}
.wa-badge{font-style:normal;background:#25d366;color:#fff;font-size:10.5px;font-weight:600;border-radius:10px;padding:1px 7px}
.wa-meta{display:flex;gap:8px;font-size:11px;color:var(--muted)}
.wa-meta:empty{display:none}
.wa-new{color:var(--warn)}
.wa-empty{padding:30px 16px;text-align:center;color:var(--muted)}
.wa-chat{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--chat-bg)}
.wa-chead{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line)}
.wa-chead b{font-size:14.5px}
.wa-actions{display:flex;gap:6px;flex-wrap:wrap}
.wa-actions form{margin:0}
.wa-link{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 16px;background:var(--warn-soft);border-bottom:1px solid var(--warn-line);font-size:12.5px}
.wa-link select{max-width:260px;padding:4px 8px}
.wa-msgs{flex:1;overflow-y:auto;padding:16px 6%;display:flex;flex-direction:column;gap:6px}
.wa-day{text-align:center;margin:8px 0}
.wa-day span{background:var(--bubble);color:var(--muted);font-size:11.5px;padding:3px 10px;border-radius:8px;box-shadow:0 1px 1px rgba(0,0,0,.06)}
.wa-msg{max-width:min(72%,560px);padding:7px 10px 5px;border-radius:9px;background:var(--bubble);box-shadow:0 1px 1px rgba(0,0,0,.08);align-self:flex-start;line-height:1.45;overflow-wrap:anywhere}
.wa-msg.out{align-self:flex-end;background:var(--bubble-out)}
.wa-msg.auto{background:var(--info-soft)}
.wa-msg.failed{background:var(--danger-soft)}
.wa-text{white-space:normal}
.wa-kind{font-size:11.5px;color:var(--muted);margin-bottom:2px}
.wa-foot{font-size:10.5px;color:var(--muted);text-align:right;margin-top:2px;white-space:nowrap}
.wa-st{margin-left:3px;font-weight:600;letter-spacing:-2px}
.wa-st.read{color:#34b7f1}.wa-st.failed{color:var(--danger);letter-spacing:0}
.wa-err{font-size:11.5px;color:var(--danger);margin-top:3px;line-height:1.4}
.wa-img{display:block;max-width:100%;max-height:300px;border-radius:6px;margin-bottom:3px}
.wa-msg audio,.wa-msg video{max-width:100%;display:block}
.wa-file{display:inline-block;padding:6px 10px;background:var(--hover);border-radius:6px;margin-bottom:3px}
.wa-window{display:flex;align-items:center;gap:14px;padding:12px 16px;background:var(--panel);border-top:1px solid var(--line);line-height:1.5}
.wa-window form{margin:0;flex:none}
.wa-compose{display:flex;align-items:flex-end;gap:10px;padding:10px 14px;background:var(--compose-bg);border-top:1px solid var(--line)}
.wa-compose[hidden],.wa-window[hidden]{display:none}
.wa-compose textarea{width:100%;resize:none;border-radius:8px;min-height:38px;max-height:160px;padding:9px 12px;line-height:1.4}
.wa-attach{cursor:pointer;color:var(--muted);padding:9px 4px;margin:0}
.wa-attach:hover{color:var(--text)}
.wa-filename{display:flex;align-items:center;gap:8px;font-size:12px;margin-bottom:5px}
.wa-filename button{border:0;background:none;color:var(--muted);cursor:pointer;font-size:16px;line-height:1}
.wa-hint{padding:0 16px 8px;background:var(--compose-bg);text-align:right}
.wa-placeholder{margin:auto;text-align:center;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:8px;max-width:340px;line-height:1.5}
.wa-placeholder div:first-of-type{font-size:15px;color:var(--text)}
.copy{display:flex;align-items:center;gap:8px}
.copy code{flex:1;min-width:0;overflow-wrap:anywhere;background:var(--gray-soft);padding:6px 9px;border-radius:6px;font-size:12px}
.steps{margin:0;padding-left:20px;line-height:1.65}.steps li{margin-bottom:6px}
@media (max-width:900px){.wa{grid-template-columns:1fr;height:auto}.wa-side{max-height:300px}.wa-chat{min-height:520px}}
.wa-chead .grow,.wa-compose .grow{flex:1;min-width:0}
/* подпись на страницах входа */
.login{display:flex;flex-direction:column;align-items:center;justify-content:center}
.login-credit{margin-top:14px;font-size:11px;color:var(--faint);text-align:center}
.login-credit a{color:inherit;text-decoration:underline;text-decoration-color:var(--input-line);text-underline-offset:2px}
.login-credit a:hover{color:var(--link);text-decoration-color:currentColor}
/* HTTPS-сертификат */
.tls-name{display:inline-block;margin:0 0 3px 4px;background:var(--gray-soft);padding:1px 6px;border-radius:4px;font-size:12px}
.tls-fp{font-family:ui-monospace,Consolas,monospace;font-size:10.5px;overflow-wrap:anywhere;text-align:right;max-width:70%}
.tls-check{display:flex;gap:10px;padding:6px 0;line-height:1.5}
.tls-check span{flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700}
.tls-check .ok{background:var(--accent-soft);color:var(--accent-dark)}
.tls-check .no{background:var(--danger-soft);color:var(--danger)}
/* заявки */
table.leads tbody tr{cursor:pointer}
table.leads tr.is-new td:first-child{box-shadow:inset 3px 0 0 var(--danger-bar)}
.lead-steps{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
.lead-steps form{margin:0}
.lead-step{border:1px solid var(--line);background:var(--panel);color:var(--muted);font:inherit;font-size:12.5px;padding:7px 12px;border-radius:18px;cursor:pointer}
.lead-step:hover{color:var(--text);border-color:var(--faint)}
.lead-step.on{color:#fff;border-color:transparent;background:var(--btn);font-weight:600}
.lead-step.on.green{background:var(--accent)}.lead-step.on.red{background:var(--danger-bar)}.lead-step.on.yellow{background:#e9a23b}
.lead-step.on.blue{background:var(--btn)}
.lead-contact{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.lead-msg{margin-top:10px;background:var(--gray-soft);border-radius:8px;padding:10px 12px;line-height:1.5;white-space:normal}
.lead-tariff{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--accent-soft);border-radius:9px;padding:12px 14px}
.lead-tariff .price{font-size:18px;color:var(--accent-dark);white-space:nowrap}.lead-tariff .price small{font-size:12px;font-weight:400}
.lead-comment textarea{width:100%}
.timeline{margin-top:14px}
.tl{display:flex;gap:10px;padding:8px 0;border-top:1px solid var(--line-soft);line-height:1.45}
.tl .dot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--faint);margin-top:5px}
.tl.created .dot{background:var(--danger-bar)}.tl.status .dot{background:var(--btn)}.tl.convert .dot{background:var(--accent)}
.tl.comment .dot,.tl.call .dot{background:#e9a23b}.tl.repeat .dot{background:#7b61ff}
/* безопасность */
.code-input{font-size:22px!important;letter-spacing:.3em;text-align:center;font-variant-numeric:tabular-nums}
.sec-actions{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.sec-actions form{display:flex;gap:8px;margin:0}.sec-actions input{flex:1;max-width:220px}
.sec-actions .btn{align-self:flex-start}
.sess{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line-soft)}
.sess:last-child{border:0}.sess form{margin:0}
.qr-box svg{width:220px;height:220px;max-width:100%}
.totp-key{display:inline-block;font-size:15px;letter-spacing:.08em;background:var(--gray-soft);padding:8px 12px;border-radius:7px;word-break:break-all}
.backup-codes{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:14px 0}
.backup-codes code{font-size:16px;text-align:center;background:var(--gray-soft);border-radius:7px;padding:9px;letter-spacing:.06em}
.sec-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.sec-check{display:flex;gap:10px;padding:10px 12px;border-radius:9px;border:1px solid var(--line);line-height:1.45}
.sec-check span{flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:12px}
.sec-check.ok span{background:var(--accent-soft);color:var(--accent-dark)}
.sec-check.bad{border-color:var(--warn-line);background:var(--warn-soft)}.sec-check.bad span{background:var(--warn-soft);color:var(--warn)}
.sec-row-actions select{padding:4px 6px;font-size:12px}
.ev-kind{font-weight:600}
tr.ev-fail .ev-kind,tr.ev-2fa_fail .ev-kind,tr.ev-ip_denied .ev-kind{color:var(--warn)}
tr.ev-locked .ev-kind,tr.ev-2fa_off .ev-kind{color:var(--danger)}
tr.ev-login .ev-kind,tr.ev-2fa_on .ev-kind{color:var(--accent-dark)}
@media print{.side,.head,.form-actions{display:none!important}}
/* предпросмотр логотипов */
.logo-prev{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lp{border:1px solid var(--line);border-radius:10px;padding:16px;display:grid;place-items:center;min-height:96px}
.lp img{max-width:100%;max-height:70px;display:block}
.lp.light{background:#fff}.lp.dark{background:#171e27}.lp.dark img{background:#f4f6f9;border-radius:8px;padding:6px 8px}
.lp.login{background:var(--bg)}.lp.login img{max-height:110px}
/* часы на панели */
.clock{text-align:right;line-height:1.15;padding:2px 6px 0 14px;border-left:1px solid var(--line);margin-left:6px}
.clock-time{font-size:24px;font-weight:700;letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--text)}
.clock-time span{font-size:14px;font-weight:600;color:var(--muted)}
.clock-date{font-size:12px;color:var(--muted);margin-top:2px;white-space:nowrap}
@media (max-width:760px){.clock{display:none}}

/* ---------- Claude в CRM ---------- */
.cl-ico{font-size:20px;color:#d97757}
.cl-body{padding:0}
.cl{display:grid;grid-template-columns:270px minmax(0,1fr);height:calc(100vh - 150px);min-height:480px}
.cl-side{border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;background:var(--panel)}
.cl-new{padding:12px}.cl-new .btn{width:100%;justify-content:center}
.cl-list{overflow-y:auto;flex:1}
.cl-list a{display:block;padding:9px 14px;border-left:3px solid transparent;color:var(--text)}
.cl-list a:hover{background:var(--hover);text-decoration:none}
.cl-list a.on{background:var(--accent-soft);border-left-color:var(--accent)}
.cl-list b{display:block;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cl-list span{font-size:11.5px;color:var(--muted)}
.cl-main{display:flex;flex-direction:column;min-height:0;min-width:0}
.cl-chead{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line)}
.cl-chead form{margin:0}
.cl-feed{flex:1;overflow-y:auto;padding:16px 18px;display:flex;flex-direction:column;gap:8px}
.cl-row{display:flex;gap:10px;align-items:flex-start;max-width:900px}
.cl-row.me{justify-content:flex-end;max-width:none}
.cl-av{flex:none;width:32px;height:32px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 2px var(--panel),0 0 0 3px var(--line)}
.cl-head-av{width:44px;height:44px;border-radius:50%;object-fit:cover;flex:none}
.nav-av{width:18px;height:18px;border-radius:50%;object-fit:cover;flex:none}
.cl-bub{padding:9px 13px;border-radius:10px;line-height:1.55;background:var(--panel);border:1px solid var(--line);min-width:0;overflow-wrap:anywhere}
.cl-bub.me{background:var(--accent);color:#fff;border-color:var(--accent);max-width:70%;white-space:normal}
.cl-bub.md p{margin:0 0 8px}.cl-bub.md p:last-child{margin-bottom:0}
.cl-bub.md ul,.cl-bub.md ol{margin:0 0 8px;padding-left:20px}
.cl-bub.md h4{margin:8px 0 4px;font-size:14px}
.cl-bub.md pre,.cl-tool pre,.cl-diff{background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:8px 10px;overflow-x:auto;font-size:12px;line-height:1.45;white-space:pre}
.cl-bub code{background:var(--surface-2);padding:1px 4px;border-radius:3px;font-size:12.5px}
.cl-tool{margin-left:42px;max-width:860px;font-size:12.5px;color:var(--muted)}
.cl-tool summary{cursor:pointer;padding:3px 0;list-style:none;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cl-tool summary::-webkit-details-marker{display:none}
.cl-tool.chg summary{color:var(--text)}
.cl-tool.bad summary{color:var(--danger)}
.cl-tool pre{max-height:320px;overflow:auto;margin:4px 0 6px;white-space:pre-wrap}
.cl-ti{width:16px;text-align:center;font-weight:600}
.cl-st i{font-style:normal;font-family:ui-monospace,monospace;font-size:11.5px}
.cl-st .p,.cl-diff .p{color:#1a8a4f}.cl-st .m,.cl-diff .m{color:#c0392b}
.cl-diff .at{color:#7a6cd8}.cl-diff .h{color:var(--muted)}
.cl-diff{max-height:none}
.cl-dl{font-size:12px}
.cl-note{margin-left:42px;font-size:12.5px;color:var(--muted);font-style:italic}
.cl-note.bad{color:var(--danger);font-style:normal;background:var(--danger-soft,rgba(192,57,43,.08));padding:8px 12px;border-radius:6px;max-width:860px}
.cl-work{margin-left:42px;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}
.cl-work[hidden]{display:none}
.cl-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#d97757;animation:clp 1s infinite alternate}
@keyframes clp{from{opacity:.25}to{opacity:1}}
.cl-input{display:flex;gap:8px;padding:10px 16px 4px;border-top:1px solid var(--line);align-items:flex-end}
.cl-input textarea{min-height:44px;max-height:220px;flex:1}
.cl-attach{margin:0;flex:none;width:40px;height:44px;display:grid;place-items:center;font-size:19px;border:1px solid var(--input-line);border-radius:5px;cursor:pointer;background:var(--input-bg)}
.cl-attach:hover{border-color:var(--accent)}
.cl-thumbs{display:flex;gap:8px;flex-wrap:wrap;padding:10px 16px 0;border-top:1px solid var(--line)}
.cl-thumbs[hidden]{display:none}
.cl-thumbs:not([hidden])+.cl-input{border-top:none}
.cl-thumb{position:relative;width:64px;height:64px}
.cl-thumb img{width:64px;height:64px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}
.cl-thumb button{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;border:none;background:#333;color:#fff;cursor:pointer;line-height:1;font-size:14px}
.cl-main.drop{outline:2px dashed var(--accent);outline-offset:-6px}
.cl-me{display:flex;flex-direction:column;align-items:flex-end;gap:6px;max-width:70%}
.cl-me .cl-bub.me{max-width:100%}
.cl-imgs{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.cl-imgs img{max-width:220px;max-height:180px;border-radius:8px;border:1px solid var(--line);display:block}
.cl-hint{font-size:11px;color:var(--muted);padding:0 16px 8px}
.cl-empty{text-align:center;color:var(--muted);max-width:520px;margin:40px auto}
.cl-big{width:84px;height:84px;border-radius:50%;object-fit:cover;display:block;margin:0 auto 8px}
.cl-ex{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:12px}
.cl-ex button{font:inherit;font-size:12.5px;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:14px;padding:5px 12px;cursor:pointer}
.cl-ex button:hover{border-color:var(--accent)}
.cl-howto{padding-left:18px;line-height:1.6;margin:6px 0}
@media (max-width:900px){.cl{grid-template-columns:1fr;height:auto}.cl-side{max-height:180px}.cl-feed{min-height:50vh}}

/* Невысокие экраны: меню компактнее, чтобы всё помещалось без прокрутки */
@media (max-height:900px){
  .side .logo{padding:2px 18px 8px}.side .logo img{max-width:130px}
  .sec{padding:8px 18px 2px}
  .nav a{padding:5px 18px}
}
@media (max-height:760px){
  .side .logo img{max-width:110px}
  .nav a{padding:4px 18px;font-size:13px}
  .sec{padding:6px 18px 1px;font-size:10px}
  .side-credit{display:none}
}

/* ---------- Обновления ---------- */
.upd-run{margin-bottom:18px}
.upd-running{border-color:var(--warn-line)}.upd-failed{border-color:var(--danger-line)}.upd-success{border-color:var(--accent-line)}
.upd-spin{width:14px;height:14px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent);animation:updspin .8s linear infinite;display:inline-block;flex:none}
@keyframes updspin{to{transform:rotate(360deg)}}
.upd-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.upd-title{display:flex;gap:12px;align-items:flex-start;min-width:0}
.upd-title>.upd-spin{width:20px;height:20px;margin-top:2px}
.upd-title b{font-size:15px}
.upd-big{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex:none;color:#fff}
.upd-big.ok{background:var(--accent)}.upd-big.bad{background:var(--danger)}
.upd-nums{text-align:right;flex:none}
.upd-pct{font-size:24px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}
.upd-running .upd-pct{color:var(--warn)}.upd-success .upd-pct{color:var(--accent)}.upd-failed .upd-pct{color:var(--danger)}
.upd-bar{height:8px;border-radius:99px;background:var(--line-soft);overflow:hidden;margin:14px 0 8px;position:relative}
.upd-bar>i{display:block;height:100%;border-radius:99px;background:var(--accent);transition:width .8s ease}
.upd-running .upd-bar>i{background:linear-gradient(90deg,var(--accent),var(--accent) 40%,color-mix(in srgb,var(--accent) 55%,#fff) 50%,var(--accent) 60%);background-size:200% 100%;animation:updshine 1.6s linear infinite}
.upd-failed .upd-bar>i{background:var(--danger)}
.upd-bar-wait{position:absolute;inset:0 auto 0 0;width:30%;background:var(--accent);border-radius:99px;animation:updwait 1.3s ease-in-out infinite}
@keyframes updshine{to{background-position:-200% 0}}
@keyframes updwait{0%{left:-30%}100%{left:100%}}
.upd-meta{display:flex;flex-wrap:wrap;gap:6px 18px}
.upd-offline{margin-top:8px;padding:8px 10px;border-radius:8px;background:var(--surface-2)}
.upd-steps{list-style:none;margin:14px 0 0;padding:0;border-top:1px solid var(--line)}
.upd-steps li{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.upd-steps li:last-child{border-bottom:0}
.upd-dot{width:24px;height:24px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;border:1.5px solid var(--line);color:var(--muted);background:var(--panel)}
.st-done .upd-dot{background:var(--accent);border-color:var(--accent);color:#fff}
.st-failed .upd-dot{background:var(--danger);border-color:var(--danger);color:#fff}
.st-active .upd-dot{border-color:var(--warn)}
.st-active .upd-dot .upd-spin{width:12px;height:12px;border-top-color:var(--warn)}
.st-active .upd-step-label{font-weight:600}
.st-failed .upd-step-label{color:var(--danger);font-weight:600}
.st-pending .upd-step-label,.st-cancelled .upd-step-label,.st-skipped .upd-step-label{color:var(--muted)}
.st-skipped .upd-dot,.st-cancelled .upd-dot{border-style:dashed}
.upd-step-body{flex:1;min-width:0;font-size:13.5px}
.upd-step-time{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.upd-at{display:block;font-size:11px;opacity:.75}
.upd-details{margin-top:12px}
.upd-details summary{cursor:pointer;font-size:12.5px;color:var(--muted)}
.upd-journal{list-style:none;margin:8px 0 0;padding:10px 12px;background:var(--surface-2);border-radius:8px;font-size:12.5px;line-height:1.7;max-height:260px;overflow:auto}
.upd-journal span{color:var(--muted);margin-right:10px;font-family:ui-monospace,monospace;font-size:11.5px}
@media (max-width:640px){.upd-top{flex-direction:column}.upd-nums{text-align:left}}
.upd-commits{margin:6px 0 0;padding-left:18px;line-height:1.7;font-size:13px;max-height:320px;overflow:auto}
.upd-files{max-height:180px;overflow:auto;line-height:1.6}

/* ---------- Персональные данные ---------- */
.pv-check{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--line-soft)}
.pv-check:last-child{border-bottom:0}
.pv-check>span{flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:12px;color:#fff}
.pv-check.ok>span{background:var(--accent)}.pv-check.bad>span{background:var(--warn,#e0a100)}
.pv-check b{font-weight:500}

/* ---------- Касса: пополнение ---------- */
.topup-card .seg-pick{display:flex;gap:8px;flex-wrap:wrap}
.topup-card .seg-pick label{display:flex;align-items:center;gap:8px;border:1.5px solid var(--input-line);border-radius:8px;padding:10px 14px;cursor:pointer;margin:0;font-weight:500}
.topup-card .seg-pick label.on{border-color:var(--accent);background:var(--accent-soft)}
.topup-card .seg-pick input{margin:0}
.topup-amount{font-size:26px!important;font-weight:700;padding:10px 12px!important;max-width:260px}
.topup-card .quick{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.topup-card .quick button{font:inherit;font-size:12.5px;border:1px solid var(--input-line);background:var(--panel);color:var(--text);border-radius:99px;padding:5px 12px;cursor:pointer}
.topup-card .quick button:hover{border-color:var(--accent);color:var(--accent-dark)}
.topup-card .change{margin-top:8px;font-size:15px}.topup-card .change b{color:var(--accent-dark)}.topup-card .change.bad b{color:var(--danger)}
.topup-sum{margin:6px 0 4px;font-size:13.5px;min-height:20px}
.cash-total{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.cash-total .big{font-size:24px}
tr.void td{color:var(--muted);text-decoration:line-through}
.row-pay{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;font-weight:700;color:var(--accent-dark);border:1px solid var(--accent-line);background:var(--accent-soft);margin-right:4px;vertical-align:middle}
.row-pay:hover{background:var(--accent);color:#fff;text-decoration:none}

/* ---------- Обновления: что сделано ---------- */
.upd-changes{list-style:none;margin:8px 0 0;padding:0;font-size:13px;line-height:1.5}
.upd-changes>li{display:flex;gap:10px;padding:7px 0;border-top:1px solid var(--line-soft)}
.upd-changes>li:first-child{border-top:0}
.upd-changes ul{margin:3px 0 0;padding-left:18px}
.upd-changes ul li{margin:1px 0}
.upd-build{flex:none;font:600 11.5px ui-monospace,monospace;color:var(--accent-dark);background:var(--accent-soft);border-radius:5px;padding:2px 6px;height:fit-content;margin-top:1px}
.upd-log{max-height:520px;overflow:auto}
.upd-log li.upd-new .upd-build{color:var(--warn);background:var(--warn-soft)}
.upd-what{margin-top:12px;padding:10px 14px;border-radius:8px;background:var(--surface-2);border:1px solid var(--line-soft)}
.upd-what-h{font-weight:600;font-size:13px}
.upd-hist summary{cursor:pointer;list-style:none}
.upd-hist summary::-webkit-details-marker{display:none}
.upd-hist summary>span:first-child::before{content:"▸ ";color:var(--muted)}
.upd-hist[open] summary>span:first-child::before{content:"▾ "}
.upd-hist .upd-changes{padding:0 0 8px 14px}

/* ---------- Касса: календарь ---------- */
.cash-layout{display:grid;grid-template-columns:330px minmax(0,1fr);gap:18px;align-items:start}
.cash-layout>aside{position:sticky;top:12px}
@media (max-width:1000px){.cash-layout{grid-template-columns:1fr}.cash-layout>aside{position:static}}
.cal-card{padding:16px}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.cal-title{font-weight:700;font-size:15px}
.cal-nav{width:32px;height:32px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-size:20px;line-height:1;color:var(--text);border:1px solid var(--line)}
.cal-nav:hover{border-color:var(--accent);color:var(--accent-dark);text-decoration:none}
.cal-nav.off{opacity:.3}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-wd span{text-align:center;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;padding:2px 0 4px}
.cal-wd span:nth-child(n+6){color:var(--danger-bar)}
.cal-day{position:relative;aspect-ratio:1/1;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:var(--text);border:1.5px solid transparent;text-decoration:none!important;transition:background .12s,border-color .12s}
.cal-day b{font-size:13.5px;font-weight:600;line-height:1}
.cal-day i{font-style:normal;font-size:9.5px;font-weight:600;line-height:1;color:var(--accent-dark);white-space:nowrap}
a.cal-day:hover{background:var(--hover);border-color:var(--line)}
.cal-day.out{opacity:.38}
.cal-day.future{color:var(--faint)}
.cal-day.lv1{background:color-mix(in srgb,var(--accent) 10%,transparent)}
.cal-day.lv2{background:color-mix(in srgb,var(--accent) 20%,transparent)}
.cal-day.lv3{background:color-mix(in srgb,var(--accent) 32%,transparent)}
.cal-day.lv4{background:color-mix(in srgb,var(--accent) 46%,transparent)}
.cal-day.today{border-color:var(--accent)}
.cal-day.sel{background:var(--accent)!important;border-color:var(--accent);color:#fff;box-shadow:0 4px 10px color-mix(in srgb,var(--accent) 35%,transparent)}
.cal-day.sel i{color:#fff}
.cal-foot{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.cal-foot span{display:block;font-size:11px;color:var(--muted)}
.cal-foot b{font-size:13.5px}
.cal-mine{margin-top:12px}
