/* =========================================================
   RIVET — Fleet typography (krok 1.6c)
   Shell layout + shared components on --rv-* tokens.
   Requires dashboard-tokens.css first.
   ========================================================= */

/* — Base — */
*{box-sizing:border-box;}
body{margin:0;background:var(--rv-bg-root);color:var(--rv-fg);font-family:var(--rv-font-mono);font-weight:var(--rv-font-weight);}
html{font-family:var(--rv-font-mono);font-weight:var(--rv-font-weight);}
/* FONT LOCK (1.6d) — UA defaults on button/input use system UI; force IBM Plex Mono */
button,
input,
select,
textarea,
optgroup{
  font:inherit;
  font-family:var(--rv-font-mono) !important;
  font-weight:400;
}
.rv-dash-root button,
.rv-dash-root input[type="checkbox"],
.rv-auth-btn,
.rv-btn-bulk,
.rv-btn-unblock,
.rv-btn-ghost,
.rv-btn-scan,
.rv-btn-reveal,
.rv-geo-pick-btn{
  font:inherit;
  font-family:var(--rv-font-mono) !important;
  font-weight:400 !important;
}
.rv-dash-root,
.rv-dash-root *:not(svg):not(svg *){
  font-family:var(--rv-font-mono);
}
.rv-dash-root button,
.rv-dash-root input,
.rv-dash-root select,
.rv-dash-root textarea,
.rv-dash-root optgroup{
  font-family:var(--rv-font-mono) !important;
  font-weight:400;
}
::-webkit-scrollbar{width:9px;height:9px;}
::-webkit-scrollbar-track{background:var(--rv-bg-panel);}
::-webkit-scrollbar-thumb{background:var(--rv-border-strong);border:2px solid var(--rv-bg-panel);}

@keyframes rvPulse{0%,100%{opacity:1}50%{opacity:.3}}
@keyframes rvRowIn{0%{opacity:0;background:var(--rv-color-ok-bg-flash)}100%{opacity:1;background:transparent}}
@keyframes rvBoot{0%{opacity:0;transform:translateY(6px)}100%{opacity:1;transform:none}}
@keyframes rvScan{0%{transform:translateY(-100%)}100%{transform:translateY(2400%)}}

/* — Dashboard shell — */
.rv-dash-root{
  display:flex;
  min-height:100vh;
  font-family:var(--rv-font-mono);
  color:var(--rv-fg);
  background:var(--rv-bg-root);
}
.rv-dash-root.rv-dash-root--lock{
  height:100vh;
  overflow:hidden;
}

.rv-sidebar{
  width:240px;
  flex:none;
  border-right:1px solid var(--rv-border);
  background:var(--rv-bg-sidebar);
  display:flex;
  flex-direction:column;
  font-family:var(--rv-font-mono);
  height:100vh;
  position:sticky;
  top:0;
}

.rv-main{
  flex:1;
  min-width:0;
  position:relative;
  display:flex;
  flex-direction:column;
}
.rv-main--full{height:100vh;}
.rv-scanlines{
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:30;
  background:repeating-linear-gradient(0deg, rgba(0,0,0,.16) 0px, rgba(0,0,0,.16) 1px, transparent 1px, transparent 3px);
}

/* — Sidebar host card — */
.rv-host-card{
  margin:var(--rv-space-sm) var(--rv-space-sm) 4px;
  padding:10px var(--rv-space-sm);
  border:1px solid var(--rv-border);
  display:flex;
  align-items:center;
  gap:10px;
}
.rv-host-dot{
  width:7px;
  height:7px;
  flex:none;
  border-radius:50%;
  background:var(--rv-color-ok);
  box-shadow:0 0 7px var(--rv-color-ok);
  animation:rvPulse 2s infinite;
}
.rv-host-name{
  font-size:var(--rv-text-base);
  color:var(--rv-fg-bright);
  font-weight: 400;
  letter-spacing:.06em;
}
.rv-host-status{
  font-size:var(--rv-text-sm);
  color:var(--rv-fg-dim);
}

.rv-sidebar-nav{
  flex:1;
  overflow-y:auto;
  padding-bottom:var(--rv-space-xs);
}
.rv-sidebar-section{
  font-size:var(--rv-text-lg);
  font-weight: 400;
  letter-spacing:.16em;
  color:var(--rv-fg-bright);
  text-shadow:var(--rv-glow-ok-soft);
  padding:14px 18px 6px;
}

/* — Nav links —
   Active green bar is ONLY on .rv-nav-link--active (::before).
   Hover/focus may tint background — never move/paint the left bar. */
.rv-nav-link{
  position:relative;
  display:flex;
  align-items:center;
  gap:11px;
  padding:var(--rv-space-xs) 18px;
  font-family:var(--rv-font-mono);
  font-size:var(--rv-text-sm);
  font-weight: 400;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--rv-fg-muted);
  text-decoration:none;
  border-left:2px solid transparent;
  background:transparent;
}
.rv-nav-link::before{
  content:none;
}
.rv-nav-link--active{
  color:var(--rv-color-ok);
  background:var(--rv-color-ok-bg-nav);
  border-left-color:transparent;
  text-shadow:var(--rv-text-shadow-nav-active);
}
.rv-nav-link--active::before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:2px;
  background:var(--rv-color-ok);
  pointer-events:none;
  z-index:1;
}
.rv-nav-link:hover,
.rv-nav-link:focus,
.rv-nav-link:focus-visible{
  background:var(--rv-color-ok-bg-hover);
  border-left-color:transparent;
  outline:none;
}
.rv-nav-link--active:hover,
.rv-nav-link--active:focus,
.rv-nav-link--active:focus-visible{
  background:var(--rv-color-ok-bg-nav);
  border-left-color:transparent;
  color:var(--rv-color-ok);
}
.rv-nav-badge{
  font-size:var(--rv-text-xs);
  letter-spacing:.1em;
  color:var(--rv-color-ok);
}
.rv-nav-count{
  font-size:var(--rv-text-base);
  color:var(--rv-fg-dim);
}
.rv-nav-pro{
  font-size:var(--rv-text-xs);
  border:1px solid var(--rv-border-pro);
  color:var(--rv-fg-dim);
  padding:1px 5px;
  letter-spacing:.08em;
}

/* — Page header — */
.rv-page-hdr{
  display:flex;
  align-items:center;
  gap:14px;
  padding:15px var(--rv-space-lg);
  background:var(--rv-bg-sidebar);
  border-bottom:1px solid var(--rv-border);
  flex:none;
}
.rv-page-title{
  font-size:var(--rv-type-display);
  font-weight: 400;
  letter-spacing:.16em;
  color:var(--rv-fg-bright);
  text-shadow:var(--rv-text-shadow-title);
}
.rv-live-badge{
  font-size:var(--rv-text-base);
  color:var(--rv-color-ok);
  border:1px solid var(--rv-border-strong);
  padding:2px 7px;
  letter-spacing:.1em;
  display:flex;
  align-items:center;
  gap:6px;
}
.rv-live-dot{
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--rv-color-ok);
  box-shadow:0 0 6px var(--rv-color-ok);
  animation:rvPulse 1.6s infinite;
}

