.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] { display:none !important; }
#security .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 {
  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 { font-size:48px; color:#5aaddd; margin-bottom:10px; }
#security .infrasec-ai-wait-panel h3 { margin:6px 0 8px; color:#294251; }
#security .infrasec-ai-wait-action { min-height:20px; font-weight:700; color:#438fbf; }
#security .infrasec-ai-wait-progress { height:6px; margin:20px 0; background:#e7eef2; overflow:hidden; position:relative; }
#security .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 { 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 { padding:10px; }
  #security .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 { animation-duration:2.4s; }
  .nmon-wait-progress span, #security .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; 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 .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; }
@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% { r:6; opacity:.8; } 100% { r:18; 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%; }
