/* ═══════════════════════════════════════════════════════════════════
   NetCore ISP — Design system matched to platform spec
   Source: internal source: design-system bundle
   Primary: #357bf2  Text: #1b2124  Success: #29cc97  Danger: #eb5757
   ═══════════════════════════════════════════════════════════════════ */

/* ── Inter font (Latin only, self-hosted) ───────────────── */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/assets/fonts/inter-6.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/assets/fonts/inter-6.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/assets/fonts/inter-6.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/assets/fonts/inter-6.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ── Minimal Bootstrap-compatible grid ──────────────────── */
.row { display:flex; flex-wrap:wrap; margin-right:-12px; margin-left:-12px; }
.row > * { padding-right:12px; padding-left:12px; box-sizing:border-box; }
.g-3 { gap:12px; margin:0; }
.g-3 > * { padding:0; }
.col { flex:1 0 0%; }
.col-12 { flex:0 0 100%; max-width:100%; }
.col-6  { flex:0 0 50%;  max-width:50%; }
.col-4  { flex:0 0 33.333%; max-width:33.333%; }
.col-3  { flex:0 0 25%;  max-width:25%; }
@media(min-width:576px){
  .col-sm-6 { flex:0 0 50%; max-width:50%; }
  .col-sm-4 { flex:0 0 33.333%; max-width:33.333%; }
  .col-sm-3 { flex:0 0 25%; max-width:25%; }
}
@media(min-width:768px){
  .col-md-6 { flex:0 0 50%; max-width:50%; }
  .col-md-4 { flex:0 0 33.333%; max-width:33.333%; }
  .col-md-3 { flex:0 0 25%; max-width:25%; }
}
.mb-4 { margin-bottom:1.5rem; }
.mb-3 { margin-bottom:1rem; }

/* ── Variables ─────────────────────────────────────────── */
:root {
    --primary:      #357bf2;
    --primary-dark: #0f5ee5;
    --primary-lt:   rgba(53,123,242,.1);
    --success:      #29cc97;
    --success-dk:   #20a278;
    --warning:      #ffaf14;
    --warning-dk:   #c88200;
    --danger:       #eb5757;
    --danger-dk:    #e62929;
    --info:         #63b4ff;
    --purple:       #7d4fff;
    --text:         #1b2124;
    --text-muted:   #6c757d;
    --border:       #e9ecef;
    --bg:           #f7f8fc;
    --shadow:       0 0 5px rgba(0,0,0,.05),0 25px 35px rgba(0,0,0,.03);
    --sidebar-w:    240px;
    --sidebar-bg:   #ffffff;
    --sidebar-hover:rgba(0,0,0,.04);
    --sidebar-act:  #4f46e5;
    --topbar-h:     48px;
}

/* ── Reset / Base ───────────────────────────────────────── */
* { box-sizing: border-box; }
body {
    margin: 0;
    font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;
    font-size: 14px;
    line-height: 1.5;
    color: var(--text);
    background: var(--bg);
}
a { color: var(--primary); text-decoration: none; }
a:hover { color: var(--primary-dark); }

/* ── Topbar ─────────────────────────────────────────────── */
#topbar {
    position: fixed; top: 0; left: 0; right: 0;
    height: var(--topbar-h);
    background: #fff;
    box-shadow: var(--shadow);
    display: flex; align-items: center;
    padding: 0 20px 0 12px;
    gap: 10px; z-index: 1000;
}
.topbar-brand {
    display: flex; align-items: center; gap: 8px;
    font-size: 15px; font-weight: 700; color: var(--text);
    text-decoration: none;
    padding: 0 16px; height: 100%;
    white-space: nowrap;
}
.topbar-brand:hover { text-decoration: none; color: var(--text); }
.brand-icon {
    width: 28px; height: 28px; border-radius: 6px;
    background: var(--primary); color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 14px; font-weight: 800; flex-shrink: 0;
}
.nav-toggler {
    display: flex; align-items: center; justify-content: center;
    width: 32px; height: 32px; background: none; border: none;
    cursor: pointer; color: var(--text); font-size: 18px;
    border-radius: 4px; transition: color .15s; flex-shrink: 0;
}
.nav-toggler:hover { color: var(--primary); }
.topbar-search {
    position: relative; flex: 1; max-width: 340px;
}
#global-search-input {
    width: 100%;
    padding: 5px 10px 5px 30px;
    border: 1px solid var(--border); border-radius: 4px;
    font-size: 13px; color: var(--text);
    background: var(--bg); outline: none; font-family: inherit;
    transition: border-color .15s, box-shadow .15s;
}
#global-search-input:focus {
    border-color: var(--primary); background: #fff;
    box-shadow: 0 0 0 .2rem rgba(53,123,242,.2);
}
#search-results {
    display: none; position: absolute;
    top: calc(100% + 4px); left: 0; right: 0;
    background: #fff; border: 1px solid var(--border);
    border-radius: 8px; box-shadow: var(--shadow);
    z-index: 9999; max-height: 420px; overflow-y: auto; min-width: 300px;
}
.topbar-actions { display: flex; align-items: center; gap: 4px; margin-left: auto; }
.quickadd-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 30px; height: 30px; border-radius: 6px;
    border: 1px solid var(--border); background: #fff;
    color: var(--text-muted); font-size: 13px;
    cursor: pointer; transition: color .15s, border-color .15s, background .15s;
    margin-right: 4px; padding: 0;
}
.quickadd-btn:hover { color: var(--primary); border-color: var(--primary); background: var(--bg); }
.quickadd-menu { min-width: 180px; }
.quickadd-menu a i { width: 16px; text-align: center; color: var(--text-muted); }
.quickadd-menu a:hover i { color: var(--primary); }
.badge-notif {
    position: relative; display: flex; align-items: center; justify-content: center;
    width: 34px; height: 34px; border-radius: 50%;
    color: var(--text-muted); font-size: 16px;
    text-decoration: none; transition: color .15s; cursor: pointer;
}
.badge-notif:hover { color: var(--primary); }
.badge-notif .dot {
    position: absolute; top: 6px; right: 6px;
    width: 7px; height: 7px; border-radius: 50%;
    background: var(--danger); border: 1.5px solid #fff;
}
.avatar {
    width: 32px; height: 32px; border-radius: 50%;
    background: var(--primary); color: #fff;
    font-size: 12px; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; user-select: none; flex-shrink: 0;
}
.relative { position: relative; }
.dropdown-menu-nc {
    position: absolute; right: 0; top: calc(100% + 6px);
    background: #fff; border: 1px solid var(--border);
    border-radius: 8px; min-width: 160px;
    box-shadow: var(--shadow); z-index: 9999; overflow: hidden;
}
.dropdown-menu-nc a {
    display: flex; align-items: center; gap: 8px;
    padding: 10px 14px; color: var(--text); font-size: 13px;
    text-decoration: none; transition: background .12s;
}
.dropdown-menu-nc a:hover { background: var(--bg); color: var(--text); }

/* ── Sidebar ─────────────────────────────────────────────── */
#sidebar {
    position: fixed; top: var(--topbar-h); left: 0;
    width: var(--sidebar-w); height: calc(100% - var(--topbar-h));
    background: var(--sidebar-bg);
    border-right: 1px solid var(--border);
    overflow-y: auto; overflow-x: hidden; z-index: 500;
    transition: transform .2s;
    scrollbar-width: thin;
    scrollbar-color: rgba(0,0,0,.1) transparent;
}
#sidebar::-webkit-scrollbar { width: 4px; }
#sidebar::-webkit-scrollbar-thumb { background: rgba(0,0,0,.12); border-radius: 2px; }
#sidebar-overlay {
    display: none; position: fixed; inset: 0;
    background: rgba(0,0,0,.5); z-index: 499;
}
#sidebar-overlay.open { display: block; }

/* ── Sidebar nav groups (accordion) ─────────────────────── */
.sidebar-menu { padding: 4px 0 32px; }
.menu-group { position: relative; }

