/* =========================================================
   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);}
::-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:700;
  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:800;
  letter-spacing:.16em;
  color:var(--rv-fg-bright);
  text-shadow:var(--rv-glow-ok-soft);
  padding:14px 18px 6px;
}

/* — Nav links — */
.rv-nav-link{
  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:600;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--rv-fg-muted);
  text-decoration:none;
  border-left:2px solid transparent;
}
.rv-nav-link--active{
  color:var(--rv-color-ok);
  background:var(--rv-color-ok-bg-nav);
  border-left-color:var(--rv-color-ok);
  text-shadow:var(--rv-text-shadow-nav-active);
}
.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:800;
  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: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-fg-muted);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.rv-cell-value{color:var(--rv-fg-value);font-weight:700;}
.rv-cell-status{font-weight:700;text-align:right;font-size:var(--rv-text-sm);}
.rv-cell-action{text-align:right;}
.rv-sev-badge{
  font-weight:700;
  border:1px solid;
  padding:2px 6px;
  text-align:center;
  font-size:var(--rv-text-xs);
}
.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:800;
  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:700;
  font-size:var(--rv-text-base);
}
.rv-pro-hero{
  font-weight:800;
  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-bullet{display:flex;align-items:baseline;gap:9px;color:var(--rv-fg-prose-light);font-size:var(--rv-text-detail);}
.rv-pro-foot{text-align:center;color:var(--rv-fg-dim);margin-top:11px;font-size:var(--rv-text-sm);}
.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);
}
.rv-settings-label{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:inherit;
  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:inherit;
  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:inherit;
  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:inherit;
  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:700;
  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:inherit;
  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-sm);
}
.rv-status-dot{
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--rv-color-ok);
  box-shadow:0 0 6px var(--rv-color-ok);
}
.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:inherit;
  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);
}

  color:var(--rv-fg-dim);
  letter-spacing:.16em;
  margin-top:4px;
  font-size:var(--rv-text-sm);
}
.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:700;
  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);
}
.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:600;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--rv-color-ok);
  text-shadow:var(--rv-text-shadow-nav-active);
}
.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:inherit;
  padding:9px 12px;
  cursor:pointer;
  font-size:var(--rv-text-base);
}
.rv-geo-pick-iso{
  font-weight:700;
  color:var(--rv-fg-muted);
  margin-right:8px;
}
.rv-heatmap-rank{
  font-weight:700;
  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-cell-pct{text-align:right;color:var(--rv-fg-muted);font-size:var(--rv-text-sm);}
.rv-cell-name{color:var(--rv-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rv-cell-traffic{text-align:right;color:var(--rv-fg-muted);}
.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:inherit;
  padding:8px 10px;
  letter-spacing:.08em;
  text-transform:uppercase;
  outline:none;
  font-size:var(--rv-text-base);
  -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:inherit;
  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:700;
  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:600;
  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,
.rv-kpi-label--low{
  color:var(--rv-fg-dim);
  text-shadow:none;
}
.rv-kpi-label--medium{color:var(--rv-color-alert-medium-label);}
.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:600;
  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 > :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{
  color:var(--rv-fg);
  font-size:var(--rv-text-base);
}
.rv-table-data-row--blocks .rv-cell-datetime,
.rv-table-data-row--alerts .rv-cell-datetime,
.rv-table-data-row--blocks .rv-cell-country{
  color:var(--rv-color-white);
  font-size:var(--rv-text-base);
}
.rv-table-data-row--blocks .rv-cell-date,
.rv-table-data-row--alerts .rv-cell-date{
  color:var(--rv-fg-dim);
  font-size:var(--rv-text-base);
}
.rv-table-data-row--blocks .rv-expand-field-text,
.rv-table-data-row--blocks .rv-field-text{
  color:var(--rv-fg);
}

.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-fg);
  font-size:var(--rv-text-base);
}
.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:700;
  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:800;
  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) — */
[class^="rv-h-"]: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-block);
  background:rgba(255,85,68,.05);
}
.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-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:inherit;
  font-size:var(--rv-text-body);
  font-weight:700;
  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:inherit;
  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:800;
  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:800;
  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:700;
  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 size — */
.rv-logout-icon{font-size:var(--rv-space-md);}