/* — Section labels (cards) — */
.rv-section-label{
  font-size:var(--rv-text-sm);
  color:var(--rv-fg-dim);
  letter-spacing:.14em;
}
.rv-section-meta{
  font-size:var(--rv-text-sm);
  color:var(--rv-fg-muted);
}
.rv-section-meta-dim{
  font-size:var(--rv-text-sm);
  color:var(--rv-fg-dim);
}

.rv-nav-link-label{
  flex:1;
  font-family:var(--rv-font-mono);
  font-size:inherit;
  letter-spacing:inherit;
  text-transform:inherit;
  color:inherit;
}
.rv-nav-arrow{color:var(--rv-fg-dim);font-size:var(--rv-text-base);}

/* — Table data rows (JS-rendered) — */
.rv-table-data-row{
  display:grid;
  gap:10px;
  padding:9px 16px;
  border-bottom:1px solid var(--rv-border-row);
  align-items:start;
  font-size:var(--rv-text-base);
  color:var(--rv-fg);
}
.rv-table-data-row--blocks{grid-template-columns:28px 120px 72px minmax(160px,1.2fr) 104px 72px 84px 72px;}
.rv-table-data-row--alerts{
  grid-template-columns:28px 120px 92px 140px 130px minmax(180px,1.4fr) 80px 72px;
  align-items:center;
}
.rv-table-data-row--blocks > .rv-cell-action,
.rv-table-data-row--alerts > .rv-cell-action{justify-self:end;}
.rv-cell-date{color:var(--rv-fg-dim);}
.rv-cell-muted{color:var(--rv-fg-muted);}
.rv-cell-truncate{
  color:var(--rv-color-white);
  font-weight:400;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.rv-cell-value{color:var(--rv-color-white);font-weight:400;}
.rv-cell-status{font-weight:400;text-align:right;font-size:var(--rv-text-base);}
.rv-cell-method{
  font-weight:400;
  text-align:center;
  justify-self:center;
  font-size:var(--rv-text-base);
  text-transform:uppercase;
}
.rv-cell-action{text-align:right;}
.rv-sev-badge{
  font-weight: 400;
  border:1px solid;
  padding:2px 6px;
  text-align:center;
  justify-self:center;
  font-size:var(--rv-text-xs);
  font-family:var(--rv-font-mono);
}
.rv-sev-badge--critical{color:var(--rv-color-block);border-color:rgba(255,59,48,.33);}
.rv-sev-badge--high{color:var(--rv-color-alert-high);border-color:rgba(255,153,51,.33);}
.rv-sev-badge--medium{color:var(--rv-color-warn);border-color:rgba(255,204,0,.33);}
.rv-sev-badge--low{color:var(--rv-fg-muted);border-color:rgba(127,191,147,.33);}
.rv-check-mark{color:var(--rv-color-ok);line-height:1;}
.rv-check-mark--xs{font-size:var(--rv-text-xs);}
.rv-kpi-meta{color:var(--rv-fg-dim);font-size:var(--rv-text-sm);}
.rv-kpi-sub--tight{margin-top:7px;}
.rv-metric-bar-track{height:4px;background:var(--rv-border);margin-top:9px;}
.rv-metric-bar-fill{height:4px;width:0%;transition:width .8s ease;}
.rv-metric-bar-fill--bright{background:var(--rv-fg-bright);box-shadow:0 0 6px rgba(57,255,110,.6);}
.rv-metric-bar-fill--ok{background:var(--rv-color-ok);box-shadow:0 0 6px rgba(57,255,110,.6);}
.rv-state-empty--load{padding:24px 16px;text-align:center;font-size:var(--rv-text-base);}
.rv-state-empty--feed{padding:28px 16px;text-align:center;font-size:var(--rv-text-base);}
.rv-state-empty--chart{flex:1;align-self:center;text-align:center;font-size:var(--rv-text-sm);}
.rv-state-error--tail{padding:18px 16px;font-size:var(--rv-text-base);}
.rv-score-display{
  font-weight: 400;
  color:var(--rv-fg-value);
  line-height:1;
  font-size:var(--rv-text-score);
}
.rv-pro-kicker{
  color:var(--rv-color-warn);
  letter-spacing:.16em;
  font-weight: 400;
  font-size:var(--rv-text-base);
}
.rv-pro-hero{
  font-weight: 400;
  letter-spacing:.08em;
  color:var(--rv-fg-bright);
  text-shadow:0 0 8px rgba(57,255,110,.25);
  font-size:var(--rv-text-hero);
}
.rv-pro-prose{color:var(--rv-fg-prose);line-height:1.7;margin-top:9px;font-size:var(--rv-text-md);}
.rv-pro-gate-body .rv-pro-prose,
.rv-pro-gate-body .rv-pro-prose.rv-t-ui{color:var(--rv-color-white);}
.rv-pro-bullet{display:flex;align-items:baseline;gap:9px;color:var(--rv-fg-prose-light);font-size:var(--rv-text-detail);}
.rv-pro-gate-body .rv-pro-bullet,
.rv-pro-gate-body .rv-pro-bullet span{color:var(--rv-color-white);}
.rv-page-meta-dim{color:var(--rv-fg-dim);font-size:var(--rv-text-base);}
.rv-page-badge-pro{
  color:var(--rv-color-warn);
  border:1px solid #34330f;
  padding:2px 7px;
  letter-spacing:.1em;
  font-size:var(--rv-text-sm);
}
.rv-section-title{color:var(--rv-fg-dim);letter-spacing:.14em;margin-top:4px;font-size:var(--rv-text-sm);}
.rv-content-pad{padding:18px 22px 40px;display:flex;flex-direction:column;gap:14px;}
.rv-kpi-tile{border:1px solid var(--rv-border);background:var(--rv-bg-panel);padding:14px 16px;}
.rv-kpi-tile--sm{padding:13px 16px;}
.rv-kpi-tile--attack{border:1px solid var(--rv-border-kpi-critical);background:var(--rv-bg-kpi-critical);}
.rv-kpi-tile--critical{border:1px solid var(--rv-border-kpi-critical);background:var(--rv-bg-kpi-critical);}
.rv-kpi-tile--high{border:1px solid var(--rv-border-kpi-high);background:var(--rv-bg-kpi-high);}
.rv-kpi-tile--medium{border:1px solid var(--rv-border-kpi-medium);background:var(--rv-bg-kpi-medium);}
.rv-kpi-grid-5{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;}
.rv-kpi-tile-row{display:flex;align-items:center;gap:14px;}
.rv-kpi-icon-dim{color:var(--rv-fg-dim);font-size:var(--rv-text-3xl);}
.rv-kpi-icon-ok{color:var(--rv-color-green-dim);font-size:var(--rv-text-3xl);}
.rv-kpi-icon-attack{color:var(--rv-color-block);animation:rvPulse 2.4s infinite;font-size:var(--rv-text-3xl);}
.rv-kpi-row-head{display:flex;justify-content:space-between;align-items:baseline;}
.rv-grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
.rv-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}

