:root{
  /* поверхности и текст */
  --bg:#f4f5f7; --surface:#ffffff; --surface-2:#f8f9fb;
  --ink:#14161b; --ink2:#525965; --mut:#888e99;
  --line:#ebedf1; --line2:#dce0e6;
  /* акцент — спокойный индиго, один на весь интерфейс */
  --accent:#4f46e5; --accent-hover:#4338ca; --accent-weak:#eef0fe;
  /* семантика вердиктов */
  --yes:#0f8a52; --yesbg:#e6f6ec; --no:#d23b3b; --nobg:#fdecec;
  --np:#9aa0a8; --npbg:#f0f2f5;
  --warn:#9a6b00; --warnbg:#fbf1d9;
  --radius:16px; --radius-sm:10px;
  --shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.05);
  --shadow-lg:0 16px 48px rgba(16,24,40,.18);
  --mono:'SF Mono',ui-monospace,'JetBrains Mono',Menlo,monospace;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-size:14px;
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Inter,system-ui,sans-serif;
  line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
::selection{background:var(--accent-weak)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}

/* ---------- шапка ---------- */
header{display:flex;align-items:center;gap:16px;padding:0 28px;height:60px;
  border-bottom:1px solid var(--line);background:rgba(255,255,255,.82);
  backdrop-filter:saturate(1.4) blur(10px);position:sticky;top:0;z-index:30}
header h1{font-size:16px;margin:0;font-weight:680;letter-spacing:-.02em;display:flex;align-items:center;gap:9px}
header h1::before{content:"";display:inline-block;width:8px;height:18px;border-radius:3px;
  background:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}
header .sub{color:var(--mut);font-size:12.5px;letter-spacing:-.01em}
.spacer{flex:1}
#userInfo{font-weight:600;color:var(--ink2);font-size:12.5px}
.wrap{max-width:1180px;margin:0 auto;padding:26px 28px 64px}

/* ---------- кнопки ---------- */
button{font:inherit;cursor:pointer;border:1px solid var(--line2);background:var(--surface);color:var(--ink);
  border-radius:var(--radius-sm);padding:8px 14px;font-weight:600;letter-spacing:-.01em;
  transition:background .14s,border-color .14s,box-shadow .14s,filter .14s}
button:hover{background:var(--surface-2);border-color:#cfd3da}
button:active{transform:translateY(.5px)}
button.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 1px 2px rgba(79,70,229,.25)}
button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);filter:none}
button.primary:disabled{opacity:.45;cursor:not-allowed}
button.ghost{border-color:transparent;background:transparent;color:var(--mut);padding:6px 9px}
button.ghost:hover{background:var(--surface-2);color:var(--ink2)}
button.sm{padding:5px 10px;font-size:12.5px;border-radius:8px}
button.danger{color:var(--no)}
button.danger:hover{background:var(--nobg)}

/* ---------- поля ---------- */
select,input,textarea{font:inherit;border:1px solid var(--line2);border-radius:var(--radius-sm);
  padding:9px 12px;background:var(--surface);color:var(--ink);line-height:1.4;height:40px;
  transition:border-color .14s,box-shadow .14s}
textarea{height:auto;min-height:42px}
select{width:100%;appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:34px;
  text-overflow:ellipsis;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238a8e99' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 11px center}
select:focus,input:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}
input{width:100%}
textarea{resize:vertical}
label{font-size:11.5px;color:var(--mut);font-weight:650;display:block;margin-bottom:5px;
  text-transform:uppercase;letter-spacing:.04em}
input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--accent)}

/* ---------- карточки и сетка ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:20px 22px;margin-bottom:16px;box-shadow:var(--shadow)}
.card h2{font-size:14px;margin:0 0 16px;font-weight:680;letter-spacing:-.02em}
.row{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end}
.row > div{flex:1;min-width:150px}

/* ---------- список звонков ---------- */
.calllist{max-height:300px;overflow:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface-2)}
.callrow{display:flex;align-items:center;gap:12px;padding:11px 14px;border-bottom:1px solid var(--line);font-size:13.5px}
.callrow:last-child{border-bottom:none}
.callrow:hover{background:#fff}
.callrow .m{font-weight:650;letter-spacing:-.01em}
.callrow .meta{color:var(--mut);font-size:12px;margin-left:auto;font-family:var(--mono);font-variant-numeric:tabular-nums}
.callrow input[type=checkbox]{width:16px;height:16px;flex:0 0 auto}

/* ---------- таблицы ---------- */
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
th{background:var(--surface-2);font-weight:650;font-size:11px;color:var(--mut);text-transform:uppercase;
  letter-spacing:.04em;position:sticky;top:0}
tbody tr:last-child td{border-bottom:none}
tr:hover td{background:var(--surface-2)}
.tbl-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}

