/* Алиасы к глобальным токенам (тёмная фаза — на корневом элементе). */
html:has(#sbrd),
body:has(#sbrd),
#sbrd {
--text-main: var(--text);
--bg-body: var(--bg);
--bg-widget: var(--bg-card);
--bg-hover: var(--bg-card-h);
--bg-active: var(--bg-card-alt, var(--bg-card-h));
--border-hover: var(--accent);
}

/* Сброс отступов только на главной с сеткой (#sbrd). */
html:has(#sbrd),
body:has(#sbrd) {
overflow: hidden !important;
height: 100dvh !important;
background: var(--bg-body) !important;
color: var(--text-main) !important;
}
.site-content:has(#sbrd),
.site-content:has(#sbrd) .content-area,
.site-main:has(#sbrd) .inside-article,
.site-main:has(#sbrd) .grid-container,
.site-main:has(#sbrd) article {
padding: 0 !important;
margin: 0 !important;
max-width: 100% !important;
width: 100% !important;
background: transparent !important;
}
.site-main:has(#sbrd) .inside-article > .entry-header,
.site-main:has(#sbrd) .inside-article > .entry-content,
.site-main:has(#sbrd) .inside-article > .page-header {
display: none !important;
}
body:has(#sbrd) .site-footer,
body:has(#sbrd) .site-info {
display: none !important;
}

/* ═══════════════════════════════════════════════════════════
ДАШБОРД — сетка
═══════════════════════════════════════════════════════════ */
#sbrd {
--hdr: 58px;
position: fixed !important;
top: var(--hdr) !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
z-index: 100 !important;
display: grid !important;
grid-template-columns: minmax(420px, 1.45fr) minmax(320px, 1fr) minmax(240px, 0.9fr) !important;
grid-template-rows: minmax(320px, 1fr) minmax(190px, auto) minmax(190px, auto) !important;
grid-template-areas: "C N R" "B B B" "K K K" !important;
gap: 5px !important;
padding: 5px !important;
box-sizing: border-box !important;
overflow: auto !important;
background: var(--bg-body) !important;
}

.dash-density-toggle {
position: absolute;
top: 8px;
right: 8px;
z-index: 3;
height: 24px;
padding: 0 8px;
border: 1px solid var(--border);
border-radius: 4px;
background: var(--bg-card);
color: var(--text-sec);
font-size: 10px;
font-weight: 700;
letter-spacing: .03em;
cursor: pointer;
}
.dash-density-toggle:hover { border-color: var(--text-muted); color: var(--text-main); }

#sbrd[data-density="compact"] .wh { padding: 4px 7px; }
#sbrd[data-density="compact"] .wt { font-size: 9px; }
#sbrd[data-density="compact"] .wm { font-size: 8px; }
#sbrd[data-density="compact"] .cve-row,
#sbrd[data-density="compact"] .bdu-row,
#sbrd[data-density="compact"] .mt-row { padding: 4px 8px; }
#sbrd[data-density="compact"] .kc-stage { min-height: 30px; font-size: 9px; }
#sbrd[data-density="compact"] .kc-desc { font-size: 10px; }
#sbrd[data-density="compact"] .bf-disp { font-size: 16px; }

/* ═══════════════════════════════════════════════════════════
КОЛОНКИ
═══════════════════════════════════════════════════════════ */
.col-l, .col-c, .col-r, .col-n, .col-b, .col-kc {
display: flex;
flex-direction: column;
gap: 5px;
min-height: 0;
overflow: hidden;
}
.col-l { grid-area: L; }
.col-c { grid-area: C; }
.col-n {
grid-area: N;
display:grid;
grid-template-columns: 1fr 1fr;
gap:5px;
min-height:0;
overflow:hidden;
}
.col-n > .w { height:100%; }
.col-r { grid-area: R; }
.col-b {
grid-area: B;
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 5px;
min-height: 0;
overflow: hidden;
}
.col-kc { grid-area: K; min-width: 0; }
.col-kc .w { width: 100%; }

/* ═══════════════════════════════════════════════════════════
ВИДЖЕТ — базовый блок
═══════════════════════════════════════════════════════════ */
.w {
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
overflow: hidden;
background: var(--bg-widget);
border: 1px solid var(--border);
border-radius: 4px;
transition: border-color .2s, box-shadow .2s;
}
.w:hover {
border-color: var(--border-hover);
box-shadow: 0 2px 8px var(--accent-s);
}
.wh {
display: flex;
align-items: center;
justify-content: space-between;
padding: 6px 10px;
flex-shrink: 0;
border-bottom: 1px solid var(--border);
background: var(--bg-surface);
}
.wt {
font-size: 10px;
font-weight: 800;
letter-spacing: .05em;
text-transform: uppercase;
color: var(--text-main);
}
.wm {
font-size: 9px;
color: var(--text-muted);
font-family: monospace;
}
.wb {
flex: 1;
min-height: 0;
overflow-y: auto;
overflow-x: hidden;
display: flex;
flex-direction: column;
}

/* Пропорции */
.w-auto   { flex: 0 0 auto !important; }
.w-cve    { flex: 2 !important; }
.w-bdu    { flex: 2 !important; }
.w-siem   { flex: 2 !important; }
.w-mitre  { flex: 2.8 !important; }
.w-kc     { flex: 1 !important; }
.w-graf   { flex: 1.6 !important; }
.w-flex   { flex: 1 1 0 !important; }

/* ═══════════════════════════════════════════════════════════
ТЕРМИНАЛ
═══════════════════════════════════════════════════════════ */
.term-body {
flex: 1;
min-height: 0;
display: flex;
flex-direction: column;
padding: 8px 11px 6px;
background: var(--bg-surface);
border: 1px solid var(--border);
border-radius: 4px;
}
.term-out {
flex: 1;
min-height: 0;
overflow-y: auto;
overflow-x: hidden;
font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
font-size: 12.5px;
line-height: 1.4;
color: var(--text-sec);
scrollbar-width: thin;
scrollbar-color: var(--text-muted) transparent;
scroll-behavior: smooth;
}
.term-out .tl {
margin: 0 !important;
padding: 0 !important;
line-height: 1.4 !important;
white-space: pre-wrap;
word-break: break-all;
}
.tok { color: var(--text-main) !important; font-weight: 700; }
.twn { color: var(--text-sec) !important; font-style: italic; }
.ter { color: var(--text-main) !important; text-decoration: underline; font-weight: 700; }
.tdm { color: var(--text-muted) !important; }
.tid { color: var(--text-main) !important; font-weight: 800; }
.tl-out { color: var(--text-sec) !important; }

.t3dot span { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:4px; background: var(--text-main); }
.t3dot span:nth-child(1){ opacity: 1; }
.t3dot span:nth-child(2){ opacity: 0.6; }
.t3dot span:nth-child(3){ opacity: 0.3; }

.term-inp-row {
display: flex;
align-items: center;
gap: 5px;
flex-shrink: 0;
border-top: 1px solid var(--border);
margin-top: 4px;
padding-top: 4px;
background: var(--bg-card);
border-radius: 3px;
}
.term-cursor {
display: inline-block;
flex-shrink: 0;
width: 8px;
height: 1.1em;
background: var(--text-main);
opacity: .9;
vertical-align: text-bottom;
animation: term-blink 1s step-end infinite;
}
@keyframes term-blink { 50% { opacity: 0; } }

.term-prompt { color: var(--text-main); font-family: monospace; font-size: 13px; white-space: nowrap; font-weight: 700; }
.term-user { color: var(--text-main); font-weight: 700; }
.term-input,
#term-inp,
input.term-input {
flex: 1;
background: transparent !important;
border: none !important;
outline: none !important;
box-shadow: none !important;
padding: 0 !important;
margin: 0 !important;
font-family: monospace;
font-size: 13px;
color: var(--text-main) !important;
caret-color: var(--text-main);
}
.term-input:focus { outline: none; }

/* ═══════════════════════════════════════════════════════════
СТАТУС
═══════════════════════════════════════════════════════════ */
.st-rows { display:flex; flex-direction:column; gap:4px; padding:6px 10px; }
.st-row  { display:flex; align-items:center; gap:8px; font-size:11px; }
.st-sep  { border-top:1px solid var(--border); margin-top:4px; padding-top:6px; }
.dot     { width:8px; height:8px; border-radius:50%; flex-shrink:0; background: var(--text-main); }
.d-ok    { background: var(--text-main); }
.d-wn    { background: var(--text-muted); border: 1px solid var(--text-muted); }
.d-er    { background: var(--text-main); border: 2px solid var(--text-main); box-sizing: border-box; }
.d-pu    { background: var(--text-main); animation:blink 1.3s infinite; }

.st-k    { flex:1; color:var(--text-sec); font-weight: 500; }
.st-v    { font-family:monospace; font-size:10px; color:var(--text-main); font-weight: 700; }
.c-ok    { color:var(--text-main) !important; }
.c-bl    { color:var(--text-main) !important; font-weight:700; }
.c-or    { color:var(--text-main) !important; font-weight:700; }

@keyframes blink { 0%,100%{opacity:1}50%{opacity:.3} }

/* ═══════════════════════════════════════════════════════════
ПАРАМЕТРЫ
═══════════════════════════════════════════════════════════ */
.pm-rows { display:flex; flex-direction:column; gap:4px; padding:6px 10px; }
.pm-row  { display:flex; justify-content:space-between; font-size:11px; }
.pm-k    { color:var(--text-muted); }
.pm-v    { color:var(--text-main); font-family:monospace; font-weight: 700; }

/* ═══════════════════════════════════════════════════════════
CVE · виджет дашборда
═══════════════════════════════════════════════════════════ */
.cve-list { list-style:none; margin:0; padding:0; overflow-y:auto; flex:1; scrollbar-width:thin; }
.cve-row  { display:flex; align-items:flex-start; gap:6px; padding:5px 10px;
border-bottom:1px solid var(--border); cursor:default; }
.cve-row:hover { background:var(--bg-hover); }
.cve-id   { font-family:monospace; font-size:10px; color:var(--text-main); flex-shrink:0; font-weight: 700; }
.cve-sev  { font-size:8px; padding:1px 4px; border-radius:2px; font-weight:700; flex-shrink:0; border: 1px solid var(--border); }
/* Убираем цвета, оставляем только границы и жирность */
.sc { background: var(--bg-active); color: var(--text-main); border-color: var(--text-main); }
.sh { background: var(--bg-surface); color: var(--text-main); border-color: var(--text-sec); }
.sm { background: transparent; color: var(--text-sec); border-color: var(--border); }
.sl { background: transparent; color: var(--text-muted); border-color: transparent; }

.cve-desc {
font-size:10px; color:var(--text-sec); flex:1;
white-space: normal; overflow: hidden; text-overflow: clip;
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}

/* ═══════════════════════════════════════════════════════════
БДУ · тикер
═══════════════════════════════════════════════════════════ */
.bdu-inner { flex:1; overflow:hidden; display:flex; flex-direction:column; }
.bdu-row   {
display:flex; align-items:flex-start; gap:6px; padding:5px 10px;
border-bottom:1px solid var(--border); font-size:10px;
flex-shrink:0; text-decoration: none; color: inherit;
}
.bdu-row:hover { background:var(--bg-hover); }
.btag   { font-size:8px; font-weight:700; padding:1px 4px; border-radius:2px; flex-shrink:0; border: 1px solid var(--border); color: var(--text-main); background: var(--bg-surface); }
.btag.bt-v { background: var(--bg-surface); }
.btag.bt-t { background: var(--bg-code); }
.btag.bt-d { background: var(--bg-input); }
.btag.bt-i { background: var(--bg-card-alt); }
.bname  {
flex:1; color:var(--text-sec);
white-space: normal; overflow: hidden; text-overflow: clip;
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
line-height: 1.3;
}
.live-dot { display:inline-block; width:6px; height:6px; border-radius:50%;
background:var(--text-main); animation:blink 1.4s infinite;
vertical-align:middle; margin-right:3px; }

/* THREAT FEED: объединенный CVE + БДУ */
.w-threats .wb { overflow: hidden; }
.th-stack {
display: grid;
grid-template-rows: 1fr 1fr;
gap: 6px;
padding: 6px 8px;
height: 100%;
min-height: 0;
}
.th-panel {
border: 1px solid var(--border);
border-radius: 4px;
background: var(--bg-card);
display: flex;
flex-direction: column;
min-height: 0;
overflow: hidden;
}
.th-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 5px 8px;
border-bottom: 1px solid var(--border);
background: var(--bg-surface);
}
.th-title {
font-size: 9px;
font-weight: 800;
letter-spacing: .04em;
text-transform: uppercase;
color: var(--text-main);
}
.th-meta {
font-size: 9px;
color: var(--text-muted);
font-family: monospace;
}
.w-threats .cve-list,
.w-threats .bdu-inner {
flex: 1;
min-height: 0;
overflow-y: auto;
scrollbar-width: thin;
}

/* ═══════════════════════════════════════════════════════════
SIEM · виджет
═══════════════════════════════════════════════════════════ */
.siem-body { flex:1; overflow:hidden; display:flex; flex-direction:column; }
.siem-row  { display:flex; gap:6px; padding:5px 10px; border-bottom:1px solid var(--border);
font-size:10px; align-items:baseline; flex-shrink:1; }
.siem-ts  { color:var(--text-muted); font-family:monospace; font-size:9px; flex-shrink:0; }
.siem-lvl { font-size:8px; font-weight:700; width:30px; flex-shrink:0; border: 1px solid var(--border); text-align: center; padding: 1px 0; }
.siem-msg { color:var(--text-sec); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; }
.siem-lvl-cell { display:inline-block; width:36px; border:1px solid var(--border); }
.siem-ip-cell { display:inline-block; width:88px; }
/* Уровни важности через стиль текста, не цвет */
.li { color:var(--text-sec); }
.lw { color:var(--text-main); font-weight: 700; }
.le { color:var(--text-main); text-decoration: underline; }
.lc { color:var(--text-main); font-weight: 800; background: var(--bg-active); }

/* ═══════════════════════════════════════════════════════════
MITRE ATT&CK · виджет
═══════════════════════════════════════════════════════════ */
.mt-inner { flex:1; overflow:hidden; display:flex; flex-direction:column; }
.mt-row   { display:flex; align-items:center; gap:6px; padding:5px 10px;
border-bottom:1px solid var(--border); font-size:10px;
flex-shrink:0; }
.mt-row:last-child { border-bottom:none; }
.mt-tid  { font-family:monospace; font-size:9px; color:var(--text-main); flex-shrink:0; width:48px; font-weight: 700; }
.mt-tac  {
font-size:8px; color:var(--text-muted); flex-shrink:0; width:68px;
white-space: normal; overflow: hidden; text-overflow: clip;
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.mt-desc {
font-size:10px; flex:1; color: var(--text-sec);
white-space: normal; overflow: hidden; text-overflow: clip;
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.mt-crit { color:var(--text-main); font-weight: 700; text-decoration: underline; }
.mt-warn { color:var(--text-sec); font-style: italic; }

/* ═══════════════════════════════════════════════════════════
KILL CHAIN · виджет
═══════════════════════════════════════════════════════════ */
.kc-body {
padding: 8px 10px;
display: grid;
grid-template-columns: minmax(0, 1.7fr) minmax(240px, 1fr);
gap: 8px;
flex: 1;
min-height: 0;
align-items: stretch;
}
.kc-stages {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 5px;
align-content: start;
}
.kc-stage  {
position: relative;
min-height: 34px;
padding: 7px 6px 6px 20px;
border-radius: 4px;
font-size: 10px;
line-height: 1.1;
text-align: left;
cursor: pointer;
transition: all .16s ease;
border: 1px solid var(--border);
background: var(--bg-surface);
color: var(--text-sec);
overflow: hidden;
text-overflow: clip;
white-space: normal;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
font-weight: 600;
}
.kc-stage::before {
content: attr(data-step);
position: absolute;
left: 6px;
top: 50%;
transform: translateY(-50%);
font-size: 8px;
font-weight: 700;
letter-spacing: .04em;
color: var(--text-muted);
}
.kc-stage:hover { background: var(--bg-hover); border-color: var(--text-muted); }
.kc-stage.done   { background:var(--bg-active); color:var(--text-main); border-color:var(--text-main); }
.kc-stage.done::before { color: var(--text-main); }
.kc-stage.active {
background: var(--text-main);
color: var(--on-emphasis);
border-color: var(--text-main);
box-shadow: 0 0 0 1px var(--text-main) inset;
}
.kc-stage.active::before { color: color-mix(in srgb, var(--on-emphasis) 80%, transparent); }
.kc-desc {
font-size: 11px;
color: var(--text-sec);
line-height: 1.5;
border: 1px solid var(--border);
border-radius: 4px;
background: var(--bg-surface);
padding: 9px 10px;
display: flex;
flex-direction: column;
align-items: stretch;
justify-content: flex-start;
text-align: left;
min-height: 0;
}
.kc-desc-head {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 8px;
padding-bottom: 6px;
margin-bottom: 6px;
border-bottom: 1px dashed var(--border);
}
.kc-desc-phase {
font-size: 11px;
font-weight: 700;
color: var(--text-main);
}
.kc-desc-tag {
font-size: 9px;
font-weight: 700;
letter-spacing: .04em;
color: var(--text-muted);
text-transform: uppercase;
white-space: normal;
}
.kc-desc-main {
font-size: 10px;
line-height: 1.45;
color: var(--text-sec);
margin-bottom: 6px;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
.kc-desc-row {
display: grid;
grid-template-columns: 58px 1fr;
gap: 6px;
font-size: 9.5px;
line-height: 1.45;
padding-top: 4px;
border-top: 1px solid var(--border);
}
.kc-desc-k {
color: var(--text-muted);
font-weight: 700;
text-transform: uppercase;
letter-spacing: .04em;
}
.kc-desc-v {
color: var(--text-sec);
}

/* ═══════════════════════════════════════════════════════════
GRAFANA · виджет
═══════════════════════════════════════════════════════════ */
.gf-body  { padding:6px 10px; display:flex; flex-direction:column; gap:5px; flex:1; min-height:0; }
.gf-kpis  { display:flex; gap:14px; flex-shrink:0; }
.gf-kpi   { display:flex; flex-direction:column; }
.gf-val   { font-size:15px; font-weight:700; font-family:monospace; line-height:1; color:var(--text-main); }
.gf-lbl   { font-size:8px; color:var(--text-muted); }
.gf-chart { flex:1; min-height:0; display:flex; align-items:flex-end; gap:2px; padding-top:4px; }
.gf-bar   { flex:1; border-radius:2px 2px 0 0; background:var(--text-main); transition:height .5s ease; min-height:4px; opacity: 0.8; }
.gf-bar:hover { opacity: 1; }

/* ═══════════════════════════════════════════════════════════
НИЖНЯЯ ПАНЕЛЬ
═══════════════════════════════════════════════════════════ */
.feed-scroll { flex:1; overflow-y:auto; scrollbar-width:thin; }
.feed-item   { display:flex; align-items:center; gap:7px; padding:5px 8px;
border-bottom:1px solid var(--border); text-decoration:none; color:inherit; transition:background .14s; }
.feed-item:hover { background:var(--bg-hover); }
.feed-thumb  { width:38px; height:30px; border-radius:4px; overflow:hidden; background:var(--bg-active);
flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:13px; color: var(--text-muted); }
.feed-thumb img { width:100%; height:100%; object-fit:cover; display:block; filter: grayscale(100%); }
.feed-title  { display:block; font-size:10px; color:var(--text-sec); line-height:1.3;
overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.feed-date   { display:block; font-size:8px; color:var(--text-muted); }

/* BRUTE FORCE */
.bf-pad  { padding:6px 10px; display:flex; flex-direction:column; justify-content:center; gap:4px; flex:1; min-height:0; }
.bf-tgt  { font-size:9px; color:var(--text-muted); text-align:center; }
.bf-target { color:var(--text-main); font-weight:700; }
.bf-disp { font-family:monospace; font-size:18px; font-weight:700; color:var(--text-main);
text-align:center; letter-spacing:.14em; padding:2px 0; }
.bf-trk  { height:4px; background:var(--border); border-radius:2px; overflow:hidden; }
.bf-fill { height:100%; width:0; background:var(--text-main); border-radius:2px; transition:width .1s; }
.bf-stats{ display:grid; grid-template-columns:1fr 1fr; gap:1px 8px; font-size:9px; color:var(--text-sec); }
.bf-val  { color:var(--text-main); font-family:monospace; font-weight: 700; }
.sbtn    { width:100%; padding:5px; font-size:10px; border:1px solid var(--text-main);
border-radius:4px; background:transparent; color:var(--text-main); cursor:pointer; transition:all .15s; font-weight: 600; }
.sbtn:hover { background:var(--text-main); color:var(--on-emphasis); }
.bf-crk  { font-size:10px; color:var(--text-main); text-align:center; min-height:14px; font-weight: 700; }

/* URL CHECKER */
.url-pad { padding:5px 8px 0; display:flex; flex-direction:column; flex:1; min-height:0; gap:4px; }
.url-row { display:flex; gap:4px; flex-shrink:0; }
.url-in  {
flex:1 !important;
background: var(--bg-input) !important;
border: 1px solid var(--border) !important;
border-radius: 4px !important;
font-family: monospace !important;
font-size: 10px !important;
padding: 5px 7px !important;
color: var(--text-main) !important;
outline: none !important;
transition: border-color .15s !important;
}
.url-in:focus {
border-color: var(--text-main) !important;
box-shadow: 0 0 0 2px var(--bg-active) !important;
}
.url-btn { padding:5px 8px; font-size:10px; border:1px solid var(--text-main);
border-radius:4px; background:transparent; color:var(--text-main); cursor:pointer; white-space:nowrap; font-weight: 600; }
.url-btn:hover { background:var(--text-main); color:var(--on-emphasis); }
.url-res { flex:1; overflow-y:auto; display:flex; flex-direction:column; gap:2px; }
.url-chk { display:flex; align-items:center; gap:5px; padding:3px 5px; border-radius:3px;
font-size:9px; background:var(--bg-surface); border: 1px solid var(--border); }
.u-ok { color:var(--text-main); }
.u-wn { color:var(--text-sec); font-style: italic; }
.u-bd { color:var(--text-main); font-weight: 700; text-decoration: underline; }

.url-verd { padding:5px 7px; border-radius:4px; font-size:10px; font-weight:700; text-align:center; margin-top:2px; border: 1px solid var(--border); }
.vd-ok { background:var(--bg-surface); color:var(--text-main); }
.vd-wn { background:var(--bg-surface); color:var(--text-sec); border-style: dashed; }
.vd-bd { background:var(--bg-active); color:var(--text-main); border-color: var(--text-main); }

/* ПАРОЛЬ · СИЛА */
#psw-inp,
#sbrd input[type="password"],
#sbrd .sbrd-psw-widget-input {
width:100%;
background: var(--bg-input) !important;
border: 1px solid var(--border) !important;
border-radius: 4px !important;
padding: 6px 10px !important;
font-family: monospace !important;
font-size: 12px !important;
color: var(--text-main) !important;
outline: none !important;
}
#psw-inp:focus,
#sbrd .sbrd-psw-widget-input:focus {
border-color: var(--text-main) !important;
box-shadow: 0 0 0 2px var(--bg-active) !important;
}
#sbrd .sbrd-psw-bar-wrap { display:flex; align-items:center; gap:6px; margin-top:4px; }
#sbrd .sbrd-psw-bar-track {
flex:1; height:6px; border-radius:999px;
background: var(--border);
overflow:hidden;
}
#sbrd .sbrd-psw-bar-fill {
height:100%; width:0%;
background:var(--text-main);
transition:width .18s ease-out;
}
#sbrd .sbrd-psw-bar-score {
font-family: monospace; font-size: 10px; color: var(--text-main); min-width:40px; text-align:right; font-weight: 700;
}
#sbrd .sbrd-psw-result { font-size:11px; color: var(--text-sec); margin-top:4px; min-height:1.6em; }
.psw-panel { padding:6px 10px; display:flex; flex-direction:column; gap:4px; }

/* СЛОВАРЬ */
#sbrd .w.sbrd-dict .wb {
background: var(--bg-card);
border: 1px solid var(--border);
}
#sbrd .w.sbrd-dict .tip-body {
padding: 16px 14px 14px;
gap: 0;
text-align: center;
align-items: center;
min-height: 0;
}
#sbrd .w.sbrd-dict #dict-term {
font-size: 17px;
font-weight: 800;
line-height: 1.25;
letter-spacing: .04em;
min-height: 1.5em;
margin: 0;
color: var(--text-main);
}
#sbrd .w.sbrd-dict #dict-en {
font-size: 11px;
color: var(--text-muted);
letter-spacing: .08em;
text-transform: uppercase;
margin-top: 6px;
font-weight: 600;
}
#sbrd .w.sbrd-dict #dict-def {
font-size: 11px;
color: var(--text-sec);
line-height: 1.6;
text-align: center;
max-width: 100%;
margin-top: 10px;
padding: 0 4px;
}
#sbrd .w.sbrd-dict #dict-cat {
font-size: 9px;
font-weight: 700;
letter-spacing: .14em;
color: var(--text-main);
background: var(--bg-active);
border: 1px solid var(--border);
border-radius: 4px;
padding: 4px 10px;
margin-top: 12px;
}
#sbrd .w.sbrd-dict .tip-nav { margin-top: 14px; gap: 6px; }
#sbrd .w.sbrd-dict .tip-dot {
width: 6px; height: 6px; background: var(--border); cursor:pointer; transition: all .2s;
}
#sbrd .w.sbrd-dict .tip-dot:hover { background: var(--text-muted); transform: scale(1.2); }
#sbrd .w.sbrd-dict .tip-dot.on {
background: var(--text-main);
transform: scale(1.1);
}