.rv-filter-chip{
  border:1px solid var(--rv-border-strong);
  background:transparent;
  color:var(--rv-fg-dim);
  padding:6px 12px;
  cursor:pointer;
  letter-spacing:.06em;
  font-size:var(--rv-text-sm);
  font-family:var(--rv-font-mono);
  line-height:1.2;
  box-sizing:border-box;
  white-space:nowrap;
  user-select:none;
}
.rv-filter-label{
  color:var(--rv-fg-dim);
  letter-spacing:.12em;
  font-size:var(--rv-text-sm);
}
.rv-card-toolbar{
  display:flex;
  align-items:center;
  gap:10px;
  padding:11px 16px;
  border-bottom:1px solid var(--rv-border-card);
}
.rv-card-toolbar-dot{
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--rv-color-ok);
  box-shadow:0 0 6px var(--rv-color-ok);
  animation:rvPulse 1.4s infinite;
}
.rv-chart-axis{
  display:flex;
  justify-content:space-between;
  color:var(--rv-fg-dim);
  margin-top:7px;
  font-size:var(--rv-text-xs);
}
.rv-chart-area{
  display:flex;
  align-items:flex-end;
  gap:3px;
  height:96px;
  margin-top:14px;
  min-height:96px;
}
.rv-surfaces-list{
  display:flex;
  flex-direction:column;
  gap:12px;
  margin-top:15px;
}
.rv-settings-row{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:8px 0;
  border-bottom:1px solid var(--rv-border-row);
  font-size:var(--rv-text-base);
  font-weight:400;
  color:var(--rv-color-white);
}
.rv-settings-label{
  color:var(--rv-fg-dim);
  font-weight:400;
  font-size:var(--rv-text-base);
}
.rv-settings-channel-icon{
  width:16px;
  height:16px;
  flex:none;
  border:1px solid var(--rv-border-pro);
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:400;
  font-size:var(--rv-text-sm);
}
.rv-settings-channel-label{
  font-size:var(--rv-text-base);
  font-weight:400;
  color:var(--rv-color-white);
}
.rv-settings-channel-detail{
  font-size:var(--rv-text-base);
  font-weight:400;
  color:var(--rv-fg-dim);
}
.rv-tier-badge{
  color:var(--rv-fg-muted);
  border:1px solid var(--rv-border-pro);
  padding:2px 7px;
  letter-spacing:.08em;
  font-size:var(--rv-text-xs);
}
.rv-btn-block{
  border:1px solid var(--rv-color-ok);
  background:transparent;
  color:var(--rv-color-ok);
  font-family:var(--rv-font-mono);
  padding:3px 8px;
  cursor:pointer;
  font-size:var(--rv-text-xs);
}
.rv-btn-unblock{
  border:1px solid var(--rv-color-block);
  background:transparent;
  color:var(--rv-color-block);
  font-family:var(--rv-font-mono);
  font-weight:400;
  padding:4px 10px;
  cursor:pointer;
  font-size:var(--rv-text-xs);
}
.rv-btn-unblock:hover{
  background:rgba(255,85,68,.06);
}
.rv-btn-reblock{
  border:1px solid var(--rv-border-pro);
  background:transparent;
  color:var(--rv-color-ok);
  font-family:var(--rv-font-mono);
  font-weight:400;
  padding:4px 10px;
  cursor:pointer;
  font-size:var(--rv-text-xs);
}
.rv-btn-ghost{
  border:1px solid var(--rv-border-strong);
  background:transparent;
  color:var(--rv-fg-dim);
  font-family:var(--rv-font-mono);
  padding:6px 10px;
  cursor:pointer;
  font-size:var(--rv-text-sm);
}
.rv-btn-scan{
  border:1px solid var(--rv-color-ok);
  background:var(--rv-color-ok-bg);
  color:var(--rv-color-ok);
  font-weight: 400;
  padding:7px 13px;
  cursor:pointer;
  letter-spacing:.08em;
  font-size:var(--rv-text-sm);
  transition:all .18s;
}
.rv-bulk-bar{
  display:none;
  border:1px solid var(--rv-border-strong);
  background:var(--rv-bg-sidebar);
  padding:8px 14px;
  gap:10px;
  align-items:center;
  flex-wrap:wrap;
  color:var(--rv-fg-muted);
  font-size:var(--rv-text-sm);
}
.rv-live-badge--track{font-size:var(--rv-text-base);}
.rv-globe-overlay-label{
  position:absolute;
  top:14px;
  left:16px;
  z-index:3;
  color:var(--rv-fg-dim);
  letter-spacing:.14em;
  font-size:var(--rv-text-sm);
}
.rv-globe-legend{
  position:absolute;
  top:14px;
  right:16px;
  z-index:3;
  display:flex;
  align-items:center;
  gap:12px;
  font-size:var(--rv-text-xs);
}
.rv-globe-legend-item{display:flex;align-items:center;gap:5px;}
.rv-globe-legend-item--node{color:var(--rv-fg-muted);}
.rv-globe-legend-item--block{color:var(--rv-color-attack-muted);}
.rv-globe-legend-item--inbound{color:var(--rv-color-warn-dot);}
.rv-globe-hint{
  position:absolute;
  bottom:14px;
  right:16px;
  z-index:3;
  color:var(--rv-fg-dim);
  font-size:var(--rv-text-sm);
}
.rv-globe-status{
  position:absolute;
  bottom:14px;
  left:16px;
  z-index:3;
  color:var(--rv-fg-dim);
  font-size:var(--rv-text-sm);
}
.rv-search-prefix{color:var(--rv-fg-dim);padding-left:11px;font-size:var(--rv-text-md);}
.rv-search-input{
  flex:1;
  background:transparent;
  border:0;
  outline:0;
  color:var(--rv-fg-input);
  font-family:var(--rv-font-mono);
  padding:8px 11px;
  font-size:var(--rv-text-md);
}
.rv-toolbar-chip{
  border:1px solid var(--rv-border-strong);
  color:var(--rv-fg-dim);
  background:transparent;
  padding:6px 12px;
  cursor:pointer;
  letter-spacing:.06em;
  font-size:var(--rv-text-sm);
  font-family:var(--rv-font-mono);
  line-height:1.2;
  box-sizing:border-box;
  white-space:nowrap;
  user-select:none;
}
.rv-toolbar-chip--scroll{display:flex;align-items:center;gap:7px;}
.rv-toolbar-chip.rv-chip-group-on{
  border-color:var(--rv-color-ok) !important;
  background:var(--rv-color-ok-bg) !important;
  color:var(--rv-color-ok) !important;
}
.rv-toolbar-chip[data-rivet="logs-group-by"]:not(.rv-chip-group-on){
  border-color:var(--rv-color-block) !important;
  color:var(--rv-color-block) !important;
}
.rv-toolbar-chip--clear{
  border-color:var(--rv-color-ok) !important;
  color:var(--rv-color-ok) !important;
}
.rv-toolbar-chip.rv-toolbar-chip--scroll-on{
  border-color:var(--rv-color-ok) !important;
  color:var(--rv-color-ok) !important;
}
.rv-toolbar-chip.rv-toolbar-chip--scroll-on .rv-status-dot{
  background:var(--rv-color-ok);
  box-shadow:0 0 6px var(--rv-color-ok);
}
.rv-toolbar-chip--scroll:not(.rv-toolbar-chip--scroll-on){
  border-color:var(--rv-color-block) !important;
  color:var(--rv-color-block) !important;
}
.rv-toolbar-chip--scroll:not(.rv-toolbar-chip--scroll-on) .rv-status-dot{
  background:var(--rv-color-block);
  box-shadow:0 0 6px var(--rv-color-block);
  opacity:1;
}
.rv-logs-footer{
  padding:10px 22px;
  color:var(--rv-color-placeholder);
  display:flex;
  align-items:center;
  gap:8px;
  flex:none;
  border-top:1px solid var(--rv-border);
  background:var(--rv-bg-inset);
  font-size:var(--rv-text-sm);
}
.rv-geo-badge{
  color:var(--rv-color-block);
  border:1px solid var(--rv-color-block);
  background:rgba(255,85,68,.06);
  padding:1px 4px;
  margin-left:4px;
  font-size:var(--rv-text-2xs);
}
.rv-license-active{
  color:var(--rv-color-ok);
  display:flex;
  align-items:center;
  gap:6px;
  font-size:var(--rv-text-base);
  font-family:var(--rv-font-mono);
}
.rv-license-missing{
  color:var(--rv-color-block-muted);
  display:flex;
  align-items:center;
  gap:6px;
  font-size:var(--rv-text-base);
  font-family:var(--rv-font-mono);
}
.rv-status-dot{
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--rv-color-ok);
  box-shadow:0 0 6px var(--rv-color-ok);
  flex:none;
}
.rv-status-dot--muted{
  background:var(--rv-color-block-muted);
  box-shadow:none;
}
.rv-status-dot--pulse{animation:rvPulse 1.6s infinite;}
.rv-legend-dot{
  width:7px;
  height:7px;
  border-radius:50%;
  flex:none;
}
.rv-legend-dot--ok{background:var(--rv-color-ok);box-shadow:0 0 6px var(--rv-color-ok);}
.rv-legend-dot--block{background:var(--rv-color-block);box-shadow:0 0 6px var(--rv-color-block);}
.rv-legend-dot--warn{background:var(--rv-color-warn);box-shadow:0 0 6px var(--rv-color-warn);}
.rv-btn-reveal{
  color:var(--rv-color-info);
  border:1px solid #16303f;
  padding:1px 6px;
  cursor:pointer;
  background:transparent;
  font-family:var(--rv-font-mono);
  font-size:var(--rv-text-xs);
}
.rv-env-cmd{
  background:var(--rv-bg-inset);
  border:1px solid #16303f;
  padding:11px 13px;
  color:var(--rv-color-info);
  display:flex;
  align-items:center;
  gap:9px;
  font-size:var(--rv-text-base);
}
.rv-env-prompt{color:var(--rv-color-ok);}
.rv-env-row{padding:5px 0;color:var(--rv-fg-prose);font-size:var(--rv-text-base);}
.rv-env-key{color:var(--rv-fg-env-key);}
.rv-pagination{
  display:none;
  align-items:center;
  gap:12px;
  padding:12px 16px;
  color:var(--rv-fg-dim);
  font-size:var(--rv-text-sm);
}
.rv-page-btn{
  border:1px solid var(--rv-border-strong);
  color:var(--rv-fg-muted);
  padding:5px 11px;
  cursor:pointer;
  letter-spacing:.06em;
  font-size:var(--rv-text-sm);
}
.rv-enabled-tag{
  color:var(--rv-color-ok);
  letter-spacing:.06em;
  font-size:var(--rv-text-xs);
}
.rv-heatmap-legend{
  position:absolute;
  top:12px;
  right:14px;
  z-index:3;
  display:flex;
  align-items:center;
  gap:8px;
  color:var(--rv-fg-dim);
  font-size:var(--rv-text-xs);
  font-weight:400;
}
.rv-score-denom{
  color:var(--rv-fg-dim);
  letter-spacing:.16em;
  margin-top:4px;
  font-size:var(--rv-text-sm);
}
.rv-score-label{
  font-weight:400;
  letter-spacing:.1em;
  color:var(--rv-fg-dim);
  margin-top:14px;
  font-size:var(--rv-text-md);
}
.rv-panel-pad{padding:16px 0 4px;}
.rv-feed-detail-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:12px;
  color:var(--rv-fg-dim);
  font-size:var(--rv-text-base);
}
.rv-heatmap-label{top:12px;left:14px;}
.rv-heatmap-origins{flex:1;overflow-y:auto;}
.rv-geo-error-banner{
  display:none;
  padding:10px 14px;
  color:var(--rv-color-block-muted);
  border-bottom:1px solid #3a1814;
  background:rgba(255,85,68,.06);
  font-size:var(--rv-text-base);
  font-weight:400;
}
.rv-geo-table-hdr{
  display:grid;
  grid-template-columns:42px 1fr 60px 56px;
  gap:8px;
  padding:8px 14px;
  border-bottom:1px solid var(--rv-border-card);
  font-size:var(--rv-text-sm);
  font-weight: 400;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--rv-color-ok);
  text-shadow:var(--rv-text-shadow-nav-active);
}
.rv-geo-table-hdr > :nth-child(3),
.rv-geo-table-hdr > :nth-child(4){
  text-align:right;
}
/* GEO country rows — same data contract as .rv-table-data-row */
.rv-geo-data-row{
  display:grid;
  grid-template-columns:42px 1fr 60px 56px;
  gap:8px;
  padding:9px 14px;
  border-bottom:1px solid var(--rv-border-row);
  align-items:center;
  font-size:var(--rv-text-base);
  font-weight:400;
  color:var(--rv-color-white);
}
.rv-geo-data-row--selected{
  background:rgba(57,255,110,.07);
  box-shadow:inset 2px 0 0 var(--rv-color-ok);
}
.rv-geo-data-row .rv-cell-name,
.rv-geo-data-row .rv-cell-traffic,
.rv-geo-data-row .rv-geo-iso{
  color:var(--rv-color-white);
  font-weight:400;
  font-size:var(--rv-text-base);
}
.rv-geo-iso{
  padding:2px 4px;
  flex:none;
  width:26px;
  text-align:center;
  letter-spacing:.04em;
  font-variant-numeric:var(--rv-tabular);
  text-transform:uppercase;
}
.rv-geo-iso--blocked{
  border:1px solid var(--rv-color-geo-badge-border);
  color:var(--rv-color-block-muted);
  background:var(--rv-bg-kpi-critical);
}
.rv-geo-iso--allowed{
  border:1px solid var(--rv-border-pro);
  color:var(--rv-fg-muted);
  background:var(--rv-bg-sidebar);
}
.rv-geo-status{
  font-weight:400;
  text-align:right;
  font-size:var(--rv-text-base);
  text-transform:uppercase;
}
.rv-geo-country-focus{
  display:flex;
  align-items:center;
  gap:9px;
  min-width:0;
  cursor:pointer;
}
.rv-geo-pick-btn{
  display:block;
  width:100%;
  text-align:left;
  background:transparent;
  border:0;
  border-bottom:1px solid var(--rv-border-card);
  color:var(--rv-fg);
  font-family:var(--rv-font-mono);
  padding:9px 12px;
  cursor:pointer;
  font-size:var(--rv-text-base);
}
.rv-geo-pick-iso{
  font-weight:400;
  color:var(--rv-fg-muted);
  margin-right:8px;
}
.rv-heatmap-rank{
  font-weight:400;
  border:1px solid #5a2420;
  color:var(--rv-color-block-muted);
  background:#1a0c0a;
  padding:1px 4px;
  width:24px;
  text-align:center;
  font-size:var(--rv-text-xs);
}
.rv-rank-row{
  display:grid;
  grid-template-columns:26px 30px 1fr 70px;
  gap:10px;
  padding:10px 16px;
  border-bottom:1px solid var(--rv-border-row);
  align-items:center;
  font-size:var(--rv-text-base);
  font-weight:400;
  color:var(--rv-color-white);
}
.rv-rank-row .rv-data-value,
.rv-rank-row .rv-cell-value,
.rv-rank-row .rv-cell-pct{
  font-weight:400;
  color:var(--rv-color-white);
}
.rv-rank-row .rv-cell-pct{color:var(--rv-fg-muted);}
.rv-cell-pct{text-align:right;color:var(--rv-fg-muted);font-size:var(--rv-text-base);font-weight:400;}
.rv-cell-name{color:var(--rv-color-white);font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rv-cell-traffic{color:var(--rv-color-white);font-weight:400;text-align:right;font-size:var(--rv-text-base);}
.rv-geo-search-wrap{
  padding:10px 14px;
  border-bottom:1px solid var(--rv-border-card);
  position:relative;
}
.rv-geo-search-box{
  display:flex;
  align-items:center;
  border:1px solid var(--rv-border-strong);
  background:var(--rv-bg-inset);
}
.rv-geo-search-results{
  display:none;
  position:absolute;
  left:14px;
  right:14px;
  top:calc(100% - 4px);
  z-index:5;
  border:1px solid var(--rv-border-strong);
  background:var(--rv-bg-panel);
  max-height:180px;
  overflow-y:auto;
}
.rv-geo-search-input{
  width:100%;
  box-sizing:border-box;
  flex:1;
  background:transparent !important;
  background-color:transparent !important;
  border:0;
  color:var(--rv-fg-input);
  font-family:var(--rv-font-mono);
  padding:8px 11px;
  letter-spacing:.04em;
  text-transform:none;
  outline:none;
  font-size:var(--rv-text-md);
  -webkit-appearance:none;
  appearance:none;
  box-shadow:none !important;
  color-scheme:dark;
}
.rv-geo-search-input::placeholder{color:var(--rv-color-placeholder);}
.rv-geo-search-input:-webkit-autofill,
.rv-geo-search-input:-webkit-autofill:hover,
.rv-geo-search-input:-webkit-autofill:focus,
.rv-geo-search-input:-webkit-autofill:active{
  -webkit-text-fill-color:var(--rv-fg-input) !important;
  -webkit-box-shadow:0 0 0 1000px var(--rv-bg-inset) inset !important;
  box-shadow:0 0 0 1000px var(--rv-bg-inset) inset !important;
  background-color:transparent !important;
  transition:background-color 99999s ease-out 0s;
  caret-color:var(--rv-fg-input);
}
.rv-btn-bulk{
  display:none;
  border:1px solid var(--rv-color-ok);
  background:rgba(57,255,110,.12);
  color:var(--rv-color-ok);
  font-family:var(--rv-font-mono);
  padding:6px 12px;
  cursor:pointer;
  letter-spacing:.06em;
  font-size:var(--rv-text-sm);
}
.rv-footer-meta{
  padding:11px 16px;
  color:var(--rv-fg-dim);
  font-size:var(--rv-text-sm);
}

/* — Metric tiles / KPI standard (1.6e — cały dashboard) — */
.rv-kpi-value{
  font-size:var(--rv-text-stat);
  font-weight: 400;
  margin-top:5px;
  color:var(--rv-fg-value);
  font-variant-numeric:var(--rv-tabular);
}
.rv-grid-4.rv-grid-4--metric .rv-kpi-value,
.rv-grid-4.rv-grid-4--metric .rv-metric-value{
  font-size:var(--rv-text-2xl);
  color:var(--rv-fg-bright);
  letter-spacing:.02em;
}
.rv-grid-3.rv-grid-3--metric .rv-kpi-value,
.rv-grid-3.rv-grid-3--metric .rv-metric-value{
  font-size:var(--rv-text-xl);
  margin-top:3px;
}
.rv-kpi-value--sm{
  font-size:var(--rv-text-stat-sm);
  margin-top:6px;
}
.rv-kpi-value--ok{color:var(--rv-color-ok);text-shadow:var(--rv-glow-ok);}
.rv-kpi-value--block{color:var(--rv-color-block);text-shadow:0 0 8px rgba(255,59,48,.4);}
.rv-kpi-value--high{color:var(--rv-color-alert-high);}
.rv-kpi-value--warn{color:var(--rv-color-warn);}
.rv-kpi-value--low{color:var(--rv-color-alert-low);}
.rv-kpi-label{
  font-size:var(--rv-text-sm);
  font-weight: 400;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--rv-color-ok);
  text-shadow:var(--rv-text-shadow-nav-active);
}
.rv-kpi-label--attack{
  color:var(--rv-color-block);
  text-shadow:0 0 6px rgba(255,59,48,.45);
}
.rv-kpi-label--high{
  color:var(--rv-color-alert-high);
  text-shadow:none;
}
.rv-kpi-label--medium{color:var(--rv-color-warn);text-shadow:none;}
.rv-kpi-label--low{
  color:var(--rv-color-alert-low);
  text-shadow:none;
}
.rv-kpi-sub{
  font-size:var(--rv-text-sm);
  color:var(--rv-fg-dim);
  margin-top:5px;
}
.rv-kpi-sub--attack{color:var(--rv-color-block-muted);}
.rv-card-hdr-label{
  padding:12px 16px;
  border-bottom:1px solid var(--rv-border-card);
  font-size:var(--rv-text-sm);
  color:var(--rv-fg-dim);
  letter-spacing:.14em;
}
.rv-table-hdr{
  font-size:var(--rv-text-sm);
  font-weight: 400;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--rv-color-ok);
  text-shadow:var(--rv-text-shadow-nav-active);
  display:grid;
  gap:10px;
  padding:9px 16px;
  border-bottom:1px solid var(--rv-border-card);
  align-items:center;
}
.rv-table-hdr span{white-space:nowrap;}
.rv-table-hdr--blocks{grid-template-columns:28px 120px 72px minmax(160px,1.2fr) 104px 72px 84px 72px;}
.rv-table-hdr--alerts{grid-template-columns:28px 120px 92px 140px 130px minmax(180px,1.4fr) 80px 72px;}
.rv-table-hdr--blocks > :nth-child(3),
.rv-table-hdr--blocks > :nth-child(6),
.rv-table-hdr--blocks > :nth-child(7){
  text-align:center;
  justify-self:center;
}
.rv-table-hdr--alerts > :nth-child(3){
  text-align:center;
  justify-self:center;
}
.rv-table-hdr--blocks > :last-child,
.rv-table-hdr--alerts > :nth-last-child(-n+2){justify-self:end;text-align:right;}

