/* layout — no-scroll symmetric dashboard */
html,body{height:100%;overflow:hidden}
body{display:flex;flex-direction:column}
.app{flex:1;min-height:0;display:flex;flex-direction:column}

/* header */
.header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--bg-1);flex:0 0 auto}
.brand{display:flex;align-items:center;gap:22px}
.logo{font-family:var(--mono);font-size:20px;font-weight:600;line-height:1}
.logo .b{color:var(--lab)}
.logo .w{color:var(--fg)}
.meta{font-family:var(--mono);font-size:10px;color:var(--fg-3);letter-spacing:.08em;line-height:1.3}
.meta .live{display:inline-flex;align-items:center;gap:5px;color:var(--poc)}
.meta .live::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--poc);box-shadow:0 0 5px var(--poc)}
.sort-hint{font-family:var(--mono);font-size:10px;color:var(--fg-3);letter-spacing:.08em;text-align:right;line-height:1.4}
.sort-hint .muted{color:var(--fg-4)}

/* color helpers */
.c-crit{color:var(--crit)}
.c-high{color:var(--high)}
.c-kev{color:var(--kev)}
.c-zero{color:var(--zero)}
.c-poc{color:var(--poc)}
.c-lab{color:var(--lab)}
.c-malw{color:var(--malw)}
.c-fg2{color:var(--fg-2)}

/* critical strip */
.strip{padding:10px 14px;border-bottom:1px solid var(--line);flex:0 0 auto}
.strip-head{display:flex;justify-content:space-between;margin-bottom:6px;font-family:var(--mono);font-size:10px;letter-spacing:.14em}
.strip-head .l{color:var(--crit)}
.strip-head .r{color:var(--fg-4)}
.drops{display:grid;grid-template-columns:repeat(8,1fr);gap:8px}
.drop{border:1px solid var(--line-2);background:var(--bg-2);padding:7px 9px;position:relative;display:block;min-height:54px}
.drop:hover{background:var(--bg-3)}
.drop .bar{position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--fg-4)}
.drop .bar.c-crit{background:var(--crit)}
.drop .bar.c-high{background:var(--high)}
.drop-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;font-family:var(--mono);font-size:10px;font-weight:600}
.drop-label{letter-spacing:.04em}
.drop-tag{font-size:9px;letter-spacing:.1em;border:1px solid currentColor;padding:0 5px;line-height:1.5;border-radius:2px}
.drop-tag.f-kev{color:var(--kev);background:var(--kev-bg)}
.drop-tag.f-zero{color:var(--zero);background:var(--zero-bg)}
.drop-tag.f-poc{color:var(--poc);background:var(--poc-bg)}
.drop-tag.f-itw{color:var(--kev);background:var(--kev-bg)}
.drop-tag.f-muted{color:var(--fg-3);border-color:var(--line-2)}
.drop-title{font-family:var(--mono);font-size:11px;color:var(--fg-2);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* tier 1 — 2-col equal-width */
.tier1{flex:1 1 55%;display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line);min-height:0}

/* tier 2 — 5-col split */
.tier2{flex:1 1 45%;display:grid;grid-template-columns:1fr 1fr 1.3fr 1fr 1fr;min-height:0}

/* zone box */
.zone{display:flex;flex-direction:column;border-right:1px solid var(--line);min-height:0;max-height:100%;overflow:hidden}
.zone:last-child{border-right:none}
.zone-head{padding:6px 10px;border-bottom:1px solid var(--line);background:var(--bg-1);display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;flex:0 0 auto}
.zone-head .l{font-weight:600}
.zone-head .r{color:var(--fg-4);letter-spacing:.06em}
.zone-body{flex:1 1 0;min-height:0;overflow:hidden;position:relative}

