/* Дизайн-система Factor H — «Расследование утечки» (см.
   design/factor-h-investigation-20260731_new_design.html): полноэкранный
   app-shell (левый рельс + сцена) для оператора; светлые «plain»-страницы
   (вход/админка) на тех же токенах. JetBrains Mono, индиго/оранжевый. */

:root{
  --ink:#0A0A0A; --ink-2:#141413; --mut:#6B6B6B; --mut-2:#9B9BA6;
  --acc:#5B5BD6; --acc-hi:#6E6EF0; --acc-lo:#3F3FA8; --tint:#EEEEFB;
  --line:#E8E8EE; --paper:#FFFFFF; --bg:#F5F5F5; --orange:#FF7F0E;
  --ok:#16A34A; --danger:#DC2626;
  /* Хуки бренд-тем (переопределяются в theme-<brand>.css). RGB-тройки — для
     rgba()-подсветок и теней; --acc-lite — светлый акцент на тёмном фоне. */
  --acc-rgb:91,91,214; --glow-rgb:110,110,240; --sh-rgb:35,30,90; --acc-lite:#B9B9FF;
  /* Фон тёмного рельса/карточек (по умолчанию — почти чёрный --ink). */
  --rail-bg:var(--ink);
  --r:18px; --r-sm:12px;
  --sh:0 1px 2px rgba(10,10,10,.05), 0 14px 34px -18px rgba(10,10,10,.22);
  --sh-lift:0 2px 6px rgba(10,10,10,.06), 0 30px 60px -24px rgba(var(--sh-rgb),.30);
  --mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
}
*{box-sizing:border-box; margin:0; padding:0;}
html,body{height:100%;}
body{
  font-family:var(--mono); background:var(--bg); color:var(--ink);
  -webkit-font-smoothing:antialiased; letter-spacing:-.01em;
}
::selection{background:var(--acc); color:#fff;}

/* Полноэкранный режим — только для оператор-шелла. */
body.app-shell{overflow:hidden;}
.app{display:grid; grid-template-columns:236px 1fr; height:100vh;}

/* ---------- RAIL ---------- */
.rail{
  position:relative; background:var(--rail-bg); color:#fff; display:flex; flex-direction:column;
  padding:22px 16px 16px; overflow:hidden; min-height:0; overflow-y:auto;
}
.rail:before{
  content:""; position:absolute; inset:-40% -60% auto -40%; height:70%;
  background:radial-gradient(60% 60% at 50% 50%, rgba(var(--glow-rgb),.55), transparent 70%);
  filter:blur(20px); pointer-events:none;
}
.rail:after{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.35;
  background-image:radial-gradient(rgba(255,255,255,.10) 1px, transparent 1px);
  background-size:14px 14px;
}
.brand{position:relative; display:flex; align-items:center; gap:9px; font-size:16px; font-weight:700; padding:4px 8px 0; letter-spacing:-.04em; color:#fff;}
.brand em{font-style:normal; color:inherit;}
.brand .dot{width:7px; height:7px; border-radius:50%; background:var(--orange); box-shadow:0 0 12px var(--orange); margin-left:auto; animation:pulse 2.6s infinite;}
@keyframes pulse{0%,100%{opacity:1; transform:scale(1);} 50%{opacity:.45; transform:scale(.75);}}
.rail-label{position:relative; font-size:9.5px; letter-spacing:.18em; color:rgba(255,255,255,.34); margin:26px 8px 10px;}
.nav{position:relative; display:flex; flex-direction:column; gap:2px;}
.nav a{
  display:flex; align-items:center; gap:11px; padding:10px 11px; border-radius:11px;
  color:rgba(255,255,255,.62); text-decoration:none; font-size:12.5px; border:1px solid transparent;
  transition:.18s ease; cursor:pointer;
}
.nav a svg{width:15px; height:15px; opacity:.8; flex:none;}
.nav a:hover{color:#fff; background:rgba(255,255,255,.06);}
.nav a.on{
  color:#fff; background:linear-gradient(120deg, rgba(var(--glow-rgb),.34), rgba(var(--glow-rgb),.10));
  border-color:rgba(var(--glow-rgb),.35); box-shadow:inset 0 1px 0 rgba(255,255,255,.10);
}
.nav a.on svg{opacity:1; color:var(--acc-lite);}
.nav a .cnt{margin-left:auto; font-size:10px; padding:1px 6px; border-radius:20px; background:rgba(255,255,255,.10); color:rgba(255,255,255,.7);}
.rail-foot{position:relative; margin-top:auto; display:flex; flex-direction:column; gap:12px;}
.who-card{display:flex; align-items:center; gap:10px; padding:9px 10px; border-radius:12px; background:rgba(255,255,255,.05);}
.who-card .av{width:28px; height:28px; border-radius:9px; background:linear-gradient(135deg,var(--acc-hi),var(--acc-lo)); display:grid; place-items:center; font-size:10.5px; font-weight:700; color:#fff;}
.who-card b{font-size:11.5px; font-weight:600; display:block;}
.who-card span{font-size:9.5px; color:rgba(255,255,255,.45);}
.rail-logout{display:flex; align-items:center; justify-content:center; gap:8px; padding:9px 10px; border-radius:11px; background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.12); color:rgba(255,255,255,.72); text-decoration:none; font-size:11px; transition:.18s;}
.rail-logout:hover{background:rgba(255,255,255,.12); color:#fff;}
.rail-logout svg{width:14px; height:14px;}

/* ---------- STAGE ---------- */
.stage{position:relative; display:flex; flex-direction:column; min-width:0; min-height:0; overflow:hidden; background:var(--bg);}
.stage:before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(46% 38% at 82% -6%, rgba(var(--acc-rgb),.16), transparent 70%),
    radial-gradient(40% 34% at 4% 102%, rgba(255,127,14,.09), transparent 70%);
}
.topbar{
  position:relative; z-index:2; display:flex; align-items:center; gap:16px;
  padding:14px 30px; border-bottom:1px solid var(--line);
  background:rgba(245,245,245,.82); backdrop-filter:blur(14px);
}
.crumb{display:flex; align-items:center; gap:9px; font-size:13px; color:var(--mut);}
.crumb b{color:var(--ink);}
.crumb .sep{color:#C9C9D2;}
.pill{
  display:inline-flex; align-items:center; gap:7px; height:26px; padding:0 11px; border-radius:20px;
  font-size:10.5px; border:1px solid var(--line); background:var(--paper); color:var(--mut);
}
.pill i{width:6px; height:6px; border-radius:50%; background:var(--ok);}
.pill.live i{animation:pulse 1.8s infinite;}
.pill.acc{background:var(--tint); border-color:#D9D9F7; color:var(--acc-lo);}
.spacer{flex:1;}

.scroll{position:relative; z-index:1; overflow-y:auto; padding:28px 30px 60px; scroll-behavior:smooth; flex:1 1 auto; min-height:0;}
.scroll::-webkit-scrollbar{width:10px;}
.scroll::-webkit-scrollbar-thumb{background:#DCDCE4; border-radius:10px; border:3px solid var(--bg);}
.wrap{max-width:1080px; margin:0 auto;}

/* ---------- HERO ---------- */
.hero{display:grid; grid-template-columns:1fr; gap:20px; align-items:start;}
h1{font-size:31px; line-height:1.12; letter-spacing:-.045em; font-weight:700;}
h1 .g{background:linear-gradient(100deg,var(--acc-lo),var(--acc-hi) 55%,var(--orange)); -webkit-background-clip:text; background-clip:text; color:transparent;}
.sub{margin-top:11px; font-size:12.5px; line-height:1.65; color:var(--mut); max-width:64ch;}
.kicker{display:inline-flex; align-items:center; gap:8px; font-size:10px; letter-spacing:.16em; color:var(--acc); margin-bottom:14px;}
.kicker:before{content:""; width:22px; height:1px; background:linear-gradient(90deg,var(--acc),transparent);}

.card{background:var(--paper); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--sh);}
.pad{padding:18px 20px;}
.dz{
  position:relative; margin-top:22px; border-radius:22px; padding:44px 28px; cursor:pointer;
  background:linear-gradient(180deg,#fff, #FBFBFE); overflow:hidden;
  border:1.5px dashed #D6D6E2; text-align:center; transition:.24s cubic-bezier(.2,.8,.2,1);
}
.dz:hover{border-color:var(--acc); background:linear-gradient(180deg,#fff,var(--tint)); transform:translateY(-2px); box-shadow:var(--sh-lift);}
.dz.over{border-color:var(--acc); border-style:solid; background:var(--tint); transform:scale(1.006);}
.dz .ring{
  width:60px; height:60px; margin:0 auto 16px; border-radius:19px; display:grid; place-items:center;
  background:linear-gradient(135deg,var(--acc-hi),var(--acc-lo)); color:#fff;
  box-shadow:0 12px 26px -10px rgba(var(--acc-rgb),.75); transition:.24s;
}
.dz:hover .ring{transform:translateY(-3px) rotate(-4deg) scale(1.04);}
.dz .ring svg{width:26px; height:26px;}
.dz h3{font-size:15px; letter-spacing:-.03em;}
.dz p{margin-top:7px; font-size:11.5px; color:var(--mut);}
.dz .fmts{display:flex; gap:6px; justify-content:center; margin-top:16px; flex-wrap:wrap;}
.tag{font-size:9.5px; padding:3px 8px; border-radius:6px; background:var(--bg); border:1px solid var(--line); color:var(--mut);}
.dz .sweep{position:absolute; inset:0; pointer-events:none; background:linear-gradient(105deg,transparent 30%,rgba(var(--acc-rgb),.10) 50%,transparent 70%); transform:translateX(-120%); }
.dz:hover .sweep{animation:sweep 1.1s ease;}
@keyframes sweep{to{transform:translateX(120%);}}

.reqs{display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:16px;}
.req{display:flex; gap:11px; align-items:flex-start; padding:13px 14px; border:1px solid var(--line); border-radius:12px; background:var(--paper); box-shadow:var(--sh); transition:.18s;}
.req:hover{transform:translateY(-2px); box-shadow:var(--sh-lift);}
.req .n{width:20px; height:20px; flex:none; border-radius:7px; background:var(--tint); color:var(--acc-lo); font-size:10px; display:grid; place-items:center; font-weight:700; border:1px solid #DEDEF8;}
.req b{display:block; font-size:11.5px; font-weight:600; margin-bottom:4px;}
.req span{font-size:10.5px; color:var(--mut); line-height:1.55;}
.poolbar{display:flex; align-items:center; gap:12px; margin-top:16px; padding:12px 16px; border:1px solid var(--line); border-radius:12px; background:linear-gradient(90deg,var(--tint),#fff 70%); font-size:11.5px;}
.poolbar b{font-weight:700;}
.poolbar .lnk{margin-left:auto; color:var(--acc-lo); cursor:pointer; font-size:11px; border-bottom:1px dashed rgba(63,63,168,.4);}
.poolbar .lnk:hover{color:var(--acc);}
.poolbar svg{width:15px; height:15px; color:var(--acc); flex:none;}

/* Анализ по вставленному тексту */
.paste-box{margin-top:16px; border:1px solid var(--line); border-radius:14px; padding:16px 18px; background:var(--paper); box-shadow:var(--sh);}
.ta{width:100%; min-height:90px; margin-top:6px; padding:11px 13px; border:1px solid var(--line); border-radius:11px; background:#FCFCFE; font-family:var(--mono); font-size:12px; line-height:1.55; color:var(--ink); resize:vertical; outline:none; transition:.16s;}
.ta:hover{border-color:#D3D3E0;}
.ta:focus{border-color:var(--acc); background:#fff; box-shadow:0 0 0 3px var(--tint);}
.ta::placeholder{color:#b0b0b0;}

/* ---------- ANALYSIS ---------- */
.sec{margin-top:22px;}
.sec-h{display:flex; align-items:center; gap:11px; margin:0 0 13px 2px;}
.sec-h h2{font-size:13px; letter-spacing:-.02em;}
.sec-h .ln{flex:1; height:1px; background:linear-gradient(90deg,var(--line),transparent);}
.sec-h .n{font-size:9.5px; color:var(--acc); border:1px solid #D9D9F7; background:var(--tint); border-radius:6px; padding:2px 7px;}
/* Кнопка-шеврон сворачивания секции анализа (видна только после завершения) */
.sec-h .chev{margin-left:2px; width:26px; height:26px; border-radius:8px; border:1px solid var(--line); background:var(--paper); display:none; place-items:center; cursor:pointer; color:var(--mut); transition:.18s; flex:none;}
.sec-h .chev svg{width:14px; height:14px; transition:transform .22s ease;}
.sec-h .chev:hover{color:var(--acc-lo); border-color:var(--acc); background:var(--tint);}
#secAn.done .sec-h{cursor:pointer;}
#secAn.done .chev{display:grid;}
#secAn.collapsed .chev svg{transform:rotate(-90deg);}
#secAn.collapsed .scan{display:none;}
/* «Бегущий луч» сканирования — только во время анализа (до завершения). */
#secAn.done .beam{display:none;}
.hide{display:none !important;}
.rise{animation:rise .5s cubic-bezier(.2,.8,.2,1) both;}
@keyframes rise{from{opacity:0; transform:translateY(14px);} to{opacity:1; transform:none;}}

.scan{position:relative; overflow:hidden; padding:22px 24px; display:grid; grid-template-columns:1fr 260px; gap:24px; align-items:center;}
.scan .beam{position:absolute; left:0; right:0; height:120px; top:-120px; background:linear-gradient(180deg,transparent,rgba(var(--acc-rgb),.13),transparent); animation:beam 1.9s linear infinite;}
@keyframes beam{to{transform:translateY(560px);}}
.steps{display:flex; flex-direction:column; gap:11px;}
.step{display:flex; align-items:center; gap:11px; font-size:12px; color:var(--mut-2); transition:.3s;}
.step .bx{width:19px; height:19px; border-radius:6px; border:1.5px solid var(--line); display:grid; place-items:center; flex:none; transition:.3s;}
.step .bx svg{width:11px; height:11px; opacity:0; transform:scale(.5); transition:.3s;}
.step.run{color:var(--ink);} .step.run .bx{border-color:var(--acc); box-shadow:0 0 0 4px var(--tint);}
.step.run .bx:after{content:""; width:8px; height:8px; border-radius:50%; background:var(--acc); animation:pulse 1s infinite;}
.step.done{color:var(--ink);} .step.done .bx{background:var(--acc); border-color:var(--acc); color:#fff;}
.step.done .bx svg{opacity:1; transform:none;}
.step .ms{margin-left:auto; font-size:10px; color:var(--mut-2);}
.gauge{text-align:center;}
.gauge .num{font-size:34px; font-weight:700; letter-spacing:-.06em;}
.gauge .cap{font-size:10px; color:var(--mut); letter-spacing:.12em;}
.track{height:5px; border-radius:5px; background:var(--bg); overflow:hidden; margin-top:12px; border:1px solid var(--line);}
.track i{display:block; height:100%; width:0; background:linear-gradient(90deg,var(--acc-lo),var(--acc-hi)); transition:width .4s ease;}

/* ---------- VERDICT ---------- */
.verdict{position:relative; overflow:hidden; border-radius:22px; background:var(--rail-bg); color:#fff; padding:26px; box-shadow:0 40px 80px -40px rgba(var(--sh-rgb),.7);}
.verdict:before{content:""; position:absolute; inset:-50% -10% auto -20%; height:150%; background:radial-gradient(42% 44% at 22% 30%, rgba(var(--glow-rgb),.55), transparent 68%), radial-gradient(36% 40% at 92% 96%, rgba(255,127,14,.22), transparent 70%); pointer-events:none;}
.verdict:after{content:""; position:absolute; inset:0; opacity:.4; background-image:radial-gradient(rgba(255,255,255,.07) 1px, transparent 1px); background-size:16px 16px; pointer-events:none;}
.vd{position:relative; display:grid; grid-template-columns:auto 1fr auto; gap:22px; align-items:center;}
.vd .face{
  width:88px; height:88px; border-radius:24px; display:grid; place-items:center; font-size:26px; font-weight:700;
  background:linear-gradient(140deg,var(--acc-hi),var(--acc-lo)); box-shadow:0 20px 44px -16px rgba(var(--glow-rgb),.9), inset 0 1px 0 rgba(255,255,255,.25);
  letter-spacing:-.04em; position:relative; color:#fff;
}
.vd .face:after{content:""; position:absolute; inset:-6px; border-radius:30px; border:1px solid rgba(255,255,255,.14);}
.vd .lbl{display:inline-flex; align-items:center; gap:8px; font-size:9.5px; letter-spacing:.18em; color:var(--acc-lite);}
.vd .lbl i{width:6px; height:6px; border-radius:50%; background:var(--acc-lite); box-shadow:0 0 12px var(--acc-lite);}
.vd .nm{font-size:29px; font-weight:700; letter-spacing:-.05em; margin:9px 0 8px;}
.vd .meta{display:flex; flex-wrap:wrap; gap:8px;}
.vd .meta span{font-size:10.5px; padding:4px 10px; border-radius:20px; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.13); color:rgba(255,255,255,.8);}
.vd .meta span b{color:#fff;}
.conf{text-align:right; padding-left:22px; border-left:1px solid rgba(255,255,255,.12);}
.conf .big{font-size:36px; font-weight:700; letter-spacing:-.06em; line-height:1;}
.conf .big s{text-decoration:none; font-size:16px; color:var(--acc-lite);}
.conf .cap{font-size:9.5px; letter-spacing:.16em; color:rgba(255,255,255,.45); margin-top:7px;}
.acts{position:relative; display:flex; gap:9px; margin-top:22px; padding-top:20px; border-top:1px solid rgba(255,255,255,.1); flex-wrap:wrap;}

/* Порог не взят — оранжевый акцент вместо индиго. */
.verdict.unsure .face{background:linear-gradient(140deg,#FFA23C,#E06A00);}
.verdict.unsure .lbl{color:#FFC58A;} .verdict.unsure .lbl i{background:#FFC58A; box-shadow:0 0 12px #FFB061;}
.verdict.unsure .conf .big s{color:#FFC58A;}

/* ---------- BUTTONS ---------- */
.btn{display:inline-flex; align-items:center; gap:8px; height:37px; padding:0 16px; border-radius:11px; font-family:var(--mono); font-size:11.5px; cursor:pointer; border:1px solid transparent; transition:.18s cubic-bezier(.2,.8,.2,1); background:none; color:inherit;}
.btn svg{width:14px; height:14px;}
.btn:disabled{opacity:.5; cursor:default; transform:none !important; box-shadow:none !important;}
.btn-p{background:#fff; color:var(--ink); font-weight:600;}
.btn-p:hover{transform:translateY(-2px); box-shadow:0 14px 28px -12px rgba(255,255,255,.5);}
.btn-g{background:rgba(255,255,255,.07); color:#fff; border-color:rgba(255,255,255,.16);}
.btn-g:hover{background:rgba(255,255,255,.14); transform:translateY(-2px);}
.btn-o{background:var(--paper); color:var(--ink); border-color:var(--line);}
.btn-o:hover{border-color:var(--acc); color:var(--acc-lo); transform:translateY(-2px); box-shadow:var(--sh);}
.btn-a{background:var(--ink); color:#fff;}
.btn-a:hover{transform:translateY(-2px); box-shadow:0 16px 30px -14px rgba(10,10,10,.5);}
.btn.tiny{height:28px; padding:0 11px; font-size:10px; border-radius:8px; white-space:nowrap;}

/* ---------- EVIDENCE ---------- */
.grid2{display:grid; grid-template-columns:1.32fr 1fr; gap:16px;}
.ph{display:flex; align-items:center; justify-content:space-between; margin-bottom:4px; gap:10px;}
.ph h4{font-size:12px; letter-spacing:-.02em;}
.ph .h{font-size:10px; color:var(--mut-2); white-space:nowrap;}
.note{font-size:10.5px; color:var(--mut); margin-top:10px; line-height:1.6;}
.strip{margin-top:16px; border-radius:10px; overflow:hidden; border:1px solid var(--line); background:#fff;}
.strip img{display:block; width:100%; height:auto;}
.legend{display:flex; gap:14px; margin-top:11px; font-size:10px; color:var(--mut); flex-wrap:wrap;}
.legend b{display:inline-block; width:8px; height:8px; border-radius:2px; margin-right:6px;}
.kpis{display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:16px;}
.kpi{border:1px solid var(--line); border-radius:11px; padding:11px 12px; background:linear-gradient(180deg,#fff,#FBFBFE);}
.kpi .l{font-size:8.5px; letter-spacing:.12em; color:var(--mut-2);}
.kpi .v{margin-top:6px; font-size:14px; font-weight:700; letter-spacing:-.04em;}
.kpi .v s{text-decoration:none; font-size:9.5px; font-weight:400; color:var(--mut);}

/* Ранжирование получателей (rrow — чтобы не конфликтовать с .row форм) */
.list{margin-top:2px;}
.rrow{display:grid; grid-template-columns:62px 1fr 128px 62px; gap:12px; align-items:center; padding:9px 10px; border-radius:10px; font-size:11.5px; transition:.16s; cursor:default;}
.rrow:hover{background:#FAFAFD;}
.rrow.hd{font-size:9.5px; letter-spacing:.1em; color:var(--mut-2); padding-bottom:6px; border-bottom:1px solid var(--line); border-radius:0;}
.rrow .id{color:var(--mut); font-size:10.5px;}
.rrow .who2 b{font-weight:600; display:block;} .rrow .who2 span{font-size:10px; color:var(--mut-2);}
.rrow .mb{height:5px; border-radius:4px; background:var(--bg); overflow:hidden; border:1px solid var(--line);}
.rrow .mb i{display:block; height:100%; background:#C6C6D4; width:0; transition:width .8s ease;}
.rrow .co{text-align:right; font-size:11px; color:var(--mut);}
.rrow .co.neg{color:var(--orange);}
.rrow.win{background:var(--tint); box-shadow:inset 2px 0 0 var(--acc);}
.rrow.win .who2 b{color:var(--acc-lo);} .rrow.win .co{color:var(--acc-lo); font-weight:700;}
.rrow.win .mb i{background:linear-gradient(90deg,var(--acc-lo),var(--acc-hi));}

.hint{display:flex; gap:10px; align-items:flex-start; padding:12px 14px; border-radius:12px; background:var(--tint); border:1px solid #DEDEF8; font-size:10.5px; line-height:1.55; color:var(--acc-lo);}
.hint svg{width:14px; height:14px; flex:none; margin-top:1px; color:var(--acc);}

.foot{display:flex; align-items:center; gap:10px; margin-top:22px; font-size:10px; color:var(--mut-2); justify-content:center;}
.foot svg{width:13px;height:13px;}

.status{font-size:11px; color:var(--mut); min-height:16px; margin-top:8px;}
.status.err{color:var(--danger);}

.toast{position:fixed; bottom:26px; left:50%; transform:translate(-50%,20px); opacity:0; background:var(--ink); color:#fff; font-size:11.5px; padding:11px 18px; border-radius:12px; box-shadow:var(--sh-lift); transition:.28s cubic-bezier(.2,.8,.2,1); z-index:50; display:flex; align-items:center; gap:9px; pointer-events:none;}
.toast.on{opacity:1; transform:translate(-50%,0);}
.toast svg{width:13px; height:13px; color:var(--acc-lite);}

/* ---------- SETTINGS ---------- */
.pagehead{margin-bottom:22px;}
.pagehead h1{font-size:26px;}
.setgrid{display:grid; grid-template-columns:1fr 300px; gap:18px; align-items:start;}
.uhead,.urow,.addrow{display:grid; grid-template-columns:62px 1.5fr 1fr 96px; gap:10px; align-items:center;}
.uhead{font-size:9.5px; letter-spacing:.1em; color:var(--mut-2); padding:0 10px 9px; border-bottom:1px solid var(--line);}
.urow{padding:6px 10px; border-radius:10px; transition:.16s;}
.urow:hover{background:#FAFAFD;}
.urow .uid{font-size:10.5px; color:var(--mut);}
.inp{width:100%; height:32px; padding:0 10px; border:1px solid var(--line); border-radius:9px; background:#FCFCFE; font-family:var(--mono); font-size:11px; color:var(--ink); outline:none; transition:.16s;}
.inp:hover{border-color:#D3D3E0;}
.inp:focus{border-color:var(--acc); background:#fff; box-shadow:0 0 0 3px var(--tint);}
.uacts{display:flex; gap:6px; justify-content:flex-end;}
.mini{width:30px; height:30px; border-radius:9px; border:1px solid var(--line); background:#fff; display:grid; place-items:center; cursor:pointer; color:var(--mut); transition:.16s;}
.mini svg{width:13px; height:13px;}
.mini:hover{color:var(--acc-lo); border-color:var(--acc); background:var(--tint); transform:translateY(-1px);}
.mini.del:hover{color:var(--danger); border-color:#F3C9C9; background:#FDF3F3;}
.ulist{max-height:404px; overflow-y:auto; margin-top:6px; padding-right:4px;}
.ulist::-webkit-scrollbar{width:8px;} .ulist::-webkit-scrollbar-thumb{background:#E1E1E8; border-radius:8px; border:2px solid #fff;}
.addrow{margin-top:12px; padding:12px 10px 2px; border-top:1px dashed var(--line);}
.addrow .uid{font-size:10px; color:var(--mut-2);}
.mini-drop{margin-top:12px; border:1.5px dashed #D6D6E2; border-radius:14px; padding:18px; text-align:center; cursor:pointer; background:linear-gradient(180deg,#fff,#FBFBFE); transition:.2s;}
.mini-drop:hover{border-color:var(--acc); background:var(--tint); transform:translateY(-1px);}
.mini-drop.over{border-color:var(--acc); background:var(--tint);}
.mini-drop .ic{width:34px; height:34px; margin:0 auto 9px; border-radius:11px; background:linear-gradient(135deg,var(--acc-hi),var(--acc-lo)); color:#fff; display:grid; place-items:center; box-shadow:0 10px 20px -10px rgba(var(--acc-rgb),.8);}
.mini-drop .ic svg{width:16px; height:16px;}
.mini-drop b{font-size:11.5px; font-weight:600;}
.mini-drop span{display:block; font-size:10px; color:var(--mut); margin-top:5px;}
.btnrow{display:flex; gap:8px; margin-top:14px; flex-wrap:wrap;}
.empty{margin-top:14px; border:1px dashed var(--line); border-radius:12px; padding:22px; text-align:center; font-size:10.5px; color:var(--mut-2); background:#FCFCFE;}
.chead,.crow{display:grid; grid-template-columns:62px 1fr 1.3fr 190px; gap:10px; align-items:center;}
.chead{font-size:9.5px; letter-spacing:.1em; color:var(--mut-2); padding:0 10px 9px; border-bottom:1px solid var(--line); margin-top:14px;}
.crow{padding:8px 10px; border-radius:10px; font-size:11px; border-bottom:1px solid #F2F2F6;}
.crow:hover{background:#FAFAFD;}
.crow .id2{font-size:10.5px; color:var(--mut);}
.crow .em{font-size:10.5px; color:var(--mut);}
.side{display:flex; flex-direction:column; gap:12px;}
.side-note{font-size:10.5px; line-height:1.6; color:var(--mut);}
.side-note b{color:var(--ink);}
.stat{padding:15px 16px; border-radius:var(--r-sm); background:var(--paper); border:1px solid var(--line); box-shadow:var(--sh);}
.stat.dark{background:var(--rail-bg); border-color:var(--rail-bg); color:#fff; position:relative; overflow:hidden;}
.stat.dark:before{content:""; position:absolute; inset:auto -30% -60% -30%; height:110%; background:radial-gradient(50% 50% at 50% 50%, rgba(var(--glow-rgb),.5), transparent 70%);}
.stat .l{font-size:9.5px; letter-spacing:.14em; color:var(--mut-2); position:relative;}
.stat.dark .l{color:rgba(255,255,255,.45);}
.stat .v{margin-top:7px; font-size:23px; font-weight:700; letter-spacing:-.05em; display:flex; align-items:baseline; gap:5px; position:relative;}
.stat .v s{text-decoration:none; font-size:11px; color:var(--mut); font-weight:400;}
.metric{display:flex; justify-content:space-between; align-items:baseline; padding:9px 0; border-bottom:1px solid #F2F2F6; font-size:11px;}
.metric:last-child{border-bottom:0;}
.metric span{color:var(--mut);} .metric b{font-size:13px; letter-spacing:-.03em;}

/* ---------- PLAIN PAGES (вход / админка) ---------- */
body.plain{height:auto; min-height:100%; overflow-y:auto; display:flex; flex-direction:column;}
header.plain-top{
  position:sticky; top:0; z-index:50; display:flex; align-items:center; gap:20px;
  min-height:62px; padding:14px 30px; background:rgba(255,255,255,.9);
  backdrop-filter:blur(12px); border-bottom:1px solid var(--line);
}
.plain-top .fh-logo{font-weight:800; font-size:18px; letter-spacing:-.05em; color:var(--ink);}
.plain-top h1{margin:0 auto 0 22px; font-weight:700; font-size:15px; letter-spacing:-.02em; white-space:nowrap;}
.plain-top .user-bar{display:flex; align-items:center; gap:14px; white-space:nowrap;}
.plain-top .who{color:var(--mut); font-size:11.5px;}
.logout-link{
  display:inline-flex; align-items:center; text-decoration:none; font-weight:600; font-size:12px;
  color:var(--ink); background:var(--paper); border:1px solid var(--line); border-radius:20px;
  padding:6px 15px; transition:.16s;
}
.logout-link:hover{border-color:var(--acc); color:var(--acc-lo); transform:translateY(-1px); box-shadow:var(--sh);}
body.plain main{width:100%; max-width:1000px; margin:0 auto; padding:30px 24px 80px;}
body.plain .card{padding:26px 28px; margin:22px 0;}
.login-card{max-width:420px; margin:56px auto;}
body.plain .card h2, body.plain .card h3{font-size:16px; font-weight:700; letter-spacing:-.02em; margin:22px 0 14px;}
body.plain .card>h2:first-child, body.plain .card>h3:first-child{margin-top:0;}
body.plain .card h2:before, body.plain .card h3:before{content:"["; color:var(--acc); margin-right:5px;}
body.plain .card h2:after, body.plain .card h3:after{content:"]"; color:var(--acc); margin-left:5px;}
.row{display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin:14px 0;}
label{color:var(--mut); font-size:12px;}

body.plain input[type="text"], body.plain input[type="email"],
body.plain input[type="password"]{
  font-family:var(--mono); background:#FCFCFE; color:var(--ink); border:1px solid var(--line);
  border-radius:9px; padding:9px 12px; font-size:13px; transition:.14s; width:100%;
}
body.plain input:focus{outline:none; background:#fff; border-color:var(--acc); box-shadow:0 0 0 3px var(--tint);}
body.plain input::placeholder{color:#b0b0b0;}
#new-name, #new-email, #su-username, #su-password{width:auto; flex:1 1 180px;}
select{font-family:var(--mono); background:#FCFCFE; color:var(--ink); border:1px solid var(--line); border-radius:9px; padding:9px 12px; font-size:13px;}

body.plain button{
  font-family:var(--mono); font-weight:600; font-size:13px; color:#fff; background:var(--acc);
  border:1px solid var(--acc); border-radius:20px; padding:9px 18px; cursor:pointer; transition:.16s;
}
body.plain button:hover{background:var(--acc-lo); border-color:var(--acc-lo); transform:translateY(-1px); box-shadow:0 8px 20px -8px rgba(var(--acc-rgb),.6);}
body.plain button:active{transform:translateY(0); box-shadow:none;}
body.plain button:disabled{opacity:.5; cursor:default; transform:none; box-shadow:none;}
body.plain button.small{padding:7px 14px; font-size:12px;}
body.plain button.remove-acc{background:#fff; color:var(--mut); border:1px solid var(--line);}
body.plain button.remove-acc:hover{background:var(--bg); color:var(--danger); border-color:#F3C9C9; box-shadow:none; transform:none;}

body.plain table{
  border-collapse:separate; border-spacing:0; width:100%; background:var(--paper);
  border:1px solid var(--line); border-radius:12px; overflow:hidden; margin:14px 0; font-size:13px;
}
body.plain th{background:var(--ink); color:#fff; text-align:left; font-weight:700; font-size:11px; letter-spacing:.3px; padding:11px 14px;}
body.plain td{border-bottom:1px solid var(--line); padding:10px 14px; color:var(--ink); vertical-align:middle;}
body.plain tr:last-child td{border-bottom:none;}
.mono{font-variant-numeric:tabular-nums;}
#sysusers-table td:last-child{width:1%; white-space:nowrap;}

a{color:var(--acc-lo);}

/* ---------- Адаптив ---------- */
@media (max-width:900px){
  .app{grid-template-columns:1fr;}
  .rail{display:none;}
  .grid2{grid-template-columns:1fr;}
  .reqs{grid-template-columns:1fr;}
  .setgrid{grid-template-columns:1fr;}
  .vd{grid-template-columns:1fr; text-align:left;}
  .conf{text-align:left; padding-left:0; border-left:0; border-top:1px solid rgba(255,255,255,.12); padding-top:16px; margin-top:4px;}
  .scan{grid-template-columns:1fr;}
  .uhead,.urow,.addrow{grid-template-columns:52px 1fr 1fr 72px;}
  .chead,.crow{grid-template-columns:52px 1fr 1fr;}
  .crow .uacts{grid-column:1 / -1;}
}