.rv-table-desc{
  padding:10px 16px;
  border-bottom:1px solid var(--rv-border-row);
  color:var(--rv-fg-dim);
  font-size:var(--rv-text-md);
  letter-spacing:.08em;
}

.rv-table-legend{
  display:grid;
  gap:10px;
  padding:7px 16px 6px;
  color:var(--rv-fg-dim);
  font-size:var(--rv-text-xs);
  letter-spacing:.08em;
  border-bottom:1px solid var(--rv-border-row);
}
.rv-table-legend span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rv-table-legend--blocks{grid-template-columns:120px 72px minmax(160px,1.2fr) 104px 72px 84px 72px;}
.rv-table-legend--alerts{grid-template-columns:120px 92px 140px 130px minmax(180px,1.4fr) 80px 72px;}

.rv-table-data-row--blocks .rv-data-ip,
.rv-table-data-row--blocks .rv-cell-message,
.rv-table-data-row--blocks .rv-expand-field-text,
.rv-table-data-row--blocks .rv-field-text{
  color:var(--rv-color-white);
  font-size:var(--rv-text-base);
  font-weight:400;
}
.rv-table-data-row--blocks .rv-cell-datetime,
.rv-table-data-row--alerts .rv-cell-datetime,
.rv-table-data-row--blocks .rv-cell-country,
.rv-table-data-row--blocks .rv-cell-date,
.rv-table-data-row--blocks .rv-cell-method{
  color:var(--rv-color-white);
  font-size:var(--rv-text-base);
  font-weight:400;
}
.rv-table-data-row--blocks > .rv-cell-country{
  text-align:center;
  justify-self:center;
}
.rv-table-data-row--blocks > .rv-cell-date{
  color:var(--rv-fg-dim);
  text-align:center;
  justify-self:center;
  text-transform:uppercase;
}
.rv-table-data-row--alerts .rv-cell-date{
  color:var(--rv-fg-dim);
  font-size:var(--rv-text-base);
  font-weight:400;
}