/* ---------- метрики / бейджи / вердикты ---------- */
.pct{font-family:var(--mono);font-weight:700;font-variant-numeric:tabular-nums}
.pct.good{color:var(--yes)} .pct.mid{color:var(--warn)} .pct.bad{color:var(--no)}
.badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px}
.badge.lead{background:var(--accent-weak);color:var(--accent)} .badge.service{background:var(--npbg);color:var(--np)}
.prov{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink2)}
.v{font-weight:700;font-size:12px;padding:3px 8px;border-radius:7px;display:inline-block;min-width:32px;text-align:center}
.v.yes{background:var(--yesbg);color:var(--yes)} .v.no{background:var(--nobg);color:var(--no)}
.v.np{background:var(--npbg);color:var(--np)} .v.none{background:var(--surface-2);color:#c0c4c9}
.disagree{outline:2px solid #f3b4b4;outline-offset:-2px;border-radius:8px}

.evidence{color:var(--ink2);font-size:12.5px;font-style:italic}
.advice{background:var(--accent-weak);border-left:3px solid var(--accent);border-radius:0 12px 12px 0;
  padding:12px 16px;margin:10px 0;font-size:13.5px;color:#2c2f57}
.growth{margin:6px 0 0;padding-left:18px} .growth li{margin-bottom:4px;color:var(--ink2)}
.err{background:var(--nobg);border:1px solid #f3b4b4;color:var(--no);padding:10px 14px;border-radius:10px;
  font-size:13px;font-family:var(--mono)}
.mut{color:var(--mut)} .mono{font-family:var(--mono);font-size:12px;font-variant-numeric:tabular-nums}
.crit-name{font-weight:600;letter-spacing:-.01em} .wt{color:var(--mut);font-family:var(--mono);font-size:11px}
.blocklabel{background:var(--surface-2);font-weight:700;font-size:10.5px;text-transform:uppercase;
  letter-spacing:.06em;color:var(--mut)}

/* ---------- модалки ---------- */
.modal-bg{position:fixed;inset:0;background:rgba(16,20,28,.46);display:none;align-items:flex-start;
  justify-content:center;z-index:50;padding:56px 20px;overflow:auto;backdrop-filter:blur(2px)}
.modal-bg.open{display:flex;animation:fadein .16s ease}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.modal{background:var(--surface);border-radius:20px;max-width:900px;width:100%;padding:26px 30px;
  box-shadow:var(--shadow-lg);animation:pop .18s cubic-bezier(.2,.8,.3,1)}
@keyframes pop{from{transform:translateY(8px) scale(.99);opacity:.6}to{transform:none;opacity:1}}
.modal h3{margin:0 0 16px;font-size:17px;font-weight:700;letter-spacing:-.02em}
.modal .close{position:absolute;top:18px;right:22px}
.hint{font-size:12px;color:var(--mut);margin-top:4px}
.tabs{display:flex;gap:6px;margin-bottom:14px}
.tabs button{border-radius:9px}
.tabs button.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.spin{display:inline-block;width:13px;height:13px;border:2px solid var(--line2);border-top-color:var(--accent);
  border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}
.toast{position:fixed;bottom:22px;right:22px;background:var(--ink);color:#fff;padding:12px 17px;border-radius:12px;
  font-size:13px;z-index:60;opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s;max-width:380px;box-shadow:var(--shadow-lg)}
.toast.show{opacity:1;transform:none}

/* ---------- транскрипт ---------- */
.transcript{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:15px 18px;
  font-size:13.5px;line-height:1.75;max-height:380px;overflow:auto;color:var(--ink2)}
.transcript .sp-mgr{color:var(--accent);font-weight:700} .transcript .sp-cli{color:#9a6b00;font-weight:700}
.transcript br:first-child{display:none}
audio{margin:6px 0}

/* раскрывашка (транскрипт/разметка) */
.disclosure{margin-top:16px}
.disclosure>summary{cursor:pointer;list-style:none;user-select:none;font-weight:680;letter-spacing:-.01em;
  display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.disclosure>summary::-webkit-details-marker{display:none}
.disclosure>summary::before{content:"▸";color:var(--mut);transition:transform .15s}
.disclosure[open]>summary::before{transform:rotate(90deg)}
.disclosure[open]>summary{background:var(--surface-2);margin-bottom:12px}

/* гостевой режим */
.role-guest .admin-only{display:none!important}
.role-guest .calllist{max-height:none;overflow:visible}

/* ---------- сегмент-контролы да/нет/— ---------- */
.seg{display:inline-flex;border:1px solid var(--line2);border-radius:10px;overflow:hidden;background:var(--surface);vertical-align:middle}
.seg button{border:none;background:transparent;padding:6px 14px;font:inherit;font-size:12.5px;font-weight:650;
  color:var(--mut);cursor:pointer;border-left:1px solid var(--line);transition:background .12s,color .12s}
.seg button:first-child{border-left:none}
.seg button:hover{background:var(--surface-2)}
.seg button[aria-pressed="true"][data-v="да"]{background:var(--yesbg);color:var(--yes)}
.seg button[aria-pressed="true"][data-v="нет"]{background:var(--nobg);color:var(--no)}
.seg button[aria-pressed="true"][data-v=""]{background:var(--npbg);color:var(--ink2)}
#annotBody table td{padding:9px 12px}
#annotBody table td:last-child{width:1%;white-space:nowrap;text-align:right}
#annotBody table td.blocklabel{text-align:left;width:auto}

/* ---------- надиктовка (стиль Telegram) ---------- */
.comment-bar{display:flex;align-items:flex-end;gap:8px}
.comment-bar textarea{flex:1;min-width:0}
.comment-bar.recording textarea{display:none}
.comment-bar.recording #voiceCtl{flex:1}
.comment-bar.recording .voice-rec{max-width:none}
.voice-mic{width:44px;height:44px;border-radius:50%;border:none;background:var(--accent);color:#fff;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;transition:background .14s;box-shadow:0 2px 8px rgba(79,70,229,.3)}
.voice-mic:hover{background:var(--accent-hover)}
.voice-mic svg{width:21px;height:21px;fill:currentColor}
.voice{display:flex;flex-direction:column;gap:10px;margin-top:10px}
/* активная запись */
.voice-rec{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line2);
  border-radius:24px;padding:6px 8px 6px 16px;width:100%;max-width:470px;box-shadow:var(--shadow)}
.rec-dot{width:10px;height:10px;border-radius:50%;background:var(--no);animation:recpulse 1.1s infinite;flex:0 0 auto}
@keyframes recpulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.65)}}
.rec-time{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--ink);min-width:40px;font-variant-numeric:tabular-nums}
.rec-wave{flex:1;display:flex;align-items:center;gap:3px;height:26px}
.rec-wave i{flex:1;max-width:4px;min-width:2px;background:var(--accent);border-radius:2px;animation:wave 1.1s infinite ease-in-out}
@keyframes wave{0%,100%{height:18%}50%{height:88%}}
.rec-act{width:36px;height:36px;border-radius:50%;border:none;cursor:pointer;display:inline-flex;
  align-items:center;justify-content:center;flex:0 0 auto;padding:0}
.rec-act svg{width:16px;height:16px;fill:currentColor}
.rec-cancel{background:var(--npbg);color:var(--no)} .rec-cancel:hover{background:var(--nobg)}
.rec-stop{background:var(--accent);color:#fff} .rec-stop:hover{background:var(--accent-hover)}
/* сохранённая заметка */
.vnote{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);
  border-radius:16px;padding:9px 14px;max-width:470px;box-shadow:var(--shadow)}
.vnote .play{width:38px;height:38px;border-radius:50%;background:var(--accent);color:#fff;border:none;cursor:pointer;
  flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center}
.vnote .play:hover{background:var(--accent-hover)}
.vnote .play svg{width:16px;height:16px;fill:currentColor}
.vnote .wave{flex:1;display:flex;align-items:center;gap:2px;height:28px;cursor:pointer}
.vnote .wave i{flex:1;max-width:3px;min-width:2px;border-radius:2px;background:var(--line2);transition:background .1s}
.vnote .wave i.on{background:var(--accent)}
.vnote .info{display:flex;flex-direction:column;align-items:flex-end;gap:1px;flex:0 0 auto}
.vnote .dur{font-family:var(--mono);font-size:12px;font-weight:700;color:var(--ink2);font-variant-numeric:tabular-nums}
.vnote .meta2{font-size:10.5px;color:var(--mut);white-space:nowrap}
.vnote .del{background:none;border:none;color:var(--mut);cursor:pointer;flex:0 0 auto;padding:3px 5px;display:inline-flex}
.vnote .del svg{width:15px;height:15px;fill:currentColor}
.vnote .del:hover{color:var(--no)}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;transition-duration:.001ms!important}
}
@media (max-width:680px){
  .wrap{padding:18px 16px 48px} header{padding:0 16px}
  .modal{padding:20px 18px} header .sub{display:none}
}