/* Section labels: CRM / COMPANY / SYSTEM */
.menu-section-label {
    font-size: 10px; font-weight: 700;
    text-transform: uppercase; letter-spacing: 0.1em;
    padding: 16px 14px 5px;
    user-select: none;
}
.menu-section-label.sys { color: #9e9e9e; }

/* Group header (clickable row) */
.menu-group-head {
    display: flex; align-items: center;
    padding: 8px 12px; cursor: pointer;
    color: #374151;
    font-size: 13px; font-weight: 500; gap: 9px;
    transition: background .14s, color .14s;
    text-decoration: none; user-select: none; position: relative;
    border-radius: 0;
}
.menu-group-head:hover {
    background: var(--sidebar-hover);
    color: #111827; text-decoration: none;
}
.menu-group.open > .menu-group-head { color: #111827; background: rgba(0,0,0,.03); }
.menu-group-icon { width: 17px; font-size: 13px; flex-shrink: 0; text-align: center; color: #6b7280; }
.menu-group-label { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.menu-group-badge {
    min-width: 16px; height: 16px; padding: 0 4px;
    background: var(--danger); color: #fff; border-radius: 8px;
    font-size: 9px; font-weight: 700; line-height: 16px;
    text-align: center; flex-shrink: 0;
}
.menu-arrow { font-size: 8px; transition: transform .2s; color: #9ca3af; flex-shrink: 0; }
.menu-group.open > .menu-group-head > .menu-arrow { transform: rotate(90deg); }

/* Single item (no children) active state */
a.menu-group-head.active {
    background: var(--sidebar-act) !important;
    color: #fff !important;
    border-radius: 0;
}
a.menu-group-head.active .menu-group-icon { color: #fff; }
a.menu-group-head.active .menu-arrow { color: rgba(255,255,255,.5); }

/* Group head active (parent of active child) */
.menu-group.open > .menu-group-head.parent-active {
    color: var(--sidebar-act);
}
.menu-group.open > .menu-group-head.parent-active .menu-group-icon { color: var(--sidebar-act); }

/* ── Children list ── */
.menu-group-children { display: none; background: rgba(0,0,0,.015); }
.menu-group.open > .menu-group-children { display: block; }

.menu-child-item {
    display: flex; align-items: center;
    padding: 6px 12px 6px 40px;
    font-size: 12.5px; font-weight: 400;
    color: #6b7280;
    text-decoration: none;
    transition: background .12s, color .12s;
    position: relative; gap: 6px;
}
.menu-child-item:hover { background: var(--sidebar-hover); color: #111827; text-decoration: none; }
.menu-child-item.active {
    color: var(--sidebar-act); font-weight: 600;
    background: rgba(79,70,229,.07);
    box-shadow: inset 3px 0 0 var(--sidebar-act);
}
.menu-child-badge {
    min-width: 15px; height: 15px; padding: 0 3px; margin-left: auto;
    background: var(--danger); color: #fff; border-radius: 8px;
    font-size: 9px; font-weight: 700; line-height: 15px;
    text-align: center; flex-shrink: 0;
}

/* ── Nested sub-groups (e.g. Networking > Routers > Add/List) ── */
.menu-subgroup { position: relative; }
.menu-subgroup-head { user-select: none; }
.menu-subgroup.open > .menu-subgroup-head > .menu-arrow { transform: rotate(90deg); }
.menu-subgroup-children { display: none; background: rgba(0,0,0,.02); }
.menu-subgroup.open > .menu-subgroup-children { display: block; }
.menu-subchild-item { padding-left: 56px !important; font-size: 12px; }

/* ── Main area ───────────────────────────────────────────── */
#main {
    margin-left: var(--sidebar-w);
    padding-top: calc(var(--topbar-h) + 16px);
    padding-left: 16px; padding-right: 16px; padding-bottom: 16px;
    min-height: 100vh; background: var(--bg);
}
.main-content-holder {
    background: #fff; border-radius: 8px;
    box-shadow: var(--shadow); padding: 24px;
    min-height: calc(100vh - var(--topbar-h) - 48px);
}

/* ── Page header ─────────────────────────────────────────── */
.page-header {
    display: flex; align-items: center;
    justify-content: space-between;
    margin-bottom: 20px; flex-wrap: wrap; gap: 10px;
}
.page-header h1 {
    font-size: 18px; font-weight: 700; margin: 0 0 4px;
    color: var(--text); line-height: 1.2;
}
.breadcrumb-nc { font-size: 12px; color: var(--text-muted); }
.breadcrumb-nc a { color: var(--primary); }
.breadcrumb-nc a:hover { text-decoration: underline; }

/* ── Cards ───────────────────────────────────────────────── */
.card {
    background: #fff; border: 0; border-radius: 8px;
    box-shadow: var(--shadow); margin-bottom: 16px; overflow: hidden;
}
.card-header {
    background: #fff; padding: 12px 20px;
    border-bottom: 1px solid var(--border);
    display: flex; align-items: center; justify-content: space-between;
    gap: 8px; flex-wrap: wrap;
}
.card-header h5, .card-title { margin: 0; font-size: 13px; font-weight: 600; color: var(--text); }
.card-body { padding: 18px 20px; }
.mb-3 { margin-bottom: 14px !important; }
.mb-4 { margin-bottom: 20px !important; }

/* ── Stat / info boxes ───────────────────────────────────── */
.stat-card {
    background: #fff; border-radius: 8px;
    box-shadow: var(--shadow); padding: 20px;
    display: flex; align-items: center; gap: 14px;
    transition: box-shadow .15s;
}
.stat-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.1); }
.stat-icon {
    width: 52px; height: 52px; border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-size: 22px; flex-shrink: 0; color: #fff;
}
.stat-icon.blue   { background: var(--primary); }
.stat-icon.green  { background: var(--success); }
.stat-icon.yellow { background: var(--warning); }
.stat-icon.red    { background: var(--danger); }
.stat-icon.teal   { background: var(--info); }
.stat-icon.purple { background: var(--purple); }
.stat-icon.grey   { background: var(--text-muted); }
.stat-icon.orange { background: #ff7043; }
.stat-info { flex: 1; min-width: 0; }
.stat-value { font-size: 22px; font-weight: 700; color: var(--text); line-height: 1.2; }
.stat-label { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.stat-change { font-size: 11px; margin-top: 3px; }
.stat-change.up   { color: var(--success); }
.stat-change.down { color: var(--danger); }

/* ── Tables ──────────────────────────────────────────────── */
.table-wrap { overflow-x: auto; }
table.nc-table, table.table-nc {
    width: 100%; border-collapse: collapse;
    font-size: 13px; color: var(--text);
}
table.nc-table thead th, table.table-nc thead th {
    padding: 8px 16px; text-align: left;
    font-size: 11px; font-weight: 600;
    color: var(--text-muted); background: var(--bg);
    border-bottom: 1px solid var(--border);
    text-transform: uppercase; letter-spacing: .04em;
    white-space: nowrap;
}
table.nc-table tbody tr, table.table-nc tbody tr {
    border-bottom: 1px solid var(--border);
    transition: background .1s;
}
table.nc-table tbody tr:last-child, table.table-nc tbody tr:last-child {
    border-bottom: none;
}
table.nc-table tbody tr:hover, table.table-nc tbody tr:hover { background: var(--bg); }
table.nc-table td, table.table-nc td {
    padding: 10px 16px; vertical-align: middle;
}
table.nc-table tfoot td {
    padding: 8px 16px; border-top: 2px solid var(--border);
    font-weight: 700; font-size: 13px;
}

/* ── Buttons ─────────────────────────────────────────────── */
.btn-primary-nc {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 16px;
    background: var(--primary); color: #fff;
    border: 1px solid var(--primary); border-radius: 4px;
    font-size: 13px; font-weight: 500; cursor: pointer;
    text-decoration: none; line-height: 1.4; white-space: nowrap;
    transition: background .15s, border-color .15s; font-family: inherit;
}
.btn-primary-nc:hover {
    background: var(--primary-dark); border-color: var(--primary-dark);
    color: #fff; text-decoration: none;
}
.btn-success-nc {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 16px;
    background: var(--success); color: #fff;
    border: 1px solid var(--success); border-radius: 4px;
    font-size: 13px; font-weight: 500; cursor: pointer;
    text-decoration: none; line-height: 1.4; white-space: nowrap;
    transition: background .15s; font-family: inherit;
}
.btn-success-nc:hover {
    background: var(--success-dk); border-color: var(--success-dk);
    color: #fff;
}
.btn-danger-nc {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 14px;
    background: var(--danger); color: #fff;
    border: 1px solid var(--danger); border-radius: 4px;
    font-size: 13px; font-weight: 500; cursor: pointer;
    text-decoration: none; line-height: 1.4; white-space: nowrap;
    transition: background .15s; font-family: inherit;
}
.btn-danger-nc:hover {
    background: var(--danger-dk); border-color: var(--danger-dk); color: #fff;
}
.btn-warning-nc {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 14px;
    background: var(--warning); color: #fff;
    border: 1px solid var(--warning); border-radius: 4px;
    font-size: 13px; font-weight: 500; cursor: pointer;
    text-decoration: none; line-height: 1.4; white-space: nowrap;
    transition: background .15s; font-family: inherit;
}
.btn-warning-nc:hover { filter: brightness(.9); color: #fff; }
.btn-outline-nc {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 16px;
    background: #fff; color: var(--primary);
    border: 1px solid var(--primary); border-radius: 4px;
    font-size: 13px; font-weight: 500; cursor: pointer;
    text-decoration: none; line-height: 1.4; white-space: nowrap;
    transition: background .15s, color .15s; font-family: inherit;
}
.btn-outline-nc:hover {
    background: var(--primary); color: #fff; text-decoration: none;
}
.btn-sm-nc { padding: 4px 10px; font-size: 12px; }
.btn-icon-nc {
    display: inline-flex; align-items: center; justify-content: center;
    width: 30px; height: 30px;
    background: #fff; border: 1px solid #e2e8f0; border-radius: 6px;
    cursor: pointer; color: #4f46e5; font-size: 13px;
    box-shadow: 0 1px 2px rgba(0,0,0,.06);
    transition: opacity .12s; text-decoration: none;
    padding: 0; line-height: 1; font-family: inherit; vertical-align: middle;
}
.btn-icon-nc:hover   { opacity: .7; }
.btn-icon-nc.success { color: #16a34a; }
.btn-icon-nc.warning { color: #d97706; }
.btn-icon-nc.danger  { color: #dc2626; }
.btn-icon-nc.info    { color: #0891b2; }
.btn-info-nc {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 14px; background: var(--info); color: #fff;
    border: 1px solid var(--info); border-radius: 4px;
    font-size: 13px; font-weight: 500; cursor: pointer;
    text-decoration: none; line-height: 1.4; white-space: nowrap;
    transition: background .15s; font-family: inherit;
}
.btn-info-nc:hover { filter: brightness(.9); color: #fff; }

/* ── Forms ───────────────────────────────────────────────── */
.form-group { margin-bottom: 14px; }
.form-label {
    display: block; font-size: 12px; font-weight: 600;
    color: var(--text-muted); margin-bottom: 4px;
    text-transform: uppercase; letter-spacing: .04em;
}
.form-control-nc, .form-control {
    display: block; width: 100%;
    padding: 5px 12px;
    font-size: 13px; font-weight: 400; line-height: 1.5;
    color: var(--text); background: #fff;
    border: 1px solid #ced4da; border-radius: 4px;
    outline: none; font-family: inherit;
    transition: border-color .15s, box-shadow .15s;
}
.form-control-nc:focus, .form-control:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 .2rem rgba(53,123,242,.2);
}
.form-control-nc:disabled, .form-control:disabled { background: #dfe4ed; }
textarea.form-control-nc, textarea.form-control { height: auto; resize: vertical; }
select.form-control-nc, select.form-control { appearance: auto; }
.form-text, .form-text-nc {
    font-size: 11px; color: var(--text-muted);
    margin-top: 3px; display: block;
}
.form-check { display: flex; align-items: flex-start; gap: 8px; }
.form-check-input {
    width: 16px; height: 16px; margin-top: 2px;
    cursor: pointer; accent-color: var(--primary); flex-shrink: 0;
}
.form-check-label { cursor: pointer; font-size: 13px; color: var(--text); }
.fw-600 { font-weight: 600; }
.fw-bold { font-weight: 700; }

/* ── Status badges ───────────────────────────────────────── */
.status-badge {
    display: inline-block; padding: 3px 10px;
    border-radius: 12px; font-size: 11px; font-weight: 600;
    line-height: 1.4; white-space: nowrap;
}
.sb-active    { background: rgba(41,204,151,.12); color: #187758; }
.sb-inactive  { background: rgba(108,117,125,.12); color: #6c757d; }
.sb-suspended { background: rgba(255,175,20,.15); color: #8a6200; }
.sb-blocked   { background: rgba(235,87,87,.12); color: #c62828; }
.sb-new       { background: rgba(53,123,242,.12); color: var(--primary); }
.sb-pending   { background: rgba(255,175,20,.15); color: #8a6200; }
.sb-paid      { background: rgba(41,204,151,.12); color: #187758; }
.sb-unpaid    { background: rgba(53,123,242,.12); color: var(--primary); }
.sb-overdue   { background: rgba(235,87,87,.12); color: #c62828; }
.sb-cancelled { background: rgba(108,117,125,.12); color: #6c757d; }
.sb-open      { background: rgba(53,123,242,.12); color: var(--primary); }
.sb-closed    { background: rgba(108,117,125,.12); color: #6c757d; }
.sb-resolved  { background: rgba(41,204,151,.12); color: #187758; }
.sb-online    { background: rgba(41,204,151,.12); color: #187758; }
.sb-offline   { background: rgba(235,87,87,.12); color: #c62828; }
.sb-paused-online { background: rgba(249,115,22,.14); color: #c2410c; }
.sb-lead      { background: rgba(99,180,255,.15); color: #2a7fd4; }
.sb-won       { background: rgba(41,204,151,.12); color: #187758; }
.sb-lost      { background: rgba(235,87,87,.12); color: #c62828; }

/* ── Alerts ──────────────────────────────────────────────── */
.alert-nc {
    display: flex; align-items: center; gap: 10px;
    padding: 11px 16px; border-radius: 6px;
    font-size: 13px; margin-bottom: 16px; border-left: 4px solid;
}
.alert-success, .alert-success-nc {
    background: rgba(41,204,151,.08); color: #187758;
    border-left-color: var(--success);
    padding: 11px 16px; border-radius: 6px;
    font-size: 13px; margin-bottom: 16px;
    display: flex; align-items: center; gap: 10px;
}
.alert-danger, .alert-danger-nc {
    background: rgba(235,87,87,.08); color: #c51717;
    border-left-color: var(--danger);
    padding: 11px 16px; border-radius: 6px;
    font-size: 13px; margin-bottom: 16px;
    display: flex; align-items: center; gap: 10px;
}
.alert-warning {
    background: rgba(255,175,20,.1); color: #8a6200;
    border-left-color: var(--warning);
    padding: 11px 16px; border-radius: 6px;
    font-size: 13px; margin-bottom: 16px;
    display: flex; align-items: center; gap: 10px;
}
.alert-info {
    background: rgba(53,123,242,.08); color: var(--primary);
    border-left-color: var(--primary);
    padding: 11px 16px; border-radius: 6px;
    font-size: 13px; margin-bottom: 16px;
    display: flex; align-items: center; gap: 10px;
}
.alert-error {
    background: rgba(235,87,87,.08); color: #c51717;
    padding: 10px 14px; border-radius: 6px; font-size: 13px;
    margin-bottom: 14px; border-left: 4px solid var(--danger);
}

/* ── .nc-alert family (theme-aware, used by view.php empty states) ── */
.nc-alert-warning,
.nc-alert-info,
.nc-alert-success,
.nc-alert-danger {
    border-radius: 6px; padding: 24px; text-align: center; font-size: 13px;
    border: 1px solid;
}
.nc-alert-warning {
    background: rgba(245,158,11,0.12);
    border-color: rgba(245,158,11,0.35);
    color: var(--color-warning);
}
.nc-alert-info {
    background: rgba(53,123,242,0.10);
    border-color: rgba(53,123,242,0.35);
    color: var(--color-info);
}
.nc-alert-success {
    background: rgba(41,204,151,0.12);
    border-color: rgba(41,204,151,0.35);
    color: var(--color-success);
}
.nc-alert-danger {
    background: rgba(235,87,87,0.10);
    border-color: rgba(235,87,87,0.35);
    color: var(--color-danger);
}

/* ── .nc-table-footer (Statistics tab tfoot tint) ── */
.nc-table-footer { background: var(--color-card-2); font-weight: 600; font-size: 12px; }

/* ── Callouts ────────────────────────────────────────────── */
.callout-nc {
    padding: 12px 16px; margin-bottom: 16px;
    border-left: 4px solid; border-radius: 0 6px 6px 0; font-size: 13px;
}
.callout-info    { background: rgba(53,123,242,.06); border-color: var(--primary); }
.callout-warning { background: rgba(255,175,20,.08); border-color: var(--warning); }
.callout-danger  { background: rgba(235,87,87,.08); border-color: var(--danger); }
.callout-success { background: rgba(41,204,151,.08); border-color: var(--success); }

/* ── Tabs ────────────────────────────────────────────────── */
.nav-tabs-nc {
    display: flex; gap: 0; border-bottom: 2px solid var(--border);
    margin-bottom: 20px; flex-wrap: wrap; list-style: none; padding: 0; margin-top: 0;
}
.nav-tabs-nc a {
    display: block; padding: 8px 16px; font-size: 13px; font-weight: 500;
    color: var(--text-muted); text-decoration: none;
    border-bottom: 2px solid transparent; margin-bottom: -2px;
    transition: color .15s; white-space: nowrap;
}
.nav-tabs-nc a:hover { color: var(--primary); }
.nav-tabs-nc a.active { color: var(--primary); border-bottom-color: var(--primary); font-weight: 600; }

/* Bootstrap tabs override */
.nav-tabs { border-bottom: 2px solid var(--border); }
.nav-tabs .nav-link { color: var(--text-muted); font-size: 13px; padding: 8px 16px; border: none; border-bottom: 2px solid transparent; margin-bottom: -2px; }
.nav-tabs .nav-link:hover { color: var(--primary); border-color: transparent; }
.nav-tabs .nav-link.active { color: var(--primary); border-bottom-color: var(--primary); background: transparent; font-weight: 600; }

/* ── Pagination ──────────────────────────────────────────── */
.pagination-nc {
    display: flex; gap: 3px; align-items: center;
    flex-wrap: wrap; margin-top: 16px; list-style: none; padding: 0;
}
.pagination-nc a, .pagination-nc span {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 32px; height: 32px; padding: 0 8px;
    border: 1px solid var(--border); border-radius: 4px;
    font-size: 12px; color: var(--primary); background: #fff;
    text-decoration: none; transition: background .1s;
}
.pagination-nc a:hover { background: var(--bg); }
.pagination-nc .active { background: var(--primary); color: #fff; border-color: var(--primary); }
.pagination-nc .disabled { color: var(--text-muted); pointer-events: none; }

/* ── Modals ──────────────────────────────────────────────── */
.modal-overlay, [id$="-modal"][style*="flex"] {
    position: fixed; inset: 0; background: rgba(0,0,0,.5);
    z-index: 1050; display: flex; align-items: center; justify-content: center; padding: 16px;
}
.modal-box {
    background: #fff; border-radius: 12px; padding: 28px 32px;
    width: 100%; max-width: 560px; max-height: 90vh; overflow-y: auto;
    box-shadow: 0 8px 32px rgba(0,0,0,.18);
}
.modal-header {
    display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px;
}
.modal-header h5 { margin: 0; font-size: 16px; font-weight: 700; }
.modal-close {
    background: none; border: none; font-size: 22px; cursor: pointer;
    color: var(--text-muted); padding: 0; line-height: 1;
}
.modal-close:hover { color: var(--text); }
/* Legacy inline modal style compat */
[id$="-modal"] > div {
    background: #fff !important;
    border-radius: 12px !important;
    box-shadow: 0 8px 32px rgba(0,0,0,.18) !important;
}

/* ── Labels/chips ────────────────────────────────────────── */
.label-nc {
    display: inline-block; padding: 2px 8px; font-size: 11px;
    font-weight: 600; border-radius: 10px; color: #fff;
}
.label-primary { background: var(--primary); }
.label-success { background: var(--success); }
.label-danger  { background: var(--danger); }
.label-warning { background: var(--warning); color: var(--text); }
.label-info    { background: var(--info); }
.label-default { background: var(--text-muted); }

/* ── Code/IP badge ───────────────────────────────────────── */
.ip-badge {
    font-family: 'Courier New', monospace; font-size: 12px;
    background: var(--bg); border: 1px solid var(--border);
    border-radius: 4px; padding: 2px 6px; display: inline-block;
    color: var(--text);
}
code { background: var(--bg); border-radius: 3px; padding: 1px 5px; font-size: 12px; }
.speed-badge {
    display: inline-block; padding: 2px 8px; border-radius: 10px;
    font-size: 11px; font-weight: 600;
    background: rgba(53,123,242,.12); color: var(--primary);
}

/* ── Chart ───────────────────────────────────────────────── */
.chart-container { position: relative; height: 220px; }

/* ── Section title ───────────────────────────────────────── */
.section-title {
    font-size: 12px; font-weight: 700; color: var(--text-muted);
    border-bottom: 1px solid var(--border);
    padding-bottom: 6px; margin: 16px 0 12px;
    text-transform: uppercase; letter-spacing: .05em;
}
.section-title:first-child { margin-top: 0; }

/* ── Definition list ─────────────────────────────────────── */
dl.dl-nc dt { font-size: 11px; font-weight: 600; color: var(--text-muted); margin-bottom: 1px; text-transform: uppercase; }
dl.dl-nc dd { font-size: 13px; margin: 0 0 10px; }

/* ── Ticket messages ─────────────────────────────────────── */
.ticket-msg-admin {
    background: rgba(53,123,242,.06); border-radius: 6px;
    padding: 12px 14px; margin-bottom: 10px;
    border-left: 3px solid var(--primary); font-size: 13px;
}
.ticket-msg-customer {
    background: var(--bg); border-radius: 6px;
    padding: 12px 14px; margin-bottom: 10px;
    border-left: 3px solid var(--border); font-size: 13px;
}

/* ── Utilities ───────────────────────────────────────────── */
.text-right   { text-align: right; }
.text-center  { text-align: center; }
.text-left    { text-align: left; }
.d-flex       { display: flex !important; }
.align-center { align-items: center !important; }
.justify-between { justify-content: space-between !important; }
.flex-wrap    { flex-wrap: wrap !important; }
.gap-1 { gap: 4px; }
.gap-2 { gap: 8px; }
.gap-3 { gap: 12px; }
.gap-4 { gap: 16px; }
.mt-0 { margin-top: 0 !important; }
.mt-1 { margin-top: 4px !important; }
.mt-2 { margin-top: 8px !important; }
.mt-3 { margin-top: 12px !important; }
.mt-4 { margin-top: 20px !important; }
.mb-0 { margin-bottom: 0 !important; }
.mb-1 { margin-bottom: 4px !important; }
.mb-2 { margin-bottom: 8px !important; }
.mb-3 { margin-bottom: 14px !important; }
.mb-4 { margin-bottom: 20px !important; }
.text-muted   { color: var(--text-muted) !important; }
.text-primary { color: var(--primary) !important; }
.text-success { color: var(--success) !important; }
.text-danger  { color: var(--danger)  !important; }
.text-warning { color: var(--warning) !important; }
.text-info    { color: var(--info)    !important; }
.small        { font-size: 12px; }
.divider { border: none; border-top: 1px solid var(--border); margin: 10px 0; }
.w-100 { width: 100% !important; }
@keyframes pulse { 0%,100%{opacity:1}50%{opacity:.4} }
.pulse { animation: pulse 2s infinite; }

/* ── Login page ──────────────────────────────────────────── */
.login-page {
    min-height: 100vh; display: flex;
    align-items: center; justify-content: center; background: var(--bg);
}
.login-card {
    background: #fff; border-radius: 12px; padding: 36px 40px;
    width: 100%; max-width: 360px; box-shadow: var(--shadow);
}
.login-logo { text-align: center; margin-bottom: 24px; }
.login-logo .logo-circle {
    width: 52px; height: 52px; background: var(--primary);
    border-radius: 10px; display: inline-flex; align-items: center;
    justify-content: center; color: #fff; font-size: 24px; font-weight: 800;
    margin-bottom: 10px;
}
.login-logo h1 { font-size: 20px; font-weight: 700; margin: 0 0 4px; color: var(--text); }
.login-logo p  { font-size: 13px; color: var(--text-muted); margin: 0; }
.btn-login {
    width: 100%; padding: 9px; background: var(--primary); color: #fff;
    border: 1px solid var(--primary); border-radius: 4px;
    font-size: 14px; font-weight: 600; cursor: pointer;
    transition: background .15s; font-family: inherit;
}
.btn-login:hover { background: var(--primary-dark); }

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 768px) {
    #sidebar { transform: translateX(-100%); z-index: 600; box-shadow: 4px 0 20px rgba(0,0,0,.4); }
    #sidebar.open { transform: translateX(0); }
    #main { margin-left: 0; }
    .main-content-holder { padding: 14px; }
    .topbar-search { display: none; }
    .page-header { flex-direction: column; align-items: flex-start; }
}

/* ═══════════════════════════════════════════════════════════════════
   platform-inspired refresh (additive — no existing rules modified)
   Existing classes (.card, .nc-table, .btn-primary-nc, .status-badge,
   .breadcrumb-nc, .menu-section-label) keep working unchanged.
   ═══════════════════════════════════════════════════════════════════ */

:root {
    --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    --color-primary: var(--primary);
    --color-primary-hover: var(--primary-dark);
    --color-success: var(--success);
    --color-warning: var(--warning);
    --color-danger:  var(--danger);
    --color-info:    var(--info);
    --color-purple:  var(--purple);
    --color-text:    var(--text);
    --color-text-2:  #374151;
    --color-muted:   var(--text-muted);
    --color-border:  var(--border);
    --color-bg:      var(--bg);
    --color-card:    #ffffff;
    --color-card-2:  #f9fafb;
    --shadow-card:   0 1px 2px rgba(0,0,0,0.04), 0 1px 3px rgba(0,0,0,0.06);
    --shadow-hover:  0 4px 6px rgba(0,0,0,0.05), 0 2px 4px rgba(0,0,0,0.06);
    --radius-sm: 4px;
    --radius-md: 6px;
    --radius-lg: 8px;
}

html, body { font-family: var(--font-sans); }

/* ── platform-style card panel (opt-in via .nc-card) ── */
.nc-card {
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-card);
    margin-bottom: 16px;
    overflow: hidden;
}
.nc-card-header {
    padding: 12px 16px;
    border-bottom: 1px solid var(--color-border);
    display: flex; align-items: center; justify-content: space-between;
    background: #fafbfc;
}
.nc-card-header strong {
    font-size: 14px; font-weight: 600; color: var(--color-text);
    cursor: pointer;
}
.nc-card-header .chev {
    cursor: pointer; color: var(--color-muted);
    transition: transform 0.2s;
}
.nc-card.is-collapsed .nc-card-body { display: none; }
.nc-card.is-collapsed .chev { transform: rotate(-90deg); }
.nc-card-body { padding: 16px; }

/* ── Breadcrumb (opt-in via nc_breadcrumb() helper) ── */
.nc-breadcrumb {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 0; margin-bottom: 16px;
    border-bottom: 1px solid var(--color-border);
}
.nc-breadcrumb-icon {
    width: 32px; height: 32px;
    border-radius: var(--radius-sm);
    display: flex; align-items: center; justify-content: center;
    color: #fff; font-size: 14px;
    flex-shrink: 0;
}
.nc-breadcrumb ul {
    list-style: none; padding: 0; margin: 0;
    display: flex; align-items: center; gap: 8px;
    font-size: 13px; flex-wrap: wrap;
}
.nc-breadcrumb li { color: var(--color-muted); }
.nc-breadcrumb li.current { color: var(--color-text); font-weight: 500; }
.nc-breadcrumb li:not(:last-child)::after {
    content: '/'; margin-left: 8px; color: var(--color-border);
}
.nc-breadcrumb li a { color: var(--color-muted); text-decoration: none; }
.nc-breadcrumb li a:hover { color: var(--color-primary); }

/* ── Sidebar section-label tier colors (sidebar tier mapping) ── */
.menu-section-label.tier-purple { color: var(--color-purple); }
.menu-section-label.tier-success { color: var(--color-success); }
.menu-section-label.tier-muted   { color: var(--color-muted); }

/* ── Form row (opt-in: .form-row pattern) ── */
.form-row {
    display: flex; align-items: flex-start; gap: 16px;
    margin-bottom: 12px;
}
.form-row label.col-form-label {
    flex: 0 0 33%; padding-top: 8px;
    font-size: 13px; color: var(--color-text); font-weight: 500;
}
.form-row .form-control,
.form-row .form-input {
    flex: 1; font-size: 13px; padding: 7px 10px;
    border: 1px solid var(--color-border); border-radius: var(--radius-sm);
    background: #fff;
}
.form-row .form-control:focus {
    outline: none; border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(53,123,242,0.1);
}
.form-row small {
    display: block; margin-top: 4px;
    font-size: 11px; color: var(--color-muted);
}

/* ── Toggle switch ── */
.toggle-switch {
    position: relative; display: inline-block;
    width: 36px; height: 20px;
}
.toggle-switch input { opacity: 0; width: 0; height: 0; }
.toggle-switch .slider {
    position: absolute; cursor: pointer; inset: 0;
    background: #cbd5e1; border-radius: 20px;
    transition: 0.2s;
}
.toggle-switch .slider:before {
    content: ''; position: absolute;
    height: 14px; width: 14px;
    left: 3px; top: 3px;
    background: white; border-radius: 50%;
    transition: 0.2s;
}
.toggle-switch input:checked + .slider { background: var(--color-primary); }
.toggle-switch input:checked + .slider:before { transform: translateX(16px); }

/* ── Buttons (opt-in: .btn-primary / .btn-secondary / .btn-danger)
   These are net-new; pages already on .btn-primary-nc keep working. ── */
.btn-primary {
    background: var(--color-primary); border: 1px solid var(--color-primary);
    color: #fff; padding: 7px 14px;
    border-radius: var(--radius-sm);
    font-size: 13px; font-weight: 500; cursor: pointer;
    transition: background 0.15s;
    font-family: inherit; line-height: 1.4;
    display: inline-flex; align-items: center; gap: 6px;
    text-decoration: none;
}
.btn-primary:hover {
    background: var(--color-primary-hover);
    border-color: var(--color-primary-hover); color: #fff;
}
.btn-secondary {
    background: #fff; border: 1px solid var(--color-border);
    color: var(--color-text); padding: 7px 14px;
    border-radius: var(--radius-sm);
    font-size: 13px; cursor: pointer;
    font-family: inherit; line-height: 1.4;
    display: inline-flex; align-items: center; gap: 6px;
    text-decoration: none;
}
.btn-secondary:hover { background: #f9fafb; color: var(--color-text); }
.btn-danger {
    background: var(--color-danger); border: 1px solid var(--color-danger);
    color: #fff; padding: 7px 14px;
    border-radius: var(--radius-sm);
    font-size: 13px; cursor: pointer;
    font-family: inherit; line-height: 1.4;
    display: inline-flex; align-items: center; gap: 6px;
    text-decoration: none;
}
.btn-danger:hover { background: #dc2626; border-color: #dc2626; color: #fff; }
.btn-icon {
    width: 30px; height: 30px;
    display: inline-flex; align-items: center; justify-content: center;
    padding: 0;
}

/* ── Pill-style status badge (opt-in: .nc-badge — does not replace .status-badge / .sb-*) ── */
.nc-badge { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 500; }
.nc-badge.success { background: #dcfce7; color: #16a34a; }
.nc-badge.warning { background: #fef3c7; color: #d97706; }
.nc-badge.danger  { background: #fee2e2; color: #dc2626; }
.nc-badge.info    { background: #dbeafe; color: #2563eb; }
.nc-badge.muted   { background: #f3f4f6; color: #6b7280; }

/* ═══════════════════════════════════════════════════════════════════
   DARK MODE — toggled via <html data-theme="dark">
   ═══════════════════════════════════════════════════════════════════ */
:root[data-theme="dark"] {
    --color-bg:     #0f1419;
    --color-card:   #1a1f26;
    --color-card-2: #232a33;
    --color-text:   #e5e7eb;
    --color-text-2: #cbd5e1;
    --color-muted:  #94a3b8;
    --color-border: #2d3540;
    --shadow-card:  0 1px 2px rgba(0,0,0,0.4), 0 1px 3px rgba(0,0,0,0.3);

    /* Override the legacy palette variables too so existing rules pick this up */
    --bg:           #0f1419;
    --text:         #e5e7eb;
    --text-muted:   #94a3b8;
    --border:       #2d3540;
    --sidebar-bg:   #1a1f26;
    --sidebar-hover:rgba(255,255,255,.05);
    --shadow:       0 0 5px rgba(0,0,0,.4),0 25px 35px rgba(0,0,0,.3);
}

:root[data-theme="dark"] body { background: var(--color-bg); color: var(--color-text); }

/* Topbar */
:root[data-theme="dark"] #topbar { background: var(--color-card); border-bottom: 1px solid var(--color-border); }
:root[data-theme="dark"] .topbar-brand { color: var(--color-text); }
:root[data-theme="dark"] .topbar-brand:hover { color: var(--color-text); }
:root[data-theme="dark"] .nav-toggler { color: var(--color-text); }
:root[data-theme="dark"] #global-search-input {
    background: var(--color-card-2); color: var(--color-text);
    border-color: var(--color-border);
}
:root[data-theme="dark"] #global-search-input:focus {
    background: var(--color-card-2);
    box-shadow: 0 0 0 .2rem rgba(53,123,242,.3);
}
:root[data-theme="dark"] #search-results {
    background: var(--color-card); border-color: var(--color-border);
}
:root[data-theme="dark"] .quickadd-btn {
    background: var(--color-card-2); color: var(--color-text-2);
    border-color: var(--color-border);
}
:root[data-theme="dark"] .quickadd-btn:hover {
    background: var(--color-card); color: var(--color-primary);
    border-color: var(--color-primary);
}
:root[data-theme="dark"] .badge-notif { color: var(--color-text-2); }
:root[data-theme="dark"] .badge-notif .dot { border-color: var(--color-card); }

/* Dropdowns (user menu, quickadd) */
:root[data-theme="dark"] .dropdown-menu-nc {
    background: var(--color-card);
    border-color: var(--color-border);
    color: var(--color-text);
    box-shadow: 0 4px 16px rgba(0,0,0,0.5);
}
:root[data-theme="dark"] .dropdown-menu-nc a,
:root[data-theme="dark"] .dropdown-menu-nc .dropdown-item { color: var(--color-text); }
:root[data-theme="dark"] .dropdown-menu-nc a:hover,
:root[data-theme="dark"] .dropdown-menu-nc .dropdown-item:hover { background: var(--color-card-2); color: var(--color-text); }

/* Sidebar */
:root[data-theme="dark"] #sidebar {
    background: var(--color-card); border-right-color: var(--color-border);
}
:root[data-theme="dark"] .menu-group-head { color: var(--color-text-2); }
:root[data-theme="dark"] .menu-group-head:hover { background: rgba(255,255,255,.05); color: #fff; }
:root[data-theme="dark"] .menu-group.open > .menu-group-head { background: rgba(255,255,255,.04); color: #fff; }
:root[data-theme="dark"] .menu-group-icon { color: var(--color-muted); }
:root[data-theme="dark"] .menu-arrow { color: var(--color-muted); }
:root[data-theme="dark"] .menu-child-item { color: var(--color-muted); }
:root[data-theme="dark"] .menu-child-item:hover { background: rgba(255,255,255,.05); color: #fff; }
:root[data-theme="dark"] .menu-group-children { background: rgba(0,0,0,.25); }
:root[data-theme="dark"] .menu-subgroup-children { background: rgba(0,0,0,.35); }
:root[data-theme="dark"] .menu-section-label { color: var(--color-muted); }
:root[data-theme="dark"] .menu-section-label.tier-purple  { color: #a78bfa; }
:root[data-theme="dark"] .menu-section-label.tier-success { color: #34d399; }
:root[data-theme="dark"] .menu-section-label.tier-muted,
:root[data-theme="dark"] .menu-section-label.sys         { color: #9ca3af; }

/* Main / page wrapper */
:root[data-theme="dark"] #main { background: var(--color-bg); }
:root[data-theme="dark"] .main-content-holder {
    background: var(--color-card); color: var(--color-text);
    box-shadow: var(--shadow-card);
}
:root[data-theme="dark"] .page-header h1 { color: var(--color-text); }
:root[data-theme="dark"] .breadcrumb-nc { color: var(--color-muted); }

/* Cards */
:root[data-theme="dark"] .card,
:root[data-theme="dark"] .nc-card {
    background: var(--color-card-2); border-color: var(--color-border);
    color: var(--color-text);
}
:root[data-theme="dark"] .card-header,
:root[data-theme="dark"] .nc-card-header {
    background: var(--color-card); border-bottom-color: var(--color-border);
}
:root[data-theme="dark"] .card-header h5,
:root[data-theme="dark"] .card-title,
:root[data-theme="dark"] .nc-card-header strong { color: var(--color-text); }

/* Stat cards */
:root[data-theme="dark"] .stat-card { background: var(--color-card-2); }
:root[data-theme="dark"] .stat-value { color: var(--color-text); }
:root[data-theme="dark"] .stat-label { color: var(--color-muted); }

/* Tables */
:root[data-theme="dark"] table.nc-table,
:root[data-theme="dark"] table.table-nc { color: var(--color-text); }
:root[data-theme="dark"] table.nc-table thead th,
:root[data-theme="dark"] table.table-nc thead th {
    background: var(--color-card); color: var(--color-muted);
    border-bottom-color: var(--color-border);
}
:root[data-theme="dark"] table.nc-table tbody tr,
:root[data-theme="dark"] table.table-nc tbody tr { border-bottom-color: var(--color-border); }
:root[data-theme="dark"] table.nc-table tbody tr:hover,
:root[data-theme="dark"] table.table-nc tbody tr:hover { background: rgba(255,255,255,.03); }

/* Forms */
:root[data-theme="dark"] .form-control,
:root[data-theme="dark"] .form-control-nc,
:root[data-theme="dark"] input.form-control,
:root[data-theme="dark"] select.form-control,
:root[data-theme="dark"] textarea.form-control,
:root[data-theme="dark"] .form-row .form-control,
:root[data-theme="dark"] .form-row .form-input {
    background: var(--color-card); color: var(--color-text);
    border-color: var(--color-border);
}
:root[data-theme="dark"] .form-control:focus,
:root[data-theme="dark"] .form-control-nc:focus,
:root[data-theme="dark"] .form-row .form-control:focus {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 .2rem rgba(53,123,242,.3);
}
:root[data-theme="dark"] .form-control:disabled,
:root[data-theme="dark"] .form-control-nc:disabled { background: #161b22; color: var(--color-muted); }
:root[data-theme="dark"] .form-label { color: var(--color-muted); }
:root[data-theme="dark"] .form-text,
:root[data-theme="dark"] .form-text-nc { color: var(--color-muted); }
:root[data-theme="dark"] .form-check-label { color: var(--color-text); }
:root[data-theme="dark"] .form-row label.col-form-label { color: var(--color-text); }

/* Buttons (variant overrides for dark) */
:root[data-theme="dark"] .btn-secondary {
    background: var(--color-card-2); color: var(--color-text);
    border-color: var(--color-border);
}
:root[data-theme="dark"] .btn-secondary:hover { background: var(--color-card); color: var(--color-text); }
:root[data-theme="dark"] .btn-outline-nc {
    background: transparent; color: var(--color-primary);
}
:root[data-theme="dark"] .btn-outline-nc:hover {
    background: var(--color-primary); color: #fff;
}
:root[data-theme="dark"] .btn-icon-nc {
    background: var(--color-card-2); border-color: var(--color-border);
    color: var(--color-primary);
}

/* Modals */
:root[data-theme="dark"] .modal-box,
:root[data-theme="dark"] [id$="-modal"] > div {
    background: var(--color-card) !important; color: var(--color-text);
}
:root[data-theme="dark"] .modal-header h5 { color: var(--color-text); }
:root[data-theme="dark"] .modal-close { color: var(--color-muted); }
:root[data-theme="dark"] .modal-close:hover { color: var(--color-text); }

/* Pagination */
:root[data-theme="dark"] .pagination-nc a,
:root[data-theme="dark"] .pagination-nc span {
    background: var(--color-card-2); border-color: var(--color-border); color: var(--color-text-2);
}
:root[data-theme="dark"] .pagination-nc a:hover { background: var(--color-card); }
:root[data-theme="dark"] .pagination-nc .active { background: var(--color-primary); color: #fff; }

/* Tabs */
:root[data-theme="dark"] .nav-tabs-nc,
:root[data-theme="dark"] .nav-tabs { border-bottom-color: var(--color-border); }
:root[data-theme="dark"] .nav-tabs-nc a,
:root[data-theme="dark"] .nav-tabs .nav-link { color: var(--color-muted); }

/* IP badge / code */
:root[data-theme="dark"] .ip-badge,
:root[data-theme="dark"] code {
    background: var(--color-card-2); color: var(--color-text);
    border-color: var(--color-border);
}

/* Ticket message blocks */
:root[data-theme="dark"] .ticket-msg-admin { background: rgba(53,123,242,.12); }
:root[data-theme="dark"] .ticket-msg-customer { background: var(--color-card-2); border-left-color: var(--color-border); }

/* Breadcrumb */
:root[data-theme="dark"] .nc-breadcrumb { border-bottom-color: var(--color-border); }
:root[data-theme="dark"] .nc-breadcrumb li.current { color: var(--color-text); }
:root[data-theme="dark"] .nc-breadcrumb li a { color: var(--color-muted); }
:root[data-theme="dark"] .nc-breadcrumb li:not(:last-child)::after { color: var(--color-border); }

/* Section title */
:root[data-theme="dark"] .section-title { color: var(--color-muted); border-bottom-color: var(--color-border); }

/* Login page */
:root[data-theme="dark"] .login-page { background: var(--color-bg); }
:root[data-theme="dark"] .login-card { background: var(--color-card); }
:root[data-theme="dark"] .login-logo h1 { color: var(--color-text); }
:root[data-theme="dark"] .login-logo p { color: var(--color-muted); }

/* Definition list */
:root[data-theme="dark"] dl.dl-nc dt { color: var(--color-muted); }
:root[data-theme="dark"] dl.dl-nc dd { color: var(--color-text); }

/* Alerts — keep tinted backgrounds but ensure text readable */
:root[data-theme="dark"] .alert-success-nc,
:root[data-theme="dark"] .alert-success { background: rgba(41,204,151,.14); color: #6ee7b7; }
:root[data-theme="dark"] .alert-danger-nc,
:root[data-theme="dark"] .alert-danger { background: rgba(235,87,87,.16); color: #fca5a5; }
:root[data-theme="dark"] .alert-warning { background: rgba(255,175,20,.15); color: #fcd34d; }
:root[data-theme="dark"] .alert-info { background: rgba(53,123,242,.16); color: #93c5fd; }

/* Status badges — keep tint, lighten text */
:root[data-theme="dark"] .sb-active,
:root[data-theme="dark"] .sb-paid,
:root[data-theme="dark"] .sb-online,
:root[data-theme="dark"] .sb-resolved,
:root[data-theme="dark"] .sb-won       { color: #6ee7b7; }
:root[data-theme="dark"] .sb-inactive,
:root[data-theme="dark"] .sb-closed,
:root[data-theme="dark"] .sb-cancelled { color: #cbd5e1; }
:root[data-theme="dark"] .sb-suspended,
:root[data-theme="dark"] .sb-pending   { color: #fcd34d; }
:root[data-theme="dark"] .sb-blocked,
:root[data-theme="dark"] .sb-overdue,
:root[data-theme="dark"] .sb-offline,
:root[data-theme="dark"] .sb-lost      { color: #fca5a5; }
:root[data-theme="dark"] .sb-new,
:root[data-theme="dark"] .sb-unpaid,
:root[data-theme="dark"] .sb-open      { color: #93c5fd; }
:root[data-theme="dark"] .sb-lead      { color: #93c5fd; }

/* Links */
:root[data-theme="dark"] a { color: #93c5fd; }
:root[data-theme="dark"] a:hover { color: #bfdbfe; }

/* Online status dot — surround with card color so the colored dot pops */
:root[data-theme="dark"] .online-dot { box-shadow: 0 0 0 2px var(--color-card); }

/* Sidebar active-state link contrast in dark */
:root[data-theme="dark"] a.menu-group-head.active {
    background: var(--color-primary) !important;
    color: #fff !important;
}
:root[data-theme="dark"] .menu-child-item.active {
    background: rgba(99,102,241,.18);
    color: #c7d2fe;
    box-shadow: inset 3px 0 0 var(--color-primary);
}

/* === SECTION TINT COLORS === */
:root {
    --color-pink: #ec4899;
    --color-pending: #f59e0b;
    --color-secondary: #6b7280;
}

.color-purple    { color: var(--color-purple); }
.color-success   { color: var(--color-success); }
.color-info      { color: var(--color-info); }
.color-warning   { color: var(--color-warning); }
.color-pink      { color: var(--color-pink); }
.color-pending   { color: var(--color-pending); }
.color-danger    { color: var(--color-danger); }
.color-secondary { color: var(--color-secondary); }

.bg-purple    { background: var(--color-purple); color: #fff; }
.bg-success   { background: var(--color-success); color: #fff; }
.bg-info      { background: var(--color-info); color: #fff; }
.bg-warning   { background: var(--color-warning); color: #fff; }
.bg-pink      { background: var(--color-pink); color: #fff; }
.bg-pending   { background: var(--color-pending); color: #fff; }
.bg-danger    { background: var(--color-danger); color: #fff; }
.bg-secondary { background: var(--color-secondary); color: #fff; }
.bg-dark      { background: #1f2937; color: #fff; }

.spl-pill {
    display: inline-flex;
    align-items: center;
    padding: 6px 14px;
    border-radius: 100px;
    font-size: 12px;
    font-weight: 500;
    margin-right: 8px;
    margin-bottom: 8px;
    cursor: pointer;
    transition: opacity 0.15s;
    user-select: none;
    opacity: 0.85;
    border: none;
}
.spl-pill:hover { opacity: 1; }
.spl-pill.active {
    opacity: 1;
    box-shadow: 0 0 0 2px rgba(0,0,0,0.05);
}

.spl-section {
    margin-bottom: 28px;
}
.spl-section-heading {
    font-size: 16px;
    font-weight: 600;
    margin: 0 0 12px 0;
    padding: 0;
    line-height: 1.2;
}
.spl-shortcuts {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 12px;
}
.spl-shortcut {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    background: #fff;
    border: 1px solid var(--color-border);
    border-radius: 8px;
    text-decoration: none;
    color: var(--color-text);
    font-size: 13px;
    font-weight: 500;
    transition: all 0.15s;
}
.spl-shortcut:hover {
    text-decoration: none;
    box-shadow: 0 4px 12px rgba(0,0,0,0.08);
    transform: translateY(-1px);
}
.spl-shortcut .spl-shortcut-icon {
    width: 32px;
    height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;
    flex-shrink: 0;
}

.spl-section.tint-purple    .spl-section-heading { color: var(--color-purple); }
.spl-section.tint-purple    .spl-shortcut-icon   { background: rgba(139,92,246,0.12); color: var(--color-purple); }
.spl-section.tint-purple    .spl-shortcut:hover  { border-color: var(--color-purple); }

.spl-section.tint-success   .spl-section-heading { color: var(--color-success); }
.spl-section.tint-success   .spl-shortcut-icon   { background: rgba(16,185,129,0.12); color: var(--color-success); }
.spl-section.tint-success   .spl-shortcut:hover  { border-color: var(--color-success); }

.spl-section.tint-info      .spl-section-heading { color: var(--color-info); }
.spl-section.tint-info      .spl-shortcut-icon   { background: rgba(59,130,246,0.12); color: var(--color-info); }
.spl-section.tint-info      .spl-shortcut:hover  { border-color: var(--color-info); }

.spl-section.tint-warning   .spl-section-heading { color: var(--color-warning); }
.spl-section.tint-warning   .spl-shortcut-icon   { background: rgba(245,158,11,0.12); color: var(--color-warning); }
.spl-section.tint-warning   .spl-shortcut:hover  { border-color: var(--color-warning); }

.spl-section.tint-pink      .spl-section-heading { color: var(--color-pink); }
.spl-section.tint-pink      .spl-shortcut-icon   { background: rgba(236,72,153,0.12); color: var(--color-pink); }
.spl-section.tint-pink      .spl-shortcut:hover  { border-color: var(--color-pink); }

.spl-section.tint-pending   .spl-section-heading { color: var(--color-pending); }
.spl-section.tint-pending   .spl-shortcut-icon   { background: rgba(245,158,11,0.12); color: var(--color-pending); }
.spl-section.tint-pending   .spl-shortcut:hover  { border-color: var(--color-pending); }

.spl-section.tint-danger    .spl-section-heading { color: var(--color-danger); }
.spl-section.tint-danger    .spl-shortcut-icon   { background: rgba(239,68,68,0.12); color: var(--color-danger); }
.spl-section.tint-danger    .spl-shortcut:hover  { border-color: var(--color-danger); }

.spl-section.tint-secondary .spl-section-heading { color: var(--color-secondary); }
.spl-section.tint-secondary .spl-shortcut-icon   { background: rgba(107,114,128,0.12); color: var(--color-secondary); }
.spl-section.tint-secondary .spl-shortcut:hover  { border-color: var(--color-secondary); }

.spl-section.tint-dark      .spl-section-heading { color: #1f2937; }
.spl-section.tint-dark      .spl-shortcut-icon   { background: rgba(31,41,55,0.10); color: #1f2937; }
.spl-section.tint-dark      .spl-shortcut:hover  { border-color: #1f2937; }

.spl-breadcrumb-icon {
    width: 36px; height: 36px;
    border-radius: 6px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
}

:root[data-theme="dark"] .spl-shortcut {
    background: var(--color-card);
    border-color: var(--color-border);
    color: var(--color-text);
}
:root[data-theme="dark"] .spl-shortcut:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.4);
}
:root[data-theme="dark"] .spl-section.tint-dark .spl-section-heading { color: #e5e7eb; }
:root[data-theme="dark"] .spl-section.tint-dark .spl-shortcut-icon   { background: rgba(229,231,235,0.10); color: #e5e7eb; }

/* === DASHBOARD === */
.dsh-kpi-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 14px;
    margin-bottom: 24px;
}
.dsh-kpi {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: 8px;
    box-shadow: var(--shadow-card);
}
.dsh-kpi-icon {
    width: 42px; height: 42px;
    display: flex; align-items: center; justify-content: center;
    border-radius: 8px;
    font-size: 18px;
    flex-shrink: 0;
}
.dsh-kpi-meta { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.dsh-kpi-label { font-size: 12px; color: var(--color-muted); margin-bottom: 4px; }
.dsh-kpi-bottom { display: flex; justify-content: space-between; align-items: baseline; }
.dsh-kpi-view {
    font-size: 11px;
    color: var(--color-primary);
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-weight: 600;
}
.dsh-kpi-view:hover { text-decoration: underline; }
.dsh-kpi-count { font-size: 22px; font-weight: 700; color: var(--color-text); }

.dsh-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}
@media (max-width: 992px) {
    .dsh-grid { grid-template-columns: 1fr; }
}
.dsh-col { display: flex; flex-direction: column; gap: 20px; }

.spl-section.tint-purple,
.spl-section.tint-success,
.spl-section.tint-info,
.spl-section.tint-warning,
.spl-section.tint-pink,
.spl-section.tint-pending,
.spl-section.tint-danger,
.spl-section.tint-secondary,
.spl-section.tint-dark {
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: 8px;
    box-shadow: var(--shadow-card);
    padding: 16px 20px;
}

.dsh-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.dsh-list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 0;
    border-bottom: 1px solid var(--color-border);
    font-size: 13px;
    color: var(--color-muted);
    gap: 12px;
}
.dsh-list li:last-child { border-bottom: none; }
.dsh-list li > span:last-child { font-weight: 600; color: var(--color-text); text-align: right; }

.dsh-bar {
    flex: 1;
    height: 6px;
    background: var(--color-border);
    border-radius: 3px;
    overflow: hidden;
    display: inline-block;
    min-width: 60px;
    max-width: 140px;
}
.dsh-bar > span {
    display: block;
    height: 100%;
    background: var(--color-primary);
    transition: width 0.3s;
}
.dsh-subheading {
    text-transform: uppercase;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.05em;
    margin-bottom: 6px;
    margin-top: 14px;
}
.dsh-subheading:first-child { margin-top: 0; }

/* ============================================================ */
/* DESIGN PATTERNS: list, settings, tabs, forms                 */
/* Added: 2026-05-26 — pattern rollout phases 2-5                */
/* ============================================================ */

/* --- List pages: table, filter bar, pagination, badges --- */
.nc-list-page {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.nc-list-title-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 4px 0 12px 0;
}
.nc-list-title-bar h1,
.nc-list-title-bar .nc-list-title {
    margin: 0;
    font-size: 20px;
    font-weight: 600;
    color: var(--color-text);
    line-height: 1.3;
}
.nc-list-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
}
.nc-filter-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 12px 16px;
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-card);
}
.nc-filter-input,
.nc-filter-select {
    height: 36px;
    padding: 6px 12px;
    font-size: 14px;
    color: var(--color-text);
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    outline: none;
    font-family: inherit;
    transition: border-color .15s, box-shadow .15s;
}
.nc-filter-input { min-width: 220px; flex: 1 1 220px; }
.nc-filter-select {
    min-width: 160px;
    padding-right: 32px;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='%236c757d' d='M0 0l5 6 5-6z'/></svg>");
    background-repeat: no-repeat;
    background-position: right 12px center;
    appearance: none;
    -webkit-appearance: none;
}
.nc-filter-input:focus,
.nc-filter-select:focus {
    border-color: var(--color-info);
    box-shadow: 0 0 0 3px rgba(99,180,255,0.15);
}
.nc-filter-bar .nc-filter-clear {
    margin-left: auto;
}

.nc-table-wrap {
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-card);
    overflow: hidden;
}
.nc-table-wrap > .nc-table { margin: 0; }
.nc-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
    color: var(--color-text);
    background: var(--color-card);
}
.nc-table thead th {
    padding: 12px 16px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--color-text);
    background: var(--color-card-2);
    border-bottom: 1px solid var(--color-border);
    text-align: left;
    white-space: nowrap;
}
.nc-table tbody td {
    padding: 12px 16px;
    border-top: 1px solid var(--color-border);
    vertical-align: middle;
    color: var(--color-text);
}
.nc-table tbody tr {
    transition: background .12s;
}
.nc-table tbody tr:hover,
.nc-table-row-hover {
    background: var(--color-card-2);
}
.nc-table tbody tr:first-child td { border-top: none; }

.nc-pagination {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 12px 16px;
    background: var(--color-card);
    border-top: 1px solid var(--color-border);
}
.nc-pagination-info {
    font-size: 13px;
    color: var(--color-muted);
}
.nc-pagination-pages {
    display: flex;
    align-items: center;
    gap: 4px;
}
.nc-page-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    height: 32px;
    padding: 0 8px;
    font-size: 13px;
    color: var(--color-text);
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    cursor: pointer;
    text-decoration: none;
    transition: background .12s, border-color .12s, color .12s;
}
.nc-page-btn:hover {
    background: var(--color-card-2);
    border-color: var(--color-info);
    color: var(--color-text);
}
.nc-page-btn.active {
    background: var(--color-info);
    border-color: var(--color-info);
    color: #fff;
    font-weight: 600;
}
.nc-page-btn:disabled,
.nc-page-btn.disabled {
    opacity: .45;
    cursor: not-allowed;
    pointer-events: none;
}

.nc-badge-success {
    display: inline-block;
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    border-radius: 9999px;
    background: rgba(41,204,151,0.12);
    color: var(--color-success);
}
.nc-badge-primary {
    display: inline-block;
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    border-radius: 9999px;
    background: rgba(124,58,237,0.14);
    color: var(--color-primary);
}
.nc-badge-warning {
    display: inline-block;
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    border-radius: 9999px;
    background: rgba(245,158,11,0.14);
    color: var(--color-warning);
}
.nc-badge-danger {
    display: inline-block;
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    border-radius: 9999px;
    background: rgba(235,87,87,0.12);
    color: var(--color-danger);
}
.nc-badge-info {
    display: inline-block;
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    border-radius: 9999px;
    background: rgba(99,180,255,0.16);
    color: var(--color-info);
}
.nc-badge-secondary {
    display: inline-block;
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    border-radius: 9999px;
    background: rgba(107,114,128,0.14);
    color: var(--color-secondary);
}

/* --- Settings panels: collapsible sections, horizontal form --- */
.nc-settings-form {
    max-width: 960px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
}
.nc-settings-section {
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-card);
    padding: 20px;
    margin-bottom: 24px;
}
.nc-settings-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    cursor: pointer;
    user-select: none;
}
.nc-settings-section-title {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
    color: var(--color-text);
}
.nc-settings-section-chevron {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    color: var(--color-muted);
    transition: transform .2s;
}
.nc-settings-section-body {
    padding: 20px 0 0 0;
    transition: opacity .15s;
}
.nc-settings-section.collapsed .nc-settings-section-body {
    display: none;
}
.nc-settings-section.collapsed .nc-settings-section-chevron {
    transform: rotate(-90deg);
}

.nc-form-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 16px;
    padding: 8px 0;
}
.nc-form-label {
    width: 33%;
    min-width: 160px;
    margin: 0;
    font-size: 14px;
    color: var(--color-text);
    font-weight: 500;
}
.nc-form-label.required::after {
    content: ' *';
    color: var(--color-danger);
}
.nc-form-input-wrap {
    flex: 1;
    min-width: 0;
}
.nc-form-helper {
    margin-top: 4px;
    font-size: 12px;
    color: var(--color-muted);
    line-height: 1.4;
}
.nc-form-buttons-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding-top: 16px;
    margin-top: 16px;
    border-top: 1px solid var(--color-border);
}

.nc-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 36px;
    padding: 0 16px;
    font-size: 14px;
    font-weight: 500;
    font-family: inherit;
    line-height: 1;
    border-radius: var(--radius-md);
    border: 1px solid transparent;
    cursor: pointer;
    transition: background .12s, border-color .12s, color .12s, box-shadow .12s;
    text-decoration: none;
    white-space: nowrap;
}
.nc-btn:focus { outline: none; box-shadow: 0 0 0 3px rgba(99,180,255,0.25); }
.nc-btn-primary {
    background: var(--color-info);
    border-color: var(--color-info);
    color: #fff;
}
.nc-btn-primary:hover {
    background: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
    color: #fff;
}
.nc-btn-secondary {
    background: transparent;
    color: var(--color-text);
    border-color: var(--color-border);
}
.nc-btn-secondary:hover {
    background: var(--color-card-2);
    border-color: var(--color-muted);
}
.nc-btn-danger {
    background: var(--color-danger);
    color: #fff;
    border-color: var(--color-danger);
}
.nc-btn-danger:hover { filter: brightness(.92); color: #fff; }

.nc-input,
.nc-select,
textarea.nc-input {
    width: 100%;
    height: 36px;
    padding: 8px 12px;
    font-size: 14px;
    font-family: inherit;
    color: var(--color-text);
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    outline: none;
    transition: border-color .15s, box-shadow .15s;
    box-sizing: border-box;
}
textarea.nc-input {
    height: auto;
    min-height: 80px;
    line-height: 1.5;
    resize: vertical;
}
.nc-input::placeholder { color: var(--color-muted); }
.nc-input:focus,
.nc-select:focus,
textarea.nc-input:focus {
    border-color: var(--color-info);
    box-shadow: 0 0 0 3px rgba(99,180,255,0.15);
}
.nc-input:disabled,
.nc-select:disabled {
    background: var(--color-card-2);
    color: var(--color-muted);
    cursor: not-allowed;
}
.nc-select {
    padding-right: 32px;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='%236c757d' d='M0 0l5 6 5-6z'/></svg>");
    background-repeat: no-repeat;
    background-position: right 12px center;
    appearance: none;
    -webkit-appearance: none;
}

/* --- Tabbed detail: x-tabs equivalent --- */
.nc-tabs {
    display: flex;
    flex-direction: column;
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-card);
    overflow: hidden;
}
.nc-tab-bar {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 0;
    background: var(--color-card);
    border-bottom: 1px solid var(--color-border);
    overflow-x: auto;
    scrollbar-width: thin;
}
.nc-tab-bar::-webkit-scrollbar { height: 4px; }
.nc-tab-bar::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: 2px; }
.nc-tab {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 12px 18px;
    font-size: 14px;
    font-weight: 500;
    color: var(--color-text-2);
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    cursor: pointer;
    text-decoration: none;
    white-space: nowrap;
    transition: color .12s, background .12s, border-color .12s;
}
.nc-tab:hover {
    background: var(--color-card-2);
    color: var(--color-text);
}
.nc-tab.active {
    color: var(--color-text);
    font-weight: 600;
    border-bottom-color: var(--color-info);
}
.nc-tab-icon {
    margin-right: 6px;
    width: 16px;
    text-align: center;
}
.nc-tab-panel {
    display: none;
    padding: 24px;
    background: var(--color-card);
}
.nc-tab-panel.active { display: block; }

/* --- Forms: add/edit specific --- */
.nc-form-page {
    max-width: 800px;
    margin: 24px auto;
    padding: 24px;
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-card);
}
.nc-form-section-title {
    margin: 16px 0 8px 0;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-muted);
}
.nc-form-section-title:first-child { margin-top: 0; }
.nc-input-error,
.nc-input.nc-input-error,
.nc-select.nc-input-error {
    border-color: var(--color-danger);
}
.nc-input-error:focus {
    box-shadow: 0 0 0 3px rgba(235,87,87,0.2);
}
.nc-input-error-msg {
    margin-top: 4px;
    font-size: 12px;
    color: var(--color-danger);
    line-height: 1.4;
}

/* --- Dark theme overrides for the above --- */
:root[data-theme="dark"] .nc-filter-bar,
:root[data-theme="dark"] .nc-table-wrap,
:root[data-theme="dark"] .nc-tabs,
:root[data-theme="dark"] .nc-settings-section,
:root[data-theme="dark"] .nc-form-page {
    background: var(--color-card);
    border-color: var(--color-border);
}
:root[data-theme="dark"] .nc-table,
:root[data-theme="dark"] .nc-tab-bar,
:root[data-theme="dark"] .nc-tab-panel,
:root[data-theme="dark"] .nc-pagination {
    background: var(--color-card);
}
:root[data-theme="dark"] .nc-table thead th {
    background: var(--color-card-2);
    color: var(--color-text);
    border-bottom-color: var(--color-border);
}
:root[data-theme="dark"] .nc-table tbody td { border-top-color: var(--color-border); }
:root[data-theme="dark"] .nc-table tbody tr:hover { background: var(--color-card-2); }
:root[data-theme="dark"] .nc-filter-input,
:root[data-theme="dark"] .nc-filter-select,
:root[data-theme="dark"] .nc-input,
:root[data-theme="dark"] .nc-select,
:root[data-theme="dark"] textarea.nc-input {
    background-color: var(--color-card-2);
    color: var(--color-text);
    border-color: var(--color-border);
}
:root[data-theme="dark"] .nc-filter-input::placeholder,
:root[data-theme="dark"] .nc-input::placeholder { color: var(--color-muted); }
:root[data-theme="dark"] .nc-filter-select,
:root[data-theme="dark"] .nc-select {
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path fill='%23cbd5e1' d='M0 0l5 6 5-6z'/></svg>");
}
:root[data-theme="dark"] .nc-page-btn {
    background: var(--color-card-2);
    color: var(--color-text);
    border-color: var(--color-border);
}
:root[data-theme="dark"] .nc-page-btn:hover {
    background: var(--color-bg);
    border-color: var(--color-info);
}
:root[data-theme="dark"] .nc-page-btn.active {
    background: var(--color-info);
    border-color: var(--color-info);
    color: #fff;
}
:root[data-theme="dark"] .nc-pagination { border-top-color: var(--color-border); }
:root[data-theme="dark"] .nc-btn-secondary {
    color: var(--color-text);
    border-color: var(--color-border);
}
:root[data-theme="dark"] .nc-btn-secondary:hover {
    background: var(--color-card-2);
    border-color: var(--color-muted);
}
:root[data-theme="dark"] .nc-tab { color: var(--color-text-2); }
:root[data-theme="dark"] .nc-tab:hover {
    background: var(--color-card-2);
    color: var(--color-text);
}
:root[data-theme="dark"] .nc-tab.active {
    color: var(--color-text);
    border-bottom-color: var(--color-info);
}
:root[data-theme="dark"] .nc-settings-section-title,
:root[data-theme="dark"] .nc-form-label { color: var(--color-text); }
:root[data-theme="dark"] .nc-form-helper,
:root[data-theme="dark"] .nc-pagination-info,
:root[data-theme="dark"] .nc-form-section-title { color: var(--color-muted); }
:root[data-theme="dark"] .nc-form-buttons-row { border-top-color: var(--color-border); }

/* Selects (Bootstrap-style) and their options in dark mode */
:root[data-theme="dark"] select.form-select,
:root[data-theme="dark"] select.form-control.form-select,
:root[data-theme="dark"] select.form-control,
:root[data-theme="dark"] select.form-control-nc,
:root[data-theme="dark"] .status-sel {
    background-color: var(--color-card-2);
    color: var(--color-text);
    border-color: var(--color-border);
}
:root[data-theme="dark"] select.form-select option,
:root[data-theme="dark"] select.form-control option,
:root[data-theme="dark"] select.form-control-nc option,
:root[data-theme="dark"] .status-sel option {
    background-color: var(--color-card);
    color: var(--color-text);
}
:root[data-theme="dark"] select.form-select {
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23cbd5e1' d='M4 6l4 4 4-4z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 14px;
    padding-right: 32px;
}

/* Tickets page dropdowns: qa-menu, inline-drop (hardcoded #fff in light) */
:root[data-theme="dark"] .qa-menu,
:root[data-theme="dark"] .inline-drop {
    background: var(--color-card);
    border-color: var(--color-border);
    color: var(--color-text);
    box-shadow: 0 8px 24px rgba(0,0,0,0.5);
}
:root[data-theme="dark"] .inline-drop button {
    color: var(--color-text);
}
:root[data-theme="dark"] .inline-drop button:hover {
    background: var(--color-card-2);
    color: var(--color-text);
}

/* Generic Bootstrap dropdowns and Select2 in dark mode */
:root[data-theme="dark"] .dropdown-menu,
:root[data-theme="dark"] .select2-dropdown,
:root[data-theme="dark"] .select2-container--default .select2-results__options {
    background: var(--color-card);
    border-color: var(--color-border);
    color: var(--color-text);
}
:root[data-theme="dark"] .dropdown-menu .dropdown-item,
:root[data-theme="dark"] .select2-container--default .select2-results__option {
    color: var(--color-text);
}
:root[data-theme="dark"] .dropdown-menu .dropdown-item:hover,
:root[data-theme="dark"] .dropdown-menu .dropdown-item:focus,
:root[data-theme="dark"] .select2-container--default .select2-results__option--highlighted {
    background: var(--color-card-2);
    color: var(--color-text);
}
:root[data-theme="dark"] .dropdown-divider {
    border-top-color: var(--color-border);
}

/* --- Modals --- */
.nc-modal-overlay {
    position: fixed; inset: 0;
    background: rgba(15,23,42,0.55);
    display: none; z-index: 1050;
    align-items: flex-start; justify-content: center;
    padding: 5vh 16px;
    overflow-y: auto;
}
.nc-modal-overlay.open { display: flex; }
.nc-modal {
    width: 100%; max-width: 720px;
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: 12px;
    box-shadow: 0 20px 60px rgba(0,0,0,0.4);
    overflow: hidden;
}
.nc-modal-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid var(--color-border);
}
.nc-modal-title {
    font-size: 18px; font-weight: 600; color: var(--color-text);
    margin: 0;
}
.nc-modal-close {
    background: none; border: none; cursor: pointer;
    color: var(--color-muted); font-size: 22px; line-height: 1;
    padding: 4px 8px; border-radius: 6px;
}
.nc-modal-close:hover { background: var(--color-card-2); color: var(--color-text); }
.nc-modal-body { padding: 20px; max-height: 70vh; overflow-y: auto; }
.nc-modal-divider {
    margin: 20px -20px 16px -20px;
    padding: 12px 20px 6px;
    border-top: 1px solid var(--color-border);
    font-size: 12px; font-weight: 600;
    letter-spacing: 0.05em; text-transform: uppercase;
    color: var(--color-muted);
}
.nc-modal-footer {
    display: flex; justify-content: flex-end; gap: 8px;
    padding: 16px 20px;
    border-top: 1px solid var(--color-border);
}

/* ═══════════════════════════════════════════════════════════════════
   Foundation utility pass — additive .nc-* classes for restyle waves
   Added 2026-05-27. Single-class low-specificity selectors.
   All colors use existing CSS variables (auto dark-mode friendly).
   ═══════════════════════════════════════════════════════════════════ */

/* ── Text utilities ── */
.nc-text-danger    { color: var(--color-danger); }
.nc-text-success   { color: var(--color-success); }
.nc-text-warning   { color: var(--color-warning); }
.nc-text-info      { color: var(--color-info); }
.nc-text-muted     { color: var(--color-muted); }
.nc-text-primary   { color: var(--color-primary); }
.nc-text-bold      { font-weight: 600; }
.nc-text-semibold  { font-weight: 500; }
.nc-text-small     { font-size: 0.85em; }
.nc-text-xs        { font-size: 0.75em; }
.nc-text-mono      { font-family: ui-monospace, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace; }
.nc-text-right     { text-align: right; }
.nc-text-center    { text-align: center; }
.nc-text-left      { text-align: left; }
.nc-text-truncate  { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── Section layout ── */
.nc-section {
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-card);
    padding: 16px;
    margin-bottom: 20px;
}
.nc-section-header {
    display: flex; align-items: center; justify-content: space-between;
    gap: 12px;
    padding-bottom: 12px;
    margin-bottom: 12px;
    border-bottom: 1px solid var(--color-border);
}
.nc-section-title {
    font-size: 15px; font-weight: 600; color: var(--color-text);
    margin: 0;
}
.nc-section-actions {
    display: flex; align-items: center; gap: 8px;
    margin-left: auto;
}
.nc-section-body { padding: 4px 0; }
.nc-section-divider {
    border: none; border-top: 1px solid var(--color-border);
    margin: 16px 0;
}
.nc-section-tint-primary { border-left: 3px solid var(--color-primary); }
.nc-section-tint-success { border-left: 3px solid var(--color-success); }
.nc-section-tint-warning { border-left: 3px solid var(--color-warning); }
.nc-section-tint-danger  { border-left: 3px solid var(--color-danger); }
.nc-section-tint-info    { border-left: 3px solid var(--color-info); }

/* ── Chart wrappers ── */
.nc-chart-wrap {
    max-width: 100%;
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 16px;
}
.nc-chart-canvas {
    width: 100%;
    min-height: 240px;
    display: block;
}
.nc-chart-legend {
    display: flex; flex-wrap: wrap; gap: 12px;
    margin-top: 12px;
    font-size: 12px; color: var(--color-muted);
}
.nc-chart-legend > span {
    display: inline-flex; align-items: center; gap: 6px;
}
.nc-chart-bar {
    position: relative;
    background: var(--color-card-2);
    border-radius: var(--radius-sm);
    height: 18px;
    overflow: hidden;
    margin: 4px 0;
}
.nc-chart-bar-fill {
    height: 100%;
    background: var(--color-primary);
    border-radius: var(--radius-sm);
    transition: width 0.3s ease;
}
.nc-chart-label {
    font-size: 12px; color: var(--color-text);
    margin-left: 8px;
    display: inline-block;
}

/* ── Calendar grid ── */
.nc-calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 1px;
    background: var(--color-border);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow: hidden;
}
.nc-calendar-week-row {
    display: contents;
}
.nc-calendar-day {
    background: var(--color-card);
    min-height: 96px;
    padding: 6px 8px;
    display: flex; flex-direction: column;
    gap: 4px;
    font-size: 12px;
}
.nc-calendar-day-num {
    font-weight: 600; color: var(--color-text);
    font-size: 12px;
}
.nc-calendar-day-events {
    display: flex; flex-direction: column;
    gap: 2px;
    overflow: hidden;
}
.nc-calendar-event {
    display: inline-block;
    padding: 2px 6px;
    border-radius: var(--radius-sm);
    font-size: 11px;
    line-height: 1.3;
    background: var(--color-card-2);
    color: var(--color-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: pointer;
}
.nc-calendar-event-primary { background: rgba(53,123,242,0.12); color: var(--color-primary); }
.nc-calendar-event-success { background: rgba(41,204,151,0.14); color: var(--success-dk); }
.nc-calendar-event-warning { background: rgba(255,175,20,0.15); color: var(--warning-dk); }
.nc-calendar-event-danger  { background: rgba(235,87,87,0.13); color: var(--danger-dk); }
.nc-calendar-day-today {
    background: rgba(53,123,242,0.06);
    box-shadow: inset 0 0 0 2px var(--color-primary);
}
.nc-calendar-day-othermonth {
    background: var(--color-card-2);
    opacity: 0.55;
}

/* ── Shortcut tiles ── */
.nc-tile-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}
.nc-tile {
    display: flex; flex-direction: column; align-items: center;
    gap: 8px;
    padding: 18px 12px;
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    color: var(--color-text);
    text-decoration: none;
    transition: box-shadow 0.15s, border-color 0.15s, transform 0.15s;
    text-align: center;
}
.nc-tile:hover {
    box-shadow: var(--shadow-hover);
    border-color: var(--color-primary);
    transform: translateY(-1px);
    color: var(--color-text);
}
.nc-tile-icon {
    width: 40px; height: 40px;
    display: flex; align-items: center; justify-content: center;
    border-radius: var(--radius-md);
    font-size: 18px;
    background: var(--color-card-2);
    color: var(--color-primary);
}
.nc-tile-label {
    font-size: 13px; font-weight: 500;
    color: var(--color-text);
}
.nc-tile-tint-primary .nc-tile-icon { background: rgba(53,123,242,0.12); color: var(--color-primary); }
.nc-tile-tint-success .nc-tile-icon { background: rgba(41,204,151,0.14); color: var(--success-dk); }
.nc-tile-tint-warning .nc-tile-icon { background: rgba(255,175,20,0.15); color: var(--warning-dk); }
.nc-tile-tint-danger  .nc-tile-icon { background: rgba(235,87,87,0.13); color: var(--danger-dk); }
.nc-tile-tint-info    .nc-tile-icon { background: rgba(99,180,255,0.16); color: var(--color-info); }
.nc-tile-tint-purple  .nc-tile-icon { background: rgba(125,79,255,0.14); color: var(--color-purple); }

/* ── Pills / chips ── */
.nc-pill-group {
    display: inline-flex; flex-wrap: wrap;
    gap: 6px;
    align-items: center;
}
.nc-pill {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 4px 12px;
    border-radius: 999px;
    background: var(--color-card-2);
    border: 1px solid var(--color-border);
    color: var(--color-text);
    font-size: 12px; font-weight: 500;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
    user-select: none;
}
.nc-pill:hover {
    background: var(--color-card);
    border-color: var(--color-primary);
    color: var(--color-primary);
}
.nc-pill-active {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: #fff;
}
.nc-pill-active:hover {
    background: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
    color: #fff;
}
.nc-pill-count {
    display: inline-block;
    background: rgba(255,255,255,0.25);
    color: inherit;
    border-radius: 999px;
    padding: 0 6px;
    font-size: 11px;
    font-weight: 600;
    min-width: 18px;
    text-align: center;
}
.nc-pill:not(.nc-pill-active) .nc-pill-count {
    background: var(--color-border);
    color: var(--color-muted);
}

/* ── Form layout extras ── */
.nc-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px 16px;
}
.nc-form-row-inline {
    display: flex; align-items: center;
    gap: 12px;
}
.nc-form-row-inline > label {
    min-width: 160px;
    font-size: 13px; font-weight: 500; color: var(--color-text);
    margin: 0;
}
.nc-form-section {
    padding: 12px 0;
    border-bottom: 1px solid var(--color-border);
}
.nc-form-section:last-child { border-bottom: none; }
.nc-form-section-header {
    font-size: 12px; font-weight: 600;
    color: var(--color-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 10px;
}
.nc-form-help {
    display: block;
    font-size: 11px; color: var(--color-muted);
    margin-top: 4px;
}
.nc-form-error {
    display: block;
    font-size: 11px; color: var(--color-danger);
    margin-top: 4px;
}
.nc-input-group {
    display: flex; align-items: stretch;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    background: var(--color-card);
    overflow: hidden;
}
.nc-input-group > input,
.nc-input-group > select {
    border: none;
    flex: 1;
    padding: 7px 10px;
    font-size: 13px;
    background: transparent;
    color: var(--color-text);
    outline: none;
}
.nc-input-prefix,
.nc-input-suffix {
    display: inline-flex; align-items: center;
    padding: 0 10px;
    background: var(--color-card-2);
    color: var(--color-muted);
    font-size: 12px;
    border-left: 1px solid var(--color-border);
}
.nc-input-prefix {
    border-left: none;
    border-right: 1px solid var(--color-border);
}
.nc-checkbox-row {
    display: flex; align-items: center;
    gap: 8px;
    font-size: 13px;
    color: var(--color-text);
    cursor: pointer;
}
.nc-checkbox-row input[type="checkbox"] { margin: 0; }
.nc-toggle-switch {
    position: relative;
    display: inline-block;
    width: 38px; height: 22px;
    vertical-align: middle;
}
.nc-toggle-switch input {
    opacity: 0; width: 0; height: 0;
}
.nc-toggle-switch .nc-toggle-slider {
    position: absolute; cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background: var(--color-border);
    border-radius: 22px;
    transition: background 0.2s;
}
.nc-toggle-switch .nc-toggle-slider::before {
    content: '';
    position: absolute;
    height: 16px; width: 16px;
    left: 3px; bottom: 3px;
    background: #fff;
    border-radius: 50%;
    transition: transform 0.2s;
}
.nc-toggle-switch input:checked + .nc-toggle-slider { background: var(--color-primary); }
.nc-toggle-switch input:checked + .nc-toggle-slider::before { transform: translateX(16px); }

/* ── Tabs (page-internal nav) ── */
.nc-tabs {
    display: flex; align-items: center;
    gap: 0;
    border-bottom: 1px solid var(--color-border);
    margin-bottom: 16px;
}
.nc-tab {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 9px 14px;
    font-size: 13px; font-weight: 500;
    color: var(--color-muted);
    text-decoration: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    cursor: pointer;
    transition: color 0.12s, border-color 0.12s;
    background: none;
    border-left: none; border-right: none; border-top: none;
}
.nc-tab:hover {
    color: var(--color-text);
}
.nc-tab-active {
    color: var(--color-primary);
    border-bottom-color: var(--color-primary);
}
.nc-tab-content {
    padding: 12px 0;
}

/* ── Tables — additions ── */
.nc-table-compact th,
.nc-table-compact td {
    padding: 6px 10px;
    font-size: 12px;
}
.nc-table-hover tbody tr { transition: background 0.1s; }
.nc-table-hover tbody tr:hover { background: var(--color-card-2); }
.nc-table-actions-col {
    text-align: right;
    min-width: 90px;
    white-space: nowrap;
}
.nc-table-empty {
    text-align: center;
    padding: 24px 16px;
    color: var(--color-muted);
    font-size: 13px;
    font-style: italic;
}

/* ── KPI grid / cards ── */
.nc-kpi-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}
.nc-kpi-card {
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 14px 16px;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 78px;
    transition: box-shadow 0.15s, transform 0.15s;
}
.nc-kpi-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
.nc-kpi-card .nc-kpi-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.nc-kpi-card .nc-kpi-label { font-size: 12px; color: var(--color-muted); margin-bottom: 4px; }
.nc-kpi-card .nc-kpi-value { font-size: 20px; font-weight: 700; color: var(--color-text); line-height: 1.1; }
.nc-kpi-card .nc-kpi-sub { font-size: 11px; color: var(--color-muted); margin-top: 3px; }
.nc-kpi-card .nc-kpi-link { font-size: 11px; color: var(--color-primary); text-decoration: none; }
.nc-kpi-card .nc-kpi-link:hover { text-decoration: underline; }
@media (max-width: 768px) {
    .nc-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ── KPI extras ── */
.nc-kpi-trend-up,
.nc-kpi-trend-down {
    display: inline-flex; align-items: center; gap: 4px;
    font-size: 11px; font-weight: 600;
    margin-top: 4px;
}
.nc-kpi-trend-up { color: var(--color-success); }
.nc-kpi-trend-down { color: var(--color-danger); }
.nc-kpi-icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 36px; height: 36px;
    border-radius: var(--radius-md);
    background: var(--color-card-2);
    color: var(--color-primary);
    font-size: 16px;
    margin-right: 10px;
    flex-shrink: 0;
}
.nc-kpi-tint-primary { background: rgba(53,123,242,0.06); }
.nc-kpi-tint-primary .nc-kpi-icon { background: rgba(53,123,242,0.14); color: var(--color-primary); }
.nc-kpi-tint-success { background: rgba(41,204,151,0.06); }
.nc-kpi-tint-success .nc-kpi-icon { background: rgba(41,204,151,0.16); color: var(--success-dk); }
.nc-kpi-tint-warning { background: rgba(255,175,20,0.06); }
.nc-kpi-tint-warning .nc-kpi-icon { background: rgba(255,175,20,0.16); color: var(--warning-dk); }
.nc-kpi-tint-danger  { background: rgba(235,87,87,0.06); }
.nc-kpi-tint-danger  .nc-kpi-icon { background: rgba(235,87,87,0.14); color: var(--danger-dk); }
.nc-kpi-tint-info    { background: rgba(99,180,255,0.07); }
.nc-kpi-tint-info    .nc-kpi-icon { background: rgba(99,180,255,0.18); color: var(--color-info); }

/* ── Spacing & flex utilities ── */
.nc-mt-0 { margin-top: 0; }
.nc-mt-1 { margin-top: 8px; }
.nc-mt-2 { margin-top: 16px; }
.nc-mt-3 { margin-top: 24px; }
.nc-mb-0 { margin-bottom: 0; }
.nc-mb-1 { margin-bottom: 8px; }
.nc-mb-2 { margin-bottom: 16px; }
.nc-mb-3 { margin-bottom: 24px; }
.nc-mr-1 { margin-right: 8px; }
.nc-mr-2 { margin-right: 16px; }
.nc-ml-1 { margin-left: 8px; }
.nc-ml-2 { margin-left: 16px; }
.nc-gap-1 { gap: 8px; }
.nc-gap-2 { gap: 16px; }
.nc-gap-3 { gap: 24px; }
.nc-flex { display: flex; }
.nc-flex-col { flex-direction: column; }
.nc-flex-between { justify-content: space-between; }
.nc-flex-center { justify-content: center; align-items: center; }
.nc-flex-end { justify-content: flex-end; }
.nc-flex-wrap { flex-wrap: wrap; }
.nc-flex-1 { flex: 1; }

/* ── Empty states ── */
.nc-empty-state {
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    text-align: center;
    padding: 40px 20px;
    color: var(--color-muted);
    gap: 8px;
}
.nc-empty-icon {
    font-size: 42px;
    color: var(--color-border);
    margin-bottom: 6px;
    line-height: 1;
}
.nc-empty-title {
    font-size: 15px; font-weight: 600;
    color: var(--color-text);
    margin: 0;
}
.nc-empty-message {
    font-size: 13px; color: var(--color-muted);
    max-width: 360px;
    margin: 0;
}

/* ── Inline links + tiny utilities ── */
.nc-link { color: var(--color-primary); text-decoration: none; }
.nc-link:hover { text-decoration: underline; }
.nc-link-muted { color: var(--color-muted); text-decoration: none; }
.nc-link-muted:hover { color: var(--color-text); }
.nc-inline-form { margin: 0; display: inline-block; }

/* ── Responsive overrides ── */
@media (max-width: 768px) {
    .nc-tile-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .nc-form-grid { grid-template-columns: 1fr; }
    .nc-form-row-inline { flex-direction: column; align-items: stretch; }
    .nc-form-row-inline > label { min-width: 0; }
    .nc-calendar-day { min-height: 64px; padding: 4px 5px; }
    .nc-calendar-day-num { font-size: 11px; }
    .nc-section-header { flex-direction: column; align-items: stretch; }
    .nc-section-actions { margin-left: 0; }
    .nc-tabs { overflow-x: auto; flex-wrap: nowrap; }
    .nc-tab { white-space: nowrap; }
}
@media (max-width: 480px) {
    .nc-tile-grid { grid-template-columns: 1fr; }
}


/* ── Dashboard top KPI row (Splynx-pattern clone) ── */
.nc-dash-top {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 20px;
}
@media (max-width: 1100px) {
    .nc-dash-top { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
    .nc-dash-top { grid-template-columns: 1fr; }
}
.nc-dash-top-item {
    position: relative;
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 14px 16px;
    box-shadow: var(--shadow-card);
    transition: box-shadow 0.15s, transform 0.15s;
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 90px;
}
.nc-dash-top-item:hover { box-shadow: var(--shadow-hover); transform: translateY(-1px); }
.nc-dash-top-item-title {
    display: flex; align-items: center; gap: 10px;
    font-size: 13px; color: var(--color-text); font-weight: 500;
}
.nc-dash-top-item-title .nc-icon-chip {
    display: inline-flex; align-items: center; justify-content: center;
    width: 28px; height: 28px;
    border-radius: var(--radius-sm);
    font-size: 14px;
    background: var(--color-card-2);
    color: var(--color-muted);
}
.nc-dash-top-item-bottom {
    display: flex; align-items: flex-end; justify-content: space-between;
    margin-top: auto;
}
.nc-dash-top-item-view {
    font-size: 12px;
    color: var(--color-primary);
    text-decoration: none;
}
.nc-dash-top-item-view:hover { text-decoration: underline; }
.nc-dash-top-item-count {
    font-size: 22px; font-weight: 700; line-height: 1;
    color: var(--color-text);
}
.nc-dash-top-item-link {
    position: absolute; inset: 0;
    z-index: 1;
}
.nc-dash-top-item.tint-success .nc-icon-chip { background: rgba(41,204,151,0.16); color: var(--success-dk); }
.nc-dash-top-item.tint-success .nc-dash-top-item-count { color: var(--success-dk); }
.nc-dash-top-item.tint-info    .nc-icon-chip { background: rgba(99,180,255,0.18); color: var(--color-info); }
.nc-dash-top-item.tint-info    .nc-dash-top-item-count { color: var(--color-info); }
.nc-dash-top-item.tint-warning .nc-icon-chip { background: rgba(255,175,20,0.16); color: var(--warning-dk); }
.nc-dash-top-item.tint-warning .nc-dash-top-item-count { color: var(--warning-dk); }
.nc-dash-top-item.tint-danger  .nc-icon-chip { background: rgba(235,87,87,0.14); color: var(--danger-dk); }
.nc-dash-top-item.tint-danger  .nc-dash-top-item-count { color: var(--danger-dk); }

/* ── Customer-view top action bar (replaces sticky right sidebar) ── */
.cv-actionbar {
    display: flex; flex-wrap: wrap; gap: 12px;
    align-items: center; justify-content: space-between;
    padding: 10px 12px;
    background: var(--color-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    margin-bottom: 14px;
    box-shadow: var(--shadow-card);
}
.cv-actionbar-info { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.cv-actionbar-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.cv-chip {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 4px 10px;
    border-radius: 999px;
    background: var(--color-card-2);
    border: 1px solid var(--color-border);
    font-size: 12px; color: var(--color-text);
}
.cv-chip .cv-chip-k { color: var(--color-muted); font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; }
.cv-chip b { font-weight: 700; }
.cv-chip-danger b  { color: var(--color-danger); }
.cv-chip-success b { color: var(--color-success); }
.cv-ab-btn {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 7px 14px;
    background: var(--color-card-2);
    border: 1px solid var(--color-border);
    border-radius: 6px;
    cursor: pointer;
    font-size: 13px; color: var(--color-text);
    white-space: nowrap;
    transition: background 0.12s, border-color 0.12s;
}
.cv-ab-btn:hover { background: var(--color-card-hover, var(--color-border)); }
.cv-ab-btn.cv-ab-save { background: var(--color-primary); color: #fff; border-color: var(--color-primary); font-weight: 600; }
.cv-ab-btn.cv-ab-save:hover { background: var(--color-primary-hover, var(--color-primary)); filter: brightness(0.95); }
.cv-ab-caret { font-size: 10px; margin-left: 2px; opacity: 0.7; }
.cv-ab-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 6px; border-radius: 9px; background: var(--color-primary); color: #fff; font-size: 11px; font-weight: 600; }

/* Drop the dropdown menus BELOW the action bar buttons (override the
   right-flyout positioning that .cv-sidebar-menu had when it lived in
   the right sidebar). */
.cv-actionbar-actions .cv-sidebar-btngrp { position: relative; }
.cv-actionbar-actions .cv-sidebar-menu.cv-ab-menu {
    left: auto; right: 0; top: calc(100% + 4px); margin-left: 0;
    min-width: 220px;
}
@media (max-width: 720px) {
    .cv-actionbar { flex-direction: column; align-items: stretch; }
    .cv-actionbar-info, .cv-actionbar-actions { width: 100%; }
}

/* Stage 6 Builder C — OLT config diff coloring (uses existing tokens only). */
.nc-diff-added   { background: rgba(41,204,151,0.14); color: var(--color-success); }
.nc-diff-removed { background: rgba(235,87,87,0.13);  color: var(--color-danger);  }
.nc-diff-hunk    { background: rgba(99,180,255,0.12); color: var(--color-info); font-weight: 600; }