.rv-table-data-row--alerts .rv-data-ip,
.rv-table-data-row--alerts .rv-cell-truncate,
.rv-table-data-row--alerts .rv-cell-message,
.rv-table-data-row--alerts .rv-expand-field-text,
.rv-table-data-row--alerts .rv-field-text{
  color:var(--rv-color-white) !important;
  font-size:var(--rv-text-base);
  font-weight:400;
}
.rv-table-data-row--alerts > .rv-cell-status{
  font-weight:400;
}

.rv-table-data-row .rv-expand-field-copy{
  color:var(--rv-color-white);
  font-weight:400;
}
.rv-table-row{
  font-size:var(--rv-text-base);
  border-bottom:1px solid var(--rv-border-row);
}
.rv-data-muted{color:var(--rv-fg-muted);}
.rv-data-dim{color:var(--rv-fg-dim);}
.rv-state-empty{
  padding:30px 22px;
  text-align:center;
  color:var(--rv-fg-dim);
  font-size:var(--rv-text-sm);
}
.rv-state-empty--pad-sm{padding:18px 16px;}
.rv-state-error{
  padding:18px 22px;
  color:var(--rv-color-block-muted);
  font-size:var(--rv-text-sm);
}
.rv-page-hdr-bar{
  position:sticky;
  top:0;
  z-index:20;
  display:flex;
  align-items:center;
  gap:14px;
  padding:15px 22px;
  background:var(--rv-bg-sidebar);
  border-bottom:1px solid var(--rv-border);
}
.rv-metric-value{
  font-size:var(--rv-text-2xl);
  font-weight: 400;
  color:var(--rv-fg-bright);
  margin-top:6px;
  letter-spacing:.02em;
  font-variant-numeric:var(--rv-tabular);
}
.rv-metric-value--md{
  font-size:var(--rv-text-xl);
  margin-top:3px;
}
.rv-metric-value--ok{
  color:var(--rv-color-ok);
  text-shadow:var(--rv-glow-ok);
}
.rv-metric-value--block{
  color:var(--rv-color-block);
}
.rv-metric-sub{
  font-size:var(--rv-text-sm);
  color:var(--rv-fg-dim);
  margin-top:7px;
}
.rv-metric-sub--tight{margin-top:5px;}
.rv-metric-label--attack{
  font-size:var(--rv-text-sm);
  color:var(--rv-color-attack-muted);
  letter-spacing:.14em;
}
.rv-metric-sub--attack{
  font-size:var(--rv-text-sm);
  color:var(--rv-color-attack-muted);
  margin-top:5px;
}

