.table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, .table > thead > tr > th {

    vertical-align: middle;
}

.pac-container {
    z-index: 10000 !important;
}

.main-footer {
    padding: 5px 15px;
}
.text-dark {
    color: #444;
}
.callout-gray {
    background-color: #EEE;
    border-left: 5px solid #DDD;
}
.callout-gray a {
    color: #333;

}
.callout-gray a:hover {
    color: #444;

}

@media (min-width: 767px) {
    .modal-dialog {
        width: 760px;
    }
}

.notopborder {border-top: 0px!important;}

.whitetext {color: #FFF;}

.dt-margin{
    margin-left:0px !important;
    margin-right:0px !important;
}

.todo-list {
    min-height: 40px;
}


.no-sort::after { display: none!important; }

.no-sort { pointer-events: none!important; cursor: default!important; }

.timeline-item {
    background-color: #fff!important;
    border: 1px solid #f1f1f1!important;
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
}

.timeline-image {

    left: 16px;
    position: absolute;
    top: 0;
}

.chart-legend ul {
    list-style-type: none;
}

.chart-legend li span{
    display: inline-block;
    width: 10px;
    height: 10px;
    margin-top:4px;
    margin-right: 5px;
    border-radius:50%;
}




.fullboby-bg {
  background: url(../assets/bg2.jpg) no-repeat center center fixed;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}

.fullboby-bg a {
    color: #FFF;
}

.fullboby-bg .login-logo {
    color: #FFF;
}

.roles h4 {
    padding-top: 12px;
    padding-bottom: 0px;
    margin-bottom: 0px;

}

.dt-buttons {
    margin-left: -15px;
}

.dt-buttons .btn-default {
    background-color: #FFF;
    padding: 3px 6px;
    font-size: 12px;
    border-radius: 0px;
}

table.dataTable {
    max-width: 100% !important;
}

canvas {
    z-index: 999999;
}

.chart {
    overflow: visible;
    overflow-x: visible;
    overflow-y: visible;
}


.fileinput{
    padding-top: 5px;
    padding-bottom: 5px;
}

.datepicker {
    z-index:9999 !important;
}

td .btn-group {
  display: flex;
}


.label-lite-blue {
    background-color:#FFF;
    color:#0073b7;
    border:1px solid #0073b7;
}

.label-lite-green {
    background-color:#FFF;
    color:#00a65a;
    border:1px solid #00a65a;
}

.label-lite-yellow {
    background-color:#FFF;
    color:#f39c12;
    border:1px solid #f39c12;
}

.label-lite-purple {
    background-color:#FFF;
    color:#605ca8;
    border:1px solid #605ca8;
}

.label-lite-red {
    background-color:#FFF;
    color:#dd4b39;
    border:1px solid #dd4b39;
}

.label-lite-gray {
    background-color:#FFF;
    color:#000;
    border:1px solid #d2d6de;
}


.spacer { margin:0; padding:0; height:50px; }

.callout.callout-ok {
  border-right:1px solid #00733e;
  border-top:1px solid #00733e;
  border-bottom:1px solid #00733e;
  border-color: #00733e;
  background-color:#FFF;
}

.callout.callout-ok h4 {
    margin-bottom: 3px;
}


/* nMon InfraSec V1.6 - 8solutions brand and responsive dashboard */
:root { --eight-blue:#5aaddd; --eight-blue-dark:#489bc9; --eight-blue-soft:#eef7fc; }

.skin-green .main-header .navbar,
.skin-green .main-header .logo,
.skin-green .main-header li.user-header { background-color:var(--nmon-header-bg,#5aaddd) !important; }
.skin-green .main-header .logo:hover,
.skin-green .main-header .navbar .sidebar-toggle:hover { background-color:var(--nmon-header-hover-bg,#489bc9) !important; }
.skin-green .sidebar-menu > li.active > a,
.skin-green .sidebar-menu > li:hover > a { border-left-color:var(--nmon-sidebar-accent,#5aaddd) !important; }
.skin-green .sidebar-menu > li.active > a { color:#fff; }

.btn-primary, .btn-info { background-color:#5aaddd; border-color:#4d9ece; }
.btn-primary:hover, .btn-primary:active, .btn-primary:focus,
.btn-info:hover, .btn-info:active, .btn-info:focus { background-color:#489bc9; border-color:#3f8fb9; }
.box.box-primary, .box.box-info, .nav-tabs-custom > .nav-tabs > li.active { border-top-color:#5aaddd; }
a { color:#438fbf; }
a:hover, a:focus { color:#337ca7; }

.box.box-8solutions { border-top:3px solid #5aaddd; }
.box.box-8solutions.box-solid { border:1px solid #5aaddd; border-top:0; }
.box.box-8solutions.box-solid > .box-header { background:#5aaddd; color:#fff; }
.box.box-8solutions.box-solid > .box-header a,
.box.box-8solutions.box-solid > .box-header .btn { color:#fff; }
.infrasec-state-table { margin-bottom:8px; }
.infrasec-state-table > tbody > tr > th,
.infrasec-state-table > tbody > tr > td { vertical-align:middle; border-top-color:#e8eef2; }
.infrasec-av-product + .infrasec-av-product { margin-top:7px; padding-top:7px; border-top:1px solid #edf2f5; }

.infrasec-chat-history { max-height:420px; overflow-y:auto; padding:8px; background:#f7fafc; border:1px solid #e1e8ed; }
.infrasec-chat-message { max-width:88%; margin:7px 0; padding:9px 11px; border-radius:3px; background:#fff; border-left:3px solid #5aaddd; box-shadow:0 1px 1px rgba(0,0,0,.04); }
.infrasec-chat-message.user { margin-left:auto; border-left:0; border-right:3px solid #9aa7af; background:#f1f3f5; }
.infrasec-chat-meta { font-size:11px; color:#7b8a93; margin-bottom:4px; }
.infrasec-chat-meta span { margin-left:8px; }

/* Bootstrap 3 float columns become masonry-like on phones when one small-box is taller.
   Flex wrapping keeps each pair aligned while preserving col-xs-6 / col-lg-3 widths. */
.dashboard-stat-row { display:flex; flex-wrap:wrap; align-items:stretch; }
.dashboard-stat-row > [class*="col-"] { float:none; display:flex; }
.dashboard-stat-row .small-box { width:100%; display:flex; flex-direction:column; }
.dashboard-stat-row .small-box > .inner { flex:1 1 auto; min-height:128px; }
.dashboard-stat-row .small-box > .small-box-footer { margin-top:auto; }
@media (max-width:767px) {
  .dashboard-stat-row { margin-left:-7px; margin-right:-7px; }
  .dashboard-stat-row > [class*="col-"] { padding-left:7px; padding-right:7px; }
  .dashboard-stat-row .small-box > .inner { min-height:142px; padding:10px; }
  .dashboard-stat-row .small-box h3 { font-size:42px; }
  .dashboard-stat-row .small-box p { min-height:42px; }
  .infrasec-dashboard-center > .nav-tabs { display:flex; flex-wrap:wrap; float:none !important; width:100%; }
  .infrasec-dashboard-center > .nav-tabs > li { float:none !important; flex:1 1 33.333%; }
  .infrasec-dashboard-center > .nav-tabs > li.header { order:-1; flex:1 1 100%; width:100%; }
  .infrasec-dashboard-center > .nav-tabs > li > a { text-align:center; padding-left:6px; padding-right:6px; }
}

/* InfraSec V1.6.2 - unified Security tab layout */
#security { --is-blue:#5aaddd; --is-blue-dark:#489bc9; --is-border:#dfe8ee; --is-bg:#f6f9fb; --is-text:#2f3f4a; }
#security > .row { margin-bottom:14px; }

.infrasec-summary-row { display:flex; flex-wrap:wrap; align-items:stretch; margin-left:-7px; margin-right:-7px; }
.infrasec-summary-row > [class*="col-"] { float:none; display:flex; padding-left:7px; padding-right:7px; margin-bottom:14px; }
.infrasec-summary-card {
  width:100%; min-height:104px; background:#fff; border:1px solid var(--is-border); border-top:3px solid var(--is-blue);
  border-radius:3px; box-shadow:0 1px 2px rgba(26,54,72,.06); display:flex; align-items:center; padding:14px 16px;
}
.infrasec-summary-icon {
  flex:0 0 48px; height:48px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:var(--eight-blue-soft); color:var(--is-blue-dark); font-size:21px; margin-right:14px;
}
.infrasec-summary-content { min-width:0; flex:1 1 auto; }
.infrasec-summary-label { color:#7b8a93; font-size:11px; text-transform:uppercase; letter-spacing:.35px; font-weight:600; margin-bottom:3px; }
.infrasec-summary-value { color:#263844; font-size:21px; line-height:1.15; font-weight:600; margin-bottom:4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.infrasec-summary-value-sm { font-size:16px; }

.infrasec-equal-row { display:flex; flex-wrap:wrap; align-items:stretch; }
.infrasec-equal-row > [class*="col-"] { float:none; display:flex; }
.infrasec-card {
  width:100%; margin-bottom:0; border-radius:3px; border-color:var(--is-border); box-shadow:0 1px 2px rgba(26,54,72,.06);
  display:flex; flex-direction:column; overflow:hidden;
}
.infrasec-card > .box-header { min-height:42px; padding:10px 13px; background:#fff; color:var(--is-text); border-bottom:1px solid #e8eef2; }
.infrasec-card.box-solid > .box-header,
.box.box-8solutions.infrasec-card.box-solid > .box-header { background:var(--is-blue); color:#fff; }
.infrasec-card > .box-header .box-title { font-size:16px; font-weight:500; line-height:21px; }
.infrasec-card > .box-body { flex:1 1 auto; padding:14px; background:#fff; }
.infrasec-card .table { margin-bottom:0; }
.infrasec-card .table > thead > tr > th { border-bottom:1px solid #dce6ec; color:#52636e; font-size:12px; font-weight:600; }
/* 1.25.14: compact list boxes - about eight rows in the card, the full list in the dialog. */
.nmon-compact-list { max-height:352px; overflow:auto; border:1px solid #e6edf1; border-radius:3px; }
.nmon-compact-list > .table { margin-bottom:0; }
.nmon-compact-list > .table > thead > tr > th { position:sticky; top:0; z-index:1; background:#fff; box-shadow:inset 0 -1px 0 #dce6ec; }
.nmon-compact-foot { display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; margin-top:8px; }
.nmon-compact-foot .text-muted { margin-right:auto; }
.nmon-compact-modal .modal-body { max-height:70vh; overflow:auto; }
/* 1.25.14 maintenance planner: server selection with name, group and tag filter. */
.nmon-mc-select-bar { display:flex; flex-direction:column; gap:8px; margin-bottom:10px; }
.nmon-mc-select-filters { display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; }
.nmon-mc-select-filters .form-group { margin:0; }
.nmon-mc-select-filters #maintenance-filter-name { min-width:220px; }
.nmon-mc-select-filters #maintenance-filter-group { min-width:200px; }
.nmon-mc-select-toggle { font-weight:400; margin:0; color:#52636e; }
.nmon-mc-select-count { margin-left:auto; font-size:12px; }
.nmon-mc-select-tags { display:flex; flex-wrap:wrap; align-items:center; gap:5px; }
.nmon-mc-row-tags { margin-top:4px; display:flex; flex-wrap:wrap; gap:4px; }
.nmon-tag-btn { border:0; padding:1px 8px; cursor:pointer; opacity:.75; }
.nmon-tag-btn:hover { opacity:1; }
.nmon-tag-btn.nmon-tag-active { opacity:1; box-shadow:0 0 0 2px rgba(60,141,188,.45); }
.infrasec-card .table-striped > tbody > tr:nth-of-type(odd) { background:#f8fafb; }
.infrasec-card .table > tbody > tr > td,
.infrasec-card .table > tbody > tr > th { border-top:1px solid #edf2f5; padding:9px 10px; }
.infrasec-header-status { margin-top:1px; }

.infrasec-kv-grid { display:grid; grid-template-columns:1fr 1fr; gap:0; border:1px solid #edf2f5; border-radius:3px; overflow:hidden; margin-bottom:12px; }
.infrasec-kv { min-height:58px; padding:10px 12px; background:#fff; border-bottom:1px solid #edf2f5; }
.infrasec-kv:nth-child(odd) { border-right:1px solid #edf2f5; }
.infrasec-kv:nth-last-child(-n+2) { border-bottom:0; }
.infrasec-kv > span:first-child { display:block; color:#7b8a93; font-size:11px; text-transform:uppercase; letter-spacing:.25px; margin-bottom:5px; }
.infrasec-kv > strong { display:block; color:#2f3f4a; font-size:13px; font-weight:600; overflow-wrap:anywhere; }

.infrasec-inline-notice { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 12px; border-radius:3px; margin:10px 0; }
.infrasec-inline-notice.warning { background:#fff7e8; border:1px solid #f4d495; color:#7d5a12; }
.infrasec-inline-notice .btn { flex:0 0 auto; }

.infrasec-state-table > tbody > tr > th { color:#586973; font-weight:600; background:#fbfcfd; }
.infrasec-state-table > tbody > tr > td { color:#2f3f4a; }
.infrasec-av-product { padding:3px 0; }

#security .btn { border-radius:3px; }
#security .btn-group .btn + form,
#security form[style*="display:inline"] + form[style*="display:inline"] { margin-left:4px; }
#security .alert { border-radius:3px; }
#security .infrasec-chat-history { border-radius:3px; background:#f8fafb; }

@media (min-width:992px) {
  .infrasec-equal-row > [class*="col-"] > .infrasec-card { min-height:100%; }
}
@media (max-width:991px) {
  .infrasec-equal-row > [class*="col-"] { display:block; width:100%; }
  .infrasec-equal-row > [class*="col-"] + [class*="col-"] { margin-top:14px; }
}
@media (max-width:767px) {
  #security > .row { margin-bottom:10px; }
  .infrasec-summary-row { margin-left:-5px; margin-right:-5px; }
  .infrasec-summary-row > [class*="col-"] { padding-left:5px; padding-right:5px; margin-bottom:10px; }
  .infrasec-summary-card { min-height:112px; padding:12px; align-items:flex-start; }
  .infrasec-summary-icon { flex-basis:38px; height:38px; font-size:17px; margin-right:9px; }
  .infrasec-summary-value { font-size:17px; white-space:normal; }
  .infrasec-summary-value-sm { font-size:14px; }
  .infrasec-kv-grid { grid-template-columns:1fr; }
  .infrasec-kv:nth-child(odd) { border-right:0; }
  .infrasec-kv:nth-last-child(-n+2) { border-bottom:1px solid #edf2f5; }
  .infrasec-kv:last-child { border-bottom:0; }
  .infrasec-inline-notice { display:block; }
  .infrasec-inline-notice .btn { margin-top:8px; width:100%; }
  #security .box-header .pull-right { float:none !important; display:block; margin-top:6px; }
  #security .btn-group { display:block; width:100%; }
  #security .btn-group form { display:block !important; margin:0 0 6px !important; }
  #security .btn-group .btn { width:100%; }
}

/* InfraSec V1.6.4: readable AI markdown, compact chat actions and analysis history */
#security .infrasec-chat-actions { margin-top:8px; display:flex; justify-content:flex-start; gap:8px; }
#security .infrasec-markdown p { margin:0 0 7px; line-height:1.48; }
#security .infrasec-markdown ul,
#security .infrasec-markdown ol { margin:5px 0 9px 22px; padding-left:8px; }
#security .infrasec-markdown li { margin-bottom:4px; line-height:1.45; }
#security .infrasec-markdown h3,
#security .infrasec-markdown h4,
#security .infrasec-markdown h5,
#security .infrasec-markdown h6 { margin:10px 0 6px; font-weight:600; color:#2f4858; }
#security .infrasec-markdown code { background:#eef4f8; color:#263844; padding:1px 4px; border-radius:2px; }
#security .infrasec-markdown pre { background:#263844; color:#eef6fb; border:0; border-radius:3px; padding:10px; overflow:auto; }
#security .infrasec-markdown pre code { background:transparent; color:inherit; padding:0; }
#security .infrasec-markdown-table { background:#fff; margin:7px 0 10px; }
#security .infrasec-markdown-table th { background:#eef6fb; }
#security .infrasec-md-spacer { height:3px; }
#security .infrasec-analysis-history summary { cursor:pointer; color:#3d789b; font-weight:600; outline:none; }
#security .infrasec-analysis-history summary:hover { color:#2c6486; }

/* InfraSec V1.7 - compact three-column status row, 50/50 AI workspace and threaded chat history */
#security .infrasec-primary-row,
#security .infrasec-ai-row { display:flex; flex-wrap:wrap; align-items:stretch; }
#security .infrasec-primary-row > [class*="col-"],
#security .infrasec-ai-row > [class*="col-"] { float:none; display:flex; }
#security .infrasec-primary-card,
#security .infrasec-ai-card { width:100%; min-height:100%; }
#security .infrasec-primary-card > .box-body { overflow:auto; }
#security .infrasec-kv-grid-single { grid-template-columns:1fr; }
#security .infrasec-kv-grid-single .infrasec-kv { border-right:0; border-bottom:1px solid #edf2f5; }
#security .infrasec-kv-grid-single .infrasec-kv:last-child { border-bottom:0; }
#security .infrasec-alert-card .box-body { padding:10px; }
#security .infrasec-alert-list { max-height:460px; overflow-y:auto; }
#security .infrasec-alert-item { padding:10px 8px; border-bottom:1px solid #edf2f5; }
#security .infrasec-alert-item:last-child { border-bottom:0; }
#security .infrasec-alert-item strong { display:block; margin-top:5px; color:#2f3f4a; }
#security .infrasec-alert-detail { margin:5px 0; line-height:1.4; }
#security .infrasec-empty-state { min-height:130px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; color:#52636e; text-align:center; }
#security .infrasec-empty-state .fa { font-size:30px; }
#security .infrasec-header-note { color:rgba(255,255,255,.88) !important; font-size:11px; line-height:21px; }

#security .infrasec-ai-card { min-height:690px; }
#security .infrasec-ai-card > .box-body { display:flex; flex-direction:column; min-height:0; }
#security .infrasec-analysis-actions { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px; }
#security .infrasec-analysis-actions form { margin:0; }
#security .infrasec-analysis-scroll { flex:1 1 auto; max-height:580px; overflow-y:auto; padding-right:4px; }
#security .infrasec-analysis-latest { padding:10px 0 13px; border-bottom:1px solid #e8eef2; }
#security .infrasec-analysis-latest:first-child { padding-top:0; }
#security .infrasec-section-title { color:#2f4858; font-size:13px; font-weight:700; margin-bottom:8px; }
#security .infrasec-analysis-meta { display:flex; flex-wrap:wrap; gap:6px 18px; margin-bottom:7px; font-size:12px; color:#52636e; }
#security .infrasec-analysis-summary { line-height:1.5; }
#security .infrasec-recommendations { margin-top:7px; }
#security .infrasec-history-title { margin-top:14px; padding-top:2px; }
#security .infrasec-history-table td { vertical-align:middle; }
#security .infrasec-analysis-modal .modal-dialog { width:min(980px,94%); }
#security .infrasec-analysis-modal-meta { display:flex; flex-wrap:wrap; gap:8px 24px; padding:10px 12px; background:#f5f9fc; border:1px solid #dfe8ee; margin-bottom:16px; }
#security .infrasec-analysis-modal-summary { font-size:14px; line-height:1.55; }
#security .infrasec-raw-response { margin-top:18px; }
#security .infrasec-raw-response summary { cursor:pointer; color:#438fbf; font-weight:600; }
#security .infrasec-raw-response pre { margin-top:8px; max-height:300px; overflow:auto; white-space:pre-wrap; }

#security .infrasec-chat-card-body { padding:10px; min-height:0; }
#security .infrasec-chat-workspace { display:flex; flex:1 1 auto; min-height:600px; border:1px solid #dfe8ee; background:#fff; overflow:hidden; }
#security .infrasec-chat-sidebar { flex:0 0 220px; width:220px; background:#f6f9fb; border-right:1px solid #dfe8ee; padding:10px; display:flex; flex-direction:column; min-height:0; }
#security .infrasec-new-chat-form { margin-bottom:9px; }
#security .infrasec-chat-session-list { flex:1 1 auto; overflow-y:auto; min-height:0; }
#security .infrasec-chat-session { display:block; padding:9px 9px; margin-bottom:5px; border:1px solid transparent; border-radius:3px; color:#344b59; background:transparent; text-decoration:none; }
#security .infrasec-chat-session:hover { background:#eef5f9; border-color:#dbe7ee; text-decoration:none; }
#security .infrasec-chat-session.active { background:#fff; border-color:#5aaddd; box-shadow:inset 3px 0 0 #5aaddd; }
#security .infrasec-chat-session-title { display:block; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
#security .infrasec-chat-session-meta { display:block; margin-top:3px; font-size:10px; color:#84939c; }
#security .infrasec-chat-session-empty { padding:12px 4px; font-size:12px; }
#security .infrasec-chat-main { flex:1 1 auto; min-width:0; display:flex; flex-direction:column; padding:10px; min-height:0; }
#security .infrasec-chat-current-title { display:flex; align-items:center; justify-content:space-between; gap:8px; padding-bottom:8px; border-bottom:1px solid #edf2f5; }
#security .infrasec-chat-context-note { margin:8px 0; padding:7px 9px; background:#eef8fd; color:#3c728f; border-left:3px solid #5aaddd; font-size:11px; }
#security .infrasec-chat-main .infrasec-chat-history { flex:1 1 auto; max-height:none; min-height:300px; overflow-y:auto; }
#security .infrasec-chat-form { margin-top:10px; }
#security .infrasec-chat-maintenance { display:flex; gap:6px; margin-top:7px; }
#security .infrasec-chat-maintenance form { margin:0; }

@media (min-width:1200px) {
  #security .infrasec-primary-row > [class*="col-"] > .infrasec-card { min-height:520px; max-height:520px; }
}
@media (max-width:1199px) {
  #security .infrasec-primary-row > [class*="col-"] { display:block; width:100%; margin-bottom:14px; }
  #security .infrasec-primary-row > [class*="col-"]:last-child { margin-bottom:0; }
}
@media (max-width:991px) {
  #security .infrasec-ai-row > [class*="col-"] { display:block; width:100%; }
  #security .infrasec-ai-row > [class*="col-"] + [class*="col-"] { margin-top:14px; }
  #security .infrasec-ai-card { min-height:0; }
  #security .infrasec-analysis-scroll { max-height:none; }
  #security .infrasec-chat-workspace { min-height:560px; }
}
@media (max-width:767px) {
  #security .infrasec-analysis-actions form,
  #security .infrasec-analysis-actions .btn { width:100%; }
  #security .infrasec-chat-workspace { display:block; min-height:0; }
  #security .infrasec-chat-sidebar { width:100%; border-right:0; border-bottom:1px solid #dfe8ee; max-height:230px; }
  #security .infrasec-chat-session-list { max-height:155px; }
  #security .infrasec-chat-main .infrasec-chat-history { min-height:260px; max-height:440px; }
  #security .infrasec-analysis-modal .modal-dialog { width:auto; margin:10px; }
}

/* InfraSec V1.8: detachable AI chat and searchable/paged host-event viewer */
#security .infrasec-chat-header-actions { display:flex; align-items:center; gap:6px; }
#security .infrasec-chat-header-actions .btn-box-tool { color:rgba(255,255,255,.95); padding:2px 7px; margin-top:-1px; }
#security .infrasec-chat-header-actions .btn-box-tool:hover,
#security .infrasec-chat-header-actions .btn-box-tool:focus { color:#fff; background:rgba(255,255,255,.14); }
body.infrasec-chat-popout-open { overflow:hidden; }
#security .infrasec-ai-card.infrasec-chat-popout {
  position:fixed !important;
  z-index:1065;
  top:18px;
  right:18px;
  bottom:18px;
  left:18px;
  width:auto !important;
  height:auto !important;
  min-height:0 !important;
  max-height:none !important;
  margin:0 !important;
  box-shadow:0 18px 55px rgba(17,43,58,.35);
  display:flex;
  flex-direction:column;
  border:1px solid #5aaddd;
}
#security .infrasec-ai-card.infrasec-chat-popout > .box-header { flex:0 0 auto; }
#security .infrasec-ai-card.infrasec-chat-popout > .box-body { flex:1 1 auto; min-height:0; overflow:hidden; }
#security .infrasec-ai-card.infrasec-chat-popout .infrasec-chat-card-body { display:flex; flex-direction:column; }
#security .infrasec-ai-card.infrasec-chat-popout .infrasec-chat-workspace { flex:1 1 auto; min-height:0; height:100%; }
#security .infrasec-ai-card.infrasec-chat-popout .infrasec-chat-main .infrasec-chat-history { min-height:0; }
#security .infrasec-ai-card.infrasec-chat-popout .infrasec-chat-sidebar { flex-basis:260px; width:260px; }

#security .infrasec-event-toolbar { display:flex; align-items:center; gap:8px; padding:10px; border-bottom:1px solid #e5edf2; background:#f8fbfd; flex-wrap:wrap; }
#security .infrasec-event-search-form { flex:1 1 520px; max-width:820px; margin:0; }
#security .infrasec-event-count { margin-left:auto; white-space:nowrap; font-size:11px; }
#security .infrasec-event-table-wrap { max-height:620px; overflow-y:auto; }
#security .infrasec-event-loadmore { padding:10px; text-align:center; border-top:1px solid #e5edf2; background:#fbfcfd; }
#security .infrasec-events-card { scroll-margin-top:70px; }

@media (max-width:767px) {
  #security .infrasec-ai-card.infrasec-chat-popout { top:4px; right:4px; bottom:4px; left:4px; }
  #security .infrasec-ai-card.infrasec-chat-popout .infrasec-chat-sidebar { width:100%; max-height:180px; }
  #security .infrasec-event-search-form { flex-basis:100%; max-width:none; }
  #security .infrasec-event-count { width:100%; margin-left:0; }
}

/* nMon 1.17.2: optional monitoring-host cards */
.nmon-monitor-host-row { display:flex; flex-wrap:wrap; }
.nmon-monitor-host-row > [class*="col-"] { display:flex; }
.nmon-monitor-host-card { width:100%; min-height:235px; display:flex; flex-direction:column; }
.nmon-monitor-host-card > .box-body { flex:1; display:flex; flex-direction:column; }
.nmon-monitor-host-kicker { color:#74838c; font-size:12px; text-transform:uppercase; letter-spacing:.04em; margin-bottom:4px; }
.nmon-monitor-host-main { color:#263238; font-size:34px; line-height:1.15; font-weight:600; margin:8px 0 10px; }
.nmon-monitor-host-progress { margin:0 0 12px; background:#edf3f6; }
.nmon-monitor-host-meta { margin-top:auto; color:#6f7e87; font-size:12px; }
.nmon-monitor-host-resource-label { color:#87959d; font-size:11px; text-transform:uppercase; margin-top:5px; }
.nmon-monitor-host-resource-row { display:flex; align-items:center; justify-content:space-between; gap:12px; color:#6f7e87; font-size:12px; margin-top:2px; }
.nmon-monitor-host-resource-row strong { color:#263238; font-size:16px; }
.nmon-monitor-host-resource-detail { color:#87959d; font-size:11px; margin-top:-7px; margin-bottom:8px; }
.nmon-monitor-host-ram-progress { margin-bottom:10px; }

.nmon-monitor-host-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px 20px; margin-top:8px; }
.nmon-monitor-host-grid span { display:block; color:#87959d; font-size:11px; text-transform:uppercase; }
.nmon-monitor-host-grid strong { display:block; color:#263238; margin-top:2px; font-size:13px; }
.nmon-monitor-host-info { display:grid; grid-template-columns:120px 1fr; gap:9px 14px; margin:0; }
.nmon-monitor-host-info dt { color:#75848d; font-weight:600; }
.nmon-monitor-host-info dd { margin:0; min-width:0; overflow-wrap:anywhere; }
@media (max-width:991px) {
  .nmon-monitor-host-row { display:block; }
  .nmon-monitor-host-row > [class*="col-"] { display:block; }
  .nmon-monitor-host-card { min-height:0; }
}
@media (max-width:480px) {
  .nmon-monitor-host-grid { grid-template-columns:1fr; }
  .nmon-monitor-host-info { grid-template-columns:1fr; gap:2px; }
  .nmon-monitor-host-info dd { margin-bottom:8px; }
}


/* nMon V1.12 - uniform multi-GPU cards and RAID summaries */
.nmon-gpu-card-row { display:flex; flex-wrap:wrap; }
.nmon-gpu-card-col { display:flex; margin-bottom:15px; }
.nmon-gpu-card { width:100%; height:100%; margin-bottom:0; }
.nmon-gpu-card .box-body { display:flex; flex-direction:column; }
.nmon-raid-summary { white-space:pre-wrap; max-height:220px; overflow:auto; margin-bottom:0; background:#f8fbfd; border:1px solid #e5edf2; }
@media (max-width:767px) { .nmon-gpu-card-row { display:block; } .nmon-gpu-card-col { display:block; } }

/* nMon 1.23 / InfraSec V1.16 - dedicated bulk-select column, session inventory and AI wait state */
#dataTableAjax th.bulk-select-column,
#dataTableAjax td.bulk-select-cell {
  width:34px !important;
  min-width:34px !important;
  max-width:34px !important;
  padding-left:5px !important;
  padding-right:5px !important;
  text-align:center !important;
  vertical-align:middle !important;
}
#dataTableAjax th.status-column,
#dataTableAjax td.status-cell {
  width:34px !important;
  min-width:34px !important;
  max-width:34px !important;
  padding-left:4px !important;
  padding-right:4px !important;
  text-align:center !important;
  vertical-align:middle !important;
}
#dataTableAjax td.bulk-select-cell .bulk-row-select,
#dataTableAjax th.bulk-select-column #bulkSelectPage {
  margin:0 !important;
  vertical-align:middle;
  cursor:pointer;
}
#dataTableAjax td.status-cell > i { vertical-align:middle; }

#security .infrasec-session-row { display:flex; flex-wrap:wrap; align-items:stretch; margin-top:14px; }
#security .infrasec-session-row > [class*="col-"] { float:none; display:flex; }
#security .infrasec-session-card { width:100%; margin-bottom:0; min-height:265px; }
#security .infrasec-session-card > .box-body { max-height:330px; overflow:auto; }
#security .infrasec-session-card > .box-body.no-padding { overflow:auto; }
#security .infrasec-user-table { margin-bottom:0; }
#security .infrasec-user-table th { white-space:nowrap; background:#f8fbfd; }
#security .infrasec-user-table td { vertical-align:middle; }
#security .infrasec-session-empty { padding:18px; color:#6c7d87; line-height:1.45; }
#security .infrasec-session-empty.compact { padding:4px 0 12px; }
#security .infrasec-exposure-block + .infrasec-exposure-block { margin-top:18px; padding-top:14px; border-top:1px solid #e7edf1; }
#security .infrasec-remote-tool { margin-bottom:10px; line-height:1.35; }
#security .infrasec-remote-tool .label { display:inline-block; margin-bottom:3px; }
#security .infrasec-exposure-note { margin-top:16px; line-height:1.45; }

#security .infrasec-ai-wait[hidden], #ai .infrasec-ai-wait[hidden] { display:none !important; }
#security .infrasec-ai-wait, #ai .infrasec-ai-wait {
  position:fixed;
  z-index:2000;
  top:0;
  right:0;
  bottom:0;
  left:0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  background:rgba(26,43,53,.68);
  backdrop-filter:blur(2px);
}
#security .infrasec-ai-wait-panel, #ai .infrasec-ai-wait-panel {
  width:min(620px,94vw);
  max-width:620px;
  padding:30px 34px;
  background:#fff;
  border-top:4px solid #5aaddd;
  box-shadow:0 20px 60px rgba(0,0,0,.28);
  text-align:center;
}
#security .infrasec-ai-wait-spinner, #ai .infrasec-ai-wait-spinner { font-size:48px; color:#5aaddd; margin-bottom:10px; }
#security .infrasec-ai-wait-panel h3, #ai .infrasec-ai-wait-panel h3 { margin:6px 0 8px; color:#294251; }
#security .infrasec-ai-wait-action, #ai .infrasec-ai-wait-action { min-height:20px; font-weight:700; color:#438fbf; }
#security .infrasec-ai-wait-progress, #ai .infrasec-ai-wait-progress { height:6px; margin:20px 0; background:#e7eef2; overflow:hidden; position:relative; }
#security .infrasec-ai-wait-progress span, #ai .infrasec-ai-wait-progress span { position:absolute; top:0; bottom:0; left:0; width:34%; background:#5aaddd; animation:infrasec-ai-wait-progress 1.35s ease-in-out infinite; }
#security .infrasec-ai-wait-important, #ai .infrasec-ai-wait-important { margin:18px 0 8px; padding:10px 12px; background:#fff7e5; border:1px solid #f1d79a; color:#805d11; }
body.infrasec-ai-analysis-running { overflow:hidden; }
@keyframes infrasec-ai-wait-progress {
  0% { left:-34%; }
  55% { left:48%; }
  100% { left:100%; }
}
@media (max-width:991px) {
  #security .infrasec-session-row > [class*="col-"] { display:block; width:100%; }
  #security .infrasec-session-row > [class*="col-"] + [class*="col-"] { margin-top:14px; }
  #security .infrasec-session-card { min-height:0; }
}
@media (max-width:600px) {
  #security .infrasec-ai-wait, #ai .infrasec-ai-wait { padding:10px; }
  #security .infrasec-ai-wait-panel, #ai .infrasec-ai-wait-panel { padding:24px 18px; }
}

/* nMon 1.23 / InfraSec V1.16 - centrally configurable design palette */
.main-header .navbar,
.main-header .logo,
.main-header li.user-header { background-color:var(--nmon-header-bg,#5aaddd) !important; }
.main-header .logo,
.main-header .navbar .nav > li > a,
.main-header .navbar .sidebar-toggle { color:var(--nmon-header-text,#fff) !important; }
.main-header .logo:hover,
.main-header .navbar .sidebar-toggle:hover,
.main-header .navbar .nav > li > a:hover,
.main-header .navbar .nav > li > a:focus { background-color:var(--nmon-header-hover-bg,#489bc9) !important; color:var(--nmon-header-text,#fff) !important; }
.main-sidebar, .left-side, .sidebar { background-color:var(--nmon-sidebar-bg,#222d32) !important; }
.sidebar-menu > li > a, .sidebar-menu .treeview-menu > li > a, .user-panel > .info, .user-panel > .info > a { color:var(--nmon-sidebar-text,#b8c7ce) !important; }
.sidebar-menu > li.active > a, .sidebar-menu > li:hover > a,
.sidebar-menu .treeview-menu > li.active > a, .sidebar-menu .treeview-menu > li > a:hover {
  background-color:var(--nmon-sidebar-active-bg,#1e282c) !important; color:var(--nmon-sidebar-active-text,#fff) !important;
}
.sidebar-menu > li.active > a, .sidebar-menu > li:hover > a { border-left-color:var(--nmon-sidebar-accent,#5aaddd) !important; }
.content-wrapper, .right-side { background-color:var(--nmon-page-bg,#ecf0f5) !important; color:var(--nmon-content-text,#333) !important; }
a { color:var(--nmon-link,#438fbf); }
a:hover, a:focus { color:var(--nmon-link-hover,#337ca7); }
.box.box-primary, .nav-tabs-custom > .nav-tabs > li.active { border-top-color:var(--nmon-primary,#5aaddd) !important; }
.box.box-info { border-top-color:var(--nmon-info,#00c0ef) !important; }
.box.box-success { border-top-color:var(--nmon-success,#00a65a) !important; }
.box.box-warning { border-top-color:var(--nmon-warning,#f39c12) !important; }
.box.box-danger { border-top-color:var(--nmon-danger,#dd4b39) !important; }
.box.box-solid.box-primary > .box-header { background-color:var(--nmon-primary,#5aaddd) !important; color:var(--nmon-box-header-text,#fff) !important; }
.box.box-solid.box-info > .box-header { background-color:var(--nmon-info,#00c0ef) !important; color:var(--nmon-box-header-text,#fff) !important; }
.box.box-solid.box-success > .box-header { background-color:var(--nmon-success,#00a65a) !important; color:var(--nmon-box-header-text,#fff) !important; }
.box.box-solid.box-warning > .box-header { background-color:var(--nmon-warning,#f39c12) !important; color:var(--nmon-box-header-text,#fff) !important; }
.box.box-solid.box-danger > .box-header { background-color:var(--nmon-danger,#dd4b39) !important; color:var(--nmon-box-header-text,#fff) !important; }
.box.box-8solutions { border-top-color:var(--nmon-primary,#5aaddd) !important; }
.box.box-8solutions.box-solid { border-color:var(--nmon-primary,#5aaddd) !important; }
.box.box-8solutions.box-solid > .box-header { background:var(--nmon-primary,#5aaddd) !important; color:var(--nmon-box-header-text,#fff) !important; }
.btn-primary { background-color:var(--nmon-primary,#5aaddd) !important; border-color:var(--nmon-primary,#5aaddd) !important; }
.btn-info { background-color:var(--nmon-info,#00c0ef) !important; border-color:var(--nmon-info,#00c0ef) !important; }
.btn-success { background-color:var(--nmon-success,#00a65a) !important; border-color:var(--nmon-success,#00a65a) !important; }
.btn-warning { background-color:var(--nmon-warning,#f39c12) !important; border-color:var(--nmon-warning,#f39c12) !important; }
.btn-danger { background-color:var(--nmon-danger,#dd4b39) !important; border-color:var(--nmon-danger,#dd4b39) !important; }
.label-info, .bg-aqua { background-color:var(--nmon-info,#00c0ef) !important; }
.label-success, .bg-green { background-color:var(--nmon-success,#00a65a) !important; }
.label-warning, .bg-yellow { background-color:var(--nmon-warning,#f39c12) !important; }
.label-danger, .bg-red { background-color:var(--nmon-danger,#dd4b39) !important; }
.main-footer { background:var(--nmon-footer-bg,#fff) !important; color:var(--nmon-footer-text,#444) !important; border-top-color:var(--nmon-border,#d2d6de) !important; }
.table > thead > tr > th, .box, .nav-tabs-custom, .form-control { border-color:var(--nmon-border,#d2d6de); }

/* Design settings live preview */
.design-color-field .input-group-addon.design-color-swatch { min-width:38px; border-right:0; }
.design-color-field input[type=color] { width:58px; padding:3px; }
.design-preview { border:1px solid #d2d6de; overflow:hidden; min-height:330px; box-shadow:0 1px 2px rgba(0,0,0,.08); }
.design-preview-header { min-height:44px; padding:12px; display:flex; justify-content:space-between; }
.design-preview-header strong span { font-weight:300; }
.design-preview-main { display:flex; min-height:240px; }
.design-preview-sidebar { width:38%; padding:12px 0; }
.design-preview-sidebar > div { padding:9px 12px; border-left:3px solid transparent; }
.design-preview-content { flex:1; padding:14px; }
.design-preview-card { background:#fff; border:1px solid #e5e5e5; border-top:3px solid #ccc; margin-bottom:8px; padding:9px; }
.design-preview-footer { padding:8px 12px; border-top:1px solid #ddd; }

/* OS Update & Restart Planner */
.maintenance-planner-stats .maintenance-stat-box { min-height:105px; }
.maintenance-month-label { display:inline-block; min-width:120px; text-align:center; }
.maintenance-calendar { table-layout:fixed; margin-bottom:0; min-width:850px; }
.maintenance-calendar > thead > tr > th { text-align:center; width:14.285%; }
.maintenance-calendar-day, .maintenance-calendar-empty { height:128px; vertical-align:top !important; position:relative; padding:6px !important; }
.maintenance-calendar-empty { background:#f8f8f8; }
.maintenance-calendar-today { background:#eef7fc; box-shadow:inset 0 0 0 2px var(--nmon-primary,#5aaddd); }
.maintenance-calendar-date { font-weight:700; margin-bottom:6px; }
.maintenance-calendar-event { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; margin:3px 0; text-align:left; font-weight:400; }
.maintenance-calendar-event span { font-weight:700; }

/* InfraSec V1.25.0: terminal-session filters */
#security .infrasec-session-header .infrasec-session-total { margin-left:8px; }
#security .infrasec-session-filters { margin-right:8px; margin-top:-2px; }
#security .infrasec-session-filters .btn { padding:3px 8px; }
#security .infrasec-session-filters .badge { margin-left:4px; background:rgba(0,0,0,.14); color:inherit; }
#security .infrasec-session-filters .btn.active { font-weight:600; }
@media (max-width:767px) {
  #security .infrasec-session-filters { float:none!important; display:block; margin:8px 0 0; }
  #security .infrasec-session-header .infrasec-session-total { margin-top:2px; }
}

/* 1.25.3 server maintenance detail: compact three-card summary */
.maintenance-detail-summary .maintenance-summary-box { min-height: 205px; }
.maintenance-detail-summary .maintenance-summary-box .box-body { min-height: 155px; position: relative; }
.maintenance-summary-value { font-size: 20px; font-weight: 600; margin-bottom: 8px; }
.maintenance-summary-value small { font-size: 13px; font-weight: 400; }
.maintenance-summary-detail { margin-bottom: 6px; }
.maintenance-ready-line { line-height: 22px; }
@media (max-width: 991px) { .maintenance-detail-summary .maintenance-summary-box { min-height: 0; } .maintenance-detail-summary .maintenance-summary-box .box-body { min-height: 0; } }

/* 1.25.7 generic progress popup for long-running POST actions (Security Intelligence sync, re-evaluation) */
.nmon-wait[hidden] { display:none !important; }
.nmon-wait { position:fixed; z-index:2000; top:0; right:0; bottom:0; left:0; display:flex; align-items:center; justify-content:center; padding:24px; background:rgba(26,43,53,.68); backdrop-filter:blur(2px); }
.nmon-wait-panel { width:min(620px,94vw); padding:30px 34px; background:#fff; border-top:4px solid #5aaddd; box-shadow:0 20px 60px rgba(0,0,0,.28); text-align:center; }
.nmon-wait-spinner { font-size:48px; color:#5aaddd; margin-bottom:10px; }
.nmon-wait-panel h3 { margin:6px 0 8px; color:#294251; }
.nmon-wait-action { min-height:20px; font-weight:700; color:#438fbf; }
.nmon-wait-hint { color:#526672; }
.nmon-wait-progress { height:6px; margin:20px 0; background:#e7eef2; overflow:hidden; position:relative; }
.nmon-wait-progress span { position:absolute; top:0; bottom:0; left:0; width:34%; background:#5aaddd; animation:infrasec-ai-wait-progress 1.35s ease-in-out infinite; }
.nmon-wait-important { margin:18px 0 8px; padding:10px 12px; background:#fff7e5; border:1px solid #f1d79a; color:#805d11; }
body.nmon-wait-running { overflow:hidden; }
/* 1.25.9.1: the spinner and bar are the only sign that a long request is still running, so they keep moving
   when the OS asks for reduced motion (Windows "animation effects" off, RDP sessions) - just slower. Before,
   animation:none froze both and the bar jumped to the middle (static position in the centred panel). */
@media (prefers-reduced-motion: reduce) {
  .nmon-wait-spinner.fa-spin, #security .infrasec-ai-wait-spinner.fa-spin, #ai .infrasec-ai-wait-spinner.fa-spin { animation-duration:2.4s; }
  .nmon-wait-progress span, #security .infrasec-ai-wait-progress span, #ai .infrasec-ai-wait-progress span { animation-duration:2.6s; }
}

/* 1.25.7 Services tab (service metrics without credentials) */
#services .nmon-svc-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:8px 16px; margin:0 0 12px; }
#services .nmon-svc-legend { display:flex; flex-wrap:wrap; gap:4px 14px; font-size:12px; color:#687c89; margin-left:auto; }
#services .nmon-svc-legend i { display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:5px; }
/* 1.25.28: one grid, filter chips above it (approved mockup 14.09.); the per-category grids are gone */
#services .nmon-svc-chips { display:flex; flex-wrap:wrap; gap:6px; margin:0 0 12px; }
#services .nmon-svc-chip { font:inherit; font-size:11.5px; border:1px solid #cfdae1; background:#fff; color:#5d6f7b; border-radius:12px; padding:2px 9px 2px 8px; display:inline-flex; align-items:center; gap:5px; white-space:nowrap; cursor:pointer; line-height:1.5; }
#services .nmon-svc-chip i { width:7px; height:7px; border-radius:50%; display:inline-block; background:#b6c3cc; }
#services .nmon-svc-chip b { font-weight:700; color:#41525d; }
#services .nmon-svc-chip.on { background:#2b7fb8; border-color:#2b7fb8; color:#fff; }
#services .nmon-svc-chip.on b, #services .nmon-svc-chip.on i { color:#fff; background:#fff; }
#services .nmon-svc-chip.on b { background:transparent; }
#services .nmon-svc-chip.mut { border-style:dashed; color:#8a9aa5; }
#services .nmon-svc-chip:focus-visible { outline:2px solid #489bc9; outline-offset:2px; }
/* 1.25.36 (F4-60): the service tiles ARE .nmon-tile now - the same tile as everywhere else. What is left
   here is only what a tile that is a BUTTON needs: the cursor, the focus ring, the selected state. */
#services .nmon-tile[hidden] { display:none; }
#services button.nmon-tile { cursor:pointer; font:inherit; }
#services button.nmon-tile:focus-visible { outline:2px solid #489bc9; outline-offset:2px; }
#services button.nmon-tile[aria-selected="true"] { box-shadow:inset 0 0 0 2px #5aaddd; border-color:#5aaddd; }
#services .nmon-tiles { margin-bottom:14px; }
#services .nmon-svc-note { color:#8a9aa5; font-size:11px; line-height:1.4; }
#services .nmon-svc-note code { color:#5d6f7b; background:#f3f6f8; padding:0 3px; }
#services button.nmon-tile:hover { background:#f6f9fb; }
#services .nmon-svc-warn b, #services .nmon-svc-kpi.nmon-svc-warn .v { color:#c77c00; }
#services .nmon-svc-crit b, #services .nmon-svc-kpi.nmon-svc-crit .v { color:#dd4b39; }
#services .nmon-svc-detail { border-top:3px solid #5aaddd; }
#services .nmon-svc-dhead { display:flex; flex-wrap:wrap; align-items:center; gap:6px 12px; }
#services .nmon-svc-meta { font-size:12px; }
#services .nmon-svc-actions { margin-left:auto; display:flex; flex-wrap:wrap; gap:6px; }
#services .nmon-svc-mode-form { display:inline-flex; gap:4px; align-items:center; margin:0; }
#services .nmon-svc-mode-form[hidden] { display:none !important; }
#services .nmon-svc-mode-form select { width:auto; }
#services .nmon-svc-callout { margin:0 0 12px; padding:8px 12px; }
#services .nmon-svc-kpis { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); border:1px solid #e8eef2; border-radius:3px; margin-bottom:14px; }
#services .nmon-svc-kpi { padding:9px 12px; border-right:1px solid #e8eef2; border-bottom:1px solid #e8eef2; margin:0 -1px -1px 0; }
#services .nmon-svc-kpi .l { font-size:11px; color:#687c89; text-transform:uppercase; letter-spacing:.4px; }
#services .nmon-svc-kpi .v { font-size:21px; font-weight:600; font-variant-numeric:tabular-nums; }
#services .nmon-svc-charts { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr)); gap:14px; margin-bottom:14px; }
#services .nmon-svc-chart, #services .nmon-svc-panel { border:1px solid #e8eef2; border-radius:3px; padding:10px 12px; }
#services .nmon-svc-chart h4, #services .nmon-svc-panel h4 { margin:0 0 8px; font-size:14px; font-weight:600; }
#services .nmon-svc-lower { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr); gap:14px; }
#services .nmon-svc-lower > div { display:grid; gap:14px; align-content:start; }
@media (max-width:991px) { #services .nmon-svc-lower { grid-template-columns:1fr; } #services .nmon-svc-actions { margin-left:0; } }
/* 1.25.8.1: wide component tables (PHP versions/pools) never overlap the thresholds column */
@media (max-width:1399px) { #services .nmon-svc-lower { grid-template-columns:1fr; } }
#services .nmon-svc-lower > * { min-width:0; }
#services .nmon-svc-lower .nmon-svc-panel { overflow-x:auto; }
#services .nmon-svc-sources { list-style:none; margin:0; padding:0; display:grid; gap:6px; }
#services .nmon-svc-stage3 { background:#f6f8f9; border-style:dashed; }
#services .nmon-svc-cmd { display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
#services .nmon-svc-cmd code { flex:1 1 240px; overflow-x:auto; white-space:nowrap; background:#fff; border:1px solid #dfe8ee; padding:5px 8px; color:#2f3f4a; }
@media (prefers-reduced-motion: no-preference) { #services button.nmon-tile { transition:background .12s; } }

/* 1.25.8 Services tab: AI assistant (analysis presets + chat) */
/* 1.25.8.1 AI assistant: its own section below the metrics (divider + tinted band), roomier spacing */
#services .nmon-svc-ai { margin:32px 0 8px; }
#services .nmon-svc-ai-divider { height:0; border-top:1px solid #d3dde5; margin:0 0 24px; }
#services .nmon-svc-ai-band { background:#f5f8fa; border:1px solid #e1e8ee; border-radius:4px; padding:18px 20px 20px; }
#services .nmon-svc-ai-head { display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:10px 24px; margin:0 0 16px; }
#services .nmon-svc-ai-head h4 { margin:0 0 4px; font-size:18px; font-weight:600; color:#2f3f4a; }
#services .nmon-svc-ai-head h4 .fa { color:var(--nmon-primary,#5aaddd); margin-right:4px; }
#services .nmon-svc-ai-head .nmon-svc-ai-sub { color:#6b7c88; font-size:13px; }
#services .nmon-svc-ai-badges { display:flex; flex-wrap:wrap; gap:6px; align-items:center; padding-top:4px; }
#services .nmon-svc-ai-badges .label { font-size:11px; font-weight:600; padding:4px 8px; }
#services .nmon-svc-ai-grid { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); gap:18px; align-items:start; }
@media (max-width:1199px) { #services .nmon-svc-ai-grid { grid-template-columns:1fr; } }
#services .nmon-svc-ai-grid > .nmon-svc-panel { background:#fff; border-color:#e1e8ee; padding:16px 18px; }
#services .nmon-svc-ai-grid > .nmon-svc-panel > h4 { font-size:15px; margin:0 0 14px; }
#services .nmon-svc-ai-presets { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 16px; padding-bottom:16px; border-bottom:1px solid #edf1f4; }
#services .nmon-svc-ai-presets .btn { margin:0; }
#services .nmon-svc-ai-has { color:#00a65a; margin-left:2px; }
#services .btn-primary .nmon-svc-ai-has { color:#fff; }
#services .nmon-svc-ai-meta { display:flex; flex-wrap:wrap; align-items:center; gap:8px 10px; margin:0 0 14px; }
#services .nmon-svc-ai-meta .btn { margin-left:auto; }
#services .nmon-svc-ai-result .nmon-svc-callout { margin:0 0 16px; padding:10px 14px; line-height:1.5; }
#services .nmon-svc-ai-summary { margin:0 0 6px; line-height:1.65; font-size:14px; }
#services .nmon-svc-ai-summary p { margin:0 0 8px; }
#services .nmon-svc-ai-summary p:last-child { margin-bottom:0; }
#services .nmon-svc-ai-result h5 { margin:20px 0 8px; font-weight:600; font-size:12px; text-transform:uppercase; letter-spacing:.6px; color:#687c89; }
#services .nmon-svc-ai-result ul { padding-left:20px; margin:0; }
#services .nmon-svc-ai-result ul li { margin-bottom:5px; line-height:1.5; }
#services .nmon-svc-ai-checks { padding-left:22px; margin:0; }
#services .nmon-svc-ai-checks > li { margin-bottom:16px; line-height:1.5; }
#services .nmon-svc-ai-checks > li:last-child { margin-bottom:0; }
#services .nmon-svc-ai-checks .label { margin-left:6px; vertical-align:1px; }
#services .nmon-svc-ai-checks .nmon-svc-ai-expl { color:#6b7c88; font-size:12px; margin:3px 0 6px; }
#services .nmon-svc-ai-checks .nmon-svc-cmd { margin-top:6px; }
#services .nmon-svc-ai-empty { margin:4px 0 12px; }
#services .nmon-svc-ai-sessions { display:flex; gap:8px; margin-bottom:12px; }
#services .nmon-svc-ai-sessions select { flex:1 1 auto; min-width:0; }
#services .nmon-svc-ai-messages { max-height:460px; overflow-y:auto; display:flex; flex-direction:column; gap:12px; padding:12px; margin-bottom:12px; background:#fafcfd; border:1px solid #edf1f4; border-radius:3px; min-height:120px; }
#services .nmon-svc-ai-msg { max-width:90%; padding:10px 12px; border-radius:4px; border:1px solid #e3eaef; background:#fff; line-height:1.55; }
#services .nmon-svc-ai-msg.user { align-self:flex-end; background:#eaf4fb; border-color:#cfe3f1; }
#services .nmon-svc-ai-msg-meta { font-size:11px; color:#7a8a96; margin-bottom:4px; }
#services .nmon-svc-ai-msg-body pre { white-space:pre-wrap; word-break:break-word; margin:8px 0; }
#services .nmon-svc-ai-msg-body p { margin:0 0 8px; }
#services .nmon-svc-ai-msg-body p:last-child { margin-bottom:0; }
#services .nmon-svc-ai-quick { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px; }
#services .nmon-svc-ai-quick .btn { white-space:normal; text-align:left; margin:0; }
#services .nmon-svc-ai-form { display:flex; gap:8px; align-items:flex-end; }
#services .nmon-svc-ai-form textarea { resize:vertical; }

/* 1.25.9 asset tags */
/* 1.25.9.1: a little more air between the name and its tags (servers, websites, checks) */
.nmon-tags { margin-top:6px; margin-bottom:1px; display:flex; flex-wrap:wrap; gap:4px 5px; }
.nmon-tag { display:inline-block; color:#fff; font-size:11px; line-height:1; padding:3px 7px; border-radius:10px; cursor:pointer; white-space:nowrap; max-width:180px; overflow:hidden; text-overflow:ellipsis; }
.nmon-tag-filter { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:0 0 10px; }
.nmon-tag-chip { display:inline-flex; align-items:center; gap:5px; border:1px solid #d7e0e6; background:#fff; color:#34444f; border-radius:14px; padding:3px 10px; font-size:12px; cursor:pointer; }
.nmon-tag-chip small { color:#8796a1; }
.nmon-tag-chip:hover { border-color:#b7c6d0; }
.nmon-tag-chip.active { background:#34444f; border-color:#34444f; color:#fff; }
.nmon-tag-chip.active small { color:#d6dee4; }
.nmon-tag-dot { width:8px; height:8px; border-radius:50%; background:var(--tag-color,#3c8dbc); display:inline-block; }
/* 1.25.18 customer filter, next to the tag chips above a list */
.nmon-list-filter { margin-bottom:8px; }
.nmon-list-filter-select { display:inline-block; width:auto; min-width:180px; max-width:100%; height:26px; padding:2px 6px; font-size:12px; border-radius:14px; border-color:#d7e0e6; }
.nmon-list-tenant { font-size:11px; color:#8796a1; margin-top:2px; }
.nmon-list-tenant .fa { margin-right:3px; }
/* 1.25.19 password vault */
.nmon-vault-filter { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:0 0 12px; }
.nmon-vault-filter .form-group { margin:0; }
.nmon-vault-filter .form-control { width:auto; min-width:150px; }
.nmon-vault-filter .pull-right { margin-left:auto; }
.nmon-vault-keyver { margin-left:8px; font-size:11px; color:#8796a1; border:1px solid #d7e0e6; border-radius:10px; padding:1px 8px; }
.nmon-vault-value { font-family:Menlo,Consolas,monospace; letter-spacing:1px; }
.nmon-vault-reveal .help-block { margin-top:6px; font-size:11px; }
.nmon-vault-note { margin-top:8px; padding:8px 10px; background:#f7f9fa; border-left:3px solid #d7e0e6; font-size:12px; }
.nmon-vault-dl dt { width:110px; text-align:left; color:#8796a1; font-weight:normal; }
.nmon-vault-dl dd { margin-left:120px; }
.nmon-vault-url { word-break:break-all; }
.nmon-vault-table { font-size:12px; }
.nmon-vault-table .text-muted { margin-left:6px; }
.nmon-vault-ip { font-family:Menlo,Consolas,monospace; font-size:11px; color:#8796a1; }
/* 1.25.9 software lifecycle */
#services .nmon-svc-lc { margin-left:2px; }
.nmon-lifecycle-table td { vertical-align:middle !important; }

/* 1.25.10 comments on servers, websites and checks */
.nmon-comments { max-width:980px; }
.nmon-comments-head { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 14px; margin:0 0 12px; }
.nmon-comments-head h4 { margin:0; font-weight:600; color:#294251; }
.nmon-comments-head .badge { background:#5aaddd; vertical-align:2px; }
.nmon-comments-compose { background:#f5f8fa; border:1px solid #e1e8ee; border-radius:4px; padding:12px 14px; margin-bottom:18px; }
.nmon-comments-compose textarea, .nmon-comment-edit textarea { resize:vertical; min-height:70px; line-height:1.5; }
.nmon-comments-bar { display:flex; flex-wrap:wrap; align-items:center; gap:8px 16px; margin-top:8px; }
.nmon-comments-bar label { margin:0; font-weight:normal; display:inline-flex; align-items:center; gap:6px; }
.nmon-comments-bar select { width:auto; display:inline-block; }
.nmon-comments-spacer { flex:1 1 auto; }
.nmon-comments-pin .fa { color:#c7902a; }
.nmon-comments-list { display:flex; flex-direction:column; gap:10px; }
.nmon-comments-empty { padding:14px 0; }
.nmon-comment { display:flex; gap:12px; padding:12px 14px; border:1px solid #e3eaef; border-radius:4px; background:#fff; }
.nmon-comment.is-pinned { border-color:#f0d48a; background:#fffbf0; }
.nmon-comment-avatar { flex:0 0 34px; width:34px; height:34px; border-radius:50%; background:#dfeaf2; color:#2f5a73; font-size:12px; font-weight:700; display:flex; align-items:center; justify-content:center; letter-spacing:.5px; }
.nmon-comment-main { flex:1 1 auto; min-width:0; }
.nmon-comment-meta { display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; font-size:12px; margin-bottom:5px; }
.nmon-comment-meta strong { font-size:13px; color:#294251; }
.nmon-comment-cat { background:#8a99a4; }
.nmon-comment-cat.cat-maintenance { background:#3c8dbc; }
.nmon-comment-cat.cat-customer { background:#605ca8; }
.nmon-comment-cat.cat-incident { background:#dd4b39; }
.nmon-comment-body { line-height:1.55; color:#2d3a42; overflow-wrap:anywhere; }
.nmon-comment-body code { white-space:pre-wrap; }
.nmon-comment-actions { margin-top:6px; }
.nmon-comment-actions .btn-link { padding-left:0; margin-right:12px; color:#5b6f7c; }
.nmon-comment-actions .btn-link.text-red { color:#c0392b; }
.nmon-comments-pinned { display:flex; flex-direction:column; gap:4px; margin:0 0 12px; padding:9px 12px; border:1px solid #f0d48a; border-left:4px solid #e0a800; background:#fffbf0; border-radius:3px; }
.nmon-comments-pinned-item { line-height:1.45; }
.nmon-comments-pinned-item .fa { color:#c7902a; margin-right:4px; }
.nmon-comments-pinned-link { align-self:flex-start; font-size:12px; }
.nmon-cmt-badge { display:inline-block; margin-left:4px; font-size:11px; color:#5b6f7c; white-space:nowrap; }
.nmon-cmt-badge.is-pinned { color:#b07b12; }
.nav-tabs .nmon-tab-badge { background:#8a99a4; font-size:10px; padding:2px 6px; margin-left:3px; }

/* 1.25.10 calendar sync status in the Maintenance Planner header */
.nmon-calendar-sync-badge { display:inline-block; margin-top:6px; padding:3px 10px; border-radius:12px; font-size:12px; border:1px solid #cfe3f1; background:#f2f9fd; color:#2f5a73; }
.nmon-calendar-sync-badge.is-warn { border-color:#f1d79a; background:#fff7e5; color:#805d11; }
.nmon-calendar-sync-badge:hover { text-decoration:none; filter:brightness(.97); }

/* 1.25.11 notes tab: table, visual editor form, attachments, view dialog */
.nmon-notes [hidden], .nmon-note-modal [hidden] { display:none !important; }
.nmon-notes-head { display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:10px 16px; margin:0 0 14px; }
.nmon-notes-head h4 { margin:0 0 3px; font-weight:600; color:#294251; }
.nmon-notes-head .badge { background:#5aaddd; vertical-align:2px; }
.nmon-note-form { background:#f7f9fb; border:1px solid #dfe7ed; border-top:3px solid #3c8dbc; border-radius:3px; padding:12px 16px 14px; margin:0 0 18px; }
.nmon-note-form-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.nmon-note-form-title { margin:0; font-size:15px; font-weight:600; color:#294251; }
.nmon-note-form .note-editor.note-frame { border-color:#d2dce3; background:#fff; margin-bottom:0; }
.nmon-note-form .note-editor .note-toolbar { background:#fbfcfd; }
.nmon-note-form textarea.nmon-note-editor { width:100%; min-height:160px; }
.nmon-note-drop { position:relative; display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; margin:0; padding:12px 14px; border:1px dashed #b9c8d3; border-radius:3px; background:#fff; font-weight:normal; cursor:pointer; color:#3d5566; }
.nmon-note-drop .fa { font-size:20px; color:#3c8dbc; }
.nmon-note-drop.is-over { border-color:#3c8dbc; background:#eef6fb; }
.nmon-note-drop input[type=file] { position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; }
.nmon-note-drop:focus-within { outline:2px solid #3c8dbc; outline-offset:2px; }
.nmon-note-files { list-style:none; margin:6px 0; padding:0; }
.nmon-note-files li { padding:3px 0; overflow-wrap:anywhere; }
.nmon-note-files li .fa { width:16px; color:#6b7f8c; }
.nmon-note-files li.is-removed a { text-decoration:line-through; color:#98a6af; }
.nmon-note-files li.is-new { color:#2e6a3a; }
.nmon-note-form-foot { display:flex; flex-wrap:wrap; align-items:center; gap:8px 10px; margin-top:6px; }
.nmon-note-pin { margin:0 auto 0 0; font-weight:normal; }
/* 1.25.12 notes writing assistant */
.nmon-note-ai-group .btn-ai { background:#3c8dbc; border-color:#367fa9; color:#ffffff; font-weight:600; }
.nmon-note-ai-group .btn-ai:hover, .nmon-note-ai-group .btn-ai:focus, .nmon-note-ai-group .btn-ai:active { background:#367fa9; border-color:#2b6a8f; color:#ffffff; }
.nmon-note-ai-group .dropdown-menu > li > a .fa { width:16px; color:#3c8dbc; }
.note-toolbar .note-nmonai .btn { color:#ffffff; }
.nmon-note-ai { margin:0 0 14px; border:1px solid #c5dcea; border-left:3px solid #3c8dbc; border-radius:3px; background:#f6fafd; }
.nmon-note-ai-head { display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; padding:8px 12px; border-bottom:1px solid #d8e8f2; color:#2e6f95; }
.nmon-note-ai-head strong .fa { margin-right:4px; }
.nmon-note-ai-head .text-muted { font-size:12px; }
.nmon-note-ai-body { padding:10px 12px; }
.nmon-note-ai-subject { font-size:15px; font-weight:600; margin:0 0 8px; overflow-wrap:anywhere; }
.nmon-note-ai-html { max-height:340px; overflow:auto; padding:8px 10px; background:#fff; border:1px solid #ece8f5; border-radius:2px; }
.nmon-note-ai-html > :last-child { margin-bottom:0; }
.nmon-note-ai-changes { margin:8px 0 0; font-size:12px; color:#5d6b75; }
.nmon-note-ai-tabs { margin:0 0 8px; border-bottom:1px solid #e7e1f6; }
.nmon-note-ai-tabs > li > a { padding:4px 10px; font-size:12px; color:#2e6f95; border-radius:2px 2px 0 0; }
.nmon-note-ai-tabs > li.active > a, .nmon-note-ai-tabs > li.active > a:hover, .nmon-note-ai-tabs > li.active > a:focus { background:#fff; border-color:#d8e8f2 #d8e8f2 #fff; color:#2e6f95; font-weight:600; }
.nmon-note-ai-tabs > li.nmon-note-ai-legend { margin-left:auto; padding:5px 2px 0; font-size:11px; color:#6b5f8f; }
.nmon-note-ai-tabs > li.nmon-note-ai-legend del, .nmon-note-ai-tabs > li.nmon-note-ai-legend ins { margin-left:6px; }
.nmon-note-ai-diff { max-height:340px; overflow:auto; padding:8px 10px; background:#fff; border:1px solid #ece8f5; border-radius:2px; line-height:1.6; }
.nmon-note-ai-diff p { margin:0 0 6px; overflow-wrap:anywhere; }
.nmon-note-ai-diff > :last-child { margin-bottom:0; }
.nmon-note-ai-diff del, .nmon-note-ai-tabs del { background:#fde8e6; color:#a23c31; text-decoration:line-through; padding:0 2px; border-radius:2px; }
.nmon-note-ai-diff ins, .nmon-note-ai-tabs ins { background:#e3f5e6; color:#2c6b39; text-decoration:none; padding:0 2px; border-radius:2px; }
.nmon-note-ai-same { margin:0 0 8px; padding:6px 10px; font-size:12px; }
.nmon-note-ai-subject-new { color:#2c6b39; }
.nmon-note-ai-foot { display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; padding:8px 12px; border-top:1px solid #e7e1f6; }
.nmon-note-ai-foot .nmon-note-ai-hint { margin-right:auto; font-size:12px; color:#6b5f8f; }
.nmon-note-ai-busy .fa-spin { margin-right:4px; }
.nmon-note-pin .fa { color:#c7902a; }
.nmon-notes-table { margin-top:4px; }
.nmon-notes-table th.nmon-notes-id { width:70px; }
.nmon-notes-table th.nmon-notes-files { width:100px; }
.nmon-notes-table .nmon-notes-date { width:160px; white-space:nowrap; }
.nmon-notes-table .nmon-notes-actions { width:132px; white-space:nowrap; text-align:right; }
.nmon-notes-table .nmon-notes-actions .btn-link { color:#4f6472; font-size:15px; padding:0 5px; }
.nmon-notes-table .nmon-notes-actions .btn-link.text-red { color:#c0392b; }
.nmon-notes-subject { font-weight:600; }
.nmon-notes-excerpt { font-size:12px; margin-top:2px; max-width:640px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.nmon-notes-edited { font-size:11px; margin-top:1px; }
.nmon-comment-cat.cat-hardware { background:#00a65a; }
.nmon-note-modal .modal-title .label { font-size:11px; vertical-align:3px; }
.nmon-note-meta { font-size:12px; margin-top:3px; }
.nmon-note-body { line-height:1.6; color:#2d3a42; overflow-wrap:anywhere; }
.nmon-note-body table { border-collapse:collapse; margin:8px 0; }
.nmon-note-body td, .nmon-note-body th { border:1px solid #d6dee4; padding:4px 8px; }
.nmon-note-body pre { white-space:pre-wrap; }
.nmon-note-body blockquote { font-size:inherit; border-left-color:#c9d6de; }
.nmon-ta-center { text-align:center; } .nmon-ta-right { text-align:right; } .nmon-ta-justify { text-align:justify; }
.nmon-note-attachments { margin-top:16px; border-top:1px solid #e6ecf0; padding-top:10px; }
.nmon-note-attachments h5 { font-weight:600; color:#294251; }
.nmon-note-gallery { display:grid; grid-template-columns:repeat(auto-fill, minmax(170px, 1fr)); gap:10px; margin-bottom:10px; }
.nmon-note-gallery figure { margin:0; border:1px solid #e0e7ec; border-radius:3px; background:#fafbfc; overflow:hidden; }
.nmon-note-gallery img { display:block; width:100%; height:130px; object-fit:cover; background:#eef2f5; }
.nmon-note-gallery figcaption { padding:5px 7px; font-size:12px; overflow-wrap:anywhere; }
.nmon-comment-cat.cat-documentation { background:#39cccc; }

/* nMon 1.25.13 network monitoring (Omada, read-only) */
.nmon-net [hidden] { display:none !important; }
.nmon-net .nmon-mono { font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace; font-size:12px; }
.nmon-net .nmon-num { font-variant-numeric:tabular-nums; white-space:nowrap; }
.nmon-net-small { font-size:12px; }
.nmon-net-kpis { display:grid; grid-template-columns:repeat(auto-fit, minmax(190px, 1fr)); gap:12px; margin:0 0 16px; }
.nmon-net-kpi { background:#fff; border:1px solid #dfe7ec; border-left:4px solid #5aaddd; padding:12px 14px; display:flex; flex-direction:column; gap:4px; min-width:0; }
.nmon-net-kpi.is-warn { border-left-color:#f39c12; }
.nmon-net-kpi.is-crit { border-left-color:#dd4b39; }
.nmon-net-kpi-label { color:#5f717c; font-size:12px; text-transform:uppercase; letter-spacing:.03em; }
.nmon-net-kpi-value { font-size:26px; font-weight:600; color:#26343c; font-variant-numeric:tabular-nums; line-height:1.1; }
.nmon-net-kpi-value small { font-size:14px; color:#7b8c96; font-weight:400; }
.nmon-net-kpi-states .label { font-size:11px; }
.nmon-net-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; margin:0 0 14px; }
.nmon-net-empty h4 { margin-top:4px; color:#294251; }
.nmon-net-empty p { max-width:760px; line-height:1.55; }
.nmon-net-controller .box-header { display:flex; flex-wrap:wrap; align-items:center; gap:6px 12px; padding-right:12px; }
.nmon-net-controller .box-header .box-tools { position:static; margin-left:auto; }
.nmon-net-meta { display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; font-size:12px; }
.nmon-net-callout { margin:0 0 12px; padding:8px 12px; }
.nmon-net-table > thead > tr > th { font-size:12px; color:#5f717c; font-weight:600; white-space:nowrap; }
.nmon-net-table td { vertical-align:middle !important; }
.nmon-net-muted td { color:#95a3ab; }
.nmon-net-reason { font-size:12px; max-width:520px; }
.nmon-net-posture { display:inline-block; min-width:78px; text-align:center; letter-spacing:.03em; }
.nmon-net-posture-lg { font-size:12px; vertical-align:4px; padding:4px 10px; }
.nmon-net-tabtools { padding:5px 8px 0 0; }
.nmon-net-h { font-size:15px; font-weight:600; color:#294251; margin:20px 0 10px; }
.nmon-net-h .fa { color:#5aaddd; margin-right:3px; }
.tab-content > .row:first-child .nmon-net-h, .tab-content > .nmon-net-h:first-child { margin-top:4px; }
.nmon-net-reasons { list-style:none; padding:0; margin:0; }
.nmon-net-reasons li { padding:7px 10px; border-left:3px solid #c7d3da; background:#f7f9fa; margin-bottom:5px; line-height:1.45; }
.nmon-net-reasons li.is-critical { border-left-color:#dd4b39; background:#fdf3f2; }
.nmon-net-reasons li.is-warning { border-left-color:#f39c12; background:#fef9ef; }
.nmon-net-reasons .label { font-size:10px; margin-right:4px; }
.nmon-net-notes { padding-left:18px; }
.nmon-net-sources td { padding:4px 6px !important; }
.nmon-net-mini { display:grid; grid-template-columns:repeat(3, 1fr); gap:8px; margin-top:8px; }
.nmon-net-mini > div { background:#f5f8fa; border:1px solid #e3eaef; padding:8px 10px; display:flex; flex-direction:column; }
.nmon-net-mini span { font-size:11px; color:#687a85; }
.nmon-net-mini strong { font-size:18px; font-variant-numeric:tabular-nums; color:#26343c; }
.nmon-net-chart { position:relative; height:240px; }
.nmon-net-chart-sm { height:200px; }
.nmon-net-filterbar { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:0 0 12px; }
.nmon-net-filterbar .form-control { width:auto; min-width:0; }
.nmon-net-statshead { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px; margin-top:22px; }
.nmon-net-statshead .nmon-net-h { margin:0; }
.nmon-net-statgrid { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:14px; margin-top:10px; }
.nmon-net-panel { background:#fff; border:1px solid #e1e8ee; padding:12px 14px; min-width:0; }
.nmon-net-panel h5 { margin:0 0 10px; font-weight:600; color:#3a4b55; }
.nmon-net-panel-wide { grid-column:1 / -1; }
.nmon-net-top { list-style:none; padding:0; margin:0; counter-reset:none; }
.nmon-net-top li { margin:0 0 7px; }
.nmon-net-top-row { display:flex; align-items:center; gap:6px; font-size:12px; }
.nmon-net-top-row > span:first-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
.nmon-net-top-row strong { margin-left:auto; font-variant-numeric:tabular-nums; }
.nmon-net-bar { height:4px; background:#edf1f4; margin-top:3px; }
.nmon-net-bar span { display:block; height:4px; background:#5aaddd; }
.nmon-net-recs summary { cursor:pointer; font-size:12px; color:#3c8dbc; margin-top:3px; }
.nmon-net-recs ul { padding-left:18px; margin:4px 0 0; font-size:12px; max-width:560px; }
.nmon-net-incidents td:nth-child(2) { min-width:260px; }
.nmon-net-form .nmon-net-test { margin:12px 0 0; }
.nmon-net-site-list { display:flex; flex-wrap:wrap; gap:4px 16px; }
.nmon-net-site-list .checkbox-inline { margin-left:0; }
.nmon-net-sites { margin-top:14px; }
.nmon-net-cert { margin-top:12px; padding:10px 12px; border:1px solid #e1e8ee; background:#f8fafb; }
.nmon-net-cert .dl-horizontal dt { width:150px; } .nmon-net-cert .dl-horizontal dd { margin-left:165px; overflow-wrap:anywhere; }
.nmon-net-fp { overflow-wrap:anywhere; }
.nmon-net-help ol { padding-left:18px; line-height:1.55; }
.nmon-net-help li { margin-bottom:6px; }
.nmon-net-ai-head { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px 20px; margin-bottom:14px; }
.nmon-net-ai-head h4 { margin:0 0 3px; font-weight:600; color:#294251; }
.nmon-net-ai-grid { display:grid; grid-template-columns:minmax(0, 1.25fr) minmax(0, 1fr); gap:16px; align-items:start; }
.nmon-net-ai-presets { display:flex; flex-wrap:wrap; gap:6px; padding-bottom:12px; margin-bottom:12px; border-bottom:1px solid #edf1f4; }
.nmon-net-ai-meta { display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; margin-bottom:10px; }
.nmon-net-ai-meta .btn { margin-left:auto; }
.nmon-net-ai-summary { line-height:1.55; }
.nmon-net-ai-findings li { margin-bottom:8px; line-height:1.45; }
.nmon-net-ai-messages { max-height:420px; overflow-y:auto; margin-bottom:10px; }
.nmon-net-ai-msg { padding:8px 10px; margin-bottom:8px; background:#f5f8fa; border-left:3px solid #c7d3da; overflow-wrap:anywhere; }
.nmon-net-ai-msg.assistant { background:#f2f8fc; border-left-color:#5aaddd; }
.nmon-net-ai-msg pre { white-space:pre-wrap; }
.nmon-net-ai-quick { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:8px; }
.nmon-net-ai-quick .btn { white-space:normal; text-align:left; }
.nmon-net-ai-form { display:flex; flex-direction:column; gap:6px; align-items:flex-end; }
@media (max-width:991px) { .nmon-net-statgrid, .nmon-net-ai-grid { grid-template-columns:1fr; } .nmon-net-mini { grid-template-columns:1fr 1fr 1fr; } }
@media (max-width:600px) { .nmon-net-mini { grid-template-columns:1fr; } .nmon-net-controller .box-header .box-tools { margin-left:0; } }

/* ---- 1.25.16 IT inventory: list, detail view and template builder -------------------------------- */
.nmon-inv-toolbar { display:flex; flex-wrap:wrap; align-items:flex-end; gap:8px; }
.nmon-inv-toolbar .form-group { margin-bottom:0; }
/* The selection counter sits on its own line so the bulk controls below it start flush left. */
.nmon-inv-selected { display:block; width:100%; margin:0 0 8px; font-size:12px; color:#7b8a97; }
.nmon-inv-selected strong { color:#2f4a5c; }
.nmon-inv-bulk { display:flex; flex-wrap:wrap; align-items:center; gap:6px; padding:10px 12px; margin-bottom:12px;
  background:#f4f8fb; border:1px solid #e1ebf2; border-radius:4px; }
.nmon-inv-bulk .form-control { max-width:200px; }
.nmon-inv-bulk-sep { width:1px; align-self:stretch; background:#dde7ee; margin:0 4px; }

.nmon-inv-table { border-collapse:separate; border-spacing:0; }
.nmon-inv-table > thead > tr > th { border-bottom:2px solid #e6edf2; font-size:11px; letter-spacing:.4px; text-transform:none;
  color:#7b8a97; font-weight:600; padding:10px 12px; white-space:nowrap; }
.nmon-inv-table > tbody > tr > td { padding:11px 12px; vertical-align:middle; border-top:1px solid #eef2f5; }
.nmon-inv-table > tbody > tr:hover { background:#f7fafc; }
.nmon-inv-name { font-weight:600; color:#2f4a5c; }
.nmon-inv-name a { color:#2f4a5c; }
.nmon-inv-sub { display:block; font-size:11px; color:#93a2ad; margin-top:2px; }
.nmon-inv-listfields { margin-top:4px; display:flex; flex-wrap:wrap; gap:4px 10px; }
.nmon-inv-listfields span { font-size:11px; color:#8496a3; background:#f2f5f7; border-radius:3px; padding:1px 6px; }
.nmon-inv-mono { font-family:Menlo,Consolas,monospace; font-size:11px; }
.nmon-inv-empty { padding:38px 20px; text-align:center; color:#93a2ad; }
.nmon-inv-empty i { font-size:34px; display:block; margin-bottom:10px; color:#cfd9e0; }

.nmon-inv-type { display:inline-flex; align-items:center; gap:6px; color:#5a6b78; }
.nmon-inv-type i { width:16px; text-align:center; color:#8fa3b1; }
.nmon-inv-chip { display:inline-block; padding:2px 9px; border-radius:11px; font-size:11px; line-height:1.6; font-weight:600; white-space:nowrap; }
.nmon-inv-chip-in_use { background:#e4f5ec; color:#218c5a; }
.nmon-inv-chip-spare { background:#e8f2fb; color:#2b6ea8; }
.nmon-inv-chip-repair { background:#fdf1e0; color:#a96a12; }
.nmon-inv-chip-retired { background:#eef1f4; color:#6b7a86; }
.nmon-inv-chip-sold { background:#eef1f4; color:#6b7a86; }
.nmon-inv-warranty { display:inline-flex; align-items:center; gap:5px; font-size:12px; }
.nmon-inv-warranty i { font-size:11px; }
.nmon-inv-warranty.ok { color:#218c5a; }
.nmon-inv-warranty.soon { color:#a96a12; }
.nmon-inv-warranty.expired { color:#c34a3c; }
.nmon-inv-warranty.none { color:#a8b3bc; }
.nmon-inv-actions { display:flex; gap:4px; justify-content:flex-end; }
.nmon-inv-actions .btn { border:0; background:transparent; color:#8fa3b1; padding:4px 7px; }
.nmon-inv-actions .btn:hover { background:#eef3f7; color:#2f4a5c; }
.nmon-inv-actions .btn.danger:hover { background:#fdeceb; color:#c34a3c; }

/* detail dialog */
.nmon-inv-head { display:flex; flex-wrap:wrap; align-items:flex-start; gap:14px; padding:0 0 16px; border-bottom:1px solid #eef2f5; margin-bottom:18px; }
.nmon-inv-head-icon { width:46px; height:46px; border-radius:10px; background:#eef4f9; color:#4a7fa5; display:flex; align-items:center;
  justify-content:center; font-size:20px; flex:0 0 auto; }
.nmon-inv-head-main { flex:1 1 240px; min-width:0; }
.nmon-inv-head-main h4 { margin:0 0 4px; font-size:19px; font-weight:600; color:#2f4a5c; overflow-wrap:anywhere; }
.nmon-inv-head-meta { display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; font-size:12px; color:#7b8a97; }
.nmon-inv-head-side { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }

.nmon-inv-facts { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:10px; margin-bottom:20px; }
.nmon-inv-fact { padding:10px 12px; background:#f7fafc; border:1px solid #eef2f5; border-radius:4px; min-width:0; }
.nmon-inv-fact .k { display:block; font-size:11px; color:#93a2ad; margin-bottom:3px; }
.nmon-inv-fact .v { display:block; font-size:14px; font-weight:600; color:#2f4a5c; overflow-wrap:anywhere; }

.nmon-inv-section { margin-bottom:20px; }
.nmon-inv-section > h5 { margin:0 0 10px; font-size:12px; font-weight:700; letter-spacing:.5px; text-transform:uppercase;
  color:#8fa3b1; padding-bottom:6px; border-bottom:1px solid #eef2f5; }
.nmon-inv-pairs { display:grid; grid-template-columns:repeat(auto-fit, minmax(230px, 1fr)); gap:2px 22px; }
.nmon-inv-pair { display:flex; gap:12px; padding:6px 0; border-bottom:1px dotted #eef2f5; min-width:0; }
.nmon-inv-pair dt { flex:0 0 42%; font-weight:500; color:#7b8a97; overflow-wrap:anywhere; }
.nmon-inv-pair dd { flex:1 1 auto; margin:0; color:#2f4a5c; overflow-wrap:anywhere; }
.nmon-inv-pair dd.empty { color:#c3ccd3; }
.nmon-inv-pair .fa-link { color:#9fb4c2; font-size:10px; margin-left:4px; }
.nmon-inv-pre { white-space:pre-wrap; font-size:12px; line-height:1.5; margin:0; }
.nmon-inv-sync { display:inline-block; font-size:10px; padding:1px 6px; border-radius:8px; background:#eef4f9; color:#4a7fa5; margin-left:6px; }
.nmon-inv-note { background:#fffdf3; border:1px solid #f3ecd2; border-radius:4px; padding:10px 12px; white-space:pre-wrap; line-height:1.55; }

/* form */
.nmon-inv-form .nmon-inv-section > h5 { margin-top:4px; }
.nmon-inv-form .form-group { margin-bottom:12px; }
.nmon-inv-form label { font-weight:600; font-size:12px; color:#5a6b78; }
.nmon-inv-form .help-block { font-size:11px; margin:4px 0 0; }
.nmon-inv-locked { background:#f4f7f9 !important; cursor:not-allowed; }
.nmon-inv-hint { font-size:11px; color:#93a2ad; }
.nmon-inv-hint a { cursor:pointer; }
.nmon-inv-typebar { display:flex; flex-wrap:wrap; gap:8px; padding:12px; background:#f7fafc; border:1px solid #eef2f5; border-radius:4px; margin-bottom:16px; }
.nmon-inv-typebar .form-group { margin-bottom:0; flex:1 1 200px; }

/* template builder */
.nmon-tpl-grid { display:grid; grid-template-columns:minmax(220px, 300px) minmax(0, 1fr); gap:16px; align-items:start; }
.nmon-tpl-list { border:1px solid #eef2f5; border-radius:4px; overflow:hidden; }
.nmon-tpl-group { border-bottom:1px solid #eef2f5; }
.nmon-tpl-group:last-child { border-bottom:0; }
.nmon-tpl-group > h5 { margin:0; padding:8px 12px; background:#f7fafc; font-size:11px; font-weight:700; letter-spacing:.4px;
  text-transform:uppercase; color:#8fa3b1; }
.nmon-tpl-item { display:block; padding:9px 12px; border-top:1px solid #f2f6f8; color:#2f4a5c; text-decoration:none; }
.nmon-tpl-item:hover { background:#f4f8fb; color:#2f4a5c; text-decoration:none; }
.nmon-tpl-item.active { background:#eef4f9; box-shadow:inset 3px 0 0 #4a7fa5; }
.nmon-tpl-item .n { font-weight:600; display:block; }
.nmon-tpl-item .m { display:block; font-size:11px; color:#93a2ad; margin-top:2px; }
.nmon-tpl-field { border:1px solid #eef2f5; border-radius:4px; padding:12px; margin-bottom:10px; background:#fff; }
.nmon-tpl-field.dragging { opacity:.5; }
.nmon-tpl-field-head { display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.nmon-tpl-field-head .handle { cursor:grab; color:#c3ccd3; padding:2px 4px; }
.nmon-tpl-field-head .idx { font-size:11px; color:#a8b3bc; }
.nmon-tpl-field-head .btn { margin-left:auto; }
.nmon-tpl-row { display:grid; grid-template-columns:repeat(auto-fit, minmax(160px, 1fr)); gap:10px; }
.nmon-tpl-row .form-group { margin-bottom:0; }
.nmon-tpl-sys { background:#f7fbfd; border-color:#dcebf4; }
.nmon-tpl-preview .form-control[disabled] { background:#f4f7f9; }
.nmon-tpl-empty { padding:26px; text-align:center; color:#93a2ad; border:1px dashed #dde7ee; border-radius:4px; }
@media (max-width:991px) { .nmon-tpl-grid { grid-template-columns:1fr; } }
@media (max-width:600px) { .nmon-inv-pair { flex-direction:column; gap:0; } .nmon-inv-pair dt { flex:none; } }

/* 1.25.29: the legend of a derived drawing. HTML rather than SVG, so it wraps on a narrow screen
   instead of scaling down with the picture until nobody can read it. */
.nmon-diagram-legend { display:flex; flex-wrap:wrap; align-items:center; gap:14px; margin:8px 0 0; color:#7a8a99; font-size:12px; }
.nmon-diagram-legend-item { display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
.nmon-diagram-legend-dot { display:inline-block; width:11px; height:11px; border-radius:2px; border:1px solid #5a7fa6; }
/* A rack elevation must fit on the page without scrolling - the whole point of the picture is that
   you take it in at a glance. The SVG keeps its aspect ratio, so bounding the height is enough. */
.nmon-rack-fit svg { max-height:70vh; width:auto; max-width:100%; height:auto; display:block; margin:0 auto; }
/* 1.25.31: "show all 48 height units" is the reader's decision to scroll. Bound to 70vh the 48 rows
   were scaled to half their size and the 12px labels to six - unreadable. Unbound, one row keeps
   its 22px and its label keeps its size. */
.nmon-rack-fit.nmon-rack-full svg { max-height:none; width:100%; }

/* 1.25.29: the writing assistant inside an editor toolbar.
   It is the one button there that does not format text but hands what you wrote to a model, so it
   carries its own colour - it is found when it is wanted, and it is not hit by accident while
   reaching for "bold". Same accent as the notes assistant, so the feature looks like one feature. */
.note-toolbar .btn.nmon-ai-btn,
.note-toolbar .note-btn.nmon-ai-btn {
    background:#3c8dbc; border-color:#367fa9; color:#ffffff; font-weight:600; margin-left:6px;
}
.note-toolbar .btn.nmon-ai-btn:hover, .note-toolbar .btn.nmon-ai-btn:focus,
.note-toolbar .note-btn.nmon-ai-btn:hover, .note-toolbar .note-btn.nmon-ai-btn:focus,
.note-toolbar .btn.nmon-ai-btn:active, .note-toolbar .note-btn.nmon-ai-btn:active {
    background:#367fa9; border-color:#2b6a8f; color:#ffffff;
}
.note-toolbar .nmon-ai-btn .fa { color:#ffffff; }

/* 1.25.29: the traffic numbers of a site diagram can be switched off - a topology is often read for
   its shape, and four numbers per box then get in the way. */
.nmon-net-no-traffic svg text.nmon-wan { display:none; }

/* 1.25.29: two things the task dialog got visibly wrong.
   1) A long line in the description editor ran off the right edge instead of wrapping, so the
      sentence somebody had just typed was cut in the middle of a word.
   2) The checklist field is three rows tall and its height did not divide by its line height, so
      the list scrolled to a half-visible line - it looked like a rendering fault, and on a list of
      steps a half-line is exactly the one you misread. */
.note-editor .note-editable { overflow-wrap:anywhere; word-break:break-word; }
.note-editor .note-editable p, .note-editor .note-editable li { overflow-wrap:anywhere; }
#taskChecklist { line-height:22px; min-height:96px; padding-top:6px; padding-bottom:6px; resize:vertical; }

/* 1.25.30 (approved mockup 15.09.2026, screens 2 and 3): the building blocks of the two diagram pages,
   taken from the mockup's stylesheet - same paddings, same colours, same borders - so the page and
   the picture the user approved cannot drift apart again. Prefixed nmon-dg- and used nowhere else. */
.nmon-dg-head { border-top:3px solid #00a65a; }
.nmon-dg-head .box-body { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
/* AdminLTE gives every .box-body a clearfix (:before/:after with display:table). Inside a flex
   container those two pseudo-elements become flex items, and with space-between the figures were
   pushed a third of the free width to the right on a wide screen (user screenshot 15.09.2026). */
.nmon-dg-head .box-body:before, .nmon-dg-head .box-body:after { content:none; }
.nmon-dg-figures { display:flex; gap:26px; flex-wrap:wrap; align-items:center; }
.nmon-dg-sec { color:#6b7379; font-size:12px; }
.nmon-dg-fig { font-size:15px; }
.nmon-dg-dot { width:8px; height:8px; border-radius:50%; display:inline-block; background:#b6bec4; vertical-align:1px; margin-right:2px; }
.nmon-dg-dot.g { background:#00a65a; } .nmon-dg-dot.y { background:#f39c12; } .nmon-dg-dot.r { background:#dd4b39; } .nmon-dg-dot.o { background:#e8730c; }   /* 1.27.0: orange = conspicuous / at the limit */
.nmon-dg-btns { display:flex; gap:7px; flex-wrap:wrap; }
.nmon-dg-grid { display:grid; grid-template-columns:minmax(0,420px) minmax(0,1fr); gap:18px; }
@media (max-width:991px) { .nmon-dg-grid { grid-template-columns:1fr; } }
.nmon-dg-title { font-size:14px; color:#444; font-weight:700; }
.nmon-dg-stack { display:flex; flex-direction:column; gap:8px; }
.nmon-dg-block { margin-top:0; }
.nmon-dg-block + .nmon-dg-block { margin-top:14px; }
.nmon-dg-item { border-left:3px solid #d2d6de; padding:2px 0 2px 10px; }
.nmon-dg-item.r { border-left-color:#dd4b39; } .nmon-dg-item.y { border-left-color:#f39c12; } .nmon-dg-item.b { border-left-color:#3c8dbc; }
.nmon-dg-item > b, .nmon-dg-item > a.nmon-dg-subject { font-weight:600; color:#3c4348; display:block; font-size:13px; }
.nmon-dg-item .nmon-dg-sec { display:block; }
.nmon-dg-chip { display:inline-block; background:#f0f3f5; border:1px solid #d2d6de; color:#5c666d; font-size:11px; padding:1px 7px; border-radius:10px; margin-right:4px; line-height:1.5; }
.nmon-dg-alert { display:flex; gap:11px; align-items:flex-start; border-radius:2px; padding:11px 14px; font-size:13px; margin:8px 0 0;
                 color:#7a5410; background:#fcf8e3; border:1px solid #f0e0b6; }
.nmon-dg-alert .fa { color:#b58a1b; margin-top:2px; }
.nmon-dg-alert.ok { color:#3c6d4f; background:#f1f9f4; border-color:#cfe8d8; }
.nmon-dg-alert.ok .fa { color:#00a65a; }
.nmon-dg-kv { width:100%; font-size:13px; margin-top:6px; }
.nmon-dg-kv td { padding:6px 0; border-bottom:1px solid #eef1f4; }
.nmon-dg-kv td:first-child { color:#6b7379; width:44%; }
.nmon-dg-kv tr:last-child td { border-bottom:none; }
.nmon-dg-legend { display:flex; gap:14px; flex-wrap:wrap; font-size:12px; color:#5a6268; margin-top:10px; }
.nmon-dg-legend .sw { display:inline-block; width:12px; height:12px; border:1px solid #c9d1d8; border-radius:2px; vertical-align:-2px; margin-right:5px; }
.nmon-dg-links { font-size:12px; color:#6b7379; margin:8px 0 0; }
.nmon-dg-seg { display:inline-flex; }
.nmon-dg-seg .btn { border-radius:0; }
.nmon-dg-seg .btn + .btn { margin-left:-1px; }
.nmon-dg-canvas { overflow-x:auto; border:1px solid #eef1f4; background:#fff; }
.nmon-dg-canvas svg { display:block; }
.nmon-dg-toolbar { display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:10px; }
.nmon-dg-toolbar .btn-row { display:flex; gap:7px; flex-wrap:wrap; align-items:center; }
.nmon-dg-btn-check { display:inline-flex; align-items:center; gap:5px; cursor:pointer; margin:0; font-weight:400; }
/* A clickable block in the rack elevation: the whole device is the link, the label says where it leads. */
.nmon-rack-hit { cursor:pointer; }
.nmon-rack-hit rect { transition:opacity .12s; }
.nmon-rack-hit:hover rect { opacity:.85; }
.nmon-rack-hit text { pointer-events:none; }
.nmon-rack-jump { cursor:pointer; }
.nmon-rack-jump:hover text { text-decoration:underline; }

/* 1.25.30 (B6.2): two frozen states next to each other. A changed pair is tinted as a whole so the
   eye finds the rows first and the words second; a removed line has an empty right cell, an added
   line an empty left one. */
.nmon-doc-sbs td { vertical-align:top; font-size:12.5px; line-height:1.45; }
.nmon-doc-sbs tr.nmon-doc-sbs-changed td { background:#fffbe6; }
.nmon-doc-sbs tr.nmon-doc-sbs-removed td:first-child { background:#f9e6e6; }
.nmon-doc-sbs tr.nmon-doc-sbs-added td:last-child { background:#e6f4ea; }
.nmon-doc-sbs tr.nmon-doc-sbs-same td { color:#6b7379; }
.nmon-doc-sbs ins { background:#c6efd3; text-decoration:none; }
.nmon-doc-sbs del { background:#f5c6c6; }

/* 1.25.30 (approved mockup 15.09., screen 1): the four figure tiles above the diagram list. */
.nmon-dg-tiles { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-bottom:16px; }
@media (max-width:991px) { .nmon-dg-tiles { grid-template-columns:repeat(2,minmax(0,1fr)); } }
.nmon-dg-tile { background:#fff; border-radius:2px; box-shadow:0 1px 1px rgba(0,0,0,.1); padding:12px 14px; display:flex; flex-direction:column; gap:2px; border-left:4px solid #d2d6de; }
.nmon-dg-tile.b { border-left-color:#3c8dbc; } .nmon-dg-tile.a { border-left-color:#00c0ef; } .nmon-dg-tile.g { border-left-color:#00a65a; } .nmon-dg-tile.r { border-left-color:#dd4b39; }
.nmon-dg-tile .v { font-size:30px; font-weight:300; line-height:1.05; font-variant-numeric:tabular-nums; color:#3d454c; }
.nmon-dg-tile.r .v { color:#dd4b39; }
.nmon-dg-tile .k { font-size:12px; color:#6b7379; text-transform:uppercase; letter-spacing:.05em; font-weight:600; }

/* 1.25.32: the autorefresh menu entries are POST forms (no session token in any URL any more). The
   button wears the look of the menu link it replaced (AdminLTE .notifications-menu .menu > li > a). */
.nmon-qa-form { margin:0; }
.nmon-qa-btn { display:block; width:100%; text-align:left; background:none; border:0; border-bottom:1px solid #f4f4f4; color:#444444; padding:10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.nmon-qa-btn:hover, .nmon-qa-btn:focus { background:#f4f4f4; text-decoration:none; outline:0; }
.nmon-sessions-table tr.nmon-session-current td { background:#f6fbf7; }

/* 1.25.33.1: the action column of the website security head strip. The three stacked buttons sat
   flush against each other (btn-block inside inline forms has no spacing of its own) - user feedback
   17.09.2026 "viel zu gepresst". One rule, equal gap, no inline styles in the template (D2). */
.nmon-ws-actions form { margin:0; }
.nmon-ws-actions .btn { margin-bottom:8px; }
.nmon-ws-actions > :last-child .btn, .nmon-ws-actions > .btn:last-child { margin-bottom:0; }

/* 1.25.34 Website-Sicherheit, approved mockup "Fassung 3.1" (17.09.2026). Additions to the existing sheet only -
   no new stylesheet (D2); colours are the AdminLTE ones the rest of the portal uses. */
.nmon-ws-verdict { display:flex; align-items:center; gap:26px; flex-wrap:wrap; }
.nmon-ws-ring { width:78px; height:78px; border-radius:50%; flex:0 0 78px; display:flex; align-items:center; justify-content:center; font-size:28px; font-weight:600; color:#fff; font-variant-numeric:tabular-nums; }
.nmon-ws-verdict-text { flex:1 1 380px; min-width:0; }
.nmon-ws-verdict-text h4 { margin:0 0 5px; font-size:19px; font-weight:600; color:#333; }
.nmon-ws-verdict-text p { margin:0; color:#5a6268; max-width:78ch; }
.nmon-ws-chips { display:flex; gap:6px; flex-wrap:wrap; margin-top:10px; }
.nmon-ws-chips .label { font-size:11.5px; padding:3px 8px; }
.label.nmon-ws-neutral { background:#9aa3a9; color:#fff; }
.label.nmon-ws-evidence { background:#fff; color:#6b5a1e; border:1px solid #e8cf8c; font-weight:600; white-space:normal; display:inline-block; line-height:1.3; text-align:left; }
.nmon-ws-verdict .nmon-ws-actions { flex:0 0 220px; }
.nmon-ws-tools .btn, .nmon-ws-tools form { margin-left:6px; }
.nmon-ws-inbox { list-style:none; margin:0; padding:0; }
.nmon-ws-inbox li { display:grid; grid-template-columns:22px minmax(0,1fr) auto; gap:14px; align-items:center; padding:13px 16px; border-bottom:1px solid #f4f4f4; }
.nmon-ws-inbox li:last-child { border-bottom:0; }
.nmon-ws-inbox li.nmon-ws-calm { background:#fafbfc; color:#5a6268; }
.nmon-ws-what { font-weight:600; color:#333; }
.nmon-ws-meta { color:#8a8f94; font-size:12px; margin-top:4px; display:flex; gap:6px 16px; flex-wrap:wrap; }
.nmon-ws-rowbtns .btn { margin-left:4px; }
.nmon-ws-sev { display:inline-block; width:6px; height:24px; border-radius:2px; vertical-align:middle; margin-right:9px; background:#c3c9ce; }
.nmon-ws-sev-critical { background:#dd4b39; } .nmon-ws-sev-warning { background:#f39c12; } .nmon-ws-sev-info { background:#00c0ef; }
code.nmon-ws-path { font-size:12px; color:#2f3b45; background:transparent; padding:0; word-break:break-all; white-space:normal; }
.nmon-ws-up { color:#b7791f !important; } .nmon-ws-flat { color:#6b7379; font-weight:600; }
.nmon-ws-tiles { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:14px; margin-bottom:20px; }
.nmon-ws-tile { background:#fff; border-radius:2px; box-shadow:0 1px 1px rgba(0,0,0,.1); padding:13px 15px; border-top:3px solid #d2d6de; }
.nmon-ws-tile-hot { border-top-color:#f39c12; }
.nmon-ws-tile-k { font-size:11.5px; color:#8a8f94; text-transform:uppercase; letter-spacing:.05em; font-weight:600; }
.nmon-ws-tile-v { font-size:28px; font-weight:300; line-height:1.2; color:#3d454c; font-variant-numeric:tabular-nums; }
.nmon-ws-tile-d { font-size:12px; color:#666; font-variant-numeric:tabular-nums; }
.nmon-ws-tile-h { font-size:11.5px; color:#8a8f94; margin-top:5px; line-height:1.35; min-height:16px; }
@media (max-width:1199px) { .nmon-ws-tiles { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:600px) { .nmon-ws-tiles { grid-template-columns:repeat(2,minmax(0,1fr)); } .nmon-ws-inbox li { grid-template-columns:22px minmax(0,1fr); } .nmon-ws-rowbtns { grid-column:2; } }
.nmon-ws-legend i { display:inline-block; width:11px; height:11px; border-radius:2px; vertical-align:-1px; }
.nmon-ws-filter { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:12px; }
.nmon-ws-filter .input-group { width:auto; }
.nmon-ws-groups > tbody > tr.nmon-ws-group > td { background:#fff; border-top:1px solid #e6e9ec; vertical-align:middle; }
.nmon-ws-groups > tbody > tr.nmon-ws-child > td { background:#fafbfc; border-top:1px solid #f1f3f4; padding-top:7px; padding-bottom:7px; vertical-align:middle; }
.nmon-ws-groups td.nmon-ws-childcell { padding-left:44px !important; }
.nmon-ws-toggle { color:#777; display:inline-block; width:14px; }
.nmon-ws-neutralbox { border-left:4px solid #9aa3a9; background:#f6f7f8; padding:12px 14px; border-radius:2px; margin-bottom:12px; }
.nmon-ws-drop { border:2px dashed #c3ced6; border-radius:3px; padding:14px 16px; background:#fbfcfd; margin:0; }
.nmon-ws-history { max-height:330px; overflow-y:auto; }
pre.nmon-ws-code { background:#1e262d; color:#d7dee6; font-size:12.5px; line-height:1.55; padding:10px 0; border:0; border-radius:2px; max-height:520px; overflow:auto; margin-bottom:8px; white-space:pre; }
pre.nmon-ws-code .nmon-ws-ln { display:block; padding:0 12px 0 0; }
pre.nmon-ws-code .nmon-ws-ln i { display:inline-block; width:44px; text-align:right; margin-right:14px; color:#5f6d79; font-style:normal; user-select:none; }
pre.nmon-ws-code .nmon-ws-hit { background:#4a2320; }
pre.nmon-ws-code > .text-muted { padding:0 14px; color:#8fa3b3; font-style:italic; }
.nmon-ws-ai { border-left:4px solid #00c0ef; background:#f3fbfe; padding:13px 16px; border-radius:2px; margin-bottom:10px; }
.nmon-ws-ai h5 { margin:0 0 6px; font-weight:700; color:#0e6f8c; font-size:13px; }
.nmon-ws-ai p { margin:0 0 8px; color:#2f3b45; line-height:1.5; } .nmon-ws-ai ol { margin:0 0 8px 18px; padding:0; }
.nmon-ws-prov { font-size:11.5px; color:#5c7a87 !important; border-top:1px dashed #b9dfe9; padding-top:6px; margin:6px 0 0 !important; }
.nmon-ws-q { background:#f4f4f4; border-radius:2px; padding:8px 12px; margin-bottom:8px; color:#333; }
.callout.nmon-ws-callout { margin-bottom:10px; } .callout.nmon-ws-callout code { background:rgba(0,0,0,.18); color:#fff; white-space:normal; word-break:break-word; }
.nmon-ws-matrix th, .nmon-ws-matrix td { text-align:center; vertical-align:middle !important; }
.nmon-ws-matrix th:first-child, .nmon-ws-matrix td:first-child { text-align:left; }
.nmon-ws-matrix td:first-child small { display:block; color:#8a8f94; }
.nmon-ws-cocktiles { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-bottom:20px; }
.nmon-ws-cocktile { background:#fff; border-radius:2px; box-shadow:0 1px 1px rgba(0,0,0,.1); padding:14px 16px; border-left:4px solid #d2d6de; display:block; color:inherit; }
.nmon-ws-cocktile:hover { color:inherit; background:#fbfcfd; }
.nmon-ws-cocktile b { display:block; font-size:34px; font-weight:300; line-height:1.05; color:#3d454c; font-variant-numeric:tabular-nums; }
.nmon-ws-cocktile span { display:block; font-size:12px; color:#8a8f94; text-transform:uppercase; letter-spacing:.05em; font-weight:600; margin-top:4px; }
.nmon-ws-cocktile small { display:block; color:#666; margin-top:6px; }
.nmon-ws-cocktile.r { border-left-color:#dd4b39; } .nmon-ws-cocktile.r b { color:#dd4b39; } .nmon-ws-cocktile.y { border-left-color:#f39c12; } .nmon-ws-cocktile.a { border-left-color:#00c0ef; } .nmon-ws-cocktile.g { border-left-color:#00a65a; }
@media (max-width:991px) { .nmon-ws-cocktiles { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* ==========================================================================================================
   1.25.35 - UI BUILDING BLOCKS (UI-BAUSTEINE.md). One portal, one look: a new page takes its parts from here
   and from AdminLTE (box, btn btn-flat, label, table table-striped) - it does not invent frames of its own.
   ========================================================================================================== */
/* B2a - button group: several buttons ALWAYS sit in a row with a gap, in both directions, also when they wrap */
.nmon-btn-row { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.nmon-btn-row form { margin:0; display:inline-flex; }
.nmon-btn-row.is-right { justify-content:flex-end; }
.box-header > .nmon-btn-row.box-tools { position:static; float:right; margin-top:-2px; }
/* B3 - state label with room around the text. Grey means "nothing"; a number above zero is never grey. */
.label.nmon-state { display:inline-block; padding:.38em .8em .42em; font-size:11.5px; letter-spacing:.2px; line-height:1; white-space:nowrap; }
.label.nmon-state.is-none { background:#d2d6de; color:#444; }
.label.nmon-state.is-orange { background:#e8730c; color:#fff; }
/* B4 - figure tile: name, category, two values, a trend line, a footer. The services tiles of the server page
   were the model; since 1.25.36 (F4-60) they use this very class - one tile in the whole portal. */
.nmon-tiles { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px; margin-bottom:20px; }
.nmon-tile { display:flex; flex-direction:column; gap:6px; text-align:left; background:#fff; border:1px solid #dfe8ee; border-top:3px solid #9aabb6; border-radius:3px; padding:10px 12px 8px; color:#2f3f4a; min-width:0; }
a.nmon-tile:hover { background:#f6f9fb; color:#2f3f4a; }
.nmon-tile.is-warn { border-top-color:#f39c12; } .nmon-tile.is-ok { border-top-color:#00a65a; } .nmon-tile.is-crit { border-top-color:#dd4b39; }
.nmon-tile-row { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.nmon-tile-name { font-size:15px; }
.nmon-tile-cat { margin-left:auto; font-size:11px; text-transform:uppercase; letter-spacing:.5px; color:#9aabb6; }
.nmon-tile-kp { display:grid; grid-template-columns:1fr 1fr; gap:2px 10px; }
.nmon-tile-kp b { display:block; font-size:19px; font-weight:600; font-variant-numeric:tabular-nums; line-height:1.15; }
.nmon-tile-kp b.is-up { color:#c77c00; }
.nmon-tile-kp small { color:#687c89; font-size:12px; }
.nmon-tile-spark { display:block; width:100%; height:32px; }
.nmon-tile-src { color:#687c89; font-size:12px; line-height:1.35; }
/* H1 - note: dark text on white with a coloured edge. No coloured areas with light or grey text. */
.nmon-note { background:#fff; border-left:5px solid #00c0ef; border-radius:3px; box-shadow:0 1px 1px rgba(0,0,0,.1); padding:12px 15px; margin:0 0 20px; color:#333; }
.nmon-note h4 { margin:0 0 4px; font-size:17px; font-weight:600; color:#333; }
.nmon-note p { margin:0; max-width:130ch; }
.nmon-note .nmon-note-fine { color:#5a6268; font-size:13px; margin-top:6px; }
.nmon-note code { background:#f3f6f8; color:#41525d; white-space:normal; word-break:break-word; }
.nmon-note.is-warn { border-left-color:#f39c12; } .nmon-note.is-crit { border-left-color:#dd4b39; } .nmon-note.is-ok { border-left-color:#00a65a; } .nmon-note.is-muted { border-left-color:#9aa3a9; }
/* T2 - a long text under its label takes a line of its own */
.nmon-kv-long { display:block; margin-top:6px; color:#5a6268; line-height:1.45; }
/* website security, 1.25.35 */
.nmon-ws-ring.is-g { background:#00a65a; } .nmon-ws-ring.is-y { background:#f39c12; } .nmon-ws-ring.is-o { background:#e8730c; } .nmon-ws-ring.is-r { background:#dd4b39; }
.nmon-ws-files td { vertical-align:top !important; }
.nmon-ws-files td .text-muted { font-size:12px; }
.nmon-ws-files th.nmon-ws-actcol, .nmon-ws-files td.nmon-ws-actcol { width:250px; }
/* four actions = a deliberate 2 x 2 block of equal buttons, never a row that breaks after the third */
.nmon-ws-files td.nmon-ws-actcol .nmon-btn-row { display:grid; grid-template-columns:1fr 1fr; }
.nmon-ws-files td.nmon-ws-actcol .nmon-btn-row .btn { width:100%; }
.nmon-ws-files td:nth-child(2) { min-width:210px; } .nmon-ws-files td:nth-child(2) code { white-space:nowrap; word-break:normal; font-size:13px; }
.nmon-tiles.is-six { grid-template-columns:repeat(auto-fill,minmax(165px,1fr)); }
.nmon-ws-fn { display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:8px; margin:8px 0 4px; align-items:start; }
.nmon-ws-fnc { border:1px solid #dfe8ee; border-left:4px solid #00a65a; padding:7px 9px; background:#fff; min-width:0; }
.nmon-ws-fnc.is-open { border-left-color:#dd4b39; background:#fdf3f2; } .nmon-ws-fnc.is-opt { border-left-color:#f39c12; background:#fff8ec; }
.nmon-ws-fnc > b { font-family:Menlo,Consolas,monospace; font-size:13px; display:block; word-break:break-all; }
.nmon-ws-fnc small { color:#5a6268; display:block; line-height:1.35; }
.nmon-ws-meter { height:10px; background:#eee; border-radius:5px; overflow:hidden; max-width:360px; }
.nmon-ws-meter i { display:block; height:100%; background:#00a65a; } .nmon-ws-meter.is-warn i { background:#f39c12; } .nmon-ws-meter.is-crit i { background:#dd4b39; }
.nmon-ws-chat { display:flex; flex-direction:column; gap:8px; }
.nmon-ws-msg { padding:9px 13px; border-radius:3px; max-width:100ch; line-height:1.5; }
.nmon-ws-msg.is-me { background:#e8f2f8; align-self:flex-end; } .nmon-ws-msg.is-ai { background:#f7f7f7; border-left:3px solid #3c8dbc; } .nmon-ws-msg.is-err { background:#fdf3f2; border-left:3px solid #dd4b39; }
.nmon-ws-tree { font-family:Menlo,Consolas,monospace; font-size:12.5px; line-height:1.75; }
.nmon-ws-tree a { color:#2f3b45; } .nmon-ws-tree .is-dir { font-weight:700; } .nmon-ws-tree .text-muted { font-family:inherit; }

/* 1.26.0 / R38-A - design, second cut: the places that stayed in the AdminLTE skin colour when the operator
   repainted the portal (screenshot 21.09.2026: white sidebar, dark search field, dark "MAIN NAVIGATION" line,
   dark open submenu). One variable per key of Settings::themeDefaults(); the defaults are the skin values. */
.sidebar-form, .skin-blue .sidebar-form, .skin-green .sidebar-form, .skin-black .sidebar-form, .skin-purple .sidebar-form, .skin-red .sidebar-form, .skin-yellow .sidebar-form { border:1px solid var(--nmon-sidebar-search-border,#374850) !important; }
.sidebar-form input[type=text], .skin-blue .sidebar-form input[type=text], .skin-green .sidebar-form input[type=text], .skin-black .sidebar-form input[type=text], .skin-purple .sidebar-form input[type=text], .skin-red .sidebar-form input[type=text], .skin-yellow .sidebar-form input[type=text] { background-color:var(--nmon-sidebar-search-bg,#374850) !important; color:var(--nmon-sidebar-search-text,#fff) !important; }
.sidebar-form input[type=text]::placeholder { color:var(--nmon-sidebar-search-text,#fff); opacity:.7; }
.sidebar-form .btn, .skin-blue .sidebar-form .btn, .skin-green .sidebar-form .btn, .skin-black .sidebar-form .btn, .skin-purple .sidebar-form .btn, .skin-red .sidebar-form .btn, .skin-yellow .sidebar-form .btn { background-color:var(--nmon-sidebar-search-btn,#374850) !important; color:var(--nmon-sidebar-search-text,#fff) !important; }
.sidebar-menu > li.header, .skin-blue .sidebar-menu > li.header, .skin-green .sidebar-menu > li.header, .skin-black .sidebar-menu > li.header, .skin-purple .sidebar-menu > li.header, .skin-red .sidebar-menu > li.header, .skin-yellow .sidebar-menu > li.header { background-color:var(--nmon-sidebar-header-bg,#1a2226) !important; color:var(--nmon-sidebar-header-text,#4b646f) !important; }
.sidebar-menu > li > .treeview-menu, .skin-blue .sidebar-menu > li > .treeview-menu, .skin-green .sidebar-menu > li > .treeview-menu, .skin-black .sidebar-menu > li > .treeview-menu, .skin-purple .sidebar-menu > li > .treeview-menu, .skin-red .sidebar-menu > li > .treeview-menu, .skin-yellow .sidebar-menu > li > .treeview-menu { margin:0 1px; background-color:var(--nmon-submenu-bg,#2c3b41) !important; border:1px solid var(--nmon-submenu-border,#2c3b41); }
.sidebar-menu .treeview-menu > li > a { color:var(--nmon-submenu-text,#8aa4af) !important; }
.sidebar-menu .treeview-menu > li.active > a, .sidebar-menu .treeview-menu > li > a:hover { background-color:var(--nmon-submenu-active-bg,#2c3b41) !important; color:var(--nmon-submenu-active-text,#fff) !important; }
.user-panel > .info, .user-panel > .info > a, .user-panel > .info > p { color:var(--nmon-sidebar-user-text,#fff) !important; }
.main-sidebar { border-right:1px solid var(--nmon-sidebar-divider,#222d32); }
.content-header { background-color:var(--nmon-content-header-bg,#ecf0f5) !important; }
.content-header > h1, .content-header > .breadcrumb, .content-header > .breadcrumb > li > a, .content-header > .breadcrumb > li.active { color:var(--nmon-content-header-text,#333); }
.form-control:not([disabled]):not([readonly]), .select2-container--default .select2-selection--single, .select2-container--default .select2-selection--multiple, .dataTables_filter input, .input-group-addon { background-color:var(--nmon-input-bg,#fff); color:var(--nmon-input-text,#555); border-color:var(--nmon-input-border,#d2d6de); }
.select2-container--default .select2-selection--single .select2-selection__rendered, .select2-container--default .select2-search--dropdown .select2-search__field { color:var(--nmon-input-text,#555); }
.box { background-color:var(--nmon-box-bg,#fff); }
.box:not(.box-solid) > .box-header { background-color:var(--nmon-box-header-bg,#fff); color:var(--nmon-box-header-title,#444); }
.box:not(.box-solid) > .box-header > .box-title { color:var(--nmon-box-header-title,#444); }
.table > thead > tr > th { background-color:var(--nmon-table-head-bg,#fff); color:var(--nmon-table-head-text,#333); }
.nav-tabs-custom > .nav-tabs > li > a { background-color:var(--nmon-tab-inactive-bg,#fff); color:var(--nmon-tab-inactive-text,#444); }
.nav-tabs-custom > .nav-tabs > li.active > a, .nav-tabs-custom > .nav-tabs > li.active:hover > a { background-color:var(--nmon-tab-active-bg,#fff) !important; color:var(--nmon-tab-active-text,#444) !important; }
.nav-tabs-custom > .tab-content { background-color:var(--nmon-tab-active-bg,#fff); }
/* the design tab: preview of the new places + the operator's CSS box */
.design-preview-sidebar .design-preview-search { margin:0 10px 8px; padding:5px 8px; font-size:12px; border:1px solid transparent; display:flex; justify-content:space-between; }
.design-preview-sidebar .design-preview-search span:last-child { padding:0 6px; }
.design-preview-sidebar .design-preview-navhead { padding:6px 12px; font-size:11px; text-transform:uppercase; letter-spacing:.4px; }
.design-preview-sidebar .design-preview-sub { margin:0 1px; padding:4px 0; border:1px solid transparent; }
.design-preview-sidebar .design-preview-sub > div { padding:6px 22px; border-left:0; }
.design-preview-sidebar .design-preview-user { padding:6px 12px 10px; font-size:12px; }
.design-preview-content .design-preview-pagehead { margin:-14px -14px 10px; padding:8px 14px; font-size:13px; display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.design-preview-content .design-preview-input { display:block; width:100%; padding:5px 8px; margin-bottom:8px; border:1px solid #d2d6de; font-size:12px; }
.design-preview-content .design-preview-tabs { display:flex; margin-bottom:8px; }
.design-preview-content .design-preview-tabs > span { padding:5px 10px; font-size:12px; border:1px solid #f4f4f4; border-bottom:0; }
.design-preview-content .design-preview-box { border:1px solid #e5e5e5; margin-bottom:8px; }
.design-preview-content .design-preview-box > div:first-child { padding:5px 8px; font-size:13px; border-bottom:1px solid #f4f4f4; }
.design-preview-content .design-preview-box table { width:100%; font-size:12px; border-collapse:collapse; }
.design-preview-content .design-preview-box th { padding:4px 8px; text-align:left; border-bottom:2px solid #f4f4f4; }
.design-preview-content .design-preview-box td { padding:4px 8px; }
.design-custom-css { font-family:Menlo,Consolas,monospace; font-size:12.5px; min-height:160px; resize:vertical; }
.design-preview-header .design-preview-hover { padding:0 8px; }

/* 1.26.0 / R38-56: the two <style> blocks of the 1.25 dashboard page, moved here (no inline <style>, G-60) */
.infrasec-status-filter { display:block; color:inherit; text-decoration:none !important; }
.infrasec-status-filter .info-box { cursor:pointer; transition:box-shadow .15s ease, transform .15s ease; }
.infrasec-status-filter:hover .info-box, .infrasec-status-filter.active .info-box { box-shadow:0 0 0 2px rgba(60,141,188,.35), 0 2px 8px rgba(0,0,0,.12); transform:translateY(-1px); }
.infrasec-status-filter .progress-description { color:#777; font-size:11px; margin-top:4px; }
.infrasec-status-filter-summary { margin:0 0 10px 0; }
.infrasec-status-table-wrap, .infrasec-alert-table-wrap { max-height:420px; overflow-y:auto; }
.infrasec-status-table-wrap .table, .infrasec-alert-table-wrap .table { margin-bottom:0; }
.nmon-dashboard-box { display:flex; flex-direction:column; margin-bottom:20px; }
.nmon-dashboard-box > .box-body { flex:1 1 auto; min-height:0; }
.nmon-dashboard-top { height:430px; }
.nmon-dashboard-middle { height:520px; }
.nmon-dashboard-overview { height:420px; }
.nmon-dashboard-scroll { height:100%; overflow-y:auto; overflow-x:auto; }
.nmon-dashboard-scroll .table { margin-bottom:0; }
.nmon-dashboard-map { min-height:530px; }
@media (max-width: 991px) {
.nmon-dashboard-top, .nmon-dashboard-middle, .nmon-dashboard-overview { height:auto; min-height:320px; }
.nmon-dashboard-scroll { max-height:520px; }
}
/* 1.26.0 / R38-50: the dashboard as a grid of tiles (mockup 21.09., screen 01). Flex so a wrapped line of
   uneven tiles never staggers; every tile is a column that stretches its box to the same height. */
.nmon-dash-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; background:#fff; padding:8px 12px; margin-bottom:18px; border-radius:3px; box-shadow:0 1px 1px rgba(0,0,0,.1); }
.nmon-dash-toolbar .nmon-dash-toolbar-right { margin-left:auto; }
.nmon-dash-toolbar .nmon-dash-note { color:#777; font-size:13px; }
.nmon-dash-grid { display:flex; flex-wrap:wrap; }
.nmon-dash-grid > .nmon-dash-tile { float:none; display:flex; flex-direction:column; }
.nmon-dash-grid > .nmon-dash-tile > .box, .nmon-dash-grid > .nmon-dash-tile > .row, .nmon-dash-grid > .nmon-dash-tile > .nmon-dash-legacy { width:100%; }
.nmon-dash-grid > .nmon-dash-tile > .box.nmon-dash-json { flex:1 1 auto; height:auto; min-height:160px; }
.nmon-dash-tile .nmon-dash-json .box-body { flex:1 1 auto; min-height:0; }
.nmon-dash-tile .nmon-dash-json .nmon-dashboard-scroll { height:auto; max-height:392px; }
.nmon-dash-tile .nmon-dash-json .table > tbody > tr > td { vertical-align:middle; }
.nmon-dash-tile .nmon-dash-json .nmon-dash-sub { display:block; font-size:12px; color:#777; }
.nmon-dash-tile .nmon-dash-json .nmon-dash-foot { padding:8px 12px; color:#777; font-size:12px; border-top:1px solid #f4f4f4; }
.nmon-dash-tile .nmon-dash-json .nmon-dash-empty { padding:14px 12px; color:#777; }
.nmon-dash-tile .box-header .nmon-dash-range { font-size:12px; color:#777; margin-left:auto; }
.nmon-dash-tile .box-header.tilehd { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
@media (max-width:991px) { .nmon-dash-tile .nmon-dash-json { min-height:0; } }
/* the "choose tiles" dialog (mockup screen 02/03) */
.nmon-dash-lists { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
@media (max-width:900px) { .nmon-dash-lists { grid-template-columns:1fr; } }
.nmon-dash-list { border:1px dashed #c9d3da; border-radius:3px; min-height:120px; padding:6px; background:#fbfcfd; }
.nmon-dash-list h5 { margin:4px 6px 8px; font-size:13px; color:#777; font-weight:600; text-transform:uppercase; letter-spacing:.4px; }
.nmon-dash-item { display:flex; align-items:center; gap:8px; background:#fff; border:1px solid #dfe8ee; border-radius:3px; padding:6px 8px; margin-bottom:6px; cursor:grab; }
.nmon-dash-item.is-locked { opacity:.55; background:#f4f4f4; cursor:not-allowed; }
.nmon-dash-item .nmon-dash-hand { color:#aab5be; font-size:16px; padding:0 4px; }
.nmon-dash-item .nmon-dash-name { flex:1 1 auto; min-width:0; }
.nmon-dash-item .nmon-dash-name small { display:block; color:#777; }
.nmon-dash-item select { border:1px solid #d2d6de; padding:3px 6px; font:inherit; font-size:12px; background:#fff; color:#555; }
.nmon-dash-item.ui-sortable-placeholder { visibility:visible !important; border:2px dashed #3c8dbc; background:#eef6fb; min-height:34px; }

/* 1.27.0 / R39 (mockup 23.09.2026): virtualisation topology. Only what the building blocks do not have:
   the small sparkline form for table cells (R39-89), the load bar of the host overview, the "hot" figure
   (orange = at the limit, like nmon-state.is-orange), and the node hover of the drawing. */
.nmon-spark { display:block; width:100%; height:34px; margin:4px 0 2px; }
.nmon-virt-spark { display:inline-block; vertical-align:middle; width:70px; height:20px; margin-right:4px; }
.nmon-virt-spark .nmon-spark { width:70px; height:20px; margin:0; }
td .nmon-virt-spark { width:60px; } td .nmon-virt-spark .nmon-spark { width:60px; height:18px; }
.nmon-tile .nmon-spark { height:32px; }
#nmon-hour-line .nmon-spark { height:48px; }   /* R39-88: 24-hour line in the server info block */
/* 1.28.0 / R40-04..06 (E2): fixed scales - "100 %" at the top, the dashed 50 % guide, the limit line of a ratio.
   Tiles carry the taller form (56 px), the table cells keep their mini form without labels. */
.nmon-tile .nmon-spark.is-scaled { height:56px; }
#nmon-hour-line .nmon-spark.is-scaled { height:60px; }
.nmon-spark-none { height:56px; display:flex; align-items:center; justify-content:center; color:#999; font-size:12px; border:1px dashed #d2d6de; margin:6px 0 2px; }
.nmon-host-profile tr.is-pending td { color:#999; }
.nmon-host-profile td:first-child { width:38%; }
#nmon-host-moves .table td, #nmon-host-suggestions .table td { font-size:13px; }
.nmon-virt-hot { color:#e8730c; font-weight:600; }
.nmon-virt-bar { display:inline-block; vertical-align:middle; width:90px; height:8px; background:#eee; border-radius:4px; overflow:hidden; }
.nmon-virt-bar i { display:block; height:100%; background:#3c8dbc; }
.nmon-virt-bar.is-yellow i { background:#f39c12; } .nmon-virt-bar.is-orange i { background:#e8730c; }
.nmon-dg-canvas a.nmon-virt-node:hover text { fill:#3c8dbc; }

/* 1.28.0 / R40-10 (mockup 23.09.2026 screen 02): the AI tab - sessions on the left, analysis + chat on the right.
   Reuses the chat bubbles of the security tab (.infrasec-chat-message); only the frame is new. */
.nmon-ai-chat { display:flex; min-height:420px; }
.nmon-ai-sessions { width:240px; flex:0 0 240px; border-right:1px solid #e8eef2; padding:12px; background:#fafbfc; }
.nmon-ai-sessions-title { font-size:11px; text-transform:uppercase; letter-spacing:.3px; color:#999; margin-bottom:6px; }
.nmon-ai-session { display:block; padding:6px 8px; border-radius:3px; color:#333; font-size:13px; line-height:1.3; margin-bottom:4px; }
.nmon-ai-session:hover { background:#eef3f7; text-decoration:none; }
.nmon-ai-session.is-on { background:#e3edf5; border-left:3px solid #3c8dbc; }
.nmon-ai-main { flex:1 1 auto; padding:12px; min-width:0; }
.nmon-ai-history { max-height:460px; margin-top:12px; }
.nmon-ai-suggest { margin:10px 0 8px; }
.nmon-ai-suggest .btn { margin:2px 2px 2px 0; }
.nmon-ai-steps { padding-left:20px; margin:0 0 8px; }
.nmon-ai-steps li { margin-bottom:4px; }
.nmon-ai-wait { padding:10px 12px; background:#fff8e1; border-bottom:1px solid #f0e2b3; }
@media (max-width: 767px) { .nmon-ai-chat { display:block; } .nmon-ai-sessions { width:auto; border-right:0; border-bottom:1px solid #e8eef2; } }

/* ==========================================================================================================
   1.28.0 / R40-41..46 (mockup 23.09.2026 screens 04/05): the third cut of the design - one rule per new key
   (G-62: variable, rule, preview line, field, scope), the sign-in page from building blocks, the logo in the
   head, and the "Modern v2" preset as ONE CSS layer (body.nmon-v2) on the same markup. Fonts: the default
   family stays what AdminLTE ships; "system" is the operating system's stack; "Inter" loads from
   template/assets/fonts/ when the operator placed the files there (nothing is fetched from outside).
   ========================================================================================================== */
@font-face { font-family:'Inter'; font-style:normal; font-weight:400; font-display:swap; src:local('Inter'), url('fonts/Inter-Regular.woff2') format('woff2'); }
@font-face { font-family:'Inter'; font-style:normal; font-weight:600; font-display:swap; src:local('Inter SemiBold'), local('Inter-SemiBold'), url('fonts/Inter-SemiBold.woff2') format('woff2'); }
@font-face { font-family:'Inter'; font-style:normal; font-weight:700; font-display:swap; src:local('Inter Bold'), local('Inter-Bold'), url('fonts/Inter-Bold.woff2') format('woff2'); }
body, .main-header .logo, .btn, .form-control, .table, .nav-tabs-custom > .nav-tabs > li > a { font-family:var(--nmon-font-family, 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif); }
body { font-size:var(--nmon-font-size, 14px); }
.box { border-radius:var(--nmon-box-radius, 3px); box-shadow:var(--nmon-box-shadow, 0 1px 1px rgba(0,0,0,.1)); }
.box > .box-header:first-child { border-top-left-radius:var(--nmon-box-radius, 3px); border-top-right-radius:var(--nmon-box-radius, 3px); }
.table > tbody > tr > td, .table > thead > tr > th { padding:var(--nmon-table-density, 8px); }
.table-striped > tbody > tr:nth-of-type(odd) { background-color:var(--nmon-table-zebra, #f9f9f9); }
.label-success, .bg-green, .callout-success, .alert-success, .modal-success .modal-header { background-color:var(--nmon-label-ok, #00a65a) !important; }
.label-warning, .bg-yellow, .callout-warning, .alert-warning, .modal-warning .modal-header { background-color:var(--nmon-label-warn, #f39c12) !important; }
.label.nmon-state.is-orange, .nmon-note.is-warn { border-color:var(--nmon-label-orange, #e8730c); }
.label.nmon-state.is-orange { background:var(--nmon-label-orange, #e8730c); }
.label-danger, .bg-red, .callout-danger, .alert-danger, .modal-danger .modal-header { background-color:var(--nmon-label-crit, #dd4b39) !important; }
.label-info, .bg-aqua, .callout-info, .alert-info, .modal-info .modal-header { background-color:var(--nmon-label-info, #00c0ef) !important; }
.btn-primary { background-color:var(--nmon-btn-primary, #3c8dbc); border-color:var(--nmon-btn-primary, #3c8dbc); }
.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active { background-color:var(--nmon-btn-primary, #3c8dbc); border-color:var(--nmon-btn-primary, #3c8dbc); filter:brightness(.92); }
.btn-success { background-color:var(--nmon-btn-success, #00a65a); border-color:var(--nmon-btn-success, #00a65a); }
.btn-success:hover, .btn-success:focus, .btn-success:active { background-color:var(--nmon-btn-success, #00a65a); border-color:var(--nmon-btn-success, #00a65a); filter:brightness(.92); }
.btn-danger { background-color:var(--nmon-btn-danger, #dd4b39); border-color:var(--nmon-btn-danger, #dd4b39); }
.btn-danger:hover, .btn-danger:focus, .btn-danger:active { background-color:var(--nmon-btn-danger, #dd4b39); border-color:var(--nmon-btn-danger, #dd4b39); filter:brightness(.92); }
.nmon-spark .nmon-spark-base { stroke:var(--nmon-chart-line, #3c8dbc); }
.nmon-spark .nmon-spark-base-fill { fill:var(--nmon-chart-line, #3c8dbc); }
.nmon-virt-bar i { background:var(--nmon-chart-line, #3c8dbc); }
/* R40-41: the dashboard number tiles - AdminLTE colours (default), the portal's colours, or plain grey */
body.nmon-tiles-portal .small-box.bg-aqua { background-color:var(--nmon-primary, #5aaddd) !important; }
body.nmon-tiles-portal .small-box.bg-green { background-color:var(--nmon-label-ok, #00a65a) !important; }
body.nmon-tiles-portal .small-box.bg-yellow { background-color:var(--nmon-label-warn, #f39c12) !important; }
body.nmon-tiles-portal .small-box.bg-red { background-color:var(--nmon-label-crit, #dd4b39) !important; }
body.nmon-tiles-grey .small-box { background-color:#6c7a86 !important; color:#fff; }
body.nmon-tiles-grey .small-box .icon { color:rgba(0,0,0,.12); }
/* R40-43: the logo in the head - 40 px high, at most 200 px wide; the mini logo square in the collapsed bar */
.main-header .logo .nmon-logo-lg { height:40px; max-width:200px; width:auto; object-fit:contain; vertical-align:middle; margin-top:-3px; }
.main-header .logo .nmon-logo-mini { height:32px; width:32px; object-fit:contain; vertical-align:middle; }
.main-header .logo .nmon-logo-initial { font-size:18px; letter-spacing:.5px; }
/* R40-42: the sign-in page from building blocks (A1) - background, card, logo, fields, footer; colours from the
   group "Sign-in" of the design tab, printed by signin.php/forgot.php as the same --nmon-* variables */
body.nmon-login { min-height:100vh; margin:0; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:24px 12px; color:var(--nmon-login-text, #fff);
    background:var(--nmon-login-bg1, #1e282c); background-image:linear-gradient(135deg, var(--nmon-login-bg1, #1e282c), var(--nmon-login-bg2, #3c8dbc)); background-size:cover; background-position:center; font-family:var(--nmon-font-family, 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif); }
body.nmon-login.is-color { background-image:none; }
body.nmon-login.is-image { background-image:var(--nmon-login-image, none); }
.nmon-login-card { width:100%; max-width:400px; background:var(--nmon-login-card-bg, #fff); color:var(--nmon-login-card-text, #333); border-radius:var(--nmon-box-radius, 6px); box-shadow:0 12px 40px rgba(0,0,0,.28); padding:28px 28px 22px; }
.nmon-login-card.is-flat { border-radius:0; box-shadow:none; }
.nmon-login-card.is-dark { background:#1f2d3d; color:#e6ecf1; }
.nmon-login-card.is-dark .form-control { background:#2b3b4c; border-color:#3d4f61; color:#fff; }
.nmon-login-logo { text-align:center; margin-bottom:14px; }
.nmon-login-logo img { max-height:90px; max-width:100%; width:auto; }
.nmon-login-logo .nmon-login-word { font-size:26px; font-weight:300; }
.nmon-login-logo .nmon-login-word b { font-weight:700; }
.nmon-login-msg { text-align:center; margin:0 0 16px; opacity:.8; }
.nmon-login-card .form-control { height:42px; border-radius:var(--nmon-box-radius, 3px); }
.nmon-login-card .btn-block { padding:10px; border-radius:var(--nmon-box-radius, 3px); }
.nmon-login-row { display:flex; justify-content:space-between; align-items:center; margin:2px 0 14px; font-size:13px; }
.nmon-login-row a { color:inherit; text-decoration:underline; opacity:.85; }
.nmon-login-note { text-align:center; font-size:12px; opacity:.7; margin-top:12px; }
.nmon-login-foot { margin-top:18px; text-align:center; font-size:13px; opacity:.85; max-width:520px; }
.nmon-login-foot a { color:inherit; text-decoration:underline; }
.nmon-login-foot .nmon-login-version { display:block; font-size:12px; opacity:.75; margin-top:2px; }
.nmon-login-card .alert { margin-bottom:14px; }
/* R40-46 (E9): Modern v2 - the layer. Same pages, same blocks, same ids; only spacing, borders, pills and the head change. */
body.nmon-v2 { letter-spacing:.1px; }
body.nmon-v2 .content-wrapper { padding:4px 8px 0; }
body.nmon-v2 .main-header .navbar, body.nmon-v2 .main-header .logo { border-bottom:1px solid var(--nmon-border, #e3e8ee); }
body.nmon-v2 .main-sidebar { border-right:1px solid var(--nmon-border, #e3e8ee); }
body.nmon-v2 .sidebar-menu > li > a { padding:11px 12px 11px 16px; border-radius:6px; margin:2px 8px; border-left:0 !important; }
body.nmon-v2 .sidebar-menu > li.active > a, body.nmon-v2 .sidebar-menu > li:hover > a { box-shadow:inset 3px 0 0 var(--nmon-sidebar-accent, #3c8dbc); }
body.nmon-v2 .sidebar-menu > li > .treeview-menu { margin:0 8px; border-radius:6px; }
body.nmon-v2 .box { border-top-width:0; border:1px solid var(--nmon-border, #e3e8ee); }
body.nmon-v2 .box.box-primary, body.nmon-v2 .box.box-info, body.nmon-v2 .box.box-success, body.nmon-v2 .box.box-warning, body.nmon-v2 .box.box-danger, body.nmon-v2 .box.box-default { border-top-color:var(--nmon-border, #e3e8ee); }
body.nmon-v2 .box > .box-header.with-border { border-bottom:0; padding:14px 16px 6px; }
body.nmon-v2 .box > .box-body { padding:12px 16px 16px; }
body.nmon-v2 .box-title { font-weight:600; }
body.nmon-v2 .nav-tabs-custom { box-shadow:none; background:transparent; }
body.nmon-v2 .nav-tabs-custom > .nav-tabs { border-bottom:0; margin-bottom:6px; }
body.nmon-v2 .nav-tabs-custom > .nav-tabs > li { margin:0 4px 4px 0; border-top:0; }
body.nmon-v2 .nav-tabs-custom > .nav-tabs > li > a { border-radius:999px; padding:7px 14px; border:1px solid var(--nmon-border, #e3e8ee) !important; }
body.nmon-v2 .nav-tabs-custom > .nav-tabs > li.active > a { background:var(--nmon-primary, #3c8dbc) !important; color:#fff !important; border-color:var(--nmon-primary, #3c8dbc) !important; }
body.nmon-v2 .nav-tabs-custom > .tab-content { border-radius:var(--nmon-box-radius, 8px); border:1px solid var(--nmon-border, #e3e8ee); }
body.nmon-v2 .table > thead > tr > th { border-bottom:1px solid var(--nmon-border, #e3e8ee); text-transform:uppercase; font-size:11.5px; letter-spacing:.3px; color:#6b7379; }
body.nmon-v2 .table > tbody > tr > td { border-top-color:var(--nmon-border, #e3e8ee); }
body.nmon-v2 .label, body.nmon-v2 .label.nmon-state { border-radius:999px; padding:.4em .9em; font-weight:600; }
body.nmon-v2 .btn { border-radius:6px; }
body.nmon-v2 .form-control { border-radius:6px; }
body.nmon-v2 .small-box { border-radius:var(--nmon-box-radius, 8px); }
body.nmon-v2 .nmon-tile { border-radius:8px; box-shadow:0 1px 3px rgba(31,45,61,.06); }
body.nmon-v2 .main-footer { border-top:1px solid var(--nmon-border, #e3e8ee); }
body.nmon-v2 .content-header { padding:14px 8px 4px; }
body.nmon-v2 .content-header > h1 { font-weight:600; font-size:22px; }

/* R40-44: the live preview of the design tab - labels, buttons, spark, the sign-in card, the logo/wordmark switch */
.design-preview-brand { display:inline-flex; align-items:center; gap:8px; }
.design-preview-logo { display:none; width:28px; height:28px; border-radius:4px; background:rgba(255,255,255,.25); text-align:center; line-height:28px; font-size:12px; font-weight:700; }
.design-preview-labels .design-preview-label { display:inline-block; padding:2px 8px; border-radius:2px; color:#fff; font-size:11px; margin:2px 2px 2px 0; }
.design-preview-buttons .design-preview-btn { display:inline-block; padding:4px 10px; border-radius:3px; color:#fff; font-size:12px; margin:2px 2px 2px 0; border:1px solid transparent; }
.design-preview-spark { display:block; width:100%; height:40px; margin:6px 0; }
.design-preview-login { padding:16px; text-align:center; font-size:12px; }
.design-preview-login-card { width:200px; margin:0 auto; padding:12px; text-align:left; }
.design-preview-login-logo { text-align:center; margin-bottom:8px; }
.design-preview-login-word { font-weight:300; font-size:14px; } .design-preview-login-word b { font-weight:700; }
.design-preview-login-input { border:1px solid #d2d6de; border-radius:3px; padding:4px 6px; margin-bottom:6px; font-size:11px; color:#999; background:#fff; }
.design-preview-login-btn { display:block !important; text-align:center; margin:0; }
.design-preview-login-foot { margin-top:8px; font-size:11px; opacity:.85; }
.design-preview-login-foot .design-preview-login-version { display:block; opacity:.8; }
.design-preview.is-v2 .design-preview-box, .design-preview.is-v2 .design-preview-card { border:1px solid #e3e8ee; border-top-width:1px !important; }
.design-preview.is-v2 .design-preview-tabs > span { border-radius:999px; }
.design-preview.is-v2 .design-preview-labels .design-preview-label { border-radius:999px; }
.design-images { padding:8px 0 0; border-top:1px dashed #e3e8ee; margin-top:4px; }

/* ---- 1.29.0 / R41-03: the framed mail preview in the template editor (M1) - the frame is the mail's own 600 px table;
   inside the portal column it shrinks to the column, the mail itself does not. Nothing else is restyled here. */
.nmon-mail-preview-frame { margin:8px 0 6px; border-radius:6px; overflow:hidden; }
.nmon-mail-preview-frame > div { padding:16px 8px !important; }
.nmon-mail-preview-frame table[width="600"] { width:100% !important; }
.nmon-mail-preview-frame img { max-width:100%; }

/* ---- 1.29.0 / R41-06/60: the Images group of the Design tab (I1) - one row per slot: preview · text · buttons ---- */
.nmon-imgslot { display:grid; grid-template-columns:150px 1fr; gap:14px; align-items:start; padding:12px 0; border-top:1px solid var(--nmon-border,#e3e8ee); }
.nmon-imgslot:first-child { border-top:0; padding-top:0; }
.nmon-imgslot-pv { height:90px; border:1px solid var(--nmon-border,#e3e8ee); border-radius:8px; display:flex; align-items:center; justify-content:center; overflow:hidden;
  background:repeating-conic-gradient(#f1f3f6 0 25%, #fff 0 50%) 0 0 / 16px 16px; }
.nmon-imgslot-pv.is-dark { background:#1e282c; }
.nmon-imgslot-pv img { max-width:90%; max-height:80px; width:auto; height:auto; }
.nmon-imgslot-word { font-weight:800; color:var(--nmon-primary,#3c8dbc); letter-spacing:.5px; background:#fff; border:1px solid var(--nmon-border,#e3e8ee); border-radius:8px; padding:6px 10px; }
.nmon-imgslot-pv.is-dark .nmon-imgslot-word { background:transparent; border:0; color:#fff; }
.nmon-imgslot-ico { width:32px; height:32px; border-radius:7px; background:var(--nmon-primary,#3c8dbc); color:#fff; display:inline-flex; align-items:center; justify-content:center; font-size:14px; font-weight:700; }
.nmon-imgslot-ico.is-small { width:16px; height:16px; border-radius:4px; font-size:9px; }
.nmon-imgslot-body h4 { margin:0 0 3px; font-size:14px; font-weight:600; }
.nmon-imgslot-st { font-size:12.5px; color:#6b7680; margin:4px 0 8px; }
.nmon-imgslot-st b { color:var(--nmon-content-text,#333); font-weight:600; }
.nmon-imgslot .nmon-btn-row { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.nmon-imgslot-use { font-size:12.5px; }
.nmon-imgslot-tab { margin-top:8px; display:flex; gap:10px; align-items:center; font-size:12.5px; }
.nmon-tabchip { border:1px solid #d5dbe1; border-radius:8px 8px 0 0; padding:4px 10px; background:#f7f8fa; display:inline-flex; gap:6px; align-items:center; }
.nmon-tabchip img { width:16px; height:16px; }
.text-orange { color:#e8730c; }
/* ---- R41-08: the mail head, the button, the footer and the browser tab in the live preview ---- */
.design-preview-mail { margin-top:10px; padding:10px; border-radius:8px; background:#eef1f5; }
.design-preview-mail-head { border-radius:8px 8px 0 0; padding:9px 12px; font-size:12px; font-weight:600; display:flex; align-items:center; gap:8px; }
.design-preview-mail-head img { max-height:22px; max-width:90px; }
.design-preview-mail-pill { background:#fff; border-radius:6px; padding:3px 7px; font-weight:800; letter-spacing:.4px; font-size:11px; }
.design-preview-mail-body { background:#fff; padding:10px 12px; }
.design-preview-mail-btn { display:inline-block; padding:5px 10px; border-radius:6px; font-size:11px; font-weight:600; }
.design-preview-mail-foot { background:#f7f8fa; border-top:1px solid #e3e8ec; padding:6px 12px; font-size:10.5px; color:#6b7680; border-radius:0 0 8px 8px; }
.design-preview-tab { margin-top:8px; font-size:12px; }
.design-preview-tab-chip { border:1px solid #d5dbe1; border-radius:8px 8px 0 0; padding:3px 9px; background:#f7f8fa; display:inline-flex; gap:6px; align-items:center; }
.design-preview-tab-chip img { width:14px; height:14px; }
.design-preview-tab-ico { width:14px; height:14px; border-radius:3px; background:var(--nmon-primary,#3c8dbc); color:#fff; display:inline-flex; align-items:center; justify-content:center; font-size:8px; font-weight:700; }
.design-mail-field .input-group-btn .btn { border-radius:0 3px 3px 0; }

/* ---- 1.29.0 / R41-10: the Details column of the Security Center keeps a readable width (it was squeezed to a
   few characters per line next to five fixed-width columns) ---- */
.nmon-col-details { min-width:320px; }
@media (max-width: 1100px) { .nmon-col-details { min-width:220px; } }

/* ---- 1.29.0 / R41-13/61: the tile "Unusual now" - head line, anomaly table, trend rows (T3) ---- */
.nmon-anom-head { padding:10px 12px 4px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.nmon-note.nmon-anom-head { display:block; margin:8px 12px 0; }
.nmon-anom-table { margin:6px 0 0; font-size:13px; }
.nmon-anom-table td { vertical-align:middle; }
.nmon-anom-trends-title { margin:10px 12px 2px; font-size:12px; color:#777; text-transform:uppercase; letter-spacing:.4px; font-weight:600; }
.nmon-trend-row { display:grid; grid-template-columns:1fr auto 92px; gap:8px 10px; align-items:center; padding:5px 12px; border-top:1px solid #f4f4f4; font-size:13px; }
.nmon-trend-name { display:flex; flex-direction:column; gap:1px; min-width:0; }
.nmon-trend-name small { color:#777; font-size:11.5px; }
.nmon-trend-delta { font-variant-numeric:tabular-nums; font-weight:600; white-space:nowrap; }
.nmon-trend-delta.is-up { color:var(--nmon-label-crit,#dd4b39); } .nmon-trend-delta.is-down { color:var(--nmon-label-ok,#00a65a); } .nmon-trend-delta.is-flat { color:#8a9399; }
.nmon-trend-spark { display:inline-block; vertical-align:middle; width:84px; height:22px; }
.nmon-trend-spark polyline, .nmon-trend-spark circle { stroke:var(--nmon-chart-line,#3c8dbc); fill:none; } .nmon-trend-spark circle { fill:var(--nmon-chart-line,#3c8dbc); }
.nmon-trend-spark.is-up polyline, .nmon-trend-spark.is-up circle { stroke:var(--nmon-label-crit,#dd4b39); } .nmon-trend-spark.is-up circle { fill:var(--nmon-label-crit,#dd4b39); }
.nmon-trend-spark.is-down polyline, .nmon-trend-spark.is-down circle { stroke:var(--nmon-label-ok,#00a65a); } .nmon-trend-spark.is-down circle { fill:var(--nmon-label-ok,#00a65a); }
.nmon-anom-more { padding:8px 12px 10px; text-align:right; }
.nmon-anom-trends-note { padding:8px 12px 10px; font-size:12.5px; }

/* ---- 1.29.0 / R41-63: the page Server > Trends (chips, table cells with sparkline + two deltas) ---- */
.nmon-trends-crumb { margin-bottom:12px; }
.nmon-trends-range .box-body { padding:8px 12px; }
.nmon-chips { display:inline-flex; flex-wrap:wrap; gap:6px; margin-left:6px; }
.nmon-chip { border:1px solid #d5dbe1; border-radius:999px; padding:3px 11px; font-size:12.5px; background:#fff; color:#333; text-decoration:none; }
.nmon-chip:hover { text-decoration:none; border-color:var(--nmon-primary,#3c8dbc); color:var(--nmon-primary,#3c8dbc); }
.nmon-chip.is-on { background:#e8eefc; border-color:var(--nmon-primary,#3c8dbc); color:var(--nmon-primary,#3c8dbc); font-weight:600; }
.nmon-trends-legend { margin-left:auto; font-size:12.5px; }
.nmon-trends-table td { white-space:nowrap; vertical-align:middle; }
.nmon-trends-cell .nmon-spark { display:block; margin-bottom:3px; }
.nmon-trend-delta.is-small { font-size:12px; font-weight:400; margin-left:4px; }
.nmon-trend-delta.is-none { color:#b6bec4; }
.nmon-trends-foot { font-size:12.5px; }
/* the four figure boxes of the Trends page share one height: same lines in every box, footer always present */
.nmon-trends-tiles { display:flex; flex-wrap:wrap; }
.nmon-trends-tiles > [class*="col-"] { display:flex; }
.nmon-trends-tiles .small-box { flex:1 1 auto; display:flex; flex-direction:column; min-height:118px; }
.nmon-trends-tiles .small-box .inner { flex:1 1 auto; }
.nmon-trends-tiles .small-box .inner small { display:block; font-size:12px; opacity:.85; min-height:16px; }
.nmon-trends-tiles .small-box .small-box-footer { height:30px; display:block; padding:6px 8px; line-height:1.3; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; text-align:center; font-size:12.5px; }

/* 1.29.0 / R41-80/81: Profil › Benachrichtigungen - Rhythmus der Zusammenfassung in einer Zeile */
.nmon-digest-modes { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; }
.nmon-digest-modes .radio-inline { margin-left: 0; padding-top: 0; }
.nmon-digest-at { display: inline-flex; align-items: center; gap: 6px; }
.nmon-digest-hour { width: 96px; display: inline-block; }
.nmon-digest-weekday { width: 160px; }
/* 1.29.0 / R41-81: confirm bar of the anomaly mail's "acknowledge" link */
.nmon-ack-bar p { display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; margin:0; }

/* ---- 1.29.0 / Block D (R41-40/44/47): Angriffskarte - die eine dunkle Schicht des Portals (Seite + Kachel) ---- */
.nmon-attack { background:#0b1220; color:#dbe4f0; border-radius:var(--nmon-radius,6px); overflow:hidden; box-shadow:0 1px 3px rgba(0,0,0,.25); }
.nmon-attack a { color:#4fc3f7; }
.nmon-am-head { display:flex; flex-wrap:wrap; gap:10px; align-items:center; padding:12px 16px; border-bottom:1px solid #1c2740; }
.nmon-am-head.is-levels { padding-top:8px; padding-bottom:8px; gap:6px; }
.nmon-am-head h3 { margin:0; font-size:16px; font-weight:600; color:#fff; }
.nmon-am-live { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:#8fe3b0; }
.nmon-am-live i { width:8px; height:8px; border-radius:50%; background:#2ed573; box-shadow:0 0 0 0 rgba(46,213,115,.6); animation:nmon-am-pulse 2s infinite; }
.nmon-am-right { margin-left:auto; display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
.nmon-am-mut { font-size:12px; color:#8a97ad; }
.nmon-am-warn-text { color:#ffb020; }
.nmon-am-sep { width:8px; }
.nmon-am-sep-arrow { color:#3a4a6e; }
.nmon-am-chip, .nmon-attack .nmon-am-chip { border:1px solid #2b3a5e; color:#dbe4f0; border-radius:8px; padding:4px 10px; font-size:12px; background:#111a2e; text-decoration:none; line-height:1.4; cursor:pointer; }
.nmon-am-chip:hover, .nmon-am-chip:focus { color:#fff; text-decoration:none; border-color:#4fc3f7; }
.nmon-am-chip.is-on { background:#2c4fd8; border-color:#2c4fd8; color:#fff; }
.nmon-am-pick .nmon-am-select { display:inline-block; width:auto; min-width:160px; height:28px; padding:2px 8px; background:#111a2e; color:#dbe4f0; border-color:#2b3a5e; }
.nmon-am-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; padding:12px 16px; }
.nmon-am-kpi { background:#111a2e; border:1px solid #1c2740; border-radius:10px; padding:10px 12px; min-height:84px; }
.nmon-am-v { font-size:24px; font-weight:700; color:#fff; line-height:1.1; }
.nmon-am-l { font-size:12px; color:#8a97ad; margin-top:2px; }
.nmon-am-d { font-size:12px; margin-top:4px; color:#8a97ad; }
.nmon-am-d.is-crit { color:#ff5a4e; }
.nmon-am-body { display:grid; grid-template-columns:1fr 300px; align-items:stretch; }
@media (max-width: 991px) { .nmon-am-body { grid-template-columns:1fr; } }
.nmon-am-mapbox { padding:6px 10px 10px; display:flex; align-items:center; }
.nmon-am-mapbox svg { width:100%; }
svg.nmon-am-map { width:100%; height:auto; aspect-ratio:1000/415; display:block; border-radius:8px; }
svg.nmon-am-map .nmon-am-sea { fill:#0b1220; }
svg.nmon-am-map .nmon-am-land path { fill:#1a2540; stroke:#2b3a5e; stroke-width:.5; }
svg.nmon-am-map.is-mini .nmon-am-land path { stroke-width:.4; }
svg.nmon-am-map .nmon-am-arc { fill:none; stroke-linecap:round; opacity:.85; stroke-dasharray:1200; stroke-dashoffset:1200; animation:nmon-am-draw 6s linear infinite; transition:opacity .3s; }
svg.nmon-am-map .nmon-am-arc.is-crit { stroke:#ff5a4e; }
svg.nmon-am-map .nmon-am-arc.is-warn { stroke:#ffb020; }
svg.nmon-am-map .nmon-am-arc.is-info { stroke:#4fc3f7; }
svg.nmon-am-map .nmon-am-src { opacity:.9; }
svg.nmon-am-map .nmon-am-src.is-crit { fill:#ff5a4e; }
svg.nmon-am-map .nmon-am-src.is-warn { fill:#ffb020; }
svg.nmon-am-map .nmon-am-src.is-info { fill:#4fc3f7; }
svg.nmon-am-map .nmon-am-tgt .nmon-am-core { fill:#2ed573; }
svg.nmon-am-map .nmon-am-tgt .nmon-am-ring { fill:none; stroke:#2ed573; stroke-width:1; opacity:.6; transform-box:fill-box; transform-origin:center; animation:nmon-am-ring 2.4s ease-out infinite; }
svg.nmon-am-map .nmon-am-tgt:not(.is-hit) .nmon-am-ring { animation:none; opacity:.35; }
svg.nmon-am-map .nmon-am-tgt text { fill:#dbe4f0; font-size:11px; font-weight:600; }
svg.nmon-am-map a .nmon-am-tgt { cursor:pointer; }
svg.nmon-am-map a:hover .nmon-am-core { fill:#fff; }
.nmon-am-side { border-left:1px solid #1c2740; padding:10px 12px; font-size:12.5px; max-height:460px; overflow:auto; }
@media (max-width: 991px) { .nmon-am-side { border-left:0; border-top:1px solid #1c2740; } }
.nmon-am-side h4 { margin:4px 0 8px; font-size:12px; color:#8a97ad; text-transform:uppercase; letter-spacing:.5px; }
.nmon-am-side h4.nmon-am-h-gap { margin-top:14px; }
.nmon-am-ev { display:grid; grid-template-columns:52px 1fr; gap:8px; padding:7px 0; border-top:1px solid #1c2740; align-items:center; }
.nmon-am-ev.is-target { grid-template-columns:1fr auto; }
.nmon-am-ev.is-out { display:none; }
.nmon-am-ev.is-sel, .nmon-am-ev.is-hl { background:rgba(46,213,115,.08); box-shadow:inset 3px 0 0 #2ed573; padding-left:8px; }
.nmon-am-selbar { display:flex; flex-wrap:wrap; gap:6px 10px; align-items:center; padding:6px 0 8px; font-size:12.5px; color:#c9d4e5; }
.nmon-am-selbar b { color:#fff; }
.nmon-am-selbar .nmon-am-chip { margin-left:auto; }
.nmon-am-ev .nmon-am-t { color:#8a97ad; font-variant-numeric:tabular-nums; }
.nmon-am-ev b { color:#fff; font-weight:600; }
.nmon-am-sev { width:8px; height:8px; border-radius:50%; display:inline-block; margin-right:6px; }
.nmon-am-sev.is-crit { background:#ff5a4e; }
.nmon-am-sev.is-warn { background:#ffb020; }
.nmon-am-sev.is-info { background:#4fc3f7; }
.nmon-am-table { width:100%; font-size:12px; color:#dbe4f0; border-collapse:collapse; }
.nmon-am-table td { padding:4px 4px; border-top:1px solid #1c2740; }
.nmon-am-table td.nmon-am-num { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.nmon-am-bar { height:8px; background:#1c2740; border-radius:4px; overflow:hidden; display:block; min-width:60px; }
.nmon-am-bar i { display:block; height:100%; background:#4fc3f7; }
.nmon-am-bar.is-crit i { background:#ff5a4e; }
.nmon-am-bar.is-warn i { background:#ffb020; }
.nmon-am-legend { display:flex; flex-wrap:wrap; gap:12px; font-size:12px; color:#aab6c8; padding:0 16px 12px; }
.nmon-am-legend span { display:inline-flex; align-items:center; gap:6px; }
.nmon-am-legend i { width:18px; height:3px; border-radius:2px; display:inline-block; }
.nmon-am-legend i.is-crit { background:#ff5a4e; }
.nmon-am-legend i.is-warn { background:#ffb020; }
.nmon-am-legend i.is-info { background:#4fc3f7; }
.nmon-am-legend i.is-target { background:#2ed573; height:8px; width:8px; border-radius:50%; }
.nmon-am-tl { display:flex; align-items:center; gap:10px; padding:8px 16px 12px; border-top:1px solid #1c2740; }
.nmon-am-play { width:32px; height:32px; border-radius:50%; background:#2c4fd8; color:#fff; border:0; display:inline-flex; align-items:center; justify-content:center; font-size:12px; }
.nmon-am-track { flex:1; height:6px; background:#1c2740; border-radius:3px; position:relative; }
.nmon-am-track i { position:absolute; left:0; top:0; height:100%; width:100%; background:linear-gradient(90deg,#2c4fd8,#4fc3f7); border-radius:3px; }
.nmon-am-track b { position:absolute; left:100%; top:-5px; width:16px; height:16px; border-radius:50%; background:#fff; margin-left:-8px; }
.nmon-am-lbl { font-size:12px; color:#8a97ad; font-variant-numeric:tabular-nums; white-space:nowrap; }
.nmon-am-foot { margin:10px 2px 0; }
/* 1.29.1 / R42 (mockup "Angriffskarte Fassung 2"): zoom bar, bundles, virtual targets, fan-out, empty-state box, wall view */
.nmon-am-mapbox { position:relative; }
svg.nmon-am-map { cursor:grab; touch-action:none; user-select:none; }
svg.nmon-am-map.is-drag { cursor:grabbing; }
svg.nmon-am-map.is-mini { cursor:default; touch-action:auto; }
/* zoomed arcs keep a constant screen width (non-scaling-stroke) - Chrome then measures dashes on the screen, so they
   breathe instead of being drawn in */
svg.nmon-am-map path.nmon-am-arc[pathLength] { stroke-dasharray:none; stroke-dashoffset:0; animation-name:nmon-am-breathe; }
@keyframes nmon-am-breathe { 0% { opacity:.35; } 50% { opacity:.95; } 100% { opacity:.35; } }
svg.nmon-am-map .nmon-am-tgt.is-virtual .nmon-am-ring { stroke-dasharray:3 2; }
svg.nmon-am-map .nmon-am-cluster { cursor:zoom-in; }
svg.nmon-am-map .nmon-am-cring { fill:rgba(46,213,115,.16); stroke:#2ed573; stroke-width:1.6; }
svg.nmon-am-map .nmon-am-cluster:hover .nmon-am-cring, svg.nmon-am-map .nmon-am-cluster:focus .nmon-am-cring { stroke:#fff; }
svg.nmon-am-map .nmon-am-cluster:focus { outline:none; }
svg.nmon-am-map .nmon-am-ccount { fill:#fff; font-size:10px; font-weight:700; }
svg.nmon-am-map[data-zoom] .nmon-am-land path { vector-effect:non-scaling-stroke; stroke-width:.6; }
svg.nmon-am-map .nmon-am-clabel, svg.nmon-am-map .nmon-am-tgt text { paint-order:stroke; stroke:#0b1220; stroke-width:3px; stroke-linejoin:round; }
svg.nmon-am-map .nmon-am-clabel { fill:#dbe4f0; font-size:11px; font-weight:600; }
svg.nmon-am-map .nmon-am-fan { stroke:#2ed573; stroke-width:1; stroke-dasharray:2 2; opacity:.7; }
.nmon-am-zoom { position:absolute; top:14px; right:18px; display:flex; flex-direction:column; gap:4px; z-index:2; }
.nmon-am-zoom button { min-width:34px; height:30px; border:1px solid #2b3a5e; background:rgba(17,26,46,.92); color:#dbe4f0; border-radius:8px; font-size:15px; font-weight:600; line-height:1; padding:0 8px; }
.nmon-am-zoom button.is-word { font-size:12px; }
.nmon-am-zoom button:hover, .nmon-am-zoom button:focus { border-color:#4fc3f7; color:#fff; outline:none; }
.nmon-am-legend i.is-virtual { width:9px; height:9px; border-radius:50%; background:none; border:1.5px dashed #2ed573; }
.nmon-am-legend i.is-cluster { width:12px; height:12px; border-radius:50%; background:rgba(46,213,115,.25); border:1.5px solid #2ed573; }
.nmon-am-vt { display:inline-block; font-size:11px; border:1px dashed #3a4a6e; color:#aab6c8; border-radius:999px; padding:0 7px; margin-left:4px; }
.nmon-am-note { margin:12px 16px 0; background:#2a2410; border:1px solid #6b5412; border-left:4px solid #ffb020; color:#f3e3b5; border-radius:8px; padding:10px 14px; font-size:13px; line-height:1.5; }
.nmon-am-note b { color:#fff; }
.nmon-am-note .nmon-am-note-acts { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.nmon-am-note .nmon-am-note-acts a { color:#ffd27a; font-weight:600; text-decoration:none; border:1px solid #6b5412; border-radius:8px; padding:3px 10px; background:#1f1a0b; }
@keyframes nmon-am-pulse { 0% { box-shadow:0 0 0 0 rgba(46,213,115,.6); } 70% { box-shadow:0 0 0 8px rgba(46,213,115,0); } 100% { box-shadow:0 0 0 0 rgba(46,213,115,0); } }
@keyframes nmon-am-draw { 0% { stroke-dashoffset:1200; opacity:0; } 8% { opacity:.85; } 60% { stroke-dashoffset:0; opacity:.85; } 100% { stroke-dashoffset:0; opacity:.2; } }
@keyframes nmon-am-ring { 0% { transform:scale(.7); opacity:.8; } 100% { transform:scale(2); opacity:0; } }
@media (prefers-reduced-motion: reduce) { svg.nmon-am-map .nmon-am-arc, svg.nmon-am-map .nmon-am-tgt .nmon-am-ring, .nmon-am-live i { animation:none; } svg.nmon-am-map .nmon-am-arc { stroke-dashoffset:0; } }
/* the dashboard tile (R41-44): the same dark layer in a box */
.nmon-am-tile { background:#0b1220; border-radius:6px; padding:8px; }
.nmon-am-tile-figs { display:flex; gap:14px; padding:8px 12px 2px; font-size:13px; color:#6b7680; align-items:center; flex-wrap:wrap; }
.nmon-am-tile-figs b { font-size:20px; color:#294251; margin-right:4px; }
.nmon-am-tile-figs .nmon-am-tile-open { margin-left:auto; }
.nmon-am-tile-note { margin:0; padding:0 12px 10px; }
.nmon-loc-coords-row { display:flex; gap:8px; } .nmon-loc-coords-row .form-control { flex:1 1 50%; }
/* 1.29.1 / R42-21: the location line under a site's name (mockup "Angriffskarte Fassung 2" screen 05) */
.nmon-site-loc { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:8px 0 2px; font-size:13.5px; }
.nmon-site-loc-pin { display:inline-flex; align-items:center; gap:6px; background:#fff; border:1px solid #e3e8ec; border-radius:999px; padding:3px 12px; }
.nmon-site-loc-pin.is-open { border-style:dashed; color:#8a5a00; background:#fff7e0; border-color:#f0d58a; }
.nmon-site-loc a { font-weight:600; }

/* ---- 1.29.1 / R42-50 (UI-BAUSTEINE G1, mockup "Angriffskarte Fassung 2" screen 08): the place search of the dialogs ---- */
.nmon-geo-search { position:relative; }
.nmon-geo-sugg { border:1px solid #d5dbe1; border-radius:8px; margin-top:4px; box-shadow:0 8px 20px rgba(20,30,50,.10); overflow:hidden; background:#fff; max-height:300px; overflow-y:auto; }
.nmon-geo-sugg > div { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:7px 12px; border-top:1px solid #f1f3f6; font-size:13px; cursor:pointer; }
.nmon-geo-sugg > div:first-child { border-top:0; }
.nmon-geo-sugg > div.is-on, .nmon-geo-sugg > div:hover { background:#e8eefc; }
.nmon-geo-sugg small { color:#6b7680; }
.nmon-geo-sugg .nmon-geo-none { color:#6b7680; cursor:default; }
.nmon-geo-sugg .nmon-geo-none:hover { background:#fff; }
.nmon-geo-prec { display:inline-block; font-size:11px; font-weight:600; border-radius:999px; padding:1px 8px; white-space:nowrap; }
.nmon-geo-prec.is-pc { background:#e3f5ea; color:#15834c; }
.nmon-geo-prec.is-ct { background:#fff1d6; color:#8a5a00; }
.nmon-geo-picked { margin-top:-4px; }
.nmon-geo-attr { color:#6b7680; font-size:11.5px; margin:6px 0 0; }
.nmon-geo-empty { margin:6px 0 0; }
.nmon-onmap { margin-bottom:6px; }
.nmon-onmap .checkbox { margin:0; }
.nmon-geo-coords-help { margin-top:-6px; }

/* ---- 1.29.1 / R42-53 (mockup screen 09): the dashboard world map - the attack map's world in the light layer ---- */
.nmon-wm-mapbox { padding:10px 12px 6px; display:block; }
svg.nmon-am-map.nmon-wm { background:#eef2f7; }
.nmon-wm-mapbox .nmon-am-zoom button { background:#fff; border-color:#d5dbe1; color:#333; }
.nmon-wm-mapbox .nmon-am-zoom button:hover, .nmon-wm-mapbox .nmon-am-zoom button:focus { border-color:#2c4fd8; color:#2c4fd8; }
svg.nmon-am-map.nmon-wm a:hover .nmon-am-core { fill:#1e2a33; }
svg.nmon-am-map.nmon-wm .nmon-am-cluster:hover .nmon-am-cring, svg.nmon-am-map.nmon-wm .nmon-am-cluster:focus .nmon-am-cring { stroke:#1e2a33; }
.nmon-wm-legend { display:flex; flex-wrap:wrap; gap:14px; align-items:flex-start; font-size:12.5px; color:#6b7680; padding:4px 14px 12px; }
.nmon-wm-legend > span { display:inline-flex; align-items:center; gap:6px; }
.nmon-wm-dot { width:9px; height:9px; border-radius:50%; display:inline-block; }
.nmon-wm-dot.is-s1 { background:#1a9e5c; }
.nmon-wm-dot.is-s2 { background:#e0a106; }
.nmon-wm-dot.is-s3 { background:#d64534; }
.nmon-wm-dot.is-s0 { background:#8a9399; }
.nmon-wm-missing { margin-left:auto; }
.nmon-wm-missing summary { cursor:pointer; color:#2c4fd8; }
.nmon-wm-missing ul { margin:6px 0 0; padding-left:18px; max-height:180px; overflow:auto; }
.nmon-wm-attr { font-size:11.5px; }
.nmon-wm-none { margin:0 14px 8px; }

/* ---- 1.29.1 / R42-13 (mockup screen 03): the wall view - the attack map filling the screen, no portal around it ---- */
body.nmon-wall { margin:0; background:#05080f; color:#dbe4f0; font:14px/1.45 Inter,"Segoe UI",system-ui,"Source Sans Pro",Arial,sans-serif; min-height:100vh; box-sizing:border-box; padding:14px; }
body.nmon-wall *, body.nmon-wall *::before, body.nmon-wall *::after { box-sizing:border-box; }
body.nmon-wall .nmon-attack.is-wall { min-height:calc(100vh - 28px); display:grid; grid-template-rows:auto auto auto 1fr auto auto; border-radius:6px; }
body.nmon-wall .nmon-am-head.is-wall { padding:12px 18px; }
body.nmon-wall .nmon-am-brand { font-weight:800; letter-spacing:.6px; color:#fff; }
body.nmon-wall .nmon-am-head.is-wall h3 { font-size:17px; }
body.nmon-wall .nmon-am-kpis { padding:12px 18px; }
body.nmon-wall .nmon-am-v { font-size:30px; }
body.nmon-wall .nmon-am-body { grid-template-columns:1fr 250px; min-height:0; }
body.nmon-wall .nmon-am-side { max-height:none; }
body.nmon-wall button { font:inherit; }
body.nmon-wall button.nmon-am-chip { font-size:12.5px; padding:5px 12px; }
.nmon-am-wallfoot { border-top:1px solid #1c2740; padding:7px 18px; font-size:12px; color:#6b7a93; display:flex; gap:10px; flex-wrap:wrap; }
body.nmon-wall:fullscreen { padding:0; }
body.nmon-wall:fullscreen .nmon-attack.is-wall { min-height:100vh; border-radius:0; }
@media (max-width: 900px) { body.nmon-wall .nmon-am-body { grid-template-columns:1fr; } }

/* ---- 1.29.1 / R42-11 (mockup screen 04): My profile > Wall screen ---- */
.nmon-wall-box .box-header { border-top:2px solid #00a8d6; }
.nmon-wall-lead { margin-top:0; max-width:95ch; }
.nmon-wall-opt { font-weight:400; }
.nmon-wall-once { background:#f2fbf6; border:1px solid #bfe6cf; border-radius:8px; padding:12px 14px; margin-bottom:10px; }
.nmon-wall-once p { margin:0; }
.nmon-wall-link { display:flex; gap:6px; align-items:stretch; margin:8px 0; }
.nmon-wall-link code { flex:1; min-width:0; background:#fff; border:1px solid #bfe6cf; border-radius:8px; padding:7px 10px; font-size:12.5px; overflow-x:auto; white-space:nowrap; display:block; color:#41525d; }
.nmon-wall-meta { font-size:12.5px; }
.nmon-wall-kv { display:grid; grid-template-columns:minmax(150px,30%) 1fr; margin-bottom:12px; }
.nmon-wall-kv > div { padding:7px 10px; border-top:1px solid #f1f3f6; }
.nmon-wall-kv > div:nth-child(odd) { font-weight:600; color:#444; }
.nmon-inline-form { display:inline; margin:0; }

/* 1.29.3 / R44 "Standort setzen" (mockup Fassung 2): the location field of the dialogs, the bulk dialog, the locations view */
.nmon-objloc [hidden], .nmon-bulkloc [hidden] { display:none !important; }
.nmon-objloc .nmon-objloc-ro input[readonly] { background:var(--nmon-surface-muted,#f4f6f8); }
.nmon-bulkloc .nmon-bulkloc-way { margin-bottom:6px; }
.nmon-bulkloc .nmon-bulkloc-way .radio { margin-bottom:4px; }
.nmon-bulkloc .nmon-bulkloc-sub { margin:0 0 10px 20px; }
.nmon-bulkloc .nmon-bulkloc-sub.is-off { opacity:.55; }
.nmon-bulkloc .nmon-bulkloc-preview { margin:10px 0 0; }
.nmon-bulkloc .nmon-bulkloc-preview p { margin:0; }
.nmon-objlocs .nmon-objlocs-filter { margin-bottom:12px; }
.nmon-objlocs .nmon-objlocs-ll { white-space:nowrap; font-variant-numeric:tabular-nums; }
.nmon-objlocs-src { display:inline-block; padding:1px 8px; border-radius:999px; font-size:12px; border:1px solid var(--nmon-border,#d5dbe1); }
.nmon-objlocs-src.is-location { border-color:var(--nmon-primary,#3c8dbc); color:var(--nmon-primary,#3c8dbc); }
.nmon-objlocs-src.is-asset { border-color:var(--nmon-primary,#3c8dbc); color:var(--nmon-primary,#3c8dbc); border-style:dashed; }
.nmon-objlocs-src.is-own { color:var(--nmon-text-muted,#6b7580); }
.nmon-objlocs-src.is-none { color:var(--nmon-label-warn,#c87f0a); border-color:var(--nmon-label-warn,#c87f0a); }
.nmon-loc-usedby p a { white-space:nowrap; }
.nmon-loc-same form { margin:0; }
.nmon-loc-same p { margin-bottom:6px; }

/* 1.29.4 / R45 "Geo-Daten und Ortsnamen" (mockup Fassung 1, screen 01): System › Geo-Daten */
.nmon-geo-page [hidden] { display:none !important; }
.nmon-geo-op { font-size:11px; vertical-align:middle; margin-left:6px; }
.nmon-note.is-info { border-left-color:var(--nmon-primary,#3c8dbc); }
.nmon-geo-import { margin-bottom:15px; }
.nmon-geo-import h4 { margin:0 0 4px; font-size:16px; }
.nmon-geo-import .nmon-geo-meter { max-width:520px; margin:8px 0 6px; }
.nmon-geo-import .nmon-geo-fine { font-size:12px; opacity:.9; margin:0; }
.nmon-geo-lastbg { margin-bottom:15px; }
.nmon-geo-source .radio { margin-top:0; margin-bottom:6px; }
.nmon-geo-drop { display:block; position:relative; border:2px dashed var(--nmon-border,#d5dbe1); border-radius:6px; padding:18px; text-align:center; color:var(--nmon-text-muted,#6b7580); background:var(--nmon-surface-muted,#fafafa); font-weight:400; cursor:pointer; margin:0; }
.nmon-geo-drop.is-over { border-color:var(--nmon-primary,#3c8dbc); background:var(--nmon-primary-soft,#e8f1f8); }
.nmon-geo-drop input[type=file] { position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; }
.nmon-geo-drop .nmon-geo-drop-pick { color:var(--nmon-primary,#3c8dbc); }
.nmon-geo-drop .nmon-geo-drop-files { display:block; margin-top:8px; color:var(--nmon-text,#333); font-size:12.5px; text-align:left; }
.nmon-geo-recog { margin:10px 0 6px; font-size:12.5px; }
.nmon-geo-recog tr.is-on td { background:var(--nmon-primary-soft,#e8f1f8); }
.nmon-geo-table td, .nmon-geo-table th { vertical-align:top; }
.nmon-geo-table .nmon-num { text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
.nmon-geo-data-box .nmon-geo-attr { font-size:12.5px; margin:0; }
.nmon-geo-moved { margin-top:6px; }

/* 1.30.0 / R47-43 (F13, mockup 1.30 screen 13): the attribution under every map with places of the IP database */
.nmon-map-attr { font-size:11.5px; line-height:1.5; color:#8a97a8; padding:0 16px 10px; }
.nmon-map-attr a { color:inherit; text-decoration:underline; }
.nmon-am-attr { color:#aab6c8; }
.nmon-wm-attr, .nmon-am-tile-attr { padding:6px 10px 8px; color:#6b778a; }
/* 1.30.0 / R47-44 (mockup 1.30 screen 09): System › PRAEMON-API */
.nmon-papi-seg { display:inline-flex; border:1px solid #c7d0db; border-radius:3px; overflow:hidden; vertical-align:middle; }
.nmon-papi-seg label { margin:0; padding:5px 12px; font-weight:500; cursor:pointer; background:#fff; color:#333; }
.nmon-papi-seg input { position:absolute; opacity:0; width:1px; height:1px; }
.nmon-papi-seg input:checked + label { background:#3c8dbc; color:#fff; }
.nmon-papi-seg input:disabled + label { cursor:default; color:#9aa5b1; background:#f4f6f8; }
.nmon-papi-seg input:disabled:checked + label { background:#dfe5eb; color:#556270; }
.nmon-papi-seg input:focus-visible + label { outline:2px solid #3c8dbc; outline-offset:-2px; }
.nmon-papi-src td { vertical-align:top !important; }
.nmon-papi-src .nmon-papi-sub { display:block; color:#7a8795; font-size:12px; }
.nmon-papi-src .nmon-papi-muted { color:#7a8795; }
.nmon-papi-check { background:#f4f6f8; border:1px solid #e3e8ee; padding:10px 12px; margin-top:6px; }
.nmon-papi-check p { margin:8px 0 0; }
.nmon-papi-token { font-family:ui-monospace, Consolas, monospace; }
.nmon-papi-inline { display:inline; margin-left:6px; }
/* 1.30.0 / R48-62..63 (mockup "Release 1.30 API-Plattform" screen 12): the PRAEMON newsfeed - tile and page */
.nmon-pn-list{list-style:none;margin:0;padding:0}
.nmon-pn-point{border-left:3px solid #3c8dbc;padding:4px 0 4px 12px;margin:0 0 10px}
.nmon-pn-point.is-exploited{border-left-color:#dd4b39}
.nmon-pn-text{display:block;margin-bottom:3px}
.nmon-pn-aff{display:inline-block;margin-right:8px;font-weight:600}
.nmon-pn-src{font-size:12px;color:#6b7680}
.nmon-pn-more{margin:-6px 0 10px 15px;font-size:12px}
.nmon-papi-check-l{display:block;font-weight:400;margin-top:6px}
.nmon-si-api{margin-bottom:12px}

/* 1.30.0 / R49-100..103: the tag bar and the row tags are cut after five (Tag::BAR_LIMIT / ROW_LIMIT). A chosen tag stays
   visible wherever it stands; "Alle anzeigen (+n)" opens the rest (remembered per list). */
.nmon-tag-filter .nmon-tag-chip.is-extra { display:none; }
.nmon-tag-filter.is-open .nmon-tag-chip.is-extra, .nmon-tag-filter .nmon-tag-chip.is-extra.active { display:inline-flex; }
.nmon-tag-more { display:inline-flex; align-items:center; border:1px dashed #b7c6d0; background:#f7fafc; color:#2f6f96; border-radius:14px; padding:3px 10px; font-size:12px; font-weight:600; cursor:pointer; }
.nmon-tag-more:hover { border-style:solid; }
.nmon-tag-rest { display:inline-block; font-size:11px; line-height:1; padding:3px 7px; border-radius:10px; background:#e9eef2; color:#34444f; font-weight:600; cursor:help; }

/* 1.30.0 Bauabschnitt 3 (R49-34 ... R49-49): Arbeitsgeräte - the server pages' parts (B1 boxes, B4 tiles, T1/T2 tables, the
   verdict ring of the website security) plus these few additions. "nmon-ws-" is shared with the website security (same ring,
   same chips); everything that is the workstation's own is named nmon-ws-geo-* or carries an id. */
.nmon-ws-geo-on { display:inline-flex; align-items:center; gap:5px; font-size:12px; font-weight:600; color:#0e6f8c; background:#e8f5fb; border:1px solid #bfe3f2; border-radius:12px; padding:2px 10px; white-space:nowrap; }
.nmon-ws-geo-field { border:1px solid #e3e8ee; border-radius:3px; padding:10px 12px; background:#fafcfd; }
.nmon-ws-geo-field.is-disabled { background:#f4f6f8; color:#7a8795; }
.nmon-ws-geo-field.is-disabled label { cursor:not-allowed; color:#7a8795; }
.nmon-ws-geo-field.is-disabled input[type=checkbox] { opacity:.55; }
.nmon-ws-geo-map { border:1px solid #e3e8ee; border-radius:3px; overflow:hidden; background:#f7fafc; }
.nmon-ws-geo-map svg { display:block; width:100%; height:auto; }
.nav-tabs .nmon-tab-badge.bg-red { background:#dd4b39; } .nav-tabs .nmon-tab-badge.bg-yellow { background:#f39c12; } .nav-tabs .nmon-tab-badge.bg-green { background:#00a65a; }
a.nmon-tile, a.nmon-tile:hover, a.nmon-tile:focus { color:inherit; text-decoration:none; }
a.nmon-tile:hover { background:#f7fafc; }
#nmon-dash-ws-counters .nmon-net-kpis { margin-bottom:0; }
#nmon-ws-rules-table td, #nmon-ws-rules-table th { vertical-align:middle; }
#nmon-ws-rules-table input[type=checkbox] { width:16px; height:16px; margin:0; }
.nmon-sc-kind > li > a { font-weight:600; }
#nmon-set-mon-ws .nmon-note { margin:6px 0 10px; }

/* 1.30.0 A3.5: Online-Verlauf of a workstation (mockup 29.09.2026) - 36 weeks Mon-Fri, three greens by duration */
/* A3.6 (29.09. "sehr klein"): the box has its own full-width row; the columns share the width, the cells stay square */
#nmon-ws-online .ol-grid { display:grid; grid-template-rows:18px repeat(5,auto); gap:3px; overflow-x:auto; padding-bottom:4px; }
#nmon-ws-online .ol-m { font-size:12px; color:#7a8691; white-space:nowrap; grid-row:1; }
#nmon-ws-online .ol-d { font-size:12px; color:#7a8691; display:flex; align-items:center; }
#nmon-ws-online .ol-grid .ol-c { width:auto; height:auto; min-width:12px; aspect-ratio:1 / 1; border-radius:4px; }
.ol-c { display:inline-block; width:15px; height:15px; border-radius:3px; background:#e7ecf0; vertical-align:middle; }
.ol-c.is-on1 { background:#a8e2c4; } .ol-c.is-on2 { background:#4cc38a; } .ol-c.is-on3 { background:#00a65a; }
.ol-c.is-off { background:#e57366; }
.ol-c.is-hol, .ol-c.is-none { background:#dfe4e8; background-image:repeating-linear-gradient(45deg, transparent 0 3px, rgba(255,255,255,.7) 3px 5px); }
.ol-c.is-fut { background:transparent; border:1px dashed #d5dce2; }
#nmon-ws-online .ol-grid .ol-c[data-tip]:hover, #nmon-ws-online .ol-grid .ol-c[data-tip]:focus { outline:2px solid #2f3f4a; outline-offset:1px; }
#nmon-ws-online .ol-legend { font-size:11px; color:#7a8691; margin-top:6px; } #nmon-ws-online .ol-legend .ol-c { width:11px; height:11px; margin:0 1px 0 6px; } #nmon-ws-online .ol-legend .ol-c:first-child { margin-left:0; }
#nmon-ws-online .ol-tip { position:fixed; z-index:9999; background:#2f3f4a; color:#fff; font-size:12px; padding:5px 8px; border-radius:4px; pointer-events:none; white-space:nowrap; }
#nmon-ws-online .ol-sum { margin:10px 0 8px; } #nmon-ws-online .ol-we { margin-bottom:8px; }

/* 1.30.0 A3.7 / R50-3d: the bar above every page - cron warning (red), portal maintenance (yellow), portal reception (red).
   Moved here from an inline <style> in header.php so all of them share it. From 1.25.24 round 2: an inline
   margin-left:230px is only right for ONE of the three layouts this skin has - sidebar-collapse narrows the sidebar to
   50 px, and the "fixed" layout takes the 50 px header out of the flow (the bar rendered underneath it, invisible).
   These mirror AdminLTE's own rules for .content-wrapper instead of guessing at them. */
.nmon-cron-banner { margin-left:230px; padding:12px 15px 0; }
.sidebar-collapse .nmon-cron-banner { margin-left:50px; }
.fixed .nmon-cron-banner { padding-top:62px; }
.nmon-cron-banner + .nmon-cron-banner { padding-top:0; }
@media (max-width:767px){
    .nmon-cron-banner, .sidebar-collapse .nmon-cron-banner { margin-left:0 !important; }
    .fixed .nmon-cron-banner { padding-top:112px; }
    .nmon-cron-banner + .nmon-cron-banner { padding-top:0; }
}