/* HOST INTEL */
.sho-body   { padding: 8px 10px; display: flex; flex-direction: column; gap: 5px; flex: 1; min-height: 0;
overflow-y: auto; scrollbar-width: thin; }
.sho-ip     { font-family: monospace; font-size: 16px; font-weight: 700; color: var(--text-main); letter-spacing: .06em; }
.sho-status { font-size: 9px; color: var(--text-muted); }
.sho-divider { border: none; border-top: 1px solid var(--border); margin: 2px 0; }
.sho-section-title { font-size: 8px; font-weight: 700; letter-spacing: .12em;
text-transform: uppercase; color: var(--text-muted); margin-top: 2px; }
.sho-ports  { display: flex; flex-wrap: wrap; gap: 4px; }
.sho-port   { font-family: monospace; font-size: 9px; padding: 2px 6px; border-radius: 3px;
background: var(--bg-active); color: var(--text-main); border: 1px solid var(--border); }
.sho-tags   { display: flex; flex-wrap: wrap; gap: 4px; }
.sho-tag    { font-size: 8px; padding: 1px 5px; border-radius: 3px;
background: var(--bg-surface); color: var(--text-sec); border: 1px solid var(--border); }
.sho-tag-red { font-size: 8px; padding: 1px 5px; border-radius: 3px;
background: var(--bg-active); color: var(--text-main); border: 1px solid var(--text-main); font-weight: 700; }
.sho-tag-green { font-size: 8px; padding: 1px 5px; border-radius: 3px;
background: var(--bg-surface); color: var(--text-sec); border: 1px solid var(--border); }
.sho-vulns  { display: flex; flex-wrap: wrap; gap: 4px; }
.sho-vuln   { font-family: monospace; font-size: 8px; padding: 1px 5px; border-radius: 3px;
background: var(--bg-active); color: var(--text-main); border: 1px solid var(--text-main); }
.sho-row    { display: flex; align-items: baseline; gap: 6px; font-size: 9px; min-height: 16px; }
.sho-lbl    { color: var(--text-muted); flex-shrink: 0; min-width: 64px; font-family: monospace; font-size: 8px; }
.sho-val    {
color: var(--text-sec); font-size: 9px; flex: 1;
white-space: normal; overflow: hidden; text-overflow: clip;
display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
}
.sho-val-mono { color: var(--text-sec); font-size: 9px; font-family: monospace; flex: 1; }
.sho-val-local { color: var(--text-muted); }
.sho-empty  { font-size: 10px; color: var(--text-muted); text-align: center; padding: 10px 0; }
.sho-loading { font-size: 10px; color: var(--text-muted); text-align: center; padding: 14px 0; }
.sho-risk-bar   { display: flex; align-items: center; gap: 8px; }
.sho-risk-track { flex: 1; height: 5px; background: var(--border); border-radius: 3px; overflow: hidden; }
.sho-risk-progress {
width: 100%;
height: 100%;
display: block;
appearance: none;
-webkit-appearance: none;
border: 0;
background: transparent;
}
.sho-risk-progress::-webkit-progress-bar {
background: transparent;
}
.sho-risk-progress::-webkit-progress-value {
background: var(--text-main);
border-radius: 3px;
transition: width .6s ease;
}
.sho-risk-progress::-moz-progress-bar {
background: var(--text-main);
border-radius: 3px;
transition: width .6s ease;
}
.sho-risk-lbl   { font-size: 9px; font-family: monospace; font-weight: 700; flex-shrink: 0; min-width: 32px; color: var(--text-main); }
.sho-val-local-ready { color: var(--text-main); }