/* — Empty / loading states — */
.rv-state-dim{
  font-size:var(--rv-text-base);
  color:var(--rv-fg-dim);
}
.rv-state-dim--sm{font-size:var(--rv-text-sm);}
.rv-state-error{
  font-size:var(--rv-text-base);
  color:var(--rv-color-block-muted);
}
.rv-state-error--sm{font-size:var(--rv-text-sm);}

/* — Toolbar / chips row — */
.rv-toolbar{
  display:flex;
  align-items:center;
  gap:10px;
  padding:11px var(--rv-space-lg);
  background:var(--rv-bg-sidebar);
  border-bottom:1px solid var(--rv-border);
  flex:none;
  flex-wrap:wrap;
}
.rv-toolbar-link{
  font-size:var(--rv-text-sm);
  color:var(--rv-fg-muted);
  text-decoration:none;
  border:1px solid var(--rv-border-strong);
  padding:3px 9px;
}

/* — Cards — */
.rv-card{
  border:1px solid var(--rv-border);
  background:var(--rv-bg-panel);
}
.rv-card-hdr{
  border-bottom:1px solid var(--rv-border-card);
}

/* — Mobile topbar title — */
.rv-mobile-title{
  font-weight: 400;
  font-size:15px;
  letter-spacing:.14em;
  color:var(--rv-fg-bright);
}
.rv-mobile-title-sub{
  font-size:var(--rv-text-base);
  letter-spacing:.08em;
}

/* — Hover affordances (replaces per-page #rv-hover) —
   Match class tokens anywhere in class="" (not only attribute start).
   Sidebar nav hover is owned by .rv-nav-link / .rv-docs-nav-link (no left bar). */
[class^="rv-h-"]:not(.rv-nav-link):not(.rv-docs-nav-link):hover,
[class*=" rv-h-"]:not(.rv-nav-link):not(.rv-docs-nav-link):hover{background:var(--rv-color-ok-bg-hover);}
a.rv-h-12:hover,
.rv-h-12:hover{
  color:var(--rv-color-ok);
  border-color:var(--rv-color-ok);
  background:transparent;
}
.rv-h-logout:hover,
.rv-logout-btn.rv-h-11:hover,
.rv-logout-btn:hover{
  color:var(--rv-color-white);
  background:var(--rv-color-block);
  border-color:var(--rv-color-white);
  filter:brightness(1.08);
}
.rv-h-link:hover{
  color:var(--rv-color-ok);
  border-color:var(--rv-color-ok);
}
.rv-h-row:hover{background:var(--rv-bg-panel);}
.rv-h-chip:hover{background:var(--rv-bg-panel);}