/* row */
.row{display:block;padding:4px 10px;border-bottom:1px dashed var(--line);cursor:pointer}
.row:last-child{border-bottom:none}
.row:hover{background:var(--bg-2)}
.row-grid{display:grid;grid-template-columns:42px 56px 1fr;gap:8px;align-items:start}
.row-ts{color:var(--fg-4);font-size:10px;line-height:1.4;white-space:nowrap}
.row-kind{font-size:10px;letter-spacing:.08em;line-height:1.4;font-weight:500;white-space:nowrap}
.kind-lab,.row-kind.kind-lab{color:var(--lab)}
.kind-exp,.row-kind.kind-exp{color:var(--poc)}
.kind-mal,.row-kind.kind-mal{color:var(--malw)}
.kind-tec,.row-kind.kind-tec{color:var(--zero)}
.kind-ran,.row-kind.kind-ran{color:var(--kev)}
.row-main{min-width:0;overflow:hidden}
.row-title-line{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;overflow:hidden}
.row-title{color:var(--fg);font-size:12px;line-height:1.3;font-weight:500;flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.row-sum{color:var(--fg-2);font-size:10.5px;line-height:1.35;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-meta{color:var(--fg-3);font-size:10px;display:flex;flex-wrap:nowrap;gap:5px;margin-top:1px;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-meta .sep{color:var(--fg-4)}
.row-source{color:var(--fg-3);white-space:nowrap}
.row-tag{color:var(--fg-4);white-space:nowrap}

/* tier 2 — compact rows (narrower columns) */
.tier2 .row{padding:3px 8px}
.tier2 .row-grid{grid-template-columns:36px 46px 1fr;gap:6px}
.tier2 .row-ts{font-size:9px}
.tier2 .row-kind{font-size:9px}
.tier2 .row-title{font-size:11px}
.tier2 .row-sum{display:none}
.tier2 .row-meta{display:none}

/* badges */
.badge{display:inline-flex;align-items:center;padding:0 4px;font-size:9px;letter-spacing:.08em;line-height:1.4;border:1px solid currentColor;border-radius:2px;font-weight:600;text-transform:uppercase;flex:0 0 auto}
.badge.f-kev{color:var(--kev);background:var(--kev-bg)}
.badge.f-zero{color:var(--zero);background:var(--zero-bg)}
.badge.f-poc{color:var(--poc);background:var(--poc-bg)}
.badge.f-itw{color:var(--kev);background:var(--kev-bg)}
.badge.sev-crit{color:var(--crit);background:var(--crit-bg)}
.badge.sev-high{color:var(--high);background:var(--high-bg)}
.badge.sev-med{color:var(--fg-2);background:transparent;border-color:var(--line-2)}
.badge.sev-low{color:var(--fg-3);background:transparent;border-color:var(--line-2)}

/* trends zone */
.trends-body{padding:6px 10px;display:flex;flex-direction:column;gap:8px;overflow:hidden}
.trend-group{display:flex;flex-direction:column;gap:2px}
.trend-head{color:var(--fg-4);font-size:9px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:2px}
.trend-row{display:flex;justify-content:space-between;padding:2px 0;border-bottom:1px dashed var(--line);font-size:11px}
.trend-row:last-child{border-bottom:none}
.trend-name{color:var(--fg-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:75%}
.trend-count{color:var(--high);font-weight:600}

/* pulse+watchlist zone */
.pulse-body{padding:8px 10px;display:flex;flex-direction:column;gap:6px;overflow:hidden}
.pulse-chart{font-family:var(--mono);font-size:20px;letter-spacing:1px;line-height:1;display:flex;align-items:flex-end;gap:1px;height:34px}
.pulse-bar{display:inline-block;width:6px;background:var(--poc);opacity:.85;min-height:2px}
.pulse-axis{display:flex;justify-content:space-between;font-size:9px;color:var(--fg-4);letter-spacing:.08em}
.watchlist{display:flex;flex-direction:column;gap:2px;margin-top:4px;overflow:hidden}
.watch-row{display:flex;justify-content:space-between;padding:2px 0;border-bottom:1px dashed var(--line);font-size:11px}
.watch-row:last-child{border-bottom:none}
.watch-tag{font-weight:500}
.watch-count{color:var(--fg-3)}

/* status bar */
.status{border-top:1px solid var(--line);background:var(--bg-1);padding:3px 14px;display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--fg-3);letter-spacing:.08em;gap:12px;flex:0 0 auto}

/* responsive */
@media (max-width: 1439px){
  .drops{grid-template-columns:repeat(4,1fr)}
  .tier2{grid-template-columns:repeat(4,1fr)}
  .zone-news{display:none}
}
@media (max-width: 1023px){
  .tier1{grid-template-columns:1fr;grid-template-rows:1fr 1fr}
  .tier2{grid-template-columns:repeat(3,1fr)}
  .zone-trends{display:none}
}
@media (max-width: 767px){
  html,body{overflow:auto}
  .app{height:auto}
  .tier1,.tier2{grid-template-columns:1fr;display:block}
  .zone{border-right:none;border-bottom:1px solid var(--line);min-height:200px}
  .zone-news,.zone-trends{display:flex}
  .drops{grid-template-columns:repeat(2,1fr)}
}