/* ═══════════════════════════════════════════════════════════
АДАПТИВ
═══════════════════════════════════════════════════════════ */
@media (max-width: 1100px) {
#sbrd { grid-template-columns: minmax(0,1.15fr) minmax(0,1fr) 220px !important; }
}
@media (max-width: 900px) {
html:has(#sbrd), body:has(#sbrd) { overflow: auto !important; height: auto !important; }
#sbrd {
position: relative !important; top: 0 !important; height: auto !important;
overflow: visible !important;
grid-template-columns: 1fr 1fr !important;
grid-template-rows: auto !important;
grid-template-areas: "C R" "N N" "B B" "K K" !important;
}
.col-l, .col-c, .col-r, .col-n, .col-b, .col-kc { overflow: visible !important; }
.col-n { grid-template-columns: 1fr 1fr !important; }
.col-b { grid-template-columns: 1fr 1fr !important; }
.w         { height: auto !important; min-height: 180px !important; flex: 1 1 auto !important; }
.w-auto    { height: auto !important; min-height: 90px !important; flex: none !important; }
.w-cve, .w-bdu, .w-siem, .w-mitre { min-height: 220px !important; }
.w-kc, .w-graf { min-height: 180px !important; }
.wb        { overflow-y: auto !important; -webkit-overflow-scrolling: touch; }
}
@media (max-width: 600px) {
html:has(#sbrd), body:has(#sbrd) { overflow: auto !important; height: auto !important; }
#sbrd {
position: relative !important; top: 0 !important; height: auto !important;
overflow: visible !important;
grid-template-columns: 1fr !important;
grid-template-rows: auto !important;
grid-template-areas: "C" "N" "R" "B" "K" !important;
padding: 4px !important; gap: 4px !important;
}
.col-l, .col-c, .col-r, .col-n, .col-b, .col-kc { overflow: visible !important; }
.col-n { grid-template-columns: 1fr !important; }
.col-b { grid-template-columns: 1fr !important; }
.w         { height: auto !important; min-height: 170px !important; flex: 1 1 auto !important; }
.w-auto    { height: auto !important; min-height: 90px !important; flex: none !important; }
.w-cve, .w-bdu, .w-siem, .w-mitre { min-height: 200px !important; }
.w-kc, .w-graf { min-height: 170px !important; }
.col-b .w  { min-height: 180px !important; }
.wb        { overflow-y: auto !important; -webkit-overflow-scrolling: touch; }
.wh  { padding: 8px 12px !important; min-height: 36px !important; }
.wt  { font-size: 10px !important; }
.term-out    { font-size: 14px !important; line-height: 1.4 !important; }
.term-prompt { font-size: 14px !important; }
.term-input  { font-size: 14px !important; }
.cve-row  { padding: 6px 12px !important; }
.cve-id   { font-size: 11px !important; }
.cve-desc { font-size: 11px !important; white-space: normal !important; overflow: visible !important; text-overflow: unset !important; }
.bdu-row  { padding: 6px 12px !important; }
.bname    { font-size: 11px !important; white-space: normal !important; overflow: visible !important; text-overflow: unset !important; }
.siem-row { padding: 5px 12px !important; }
.siem-msg { font-size: 10px !important; white-space: normal !important; overflow: visible !important; text-overflow: unset !important; }
.mt-row   { padding: 6px 12px !important; }
.mt-desc  { font-size: 11px !important; white-space: normal !important; overflow: visible !important; text-overflow: unset !important; }
.feed-title { font-size: 11px !important; white-space: normal !important; overflow: visible !important; text-overflow: unset !important; display: -webkit-box !important; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.feed-item  { padding: 7px 10px !important; }
.bf-disp    { font-size: 22px !important; }
.sbtn       { padding: 9px !important; font-size: 12px !important; }
.url-in     { font-size: 11px !important; padding: 6px 8px !important; }
.url-btn    { font-size: 11px !important; padding: 6px 10px !important; }
.gf-val     { font-size: 18px !important; }
.kc-body    { grid-template-columns: 1fr !important; }
.kc-stages  { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; overflow: visible !important; }
.kc-stage   { font-size: 10px !important; min-height: 32px !important; padding: 6px 6px 6px 20px !important; }
.kc-desc    { font-size: 11px !important; min-height: 64px !important; }
.kc-desc-row { grid-template-columns: 54px 1fr !important; }
}
@media (max-width: 380px) {
#sbrd { padding: 3px !important; gap: 3px !important; }
.w    { height: auto !important; min-height: 160px !important; }
.wt   { font-size: 9px !important; }
.bf-disp { font-size: 18px !important; }
}

/* ═══════════════════════════════════════════════════════════
ДОСТУПНОСТЬ — фокус
═══════════════════════════════════════════════════════════ */
#sbrd *:focus-visible {
outline: 2px solid var(--focus) !important;
outline-offset: 2px !important;
border-radius: 2px;
}
#sbrd button:focus-visible,
#sbrd input:focus-visible,
#sbrd a:focus-visible {
outline: 2px solid var(--focus) !important;
outline-offset: 2px !important;
}

/* Тёмная тема: без отдельного блока — токены с html[data-sbrd-theme] из theme-seberd.css + алиасы выше */