/* — Auth pages — */
.rv-auth-body{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  background:radial-gradient(circle at 50% 38%, #0c1810 0%, #080f0a 55%, #060a07 100%);
  position:relative;
  overflow:hidden;
  font-family:var(--rv-font-mono);
  color:var(--rv-fg);
}
.rv-auth-page-title{
  text-align:center;
  color:var(--rv-fg-dim);
  letter-spacing:.2em;
  margin-bottom:24px;
}
.rv-auth-lede{
  line-height:1.7;
  color:var(--rv-fg-muted);
  margin:0;
}
.rv-auth-label{
  font-size:var(--rv-text-sm);
  color:var(--rv-fg-dim);
  letter-spacing:.12em;
  margin-bottom:6px;
}
.rv-auth-hint{
  font-size:var(--rv-text-base);
  color:var(--rv-fg-muted);
}
.rv-auth-hint-dim{
  font-size:var(--rv-text-sm);
  color:var(--rv-fg-dim);
}
.rv-auth-icon-prefix{
  color:var(--rv-color-ok);
  padding:0 0 0 11px;
  font-size:var(--rv-text-body);
}
.rv-auth-btn{
  border:1px solid var(--rv-color-ok);
  background:var(--rv-color-ok-bg);
  color:var(--rv-color-ok);
  font-family:var(--rv-font-mono);
  font-size:var(--rv-text-body);
  font-weight: 400;
  letter-spacing:.14em;
  padding:var(--rv-space-sm);
  cursor:pointer;
  transition:all .18s;
  text-align:center;
}
.rv-auth-btn:hover{
  background:var(--rv-color-ok);
  color:var(--rv-fg-on-accent);
  box-shadow:0 0 16px rgba(57,255,110,.5);
}
.rv-auth-recovery{
  font-size:var(--rv-text-base);
  color:var(--rv-fg-dim);
  text-decoration:none;
}
.rv-auth-recovery:hover{color:var(--rv-fg-muted);}
.rv-auth-error{
  color:var(--rv-color-block-muted);
  font-size:var(--rv-text-base);
  letter-spacing:.04em;
  min-height:14px;
}

.input-row{
  display:flex;
  align-items:center;
  border:1px solid var(--rv-border-strong);
  background:var(--rv-bg-inset);
  transition:border-color .2s;
}
.input-row:focus-within{border-color:var(--rv-color-ok);}
.input-row input{
  flex:1;
  background:transparent;
  border:0;
  outline:0;
  color:var(--rv-fg-input);
  font-family:var(--rv-font-mono);
  font-size:var(--rv-text-body);
  padding:11px var(--rv-space-sm);
  letter-spacing:.04em;
}
.input-row input::placeholder{color:var(--rv-color-placeholder);}
.checkbox{
  width:15px;
  height:15px;
  flex:none;
  border:1px solid var(--rv-border-pro);
  background:transparent;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--rv-fg-on-accent);
  font-size:var(--rv-text-base);
  font-weight: 400;
  transition:all .15s;
  cursor:pointer;
}
.checkbox.on{
  background:var(--rv-color-ok);
  border-color:var(--rv-color-ok);
}

/* — PRO locked overlay (JS fallback) — */
.rv-pro-overlay{
  position:fixed;
  top:0;
  right:0;
  bottom:0;
  left:0;
  z-index:9000;
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--rv-bg-pro-overlay);
  backdrop-filter:blur(6px);
  font-family:var(--rv-font-mono);
  color:var(--rv-fg-value);
}
.rv-pro-overlay-card{
  border:1px solid var(--rv-border-strong);
  background:var(--rv-bg-panel);
  padding:34px 38px;
  max-width:420px;
  text-align:center;
}
.rv-pro-overlay-kicker{
  font-size:var(--rv-text-sm);
  color:var(--rv-fg-dim);
  letter-spacing:.18em;
  margin-bottom:10px;
}
.rv-pro-overlay-title{
  font-size:var(--rv-text-xl);
  font-weight: 400;
  color:var(--rv-fg-bright);
  letter-spacing:.04em;
  margin-bottom:var(--rv-space-xs);
}
.rv-pro-overlay-body{
  font-size:var(--rv-text-md);
  line-height:1.7;
  color:var(--rv-fg-muted);
  margin:0 0 20px;
}
.rv-pro-overlay-cta{
  display:inline-block;
  border:1px solid var(--rv-color-ok);
  background:var(--rv-color-ok);
  color:var(--rv-fg-on-accent);
  font-size:var(--rv-text-md);
  font-weight: 400;
  letter-spacing:.12em;
  padding:10px 18px;
  text-decoration:none;
}
.rv-pro-overlay-back{
  margin-top:18px;
  font-size:var(--rv-text-sm);
  color:var(--rv-fg-dim);
}
.rv-pro-overlay-back a{
  color:var(--rv-fg-muted);
  text-decoration:none;
}

/* — PRO page gate (inline overlay on WAF/Score/TI/Heatmap) — */
.rv-pro-gate-wrap{
  position:absolute;
  inset:0;
  z-index:40;
  display:none;
  align-items:center;
  justify-content:center;
  background:rgba(6,10,7,.78);
  backdrop-filter:blur(3px);
  -webkit-backdrop-filter:blur(3px);
  font-family:var(--rv-font-mono);
  padding:24px;
}
.rv-pro-gate-card{
  width:420px;
  max-width:100%;
  border:1px solid var(--rv-border-strong);
  background:var(--rv-bg-panel);
  box-shadow:0 0 40px rgba(0,0,0,.6);
}
.rv-pro-gate-hdr{
  padding:13px 18px;
  border-bottom:1px solid var(--rv-border-card);
  display:flex;
  align-items:center;
  gap:10px;
}
.rv-pro-gate-body{
  padding:22px 22px 20px;
}
.rv-pro-gate-bullets{
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-top:16px;
}
.rv-filter-row{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.rv-filter-chips{
  display:flex;
  gap:7px;
}
.rv-table-panel{
  border:1px solid var(--rv-border);
  background:var(--rv-bg-panel);
}
.rv-table-checkbox{
  width:15px;
  height:15px;
  border:1px solid var(--rv-border-pro);
  background:transparent;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  flex:none;
}
.rv-table-checkbox.rv-table-checkbox--on{
  border-color:var(--rv-color-ok);
  background:rgba(45,255,106,.2);
}

/* — License banner — */
.rv-license-banner{
  background:#2a120f;
  border-bottom:1px solid #5a2420;
  color:var(--rv-color-block-muted);
  font-family:var(--rv-font-mono);
  font-size:var(--rv-text-base);
  text-align:center;
  letter-spacing:.04em;
}

/* — Logout icon — visible white frame; SVG centered (no emoji fallback) — */
.rv-logout-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  box-sizing:border-box;
  width:24px;
  height:24px;
  flex:none;
  padding:0;
  color:var(--rv-color-white);
  border:2px solid var(--rv-color-white);
  line-height:0;
}
.rv-logout-icon svg{
  display:block;
  width:14px;
  height:14px;
  flex:none;
}

/* =========================================================
   Dashboard typography contract — cały panel (OPERATIONS + CONFIG + PRO)
   Font: IBM Plex Mono (--rv-font-mono)
   Dane (tabele, listy, settings, logi): 12px base, weight 400, biały
   Bold tylko: T1 KPI/score, nagłówki CAPS, badge severity, nav, CTA, PRO kicker
   ========================================================= */
.rv-dash-root,
.rv-dash-root .rv-table-data-row,
.rv-dash-root .rv-geo-data-row,
.rv-dash-root .rv-log-row,
.rv-dash-root .rv-rank-row,
.rv-dash-root .rv-surface-row,
.rv-dash-root .rv-settings-row{
  font-size:var(--rv-text-base);
  font-weight:400;
}
.rv-dash-root .rv-t-micro:not(.rv-pro-kicker):not(.rv-nav-badge):not(.rv-check-mark){
  font-weight:400;
}
.rv-dash-root .rv-table-data-row .rv-t-micro,
.rv-dash-root .rv-geo-data-row .rv-t-micro,
.rv-dash-root .rv-log-row .rv-t-micro,
.rv-dash-root .rv-table-data-row .rv-cell-method,
.rv-dash-root .rv-table-data-row .rv-cell-status,
.rv-dash-root .rv-geo-data-row .rv-geo-status,
.rv-dash-root .rv-settings-row .rv-data-value,
.rv-dash-root .rv-cell-value,
.rv-dash-root .rv-cell-name,
.rv-dash-root .rv-cell-traffic,
.rv-dash-root .rv-cell-truncate,
.rv-dash-root .rv-cell-message,
.rv-dash-root .rv-data-value,
.rv-dash-root .rv-data-ip{
  font-weight:400;
}
.rv-surface-row{
  font-size:var(--rv-text-base);
  font-weight:400;
  color:var(--rv-color-white);
}
.rv-surface-value,
.rv-surface-label{
  font-weight:400;
  font-size:var(--rv-text-base);
  color:var(--rv-color-white);
  font-variant-numeric:var(--rv-tabular);
}
.rv-surface-label{color:var(--rv-fg-dim);}
.rv-dash-root .rv-log-row .rv-log-time,
.rv-dash-root .rv-log-row .rv-log-msg,
.rv-dash-root .rv-log-row .rv-log-ip{
  font-weight:400;
  color:var(--rv-color-white);
}

/* OPERATIONS table cell contract — spans + buttons must match (buttons ignore inherit) */
.rv-table-data-row .rv-cell-method,
.rv-table-data-row .rv-cell-date,
.rv-table-data-row .rv-cell-status,
.rv-table-data-row .rv-cell-datetime,
.rv-table-data-row .rv-cell-country,
.rv-table-data-row .rv-btn-unblock,
.rv-table-data-row .rv-btn-reblock,
.rv-table-data-row .rv-btn-block,
.rv-geo-data-row .rv-cell-traffic,
.rv-geo-data-row .rv-geo-status{
  font-family:var(--rv-font-mono);
  font-size:var(--rv-text-base);
  font-weight:400;
  letter-spacing:0;
  line-height:1.25;
}
.rv-table-data-row .rv-btn-unblock,
.rv-table-data-row .rv-btn-reblock,
.rv-table-data-row .rv-btn-block{
  padding:2px 8px;
}

/* Settings — feature rows + channel toggles (no inline color/font in JS) */
.rv-feature-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;
  height:22px;
  border:1px solid #3a2a2a;
  background:transparent;
  color:#7a5a55;
  font-family:var(--rv-font-mono);
  font-size:var(--rv-text-base);
  font-weight:400;
}
.rv-feature-icon--on{
  border-color:var(--rv-color-ok);
  background:rgba(57,255,110,.15);
  color:var(--rv-color-ok);
}
.rv-feature-label{
  flex:1;
  color:#5a6b60;
  font-family:var(--rv-font-mono);
  font-size:var(--rv-text-base);
  font-weight:400;
}
.rv-feature-label--on{color:var(--rv-fg-value);}
.rv-channel-toggle{
  width:34px;
  height:18px;
  flex:none;
  display:flex;
  align-items:center;
  padding:1px;
  border:1px solid var(--rv-color-block);
  background:var(--rv-color-block-bg);
  cursor:pointer;
  font-family:var(--rv-font-mono);
}
.rv-channel-toggle--on{
  border-color:var(--rv-color-ok);
  background:rgba(57,255,110,.18);
  justify-content:flex-end;
}
.rv-channel-toggle--off{justify-content:flex-start;}
.rv-channel-toggle--disabled{opacity:.45;cursor:not-allowed;}
.rv-channel-toggle-knob{
  width:14px;
  height:14px;
  background:var(--rv-color-block);
  box-shadow:0 0 6px var(--rv-color-block);
}
.rv-channel-toggle--on .rv-channel-toggle-knob{
  background:var(--rv-color-ok);
  box-shadow:0 0 6px var(--rv-color-ok);
}

/* Jedna klasa komórki meta — METHOD / EXPIRES / ACTION / Geo STATUS (bez kolorów semantycznych) */
.rv-table-cell-plain{
  font-family:var(--rv-font-mono);
  font-size:var(--rv-text-base);
  font-weight:400;
  letter-spacing:0;
  line-height:1.25;
  text-transform:uppercase;
  color:var(--rv-color-white);
  text-shadow:none;
  text-align:center;
  justify-self:center;
  border:none;
  background:transparent;
  box-shadow:none;
  padding:0;
  margin:0;
}
.rv-table-data-row .rv-cell-action .rv-table-cell-plain[role="button"]{
  cursor:pointer;
}
.rv-table-data-row .rv-cell-action .rv-table-cell-plain[role="button"]:hover{
  color:var(--rv-fg-bright);
}
.rv-geo-data-row .rv-table-cell-plain{
  text-align:right;
  justify-self:end;
}

/* =========================================================
   Tabular data lock (1.6d FONT SWEEP) — jeden rozmiar danych
   Status · Logs · Alerts · Blocks · Geo · Settings
   ========================================================= */
.rv-dash-root :is(
  .rv-table-data-row,
  .rv-geo-data-row,
  .rv-log-row,
  .rv-settings-row,
  .rv-surface-row,
  .rv-rank-row,
  .rv-env-preview
){
  font-size:var(--rv-text-base);
  font-weight:400;
  line-height:1.25;
}
.rv-dash-root :is(
  .rv-table-data-row,
  .rv-geo-data-row,
  .rv-log-row,
  .rv-settings-row,
  .rv-surface-row,
  .rv-rank-row,
  .rv-env-preview
).rv-t-ui{
  font-size:var(--rv-text-base);
  font-weight:400;
}
.rv-dash-root :is(
  .rv-table-data-row,
  .rv-geo-data-row,
  .rv-log-row,
  .rv-settings-row,
  .rv-surface-row,
  .rv-rank-row
) :is(
  .rv-data-value,
  .rv-data-ip,
  .rv-cell-name,
  .rv-cell-traffic,
  .rv-cell-truncate,
  .rv-cell-message,
  .rv-cell-datetime,
  .rv-cell-date,
  .rv-cell-country,
  .rv-cell-method,
  .rv-cell-status,
  .rv-cell-value,
  .rv-cell-pct,
  .rv-table-cell-plain,
  .rv-log-time,
  .rv-log-msg,
  .rv-log-ip,
  .rv-log-level,
  .rv-surface-value,
  .rv-surface-label,
  .rv-settings-label,
  .rv-feature-label,
  .rv-settings-channel-label,
  .rv-settings-channel-detail,
  .rv-env-row,
  .rv-expand-field-text,
  .rv-field-text,
  .rv-dt-date,
  .rv-dt-time,
  .rv-geo-iso,
  .rv-geo-status,
  .rv-license-active,
  .rv-license-missing
){
  font-family:var(--rv-font-mono);
  font-size:var(--rv-text-base);
  font-weight:400;
  letter-spacing:0;
  line-height:1.25;
  font-variant-numeric:var(--rv-tabular);
}
