:root,
html[data-theme="light"] {
    --bg: #ffffff;
    --bg-subtle: #faf8f5;
    --sidebar-bg: #faf8f5;
    --card: #ffffff;
    --card-hover: #fcfbf9;
    --input-bg: #ffffff;
    --search-bg: #ede9e0;
    --code-bg: #f6f4ef;
    --border: #e6e2da;
    --border-strong: #d5cfc4;
    --text: #191918;
    --text-secondary: #4a4843;
    --muted: #7c7870;
    --primary: #1a4fd6;
    --primary-hover: #1540b0;
    --primary-soft: #eef4ff;
    --primary-text: #1a4fd6;
    --ok: #16a34a;
    --ok-soft: rgba(22, 163, 74, 0.1);
    --warning: #d97706;
    --warning-soft: rgba(217, 119, 6, 0.1);
    --critical: #dc2626;
    --critical-soft: rgba(220, 38, 38, 0.08);
    --offline: #78716c;
    --pending: #2563eb;
    --toggle-track: #ede8dc;
    --toggle-thumb: #f59e0b;
    --shadow-sm: 0 1px 2px rgba(25, 25, 24, 0.04);
    /* work area behind cards: slightly darker than cards so sections stand out */
    --canvas: #f2f0eb;
}

html[data-theme="dark"] {
    --bg: #141411;
    --bg-subtle: #191815;
    --sidebar-bg: #191815;
    --card: #1c1b18;
    --card-hover: #22211d;
    --input-bg: #121210;
    --search-bg: #0c0c0a;
    --code-bg: #10100e;
    --border: #2c2a25;
    --border-strong: #3d3a33;
    --text: #eceae4;
    --text-secondary: #b8b4aa;
    --muted: #858075;
    --primary: #3b82f6;
    --primary-hover: #2563eb;
    --primary-soft: rgba(59, 130, 246, 0.16);
    --primary-text: #93c5fd;
    --ok: #22c55e;
    --ok-soft: rgba(34, 197, 94, 0.14);
    --warning: #f59e0b;
    --warning-soft: rgba(245, 158, 11, 0.14);
    --critical: #ef4444;
    --critical-soft: rgba(239, 68, 68, 0.14);
    --offline: #78716c;
    --pending: #60a5fa;
    --toggle-track: #262420;
    --toggle-thumb: #6366f1;
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
    --canvas: #0f0f0d;
    /* native controls (scrollbars, date pickers, selects) in their dark version */
    color-scheme: dark;
}

/* Scrollbars in the theme colours: standard properties (Firefox, Chrome 121+), ::-webkit-scrollbar for Safari */
html {
    --scroll-thumb: #d5cfc4;
    --scroll-thumb-hover: #b8b1a4;
}
html[data-theme="dark"] {
    --scroll-thumb: #3d3a33;
    --scroll-thumb-hover: #57534a;
}
* {
    scrollbar-color: var(--scroll-thumb) transparent;
    scrollbar-width: thin;
}
::-webkit-scrollbar { width: 10px; height: 10px; background: transparent; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--scroll-thumb); border-radius: 999px; border: 2px solid transparent; background-clip: padding-box; }
::-webkit-scrollbar-thumb:hover { background: var(--scroll-thumb-hover); background-clip: padding-box; }
::-webkit-scrollbar-corner { background: transparent; }

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}


body {
    background-color: var(--bg);
    color: var(--text);
    font-family: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Roboto, sans-serif;
    font-size: 13px;
    line-height: 1.45;
    min-height: 100vh;
    -webkit-font-smoothing: antialiased;
}

a {
    color: inherit;
    text-decoration: none;
}

code, pre, .script-textarea {
    font-family: "JetBrains Mono", "SFMono-Regular", Consolas, Menlo, monospace;
}

code {
    overflow-wrap: anywhere;
    word-break: break-word;
}

.svg-icon {
    display: inline-block;
    vertical-align: -0.18em;
    flex-shrink: 0;
}

/* ==========================================================================
   APP SHELL & SIDEBAR (HELIOS PARTNER DESIGN SYSTEM)
   ========================================================================== */
.app-shell {
    display: flex;
    min-height: 100vh;
    width: 100%;
    max-width: 100vw;
}

.sidebar {
    --sidebar-w: 264px;
    width: var(--sidebar-w);
    flex-shrink: 0;
    background: var(--sidebar-bg);
    border-right: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    position: sticky;
    top: 0;
    height: 100vh;
    overflow-y: auto;
    overflow-x: hidden;
    transition: width 0.18s ease, transform 0.2s ease;
    user-select: none;
    z-index: 60;
}

/* Header: logo, wordmark, light/dark switch, collapse */
.sidebar-top {
    height: 56px;
    padding: 0 10px 0 16px;
    display: flex;
    align-items: center;
    gap: 8px;
    border-bottom: 1px solid var(--border);
    flex-shrink: 0;
}
.sidebar-brand {
    display: flex;
    align-items: center;
    gap: 9px;
    color: var(--text);
    min-width: 0;
    flex: 1;
}
.sidebar-logo { width: 18px; height: 18px; flex-shrink: 0; }
.brand-wordmark,
.sidebar-brand-text {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    white-space: nowrap;
    overflow: hidden;
}
.theme-switch {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    padding: 3px;
    border-radius: 999px;
    border: 1px solid var(--border-strong);
    background: var(--toggle-track);
    cursor: pointer;
    flex-shrink: 0;
}
.theme-switch-opt {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--muted);
    transition: background 0.15s, color 0.15s;
}
.theme-switch-light { background: #f5b301; color: #ffffff; }
html[data-theme="dark"] .theme-switch-light { background: transparent; color: var(--muted); }
html[data-theme="dark"] .theme-switch-dark { background: var(--toggle-thumb); color: #ffffff; }
.theme-switch:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }

.btn-sidebar-collapse {
    width: 30px;
    height: 30px;
    border-radius: 7px;
    border: none;
    background: transparent;
    color: var(--muted);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
}
.btn-sidebar-collapse:hover {
    background: var(--search-bg);
    color: var(--text);
}

/* Primary action, navigation buttons and search */
.sidebar-actions {
    padding: 14px 12px 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.sidebar-cta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 40px;
    border: none;
    border-radius: 9px;
    background: var(--primary);
    color: #ffffff;
    font-family: inherit;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.12s;
}
.sidebar-cta:hover { background: var(--primary-hover); }
.sidebar-cta .nav-label { flex: none; }

.sidebar-nav {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.nav-item {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    height: 36px;
    padding: 0 12px;
    border-radius: 9px;
    border: 1px solid var(--border-strong);
    background: var(--card);
    color: var(--text-secondary);
    font-size: 13px;
    font-weight: 500;
    font-family: inherit;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.nav-item:hover {
    background: var(--card-hover);
    border-color: var(--muted);
    color: var(--text);
}
.nav-item.active {
    background: var(--primary-soft);
    border-color: var(--primary);
    color: var(--primary-text);
    font-weight: 600;
}
.nav-label {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}
.nav-count {
    font-size: 11px;
    font-weight: 600;
    padding: 0 7px;
    line-height: 18px;
    border-radius: 999px;
    background: var(--search-bg);
    color: var(--text-secondary);
}
.nav-count-crit {
    background: var(--critical);
    color: #ffffff;
}
.nav-count-warn {
    background: var(--warning);
    color: #ffffff;
}
/* Main menu: icon and label on the left, the count on the right, every row on the same grid */
.sidebar-nav .nav-item { justify-content: flex-start; gap: 10px; }
.sidebar-nav .nav-item > svg { flex-shrink: 0; }
.sidebar-nav .nav-label { flex: 1; text-align: left; }
.sidebar-nav .nav-count { flex-shrink: 0; min-width: 30px; text-align: center; }
html.sidebar-rail .sidebar .sidebar-nav .nav-item { justify-content: center; }
html.sidebar-rail .sidebar .sidebar-nav .nav-count { min-width: 0; }

.sidebar-search-box {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 4px;
    background: var(--search-bg);
    border: 1px solid var(--border-strong);
    border-radius: 9px;
    padding: 0 12px;
    height: 38px;
    color: var(--muted);
}
.sidebar-search-box:focus-within { border-color: var(--primary); }
.sidebar-search-box input {
    border: none;
    background: transparent;
    color: var(--text);
    font-size: 13px;
    width: 100%;
    outline: none;
    padding: 0;
}
.sidebar-search-box input::placeholder { color: var(--muted); }
.sidebar .sidebar-search-box input[type="search"] {
    height: 100%;
    border: none;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    padding: 0;
}

/* Collapsible server group */
.sidebar-group {
    border-top: 1px solid var(--border);
    flex: 1;
}
.sidebar-section-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 8px 4px 6px;
}
.sidebar-group-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
    flex: 1;
    min-width: 0;
    height: 30px;
    padding: 0 8px 0 10px;
    border: none;
    border-radius: 7px;
    background: transparent;
    color: var(--muted);
    font-family: inherit;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    cursor: pointer;
}
.sidebar-group-toggle:hover { color: var(--text); }
.sidebar-group-toggle svg { transition: transform 0.15s; }
.sidebar-group-count { letter-spacing: 0.04em; }
.sidebar-group.collapsed .sidebar-group-toggle svg { transform: rotate(-90deg); }
.sidebar-group.collapsed .sidebar-servers { display: none; }

.sidebar-servers {
    padding: 2px 8px 10px;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.sidebar-server-item {
    display: flex;
    align-items: center;
    border-radius: 9px;
    transition: background 0.12s;
}
.sidebar-server-item:hover { background: var(--search-bg); }
.sidebar-server-item.active { background: var(--primary-soft); }
.sidebar-server-link {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
    flex: 1;
    padding: 8px 10px;
}
.sidebar-server-icon {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    background: var(--search-bg);
    color: var(--text-secondary);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    position: relative;
}
.sidebar-server-dot {
    position: absolute;
    right: -2px;
    bottom: -2px;
    width: 9px;
    height: 9px;
    border: 2px solid var(--sidebar-bg);
    box-sizing: content-box;
}
.sidebar-server-item.active .sidebar-server-icon {
    background: var(--primary);
    color: #ffffff;
}
.sidebar-server-text {
    min-width: 0;
    flex: 1;
}
.sidebar-server-name {
    display: block;
    font-size: 13.5px;
    font-weight: 500;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.sidebar-server-item.active .sidebar-server-name {
    color: var(--primary-text);
    font-weight: 600;
}
.sidebar-server-sub {
    display: block;
    margin-top: 1px;
    font-size: 12px;
    color: var(--muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.sem-text-critical, .sem-text-offline { color: var(--critical); }
.sem-text-warning { color: var(--warning); }
.sem-text-ok { color: var(--ok); }

/* User footer */
.sidebar-footer {
    padding: 12px 10px 12px 14px;
    border-top: 1px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}
.sidebar-user-info {
    display: flex;
    align-items: center;
    gap: 11px;
    min-width: 0;
}
.sidebar-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--search-bg);
    border: 1px solid var(--border);
    color: var(--text);
    font-size: 12px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.sidebar-user-meta { min-width: 0; }
.sidebar-user-meta strong {
    display: block;
    font-size: 13.5px;
    font-weight: 500;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.sidebar-user-meta small {
    display: block;
    font-size: 12px;
    color: var(--muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.sidebar-footer-actions {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-shrink: 0;
}
.icon-action-btn {
    width: 32px;
    height: 32px;
    border-radius: 7px;
    border: none;
    background: transparent;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text-secondary);
    transition: background 0.15s, color 0.15s;
}
.icon-action-btn:hover {
    background: var(--search-bg);
    color: var(--text);
}
.icon-action-btn.logout { color: var(--critical); }
.icon-action-btn.logout:hover { background: var(--critical-soft); }
.theme-icon-dark { display: none; }
html[data-theme="dark"] .theme-icon-dark { display: inline-flex; }
html[data-theme="dark"] .theme-icon-light { display: none; }

/* Cluster: one entry, its nodes nested below (shown when open) */
.sidebar-cluster-toggle {
    background: none;
    border: 0;
    color: var(--muted);
    padding: 8px 10px;
    cursor: pointer;
    display: flex;
    align-items: center;
}
.sidebar-cluster-toggle:hover { color: var(--text); }
.sidebar-cluster-toggle svg { transition: transform 0.15s; }
.sidebar-cluster.open .sidebar-cluster-toggle svg { transform: rotate(180deg); }
.sidebar-cluster-nodes {
    display: none;
    flex-direction: column;
    gap: 2px;
    margin: 2px 0 4px 26px;
    padding-left: 6px;
    border-left: 1px solid var(--border);
}
.sidebar-cluster.open .sidebar-cluster-nodes { display: flex; }
.sidebar-cluster-nodes .sidebar-server-link { padding: 6px 8px; gap: 10px; }
.sidebar-cluster-nodes .sidebar-server-icon { width: 26px; height: 26px; }
html.sidebar-rail .sidebar .sidebar-cluster-toggle,
html.sidebar-rail .sidebar .sidebar-cluster-nodes { display: none; }

/* Folder (Settings → Server order): a colored group of servers and clusters, its dot is the worst status inside */
.sidebar-folder-head .sidebar-server-link {
    background: none;
    border: 0;
    font: inherit;
    text-align: left;
    cursor: pointer;
    color: inherit;
    gap: 10px;
    padding-right: 6px;
}
/* the folder's name and counts wrap instead of being cut */
.sidebar-folder-head .sidebar-server-name,
.sidebar-folder .sidebar-server-sub { white-space: normal; overflow-wrap: anywhere; }
/* no focus box after a mouse click; keyboard focus keeps a ring with the row's rounded corners */
.sidebar-folder-head .sidebar-server-link { border-radius: 9px; }
.sidebar-folder-head .sidebar-server-link:focus { outline: none; }
.sidebar-folder-head .sidebar-server-link:focus-visible { outline: 2px solid var(--primary); outline-offset: -2px; }
.sidebar-folder-icon {
    color: var(--folder-color);
    background: color-mix(in srgb, var(--folder-color) 16%, transparent);
}
.sidebar-folder-chevron { color: var(--muted); display: flex; transition: transform 0.15s; }
.sidebar-folder.open .sidebar-folder-chevron { transform: rotate(180deg); }
.sidebar-folder-items {
    display: none;
    flex-direction: column;
    gap: 2px;
    margin: 2px 0 4px 18px;
    padding-left: 4px;
    border-left: 2px solid color-mix(in srgb, var(--folder-color) 55%, transparent);
}
.sidebar-folder-items > .sidebar-server-item > .sidebar-server-link,
.sidebar-folder-items > .sidebar-cluster > .sidebar-server-item > .sidebar-server-link { padding-left: 6px; gap: 10px; }
.sidebar-folder.open .sidebar-folder-items,
.sidebar-folder.searching .sidebar-folder-items { display: flex; }
html.sidebar-rail .sidebar .sidebar-folder-chevron { display: none; }
html.sidebar-rail .sidebar .sidebar-folder-items { margin-left: 0; padding-left: 0; border-left: 0; border-top: 2px solid var(--folder-color); padding-top: 2px; }

/* --- Icon rail (html.sidebar-rail is set by heliosSidebarMode(): user choice >=1200px, automatic 761-1199px) --- */
html.sidebar-rail .sidebar { --sidebar-w: 64px; }
html.sidebar-rail .sidebar .nav-label,
html.sidebar-rail .sidebar .nav-count,
html.sidebar-rail .sidebar .sidebar-brand-text,
html.sidebar-rail .sidebar .theme-switch,
html.sidebar-rail .sidebar .sidebar-server-text,
html.sidebar-rail .sidebar .sidebar-user-meta,
html.sidebar-rail .sidebar .sidebar-search-box,
html.sidebar-rail .sidebar .sidebar-section-head {
    display: none;
}
html.sidebar-rail .sidebar .sidebar-top {
    flex-direction: column;
    justify-content: center;
    height: auto;
    padding: 12px 0 8px;
}
html.sidebar-rail .sidebar .sidebar-brand { flex: none; }
html.sidebar-rail .sidebar .sidebar-actions { padding: 12px 10px; }
html.sidebar-rail .sidebar .sidebar-cta,
html.sidebar-rail .sidebar .nav-item {
    padding: 0;
    position: relative;
}
html.sidebar-rail .sidebar .nav-count-crit,
html.sidebar-rail .sidebar .nav-count-warn {
    display: block;
    position: absolute;
    top: 5px;
    right: 6px;
    width: 8px;
    height: 8px;
    padding: 0;
    font-size: 0;
}
html.sidebar-rail .sidebar .sidebar-group.collapsed .sidebar-servers { display: flex; }
html.sidebar-rail .sidebar .sidebar-servers { padding-top: 8px; }
html.sidebar-rail .sidebar .sidebar-server-link {
    justify-content: center;
    padding: 6px 0;
}
html.sidebar-rail .sidebar .sidebar-footer,
html.sidebar-rail .sidebar .sidebar-footer-actions {
    flex-direction: column;
    padding-left: 0;
    padding-right: 0;
}

/* --- Off-canvas drawer on phones --- */
.topbar-menu-btn { display: none; }
.sidebar-scrim { display: none; }
@media (max-width: 760px) {
    .topbar-menu-btn { display: inline-flex; }
    .sidebar-collapse-toggle { display: none; }
    .sidebar {
        position: fixed;
        left: 0;
        top: 0;
        bottom: 0;
        transform: translateX(-100%);
    }
    html.sidebar-open .sidebar {
        transform: none;
        box-shadow: 0 10px 40px rgba(0, 0, 0, 0.18);
    }
    html.sidebar-open .sidebar-scrim {
        display: block;
        position: fixed;
        inset: 0;
        background: rgba(0, 0, 0, 0.35);
        z-index: 55;
    }
    .hide-sm { display: none; }
}

/* ==========================================================================
   MAIN WRAPPER, TOPBAR & STATUS FOOTER
   ========================================================================== */
.main-wrapper {
    background: var(--canvas);
    flex: 1;
    min-width: 0;
    max-width: 100%;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    /* clip (not hidden): a stray wide element can't scroll the page, and sticky topbar/headers keep working */
    overflow-x: clip;
}

.topbar {
    height: 46px;
    padding: 0 20px;
    background: var(--bg);
    border-bottom: 1px solid var(--border);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: sticky;
    top: 0;
    z-index: 40;
    width: 100%;
    min-width: 0;
}

.topbar-left {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.topbar-title {
    font-weight: 600;
    font-size: 13.5px;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.topbar-right {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-shrink: 0;
}

.container {
    max-width: 100%;
    width: 100%;
    min-width: 0;
    margin: 0 auto;
    padding: 14px 20px 22px;
    flex: 1;
}

.status-bottombar {
    height: 28px;
    padding: 0 20px;
    /* always visible at the bottom of the viewport, like the topbar at the top */
    position: sticky;
    bottom: 0;
    z-index: 40;
    border-top: 1px solid var(--border);
    background: var(--bg);
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 11px;
    color: var(--muted);
    width: 100%;
    min-width: 0;
}

.status-bottombar-left {
    display: flex;
    align-items: center;
    gap: 16px;
}

/* ==========================================================================
   BUTTONS, STATUS DOTS & MINIMAL BADGES
   ========================================================================== */
.sem-dot {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    flex-shrink: 0;
}
.sem-ok { background-color: var(--ok); }
.sem-warning { background-color: var(--warning); }
.sem-critical { background-color: var(--critical); }
.sem-offline { background-color: var(--offline); }
.sem-pending { background-color: var(--pending); }

.text-ok { color: var(--ok); }
.text-warn { color: var(--warning); }
.text-crit { color: var(--critical); }
.muted { color: var(--muted); }

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    background: var(--card);
    color: var(--text);
    border: 1px solid var(--border);
    padding: 6px 12px;
    border-radius: 7px;
    font-size: 12.5px;
    font-weight: 500;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
    white-space: nowrap;
}
.btn:hover {
    border-color: var(--border-strong);
    background: var(--card-hover);
}
.btn-primary {
    background: var(--primary);
    border-color: var(--primary);
    color: #ffffff;
}
.btn-primary:hover {
    background: var(--primary-hover);
    border-color: var(--primary-hover);
    color: #ffffff;
}
.btn-outline {
    background: transparent;
    border-color: var(--border);
}
.btn-ghost {
    background: transparent;
    border-color: transparent;
    color: var(--muted);
}
.btn-ghost:hover {
    background: var(--search-bg);
    color: var(--text);
}
.btn-danger {
    background: var(--critical-soft);
    border-color: rgba(220, 38, 38, 0.3);
    color: var(--critical);
}
.btn-sm { padding: 5px 10px; font-size: 12px; }
.btn-xs { padding: 3px 8px; font-size: 11.5px; border-radius: 6px; }
.btn-block { width: 100%; justify-content: center; padding: 9px; }

/* Minimal Info Banner */
.QuickAgentBanner {
    background: var(--bg-subtle);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 16px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    margin-bottom: 22px;
    flex-wrap: wrap;
}
.QuickAgentBanner-left {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    max-width: 780px;
}
.QuickAgentBanner-icon {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: var(--primary-soft);
    color: var(--primary);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.QuickAgentBanner h3 {
    font-size: 13.5px;
    font-weight: 600;
    margin-bottom: 2px;
}
.QuickAgentBanner p {
    font-size: 12.5px;
    color: var(--muted);
}
.QuickAgentBanner-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

/* KPI Grid */
.kpi-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 28px;
}
@media (max-width: 960px) {
    .kpi-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
.kpi-card {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 16px 18px;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 8px;
}
a.kpi-card:hover {
    border-color: var(--border-strong);
    background: var(--card-hover);
}
.kpi-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
}
.kpi-label {
    color: var(--muted);
    font-size: 12px;
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 6px;
}
.kpi-link {
    font-size: 11.5px;
    color: var(--muted);
    display: inline-flex;
    align-items: center;
    gap: 3px;
}
.kpi-link:hover {
    color: var(--text);
}
.kpi-value {
    font-size: 24px;
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 1.15;
    color: var(--text);
}
.kpi-sub {
    font-size: 13px;
    color: var(--muted);
    font-weight: 400;
}
.kpi-foot {
    font-size: 11.5px;
    color: var(--muted);
}

/* Section Header */
.section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}
.section-header h1 {
    font-size: 16px;
    font-weight: 600;
    letter-spacing: -0.01em;
    display: flex;
    align-items: center;
    gap: 8px;
}
.section-header h2 {
    font-size: 14px;
    font-weight: 600;
    letter-spacing: -0.01em;
    color: var(--text);
    display: flex;
    align-items: center;
    gap: 7px;
}
.section-sub { color: var(--muted); font-size: 12.5px; margin-top: 2px; }

/* Server Cards Grid */
.server-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}
.server-card {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 16px 18px;
    display: flex;
    flex-direction: column;
    gap: 14px;
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    transition: border-color 0.15s;
}
.cluster-node-rows { display: flex; flex-direction: column; }
.cluster-node-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 7px 0;
    border-top: 1px solid var(--border);
    font-size: 13px;
    min-width: 0;
}
.cluster-node-row:last-child { border-bottom: 1px solid var(--border); }
/* the name keeps at least 40% of the row; the numbers stay on the right */
.cluster-node-name { display: flex; align-items: center; gap: 6px; font-weight: 500; color: var(--text); min-width: 0; flex: 1 1 auto; overflow: hidden; }
.cluster-node-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cluster-node-meta { display: flex; align-items: center; justify-content: flex-end; gap: 8px; color: var(--muted); font-size: 11.5px; white-space: nowrap; flex: 0 1 auto; min-width: 0; overflow: hidden; }
.cluster-node-meta strong { color: var(--text); font-weight: 600; }
.cluster-node-name .badge { font-size: 9.5px; padding: 1px 5px; flex-shrink: 0; }
.cluster-node-meta { flex-shrink: 0; }
.server-card:hover {
    border-color: var(--border-strong);
}

.server-card-top {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    min-width: 0;
}
.server-card-top > div:first-child {
    min-width: 0;
    flex: 1;
}
.server-title {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    min-width: 0;
    flex-wrap: nowrap;
}
.server-title .sem-dot { flex-shrink: 0; }
.server-name-link {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}
.server-name-link:hover {
    color: var(--primary-text);
}
.server-meta {
    font-size: 11.5px;
    color: var(--muted);
    margin-top: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.server-detail-header .server-meta {
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
}
.badges-col {
    display: flex;
    gap: 6px;
    align-items: center;
    flex-shrink: 0;
}
/* Card header: name and badges on the first row, the info lines below at full width and wrapped, never cut.
   The badges stack when the card is narrow, and a long name wraps instead of ending in "..." */
.server-card-top {
    display: grid;
    grid-template-columns: minmax(0, 1fr) fit-content(60%);
    gap: 0 10px;
    align-items: start;
    align-content: start;
}
.server-card-top > div:first-child { display: contents; }
.server-card-top .server-title { grid-column: 1; grid-row: 1; align-items: flex-start; }
.server-card-top .server-title .sem-dot { margin-top: 6px; }
.server-card-top .server-name-link { white-space: normal; overflow-wrap: anywhere; line-height: 1.35; }
.server-card-top .badges-col { grid-column: 2; grid-row: 1; flex-wrap: wrap; justify-content: flex-end; row-gap: 4px; }
.server-card-top .server-meta { grid-column: 1 / -1; white-space: normal; overflow-wrap: anywhere; }
.server-card-top .server-title + .server-meta { margin-top: 6px; }
.server-meta-list { display: flex; flex-wrap: wrap; gap: 1px 12px; line-height: 1.5; }
.server-meta-list > span { white-space: nowrap; }
.server-meta-list b { color: var(--text); font-weight: 500; font-variant-numeric: tabular-nums; }

.badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 7px;
    border-radius: 5px;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.02em;
    background: var(--bg-subtle);
    color: var(--text-secondary);
    border: 1px solid var(--border);
    white-space: nowrap;
}
.badge-ok, .badge-status-ok { background: var(--ok-soft); color: var(--ok); border-color: transparent; }
.badge-warning, .badge-status-warning { background: var(--warning-soft); color: var(--warning); border-color: transparent; }
.badge-critical, .badge-status-critical, .badge-status-offline { background: var(--critical-soft); color: var(--critical); border-color: transparent; }
.badge-status-pending { background: var(--primary-soft); color: var(--primary-text); border-color: transparent; }
.badge-shield { background: var(--ok-soft); color: var(--ok); border-color: transparent; }

.pending-onboarding-box {
    background: var(--bg-subtle);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 12px 14px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}
.pending-onboarding-text {
    min-width: 0;
    flex: 1;
}
.pending-onboarding-text strong {
    display: block;
    font-size: 12.5px;
    font-weight: 500;
    color: var(--text);
}
.pending-onboarding-text p {
    font-size: 11.5px;
    color: var(--muted);
    margin-top: 1px;
}
.pending-onboarding-actions {
    display: flex;
    gap: 6px;
    align-items: center;
    flex-shrink: 0;
}

.reasons-box {
    font-size: 12px;
    padding: 7px 11px;
    border-radius: 7px;
    background: var(--bg-subtle);
    border: 1px solid var(--border);
    color: var(--text-secondary);
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
    min-width: 0;
    max-width: 100%;
}
.server-card .reasons-box {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.reasons-critical, .reasons-offline {
    background: var(--critical-soft);
    border-color: rgba(220, 38, 38, 0.18);
    color: var(--critical);
}
.reasons-warning {
    background: var(--warning-soft);
    border-color: rgba(217, 119, 6, 0.18);
    color: var(--warning);
}

.metrics-mini-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}
@media (max-width: 560px) {
    .metrics-mini-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
.metric-mini {
    min-width: 0;
}
.metric-mini-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-size: 11.5px;
    margin-bottom: 5px;
    color: var(--muted);
    gap: 4px;
}
.metric-mini-head strong {
    color: var(--text);
    font-weight: 600;
}
.progress-bar {
    height: 4px;
    background: var(--search-bg);
    border-radius: 999px;
    overflow: hidden;
}
.progress-fill {
    height: 100%;
    background: var(--primary);
    border-radius: 999px;
}
.fill-warn { background: var(--warning); }
.fill-crit { background: var(--critical); }

.server-card-footer {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px 10px;
    padding-top: 12px;
    margin-top: auto;          /* always at the bottom: cards of a row line up */
    border-top: 1px solid var(--border);
    font-size: 12px;
    color: var(--muted);
}
.server-card-stats {
    display: flex;
    gap: 8px;
    align-items: center;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
}
.server-card-chips {
    grid-column: 1 / -1;
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}
.server-card-actions {
    display: flex;
    gap: 6px;
    flex-shrink: 0;
}

/* ==========================================================================
   HUB SCRIPT AGENT .SH & CODE VIEWER
   ========================================================================== */
.agent-builder-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
    gap: 14px;
    align-items: start;
    width: 100%;
    min-width: 0;
    margin-bottom: 14px;
}

.step-box {
    display: flex;
    gap: 10px;
    margin-bottom: 12px;
    min-width: 0;
}
.step-num {
    width: 22px;
    height: 22px;
    border-radius: 6px;
    background: var(--search-bg);
    color: var(--text);
    font-weight: 600;
    font-size: 11.5px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.step-body {
    flex: 1;
    min-width: 0;
}
.step-body h4 {
    font-size: 12.5px;
    font-weight: 600;
    margin-bottom: 2px;
}
.step-body p {
    font-size: 12px;
    color: var(--muted);
    margin-bottom: 6px;
}

.code-block-wrap {
    position: relative;
    min-width: 0;
    max-width: 100%;
}
.code-block {
    background: var(--code-bg);
    border: 1px solid var(--border);
    border-radius: 7px;
    padding: 7px 66px 7px 10px;
    font-size: 11.5px;
    color: var(--text);
    overflow-x: auto;
    white-space: pre-wrap;
    word-break: break-all;
    max-width: 100%;
}
.copy-btn {
    position: absolute;
    top: 5px;
    right: 5px;
}

.check-list {
    list-style: none;
    margin-top: 6px;
    display: flex;
    flex-direction: column;
    gap: 3px;
    font-size: 11.5px;
    color: var(--muted);
}

.code-viewer-card {
    display: flex;
    flex-direction: column;
    min-width: 0;
    max-width: 100%;
    position: sticky;
    top: 60px;
}
.code-viewer-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 10px;
    margin-bottom: 8px;
    flex-wrap: wrap;
    min-width: 0;
}
.code-viewer-header > div:first-child {
    min-width: 0;
    flex: 1;
}
.script-textarea {
    width: 100%;
    max-width: 100%;
    height: calc(100vh - 280px);
    min-height: 360px;
    max-height: 620px;
    background: var(--code-bg);
    color: var(--text);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 12px;
    font-size: 11px;
    line-height: 1.45;
    resize: vertical;
}

/* ==========================================================================
   SERVER DETAIL, TABS, CHARTS & TABLES
   ========================================================================== */
.breadcrumb-bar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
    flex-wrap: wrap;
    gap: 8px;
}
.breadcrumb-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--muted);
    font-size: 12px;
}
.breadcrumb-link:hover { color: var(--text); }

.server-detail-header {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 12px 16px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 10px;
    width: 100%;
    min-width: 0;
}
.server-detail-header > div:first-child {
    min-width: 0;
    flex: 1;
}
.server-detail-header h1 {
    font-size: 16.5px;
    font-weight: 600;
}
.detail-side {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 8px;
    flex-shrink: 0;
}
.detail-actions { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.detail-actions form { display: inline; }
.detail-kpis {
    display: flex;
    gap: 18px;
    flex-shrink: 0;
}
.detail-kpis div {
    text-align: right;
}
.detail-kpis small {
    display: block;
    color: var(--muted);
    font-size: 10.5px;
}
.detail-kpis strong {
    font-size: 14px;
}

.tabs-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 2px;
    border-bottom: 1px solid var(--border);
    margin-bottom: 14px;
    max-width: 100%;
}
.tab-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 12px;
    color: var(--muted);
    font-weight: 500;
    font-size: 12.5px;
    border-bottom: 2px solid transparent;
    white-space: nowrap;
}
.tab-link:hover { color: var(--text); }
.tab-link.active {
    color: var(--text);
    border-bottom-color: var(--primary);
}

.services-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(185px, 1fr));
    gap: 8px;
    width: 100%;
    min-width: 0;
}
.service-pill {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 8px 12px;
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
    min-width: 0;
}
.service-crit {
    border-color: rgba(220, 38, 38, 0.4);
    background: var(--critical-soft);
}
.service-state {
    margin-left: auto;
    font-size: 10.5px;
    font-weight: 600;
    color: var(--muted);
}

.charts-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}
/* chart period: pills, "until" date and resolution note on one wrapping row */
.range-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 14px;
    margin-bottom: 14px;
}
.range-label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
}
.range-at {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    font-size: 12px;
}
.range-at input[type="datetime-local"] {
    font: inherit;
    padding: 3px 6px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--card);
    color: var(--text);
}
.range-note { font-size: 11px; }
/* four charts: two per row on desktop, one on small screens */
.charts-grid.charts-grid-2 {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 460px), 1fr));
}
.chart-card {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 14px;
    min-width: 0;
    max-width: 100%;
}
.chart-card-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
    gap: 8px;
    flex-wrap: wrap;
}
.chart-card-head h3 {
    font-size: 13px;
    font-weight: 600;
}

.table-card {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 10px;
    width: 100%;
    min-width: 0;
    max-width: 100%;
}
.data-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 12px;
}
/* Fixed layout: columns never grow past the viewport; long values wrap inside their cell */
.data-table.fixed {
    table-layout: fixed;
}
.data-table th, .data-table td {
    padding: 9px 12px;
    text-align: left;
    vertical-align: top;
    border-bottom: 1px solid var(--border);
    overflow-wrap: anywhere;
}
.data-table .metric-mini-head {
    flex-wrap: wrap;
}
.data-table th {
    color: var(--muted);
    font-weight: 600;
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    background: var(--bg-subtle);
    overflow-wrap: normal;
    position: sticky;
    top: 46px;
    z-index: 5;
}
.view-server_detail .data-table th {
    top: 80px;
}
.data-table thead th:first-child { border-top-left-radius: 10px; }
.data-table thead th:last-child { border-top-right-radius: 10px; }
.data-table tr:last-child td { border-bottom: none; }
.data-table tbody tr:hover { background: var(--card-hover); }
.data-table th.num, .data-table td.num { text-align: right; }
.row-muted { opacity: 0.55; }
.code-path {
    font-family: "JetBrains Mono", monospace;
    font-size: 11.5px;
    color: var(--text-secondary);
    word-break: break-all;
}

/* Column widths for fixed tables */
.w-dot { width: 34px; }
.w-xs { width: 100px; }
.w-sm { width: 124px; }
.w-md { width: 150px; }
.w-lg { width: 200px; }
.w-xl { width: 26%; }

/* Cell typography helpers */
.cell-title {
    font-weight: 600;
    color: var(--text);
}
.cell-sub {
    font-size: 11px;
    color: var(--muted);
    margin-top: 2px;
}
.cell-sub a:hover, a.cell-title:hover { color: var(--primary-text); }
.cat-label {
    display: inline-block;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--muted);
    margin-bottom: 2px;
}
.clamp-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.finding-details { overflow-wrap: anywhere; white-space: pre-line; }
.finding-details.expanded { display: block; -webkit-line-clamp: unset; overflow: visible; }
.link-btn { background: none; border: 0; padding: 0; color: var(--primary-text); cursor: pointer; font: inherit; }
.link-btn:hover { text-decoration: underline; }
.expand-toggle { margin-top: 2px; font-size: 11.5px; }
.row-actions {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
}
.row-actions form { display: inline; }

/* Collapsible SSH command: hidden until needed, always one click to copy */
.cmd-details {
    margin-top: 5px;
}
.cmd-details > summary {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 11px;
    color: var(--muted);
    cursor: pointer;
    list-style: none;
    user-select: none;
}
.cmd-details > summary::-webkit-details-marker { display: none; }
.cmd-details > summary:hover { color: var(--text); }
.cmd-details > summary .svg-icon { transition: transform 0.15s; }
.cmd-details[open] > summary .svg-icon { transform: rotate(180deg); }
.cmd-pre {
    margin-top: 4px;
    background: var(--code-bg);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 6px 8px;
    font-size: 11px;
    white-space: pre-wrap;
    word-break: break-all;
    color: var(--text);
}

/* Patches page: the security-update command on its own line under each server */
.data-table tr.has-cmd-row > td { border-bottom: none; }
.data-table tr.patch-cmd-row > td { padding-top: 0; }
.cmd-line { display: flex; align-items: flex-start; gap: 8px; }
.cmd-line .cmd-pre { flex: 1; min-width: 0; margin: 0; }
.cmd-pre-words { word-break: normal; overflow-wrap: anywhere; }

/* Sticky server tabs */
.tabs-nav.sticky {
    position: sticky;
    top: 46px;
    z-index: 30;
    background: var(--canvas);
}

/* Forms & Modals */
.settings-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr));
    gap: 14px;
    width: 100%;
    min-width: 0;
}
.form-card {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 14px 16px;
    min-width: 0;
    max-width: 100%;
}
.form-card h3 {
    font-size: 13.5px;
    font-weight: 600;
    margin-bottom: 8px;
}
.form-group {
    margin-bottom: 9px;
    min-width: 0;
}
.form-group label {
    display: block;
    font-size: 11.5px;
    color: var(--text-secondary);
    margin-bottom: 3px;
    font-weight: 500;
}
.form-row-2 {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 10px;
    min-width: 0;
}
.form-row-3 {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    min-width: 0;
}
input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="number"], input[type="search"], select {
    width: 100%;
    max-width: 100%;
    background: var(--input-bg);
    border: 1px solid var(--border);
    color: var(--text);
    padding: 6px 9px;
    border-radius: 7px;
    font-size: 12.5px;
}
input:focus, select:focus {
    outline: none;
    border-color: var(--primary);
}
.search-input { max-width: 320px; }
.checkbox-label {
    display: flex !important;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    color: var(--text) !important;
}
.divider {
    border: none;
    border-top: 1px solid var(--border);
    margin: 10px 0;
}

.alert {
    padding: 9px 12px;
    border-radius: 8px;
    margin-bottom: 12px;
    font-size: 12px;
    border: 1px solid var(--border);
    display: flex;
    align-items: center;
    gap: 8px;
}
.alert-ok { background: var(--ok-soft); border-color: rgba(22, 163, 74, 0.25); color: var(--ok); }
.alert-critical { background: var(--critical-soft); border-color: rgba(220, 38, 38, 0.25); color: var(--critical); }
.alert-warning { background: var(--warning-soft); border-color: rgba(217, 119, 6, 0.25); color: var(--warning); }

/* Auth Login Page */
.auth-body {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 16px;
    background: var(--bg-subtle);
}
.auth-card {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 28px;
    width: 100%;
    max-width: 400px;
}
.auth-brand {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 16px;
}
.auth-card h2 {
    font-size: 16px;
    font-weight: 600;
    margin-bottom: 4px;
}
.auth-subtitle {
    color: var(--muted);
    font-size: 12.5px;
    margin-bottom: 18px;
}

/* Modal */
.modal-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
    z-index: 100;
    align-items: center;
    justify-content: center;
    padding: 16px;
}
.modal-backdrop.open { display: flex; }
.modal-box {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 20px;
    width: 100%;
    max-width: 500px;
}
.modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 14px;
}
.modal-header h3 { font-size: 15px; font-weight: 600; }
.btn-close {
    background: none;
    border: none;
    color: var(--muted);
    font-size: 20px;
    cursor: pointer;
}
.modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 14px;
}
/* note asked when a case is resolved / whitelisted */
.note-dialog { max-width: 520px; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25); }
.note-dlg-subject { font-size: 12px; color: var(--text-secondary); background: var(--bg-subtle); border: 1px solid var(--border); border-radius: 7px; padding: 7px 10px; margin-bottom: 12px; overflow-wrap: anywhere; }
.note-dlg-hint { font-size: 12px; line-height: 1.45; margin: 0 0 10px; }
.note-dlg-label { display: block; font-size: 12.5px; font-weight: 600; margin-bottom: 6px; color: var(--text); }
.note-dialog textarea { width: 100%; background: var(--input-bg); border: 1px solid var(--border); color: var(--text); border-radius: 8px; padding: 8px 10px; font: inherit; font-size: 13px; resize: vertical; min-height: 72px; }
.note-dialog textarea:focus { outline: none; border-color: var(--primary); }
.note-dlg-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.note-dlg-chips .filter-pill { font-size: 11.5px; }
.note-dlg-foot { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 14px; font-size: 11.5px; }
.note-dlg-foot .modal-actions { margin-top: 0; margin-left: auto; }

.qr-box {
    background: #ffffff;
    padding: 10px;
    border-radius: 8px;
    border: 1px solid var(--border);
    display: inline-block;
}
.empty-state {
    background: var(--card);
    border: 1px dashed var(--border-strong);
    border-radius: 10px;
    padding: 36px;
    text-align: center;
    color: var(--muted);
}

/* ==========================================================================
   PRIORITY TRIAGE ACTION PLAN, FILTER PILLS & DIAGNOSIS UX
   ========================================================================== */
.reasons-list {
    display: flex;
    flex-direction: column;
    gap: 5px;
    background: var(--bg-subtle);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 8px 10px;
}
.reason-item {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 11.5px;
    line-height: 1.35;
    color: var(--text-secondary);
}
.reason-item-link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    width: 100%;
    color: var(--text);
    text-decoration: none;
    padding: 2px 4px;
    border-radius: 5px;
    transition: background 0.12s;
}
.reason-item-link:hover {
    background: var(--card-hover);
    color: var(--primary-text);
}

.triage-panel {
    background: var(--card);
    border: 1px solid var(--border-strong);
    border-radius: 10px;
    padding: 14px 16px;
    margin-bottom: 14px;
}
.triage-panel-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 12px;
    flex-wrap: wrap;
}
.triage-panel-head h2 {
    font-size: 14px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 7px;
    color: var(--text);
}
.triage-panel-head p {
    font-size: 12px;
    color: var(--muted);
    margin-top: 2px;
}
/* One row per priority: what it is | where + command | what to do */
.triage-grid {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.triage-grid .triage-card {
    display: grid;
    grid-template-columns: minmax(200px, 0.9fr) minmax(0, 1.5fr) auto;
    grid-template-areas:
        "top  pills actions"
        "desc pills actions"
        "desc cmd   actions";
    grid-template-rows: auto auto 1fr;
    column-gap: 18px;
    row-gap: 6px;
    align-items: start;
}
.triage-grid .triage-card-top { grid-area: top; }
.triage-grid .triage-desc { grid-area: desc; }
.triage-grid .triage-pills { grid-area: pills; }
.triage-grid .triage-cmd-box { grid-area: cmd; }
.triage-grid .triage-actions {
    grid-area: actions;
    flex-direction: column;
    align-items: stretch;
    margin-top: 0;
}
@media (max-width: 960px) {
    .triage-grid .triage-card {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas: "top" "desc" "pills" "cmd" "actions";
    }
    .triage-grid .triage-actions { flex-direction: row; }
}
.triage-card {
    background: var(--bg-subtle);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 12px 14px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 9px;
    min-width: 0;
}
.triage-card-crit {
    border-left: 3px solid var(--critical);
}
.triage-card-warn {
    border-left: 3px solid var(--warning);
}
.triage-card-head {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    font-size: 12.5px;
}
.triage-card p {
    font-size: 11.5px;
    color: var(--text-secondary);
    line-height: 1.45;
}
.triage-domains {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
}
.triage-domain-pill {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 500;
    color: var(--text);
    transition: border-color 0.12s, background 0.12s;
}
.triage-domain-pill:hover {
    border-color: var(--primary);
    color: var(--primary-text);
}
.triage-domain-pill span {
    background: var(--critical-soft);
    color: var(--critical);
    border-radius: 4px;
    padding: 0 5px;
    font-size: 10px;
    font-weight: 600;
}
.triage-cmd-box {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    background: var(--code-bg);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 5px 8px;
    min-width: 0;
}
.triage-cmd-box code {
    font-family: "JetBrains Mono", monospace;
    font-size: 11px;
    color: var(--text);
    overflow-x: auto;
    white-space: nowrap;
    flex: 1;
    min-width: 0;
}
.triage-card-foot {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    padding-top: 4px;
}

/* Interactive Filter Pills */
.filter-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 12px;
    align-items: center;
}
.filter-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--card);
    border: 1px solid var(--border);
    color: var(--text-secondary);
    border-radius: 999px;
    padding: 5px 11px;
    font-size: 11.5px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.12s;
}
.filter-pill:hover {
    border-color: var(--border-strong);
    color: var(--text);
    background: var(--card-hover);
}
.filter-pill.active {
    background: var(--primary);
    border-color: var(--primary);
    color: #ffffff;
}
.filter-pill.active .pill-count {
    background: rgba(255, 255, 255, 0.22);
    color: #ffffff;
}
.filter-pill-crit {
    border-color: rgba(220, 38, 38, 0.28);
}
.filter-pill-warn {
    border-color: rgba(217, 119, 6, 0.28);
}
.pill-count {
    background: var(--search-bg);
    color: var(--text);
    border-radius: 999px;
    padding: 1px 6px;
    font-size: 10.5px;
    font-weight: 600;
}

/* Diagnosis Column inside Sites Table */
.diag-list {
    display: flex;
    flex-direction: column;
    gap: 3px;
}
.diag-item {
    display: flex;
    align-items: baseline;
    gap: 6px;
    font-size: 11.5px;
    line-height: 1.35;
    color: var(--text);
}
.diag-critical {
    color: var(--critical);
    font-weight: 500;
}
.diag-warning {
    color: var(--warning);
}

/* Missing / Not Installed Service Pill */
.service-missing {
    opacity: 0.62;
    background: var(--bg-subtle);
    border-style: dashed;
}

/* Toolbar: filter pills on the left, search on the right */
.toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}
.toolbar .filter-pills {
    margin-bottom: 0;
}
.toolbar .search-input {
    width: 280px;
    max-width: 100%;
}
.toolbar-right { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; max-width: 100%; }
.toolbar .facet-select { width: 220px; max-width: 100%; }

/* Compact key/value list inside a table cell */
.kv-list div {
    display: flex;
    justify-content: space-between;
    gap: 6px;
    font-size: 11px;
    line-height: 1.6;
}
.kv-list span {
    color: var(--muted);
}

/* Diagnosis links in site tables */
.diag-crit, .diag-warn, .diag-ok {
    display: flex;
    align-items: baseline;
    gap: 6px;
    font-size: 11.5px;
    line-height: 1.35;
    margin-bottom: 3px;
}
.diag-crit { color: var(--critical); }
.diag-warn { color: var(--warning); }
.diag-ok { color: var(--ok); }
a.diag-crit:hover, a.diag-warn:hover { text-decoration: underline; }
.diag-crit .svg-icon, .diag-warn .svg-icon { flex-shrink: 0; transform: translateY(1px); }

/* Server "Action plan": collapsible, one compact card per problem type */
details.triage-panel > summary {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    cursor: pointer;
    list-style: none;
    user-select: none;
}
details.triage-panel > summary::-webkit-details-marker { display: none; }
details.triage-panel[open] > summary { margin-bottom: 12px; }
details.triage-panel > summary:hover { color: var(--text); }
details.triage-panel > summary:focus { outline: none; }
details.triage-panel > summary:focus-visible { outline: 2px solid var(--primary); outline-offset: 4px; border-radius: 6px; }
/* Explicit button-like toggle: the label says what a click will do */
.triage-toggle {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border: 1px solid var(--border-strong);
    border-radius: 7px;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-secondary);
    background: var(--bg);
}
details.triage-panel > summary:hover .triage-toggle { border-color: var(--primary); color: var(--primary-text); }
.triage-toggle svg { transition: transform 0.15s; }
details.triage-panel[open] .triage-toggle svg { transform: rotate(180deg); }
.triage-toggle .when-open { display: none; }
details.triage-panel[open] .triage-toggle .when-open { display: inline; }
details.triage-panel[open] .triage-toggle .when-closed { display: none; }
.triage-chips a.badge { text-decoration: none; }
.triage-chips a.badge:hover { filter: brightness(0.95); text-decoration: underline; }
.triage-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 600;
    color: var(--text);
}
.triage-chips {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}
.triage-card-top {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 5px;
    font-size: 12.5px;
}
.triage-desc {
    font-size: 11.5px;
    color: var(--text-secondary);
    line-height: 1.45;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.triage-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
}
.triage-pill-count {
    background: var(--critical-soft);
    color: var(--critical);
    border-radius: 4px;
    padding: 0 5px;
    font-size: 10px;
    font-weight: 600;
}
.triage-pill-crit {
    border-color: rgba(220, 38, 38, 0.22);
}
.triage-more {
    font-size: 11px;
    color: var(--muted);
    align-self: center;
}
.triage-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    margin-top: auto;
}
.triage-actions form { display: inline; }
.triage-cmd-box code {
    text-overflow: ellipsis;
    overflow: hidden;
}

.tab-count {
    font-size: 10.5px;
    font-weight: 600;
    padding: 0 6px;
    line-height: 16px;
    border-radius: 999px;
    background: var(--search-bg);
    color: var(--text-secondary);
}
.tab-count-crit {
    background: var(--critical-soft);
    color: var(--critical);
}
.tab-count-warn {
    background: var(--warning-soft);
    color: var(--warning);
}

/* Plugin list inside the CMS table */
.plugin-list {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 12px;
    margin-top: 6px;
    font-size: 11.5px;
}
.plugin-list code { color: var(--muted); }

.danger-zone {
    margin-top: 14px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    border-color: rgba(220, 38, 38, 0.3);
}
.danger-zone h3 { margin-bottom: 2px; }
.danger-zone p { font-size: 12px; }

/* Global search in the topbar (Cmd/Ctrl+K) */
.topbar-search {
    flex: 1 1 auto;
    max-width: 420px;
    margin: 0 16px;
    position: relative;
    display: flex;
    align-items: center;
    min-width: 0;
}
.topbar-search svg {
    position: absolute;
    left: 9px;
    color: var(--muted);
    pointer-events: none;
}
.topbar-search input[type="search"] {
    padding-left: 28px;
    padding-right: 38px;
    background: var(--bg-subtle);
    height: 30px;
}
.topbar-search kbd {
    position: absolute;
    right: 8px;
    font: 600 10px/1 inherit;
    color: var(--muted);
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 2px 4px;
    pointer-events: none;
}
.search-hero {
    display: flex;
    gap: 8px;
    margin-bottom: 16px;
    max-width: 720px;
}
.search-hero .search-input { max-width: none; flex: 1; }
/* Text only used by the client-side table filter (e.g. plugin slugs of a CMS row) */
.search-hidden { display: none; }

/* Site page */
.site-head { margin-bottom: 12px; }
.site-title {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin: 8px 0 3px;
}
.site-title h2 { font-size: 19px; font-weight: 650; overflow-wrap: anywhere; }
.fact-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(112px, 1fr));
    gap: 8px;
    margin-bottom: 12px;
}
.fact {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 9px 11px;
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 9px;
    min-width: 0;
    color: var(--text);
    text-decoration: none;
}
a.fact:hover { border-color: var(--border-strong); background: var(--card-hover); }
.fact-label {
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--muted);
}
.fact strong { font-size: 15px; overflow-wrap: anywhere; }
.fact-sub { font-size: 11px; color: var(--muted); }
.fact .badge { white-space: normal; max-width: 100%; }
.page-anchors {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
    margin-bottom: 16px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--border);
}
.page-anchors a {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px 9px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 500;
    color: var(--text-secondary);
    text-decoration: none;
    border: 1px solid var(--border);
}
.page-anchors a:hover { color: var(--text); border-color: var(--border-strong); }
[id^="site-"], [id^="res-"], #cms-versions, #plugins { scroll-margin-top: 90px; }
.kv-table th {
    text-align: left;
    font-weight: 500;
    color: var(--muted);
    background: transparent;
    position: static;
}
.log-viewer {
    background: var(--code-bg);
    border: 1px solid var(--border);
    border-radius: 9px;
    padding: 8px 10px;
    max-height: 420px;
    overflow: auto;
    font: 11.5px/1.55 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}
.log-line { white-space: pre-wrap; overflow-wrap: anywhere; padding: 1px 0; }
.log-line .badge { font-family: inherit; margin-right: 4px; }

/* Cases: notes and grouped findings */
.case-note {
    margin-top: 5px;
    font-size: 11.5px;
    color: var(--text-secondary);
    background: var(--bg-subtle);
    border-left: 2px solid var(--border-strong);
    padding: 3px 8px;
    border-radius: 0 6px 6px 0;
}
.case-note-text { display: block; color: var(--text); font-style: italic; }
.case-history-list { list-style: none; margin: 0; padding: 0; }
.case-history-list .case-ev { padding: 2px 0; }
.case-history-list .case-ev + .case-ev { border-top: 1px dashed var(--border); }
.case-ev-reopened_agent strong { color: var(--warning); }
.case-history-warn { display: flex; gap: 6px; align-items: flex-start; color: var(--warning); font-weight: 600; margin: 2px 0 4px; }
.case-history-warn svg { flex: 0 0 auto; margin-top: 2px; }
.case-hint {
    margin-top: 5px;
    font-size: 11.5px;
    color: var(--ok);
    background: var(--ok-soft);
    padding: 3px 8px;
    border-radius: 6px;
}
.case-group > td { background: var(--bg-subtle); }
.path-list {
    list-style: none;
    margin: 6px 0 0;
    padding: 0;
    max-height: 260px;
    overflow: auto;
    font-size: 11px;
}
.path-list li { padding: 2px 0; overflow-wrap: anywhere; border-bottom: 1px dashed var(--border); }
.path-list li:last-child { border-bottom: 0; }

/* Chips (versions, sites) */
.chip-list { display: flex; flex-wrap: wrap; gap: 4px; }
.chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 1px 7px;
    border: 1px solid var(--border);
    border-radius: 999px;
    font-size: 11.5px;
    color: var(--text-secondary);
    background: var(--card);
    text-decoration: none;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
a.chip:hover { border-color: var(--primary); color: var(--primary-text); }
.chip code { font-size: 10.5px; color: var(--muted); background: none; padding: 0; }
.chip-vuln { border-color: var(--critical); color: var(--critical); background: var(--critical-soft); }
.chip-vuln code { color: var(--critical); }
.clamp-1 {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
tr.filter-more td { text-align: center; padding: 8px; }

@media (max-width: 1100px) {
    .topbar-search kbd { display: none; }
}
@media (max-width: 760px) {
    .server-detail-header { flex-direction: column; align-items: stretch; gap: 10px; }
    .detail-side { align-items: flex-start; }
    .detail-actions { justify-content: flex-start; }
    .detail-kpis div { text-align: left; }
    .section-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .st-value { font-size: 19px; }
    .topbar-search { margin: 0 8px; }
    .topbar-search input[type="search"] { padding-right: 9px; }
    .site-title .row-actions { margin-left: 0 !important; }
}

/* One-line key facts above the section tiles */
.fact-strip {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 18px;
    align-items: center;
    padding: 8px 12px;
    margin-bottom: 12px;
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 10px;
    font-size: 12.5px;
}
.fact-strip > span { display: inline-flex; align-items: center; gap: 5px; min-width: 0; flex-wrap: wrap; }
.fact-strip small {
    font-size: 10.5px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--muted);
}
.st-value small { font-size: 12px; font-weight: 500; color: var(--muted); }
/* Section tiles + panels: the top of a long page summarises every section */
.section-tiles {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 8px;
    margin-bottom: 16px;
    position: relative;
    scroll-margin-top: 92px;
}
.section-tile {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    text-align: left;
    padding: 10px 12px 10px 14px;
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 10px;
    cursor: pointer;
    color: var(--text);
    font: inherit;
    position: relative;
    overflow: hidden;
    min-width: 0;
    box-shadow: var(--shadow-sm);
    transition: border-color .12s, box-shadow .12s, transform .12s;
}
.section-tile::before {
    content: "";
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 4px;
    background: var(--border-strong);
}
.section-tile.tone-crit::before { background: var(--critical); }
.section-tile.tone-warn::before { background: var(--warning); }
.section-tile.tone-ok::before { background: var(--ok); }
.section-tile:hover { border-color: var(--border-strong); transform: translateY(-1px); }
.section-tile.active {
    border-color: var(--primary);
    box-shadow: 0 0 0 1px var(--primary), var(--shadow-sm);
    background: var(--primary-soft);
}
.st-label {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .03em;
    text-transform: uppercase;
    color: var(--text-secondary);
}
.st-value { font-size: 22px; font-weight: 650; line-height: 1.15; }
.section-tile.tone-crit .st-value { color: var(--critical); }
.section-tile.tone-warn .st-value { color: var(--warning); }
.st-sub { font-size: 11.5px; color: var(--muted); }
.st-sub strong { color: var(--text-secondary); }
/* the tiles are tabs: one section at a time (without JavaScript every section shows) */
.js .subpanel[data-group]:not(.active) { display: none; }
/* Settings: a tab bar built on the section tiles (same panels, hash and JS) */
.section-tiles.settings-tabs { display: flex; flex-wrap: wrap; gap: 2px; border-bottom: 1px solid var(--border); margin-bottom: 18px; }
.settings-tabs .section-tile { flex-direction: row; align-items: center; gap: 7px; padding: 9px 14px; background: none; border: 0; border-bottom: 2px solid transparent; border-radius: 0; box-shadow: none; color: var(--muted); font-size: 13px; font-weight: 600; overflow: visible; }
.settings-tabs .section-tile::before { display: none; }
.settings-tabs .section-tile:hover { transform: none; color: var(--text); border-color: transparent; }
.settings-tabs .section-tile.active { color: var(--text); background: none; box-shadow: none; border-bottom-color: var(--primary); }
.settings-tab-hint { font-size: 11px; font-weight: 500; color: var(--muted); }
@media (max-width: 1700px) { .settings-tab-hint { display: none; } }
.settings-two .form-card .btn { width: auto; align-self: flex-start; }
.settings-two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; align-items: start; }
.settings-two > div { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.settings-two .form-card { margin: 0; }
@media (max-width: 1000px) { .settings-two { grid-template-columns: minmax(0, 1fr); } }
.settings-channel-head { font-size: 13.5px; margin-bottom: 10px; }
.settings-smtp { grid-template-columns: minmax(0, 2fr) minmax(0, 0.8fr) minmax(0, 1fr); }
.settings-status { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--text-secondary); background: var(--bg-subtle); border: 1px solid var(--border); border-radius: 8px; padding: 9px 11px; margin-bottom: 12px; }
.settings-savebar { position: sticky; bottom: 28px; z-index: 20; display: flex; justify-content: flex-end; padding: 12px 0; margin-top: 14px; background: linear-gradient(to bottom, transparent, var(--canvas) 35%); }
.subpanel { margin-bottom: 22px; scroll-margin-top: 92px; }
.subpanel > .section-header:first-child { margin-top: 4px; }

@media (max-width: 1120px) {
    .agent-builder-grid { grid-template-columns: minmax(0, 1fr); }
    .code-viewer-card { position: static; }
}
@media (max-width: 900px) {
    .form-row-3 { grid-template-columns: minmax(0, 1fr); }
    .form-row-2 { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
    .container { padding: 12px; }
    .topbar { padding: 0 12px; }
    .kpi-grid { grid-template-columns: minmax(0, 1fr); }
    /* On phones tables scroll inside their card instead of squeezing every column */
    .table-card { overflow-x: auto; }
    .data-table.fixed { table-layout: auto; min-width: 720px; }
    .data-table th { position: static; }
    .status-bottombar { display: none; }
    .settings-savebar { bottom: 0; }
}

/* Command + copy button side by side (Settings > Scheduled tasks) */
.cmd-row { display: flex; align-items: flex-start; gap: 8px; margin: 4px 0 8px; }
.cmd-row .code-block { flex: 1; min-width: 0; margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.cmd-row .btn { flex-shrink: 0; }

/* Quotas page: one line per site / database */
.table-compact td { padding-top: 7px; padding-bottom: 7px; vertical-align: middle; }
.quota-kind { display: inline-flex; vertical-align: -2px; margin-right: 6px; color: var(--muted); }
.quota-meter { display: flex; align-items: center; gap: 8px; }
.quota-meter .progress-bar { flex: 1; min-width: 40px; }
.quota-meter strong { flex-shrink: 0; min-width: 52px; text-align: right; font-size: 12px; }
#settings-quota { scroll-margin-top: 90px; }
.cve-progress { background: var(--card); box-shadow: var(--shadow-sm); border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; margin-bottom: 14px; }
.cve-progress-head { display: flex; justify-content: space-between; gap: 10px; font-size: 13px; margin-bottom: 8px; }
.cve-progress .progress-bar { height: 8px; }
.cve-progress .progress-fill { transition: width 0.4s ease; }
.cve-progress-log { list-style: none; margin: 8px 0 0; padding: 0; font-size: 12px; color: var(--text-secondary); }
.cve-progress-log li::before { content: '\2713  '; color: var(--ok); }
.cve-progress-error { font-size: 12px; margin-top: 8px; }
.chip.chip-ok { color: var(--ok); border-color: var(--ok-soft); background: var(--ok-soft); }
.chip.chip-muted { opacity: 0.55; }
/* WordPress: plugins of a site in the detail row */
.plugins-toggle { display: inline-flex; align-items: center; gap: 4px; color: var(--text); text-align: left; }
.plugins-toggle svg { transition: transform 0.15s; color: var(--muted); }
.plugins-toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
tr.row-detail > td { background: var(--bg-subtle); }
.plugin-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.plugin-chip { display: inline-flex; align-items: baseline; gap: 4px; padding: 2px 8px; border-radius: 6px; border: 1px solid var(--border); background: var(--card); font-size: 11.5px; color: var(--text-secondary); font-family: inherit; }
.plugin-chip strong { color: var(--text); font-weight: 600; }
.plugin-chip-new { color: var(--warning); font-weight: 600; }
.plugin-chip-crit { border-color: var(--critical); background: var(--critical-soft); color: var(--critical); }
.plugin-chip-crit strong { color: var(--critical); }
.plugin-chip-warn { border-color: var(--warning-soft); background: var(--warning-soft); }
/* inactive: dashed and grey, the border keeps the red / orange of a problem */
.plugin-chip.plugin-chip-off { border-style: dashed; background: transparent; color: var(--muted); opacity: 0.6; }
.plugin-chip.plugin-chip-off strong, .plugin-chip.plugin-chip-off .plugin-chip-new { color: var(--muted); font-weight: 500; }
.plugin-chip.plugin-chip-off:not(.plugin-chip-crit):not(.plugin-chip-warn) { border-color: var(--border-strong); }
.plugin-chip.plugin-chip-warn.plugin-chip-off { border-color: var(--warning); }
.plugin-chip.plugin-chip-leftover.plugin-chip-off { background: #3f3f46; border-color: #a1a1aa; color: #d4d4d8; }
.plugin-chip.plugin-chip-leftover.plugin-chip-off strong { color: #e4e4e7; }
/* renamed copies left behind (_js_composer, layerslider-old): dark grey in both themes */
.plugin-chip-leftover { background: #3f3f46; border-color: #3f3f46; color: #e4e4e7; }
.plugin-chip-leftover strong { color: #ffffff; }
.plugin-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; margin-top: 8px; font-size: 11.5px; color: var(--text-secondary); }
.plugin-legend > span { display: inline-flex; align-items: center; gap: 6px; }
.plugin-legend .plugin-chip { padding: 0 7px; font-size: 10.5px; line-height: 18px; }
.plugin-chip-tag { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; opacity: 0.8; }
html[data-theme="dark"] .plugin-chip-leftover { background: #52525b; border-color: #71717a; }
/* Two alternatives side by side (one or the other): stacked on narrow screens */
.option-grid { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: 10px; align-items: stretch; }
.option-card { border: 1px dashed var(--border-strong); border-radius: 9px; padding: 10px 12px; background: var(--bg-subtle); min-width: 0; }
.option-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; font-size: 12.5px; }
.option-letter { background: var(--primary-soft); color: var(--primary-text); border-radius: 999px; padding: 1px 9px; font-size: 11px; font-weight: 700; letter-spacing: .02em; }
.option-or { align-self: center; font-size: 11px; font-weight: 700; color: var(--muted); letter-spacing: .08em; }
.option-card .code-block { white-space: pre-wrap; word-break: break-all; max-height: 150px; overflow: auto; }
@media (max-width: 900px) {
    .option-grid { grid-template-columns: minmax(0, 1fr); }
    .option-or { justify-self: center; }
}

/* Who uses the disk: folder tree + biggest files */
.disk-sub { font-size: 13px; font-weight: 600; margin: 14px 0 8px; display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; }
.disk-sub .muted { font-weight: 400; font-size: 12px; }
.disk-cols { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 14px; align-items: start; }
@media (max-width: 1200px) { .disk-cols { grid-template-columns: minmax(0, 1fr); } }
.disk-tree { padding: 4px 0; font-size: 12.5px; }
.disk-tree-head, .disk-row { display: grid; grid-template-columns: minmax(0, 1.1fr) 150px minmax(0, 1.6fr); gap: 10px; align-items: center; padding: 5px 12px; }
.disk-tree-head { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); border-bottom: 1px solid var(--border); }
.disk-row { border-bottom: 1px solid var(--border); }
.disk-node > summary { list-style: none; cursor: pointer; }
.disk-node > summary::-webkit-details-marker { display: none; }
.disk-node > summary:hover, .disk-leaf:hover { background: var(--bg-subtle); }
.disk-name { padding-left: calc(var(--d, 0) * 14px); font-family: var(--font-mono, monospace); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.disk-node > summary .disk-name::before { content: "▸"; display: inline-block; width: 12px; color: var(--muted); }
.disk-node[open] > summary .disk-name::before { content: "▾"; }
.disk-leaf .disk-name::before { content: ""; display: inline-block; width: 12px; }
.disk-rest .disk-name { color: var(--muted); font-style: italic; font-family: inherit; }
.disk-size { display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.disk-size strong { min-width: 52px; }
.disk-size small { color: var(--muted); font-size: 10.5px; }
.disk-bar { flex: 1; height: 5px; border-radius: 3px; background: var(--bg-subtle); overflow: hidden; min-width: 30px; }
.disk-bar i { display: block; height: 100%; background: var(--primary); }
.disk-hint { font-size: 11.5px; line-height: 1.35; }
.disk-row .disk-hint { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.disk-site { font-weight: 600; font-size: 11.5px; }
@media (max-width: 700px) { .disk-tree-head, .disk-row { grid-template-columns: minmax(0, 1fr) 110px; } .disk-tree-head span:last-child, .disk-row .disk-hint { display: none; } }

/* Server page header: name + status, quiet tags, labelled facts, reasons of the status as footer */
.srv-head { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 14px 16px 0; margin-bottom: 12px; }
.srv-head-top { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.srv-head-title { display: flex; align-items: center; gap: 9px; min-width: 0; }
.srv-head-title h1 { font-size: 18px; font-weight: 650; overflow-wrap: anywhere; }
.srv-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 14px; margin-top: 6px; font-size: 11.5px; color: var(--muted); }
.srv-tags > * { display: inline-flex; align-items: center; gap: 4px; color: var(--muted); text-decoration: none; }
.srv-tags a:hover { color: var(--text); }
.srv-tags .srv-tag-ok { color: var(--ok); }
.srv-tags .srv-tag-warn { color: var(--warning); font-weight: 600; }
.srv-facts { display: flex; flex-wrap: wrap; gap: 10px 28px; margin: 12px -16px 0; padding: 11px 16px; border-top: 1px solid var(--border); }
.srv-facts > div { min-width: 0; }
.srv-facts dt { font-size: 10.5px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); margin-bottom: 2px; }
.srv-facts dd { margin: 0; font-size: 12.5px; font-weight: 600; color: var(--text); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.srv-facts dd .muted { font-weight: 400; }
.srv-facts .srv-fact-push { margin-left: auto; }
.srv-why { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin: 0 -16px; padding: 10px 16px; border-top: 1px solid var(--border); background: var(--bg-subtle); border-radius: 0 0 10px 10px; font-size: 12px; }
.srv-why-label { color: var(--muted); font-weight: 600; margin-right: 2px; }
@media (max-width: 900px) { .srv-facts .srv-fact-push { margin-left: 0; } }
.status-why-item { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 7px; border: 1px solid var(--border); background: var(--card); color: var(--text); text-decoration: none; }
.status-why-item:hover { border-color: var(--border-strong); background: var(--bg-subtle); }
.status-why-critical { border-color: var(--critical); background: var(--critical-soft); color: var(--critical); font-weight: 600; }
.status-why-warning { border-color: var(--warning-soft); background: var(--warning-soft); }

/* Settings → Server order */
.order-list { list-style: none; margin: 0; padding: 0; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.order-list li { display: flex; align-items: center; gap: 9px; padding: 8px 10px; background: var(--card); border-bottom: 1px solid var(--border); cursor: grab; user-select: none; }
.order-list li:last-child { border-bottom: 0; }
.order-list li:hover { background: var(--bg-subtle); }
.order-list li.dragging { opacity: 0.45; }
.order-handle { color: var(--muted); letter-spacing: -3px; font-size: 13px; }
.order-name { flex: 1; min-width: 0; font-weight: 600; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.order-name small { font-weight: 400; margin-left: 4px; }
.order-list li.order-folder { display: block; padding: 0; cursor: default; background: color-mix(in srgb, var(--folder-color) 6%, var(--card)); border-left: 3px solid var(--folder-color); }
.order-list li.order-folder:hover { background: color-mix(in srgb, var(--folder-color) 6%, var(--card)); }
.order-folder-head { display: flex; align-items: center; gap: 9px; padding: 8px 10px; cursor: grab; }
.order-folder-icon { color: var(--folder-color); display: flex; }
.order-folder-name { flex: 1; min-width: 0; font-weight: 600; font-size: 13px; padding: 4px 8px; border: 1px solid var(--border); border-radius: 6px; background: var(--card); color: var(--text); }
.order-folder-color { width: 34px; height: 26px; padding: 0 2px; border: 1px solid var(--border); border-radius: 6px; background: var(--card); cursor: pointer; }
.order-sublist { margin: 0 10px 10px 30px; min-height: 38px; border-style: dashed; }
.order-sublist:not(:has(li))::before { content: 'Drop servers here'; display: block; padding: 10px; font-size: 12px; color: var(--muted); }

/* Settings → Users: first name, last name, role on one line; new password and Save below */
.user-table td { vertical-align: middle; }
.user-edit-form { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 84px; gap: 6px; min-width: 300px; max-width: 380px; }
.user-edit-form input, .user-edit-form select { width: 100%; min-width: 0; max-width: none; padding: 5px 8px; font-size: 12.5px; height: 30px; box-sizing: border-box; }
.user-edit-form .user-edit-pw { grid-column: span 2; }
.user-edit-form .btn { height: 30px; justify-content: center; }
.user-cell-text { display: flex; flex-direction: column; min-width: 0; max-width: 230px; }
.user-cell-name { font-weight: 600; font-size: 13px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.user-cell-mail { font-size: 12px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Avatars: the initials of the person, green for admins, blue for users */
.user-cell { display: flex; align-items: center; gap: 10px; min-width: 0; }
.user-avatar {
    width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 600; letter-spacing: 0.02em; color: #fff;
}
.user-avatar-sm { width: 26px; height: 26px; font-size: 10.5px; }
.user-avatar.role-admin, .sidebar-avatar.role-admin { background: #16a34a; border-color: #16a34a; color: #fff; }
.user-avatar.role-user, .sidebar-avatar.role-user { background: #2563eb; border-color: #2563eb; color: #fff; }
.user-you { font-size: 10.5px; font-weight: 600; color: var(--muted); border: 1px solid var(--border); border-radius: 999px; padding: 0 6px; margin-left: 4px; vertical-align: 1px; }

/* Server page → Name & icon */
.srv-head-icon { display: inline-flex; color: var(--text-secondary); }
.icon-picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 8px; margin-top: 4px; }
.icon-choice { position: relative; cursor: pointer; }
.icon-choice input { position: absolute; opacity: 0; pointer-events: none; }
.icon-choice-box { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 12px 6px 10px; border: 1px solid var(--border); border-radius: 10px; background: var(--card); color: var(--text-secondary); text-align: center; transition: border-color .15s, background .15s; }
.icon-choice-label { font-size: 11.5px; line-height: 1.25; color: var(--text); }
.icon-choice:hover .icon-choice-box { border-color: var(--border-strong); }
.icon-choice input:checked + .icon-choice-box { border-color: var(--primary); background: var(--primary-soft); color: var(--primary-text); box-shadow: 0 0 0 1px var(--primary) inset; }
.icon-choice input:focus-visible + .icon-choice-box { outline: 2px solid var(--primary); outline-offset: 2px; }
.srv-tags .srv-tag-deep { color: var(--primary-text); background: var(--primary-soft); border-color: transparent; }

/* Server Info tab: provider header, size tiles, then the facts the agent reports as cards (masonry columns) */
.mono { font-family: "JetBrains Mono", "SFMono-Regular", Consolas, Menlo, monospace; font-size: 0.94em; }
.info-head { max-width: none; margin-bottom: 14px; padding: 16px 18px; }
.info-prov { display: flex; align-items: center; gap: 14px; }
.prov-mark { flex: none; width: 46px; height: 46px; border-radius: 12px; display: grid; place-items: center; background: var(--prov); color: #fff; font-weight: 700; font-size: 16px; letter-spacing: -0.02em; box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.12); }
.prov-mark.prov-none { background: var(--search-bg); color: var(--muted); box-shadow: none; }
.info-prov-text { min-width: 0; flex: 1; }
.info-prov-label { font-size: 10.5px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); }
.info-prov-name { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 19px; font-weight: 600; letter-spacing: -0.015em; line-height: 1.3; }
.info-prov-name .chip { font-size: 10.5px; font-weight: 500; letter-spacing: 0; }
.info-prov-sub { color: var(--text-secondary); font-size: 12.5px; margin-top: 1px; }
.info-edit-btn { flex: none; align-self: flex-start; }
.info-notes { margin-top: 12px; padding: 9px 12px; border-left: 3px solid var(--border-strong); background: var(--bg-subtle); border-radius: 0 8px 8px 0; font-size: 12.5px; color: var(--text-secondary); line-height: 1.5; }
.info-edit { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--border); }
.info-edit[hidden] { display: none; }
.info-edit-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 12px; }
.info-edit-grid .info-edit-notes { grid-column: 1 / -1; }
.info-edit-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.info-edit textarea { width: 100%; max-width: 100%; background: var(--input-bg); border: 1px solid var(--border); color: var(--text); padding: 6px 9px; border-radius: 7px; font: inherit; font-size: 12.5px; resize: vertical; }
.info-edit textarea:focus { outline: none; border-color: var(--primary); }
@media (max-width: 760px) { .info-edit-grid { grid-template-columns: minmax(0, 1fr); } }

.info-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-bottom: 14px; }
.info-tile { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.info-tile-label { display: flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: var(--muted); }
.info-tile-value { font-size: 22px; font-weight: 600; letter-spacing: -0.02em; line-height: 1.15; font-variant-numeric: tabular-nums; }
.info-tile-value small { font-size: 12px; font-weight: 500; color: var(--muted); letter-spacing: 0; }
.info-tile-value.info-tile-text { font-size: 16px; line-height: 1.35; padding: 2px 0 1px; }
.info-tile-sub { font-size: 11.5px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.info-cards { columns: 2 380px; column-gap: 14px; }
.info-cards .sheet-card { break-inside: avoid; display: inline-block; width: 100%; margin: 0 0 14px; max-width: none; }
.sheet-card h3 { display: flex; align-items: center; gap: 6px; margin-bottom: 12px; }
.sheet-list { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 0; margin: 0; font-size: 12.5px; }
.sheet-list dt, .sheet-list dd { padding: 6px 0; border-bottom: 1px dashed var(--border); }
.sheet-list dt { color: var(--muted); padding-right: 16px; }
.sheet-list dd { margin: 0; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; min-width: 0; }
.sheet-list dt:last-of-type, .sheet-list dd:last-of-type { border-bottom: 0; }
.sheet-list .chip-list { gap: 4px; }
.sheet-list dd > a:not(.chip) { color: var(--primary-text); font-weight: 500; }
.grid-table td > a:not(.grid-name) { color: var(--primary-text); }
.chip.chip-ver { font-variant-numeric: tabular-nums; }
.chip.chip-role { color: var(--primary-text); background: var(--primary-soft); border-color: transparent; font-weight: 500; }
.chip.chip-warn { color: var(--warning); background: var(--warning-soft); border-color: transparent; }
.info-hint { display: flex; align-items: center; gap: 5px; margin-top: 10px; }
.info-cmd { display: flex; align-items: center; gap: 8px; margin-top: 12px; padding: 7px 8px 7px 11px; background: var(--code-bg); border: 1px solid var(--border); border-radius: 8px; }
.info-cmd code { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; background: none; padding: 0; font-size: 12px; }
.info-fs-kind { font-size: 10.5px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); margin: 12px 0 4px; }
.info-fs-kind:first-of-type { margin-top: 0; }
.info-fs { padding: 7px 0 9px; border-bottom: 1px dashed var(--border); }
.info-fs:last-child { border-bottom: 0; padding-bottom: 2px; }
.info-fs:first-of-type { padding-top: 0; }
.info-fs-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 12.5px; margin-bottom: 6px; }
.info-fs-head .chip { font-size: 10.5px; }
.info-fs-size { margin-left: auto; color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.info-fs-size strong { color: var(--text); font-weight: 600; }

/* Servers → Details: spreadsheet-like table. Header (group row, column row, filter row) and totals stay fixed
   while the table scrolls inside its card, the name column too. */
.grid-facets { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-bottom: 14px; }
.grid-facet-group { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; }
.grid-facet-label { font-size: 10.5px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); margin-right: 3px; }
button.chip.grid-facet { cursor: pointer; font: inherit; font-size: 11.5px; padding: 2px 8px; }
.grid-facet b { font-weight: 600; color: var(--muted); font-variant-numeric: tabular-nums; margin-left: 2px; }
.grid-facet em { font-style: normal; color: var(--muted); }
.grid-facet:hover { border-color: var(--border-strong); }
.grid-facet[aria-pressed="true"] { background: var(--primary); border-color: var(--primary); color: #fff; }
.grid-facet[aria-pressed="true"] b, .grid-facet[aria-pressed="true"] em { color: rgba(255, 255, 255, 0.8); }
.grid-toolbar { justify-content: flex-start; }
.grid-toolbar [data-grid-reset] { margin-left: auto; }
.grid-views { display: inline-flex; flex-wrap: wrap; background: var(--search-bg); border-radius: 8px; padding: 3px; gap: 2px; }
.grid-view { all: unset; cursor: pointer; font-size: 12px; padding: 4px 10px; border-radius: 6px; color: var(--text-secondary); white-space: nowrap; }
.grid-view:hover { color: var(--text); }
.grid-view[aria-pressed="true"] { background: var(--card); color: var(--text); font-weight: 500; box-shadow: var(--shadow-sm); }
.grid-view:focus-visible { outline: 2px solid var(--primary); outline-offset: 1px; }

.grid-wrap { overflow: auto; max-height: calc(100vh - 250px); }
.grid-table { width: max-content; min-width: 100%; font-size: 12.5px; }
.grid-table th, .grid-table td { white-space: nowrap; overflow-wrap: normal; padding: 6px 12px; }
.grid-table td { font-variant-numeric: tabular-nums; }
.grid-table td.grid-notes { white-space: normal; max-width: 320px; min-width: 200px; }
.grid-table thead { position: sticky; top: 0; z-index: 3; }
.grid-table thead th { position: static; top: auto; border-radius: 0 !important; }
.grid-table tfoot { position: sticky; bottom: 0; z-index: 3; }
.grid-table tfoot td { background: var(--bg-subtle); border-top: 1px solid var(--border-strong); border-bottom: 0; font-weight: 600; padding-top: 8px; padding-bottom: 8px; }
.grid-table .grid-sticky { position: sticky; left: 0; z-index: 2; background: var(--card); box-shadow: 1px 0 0 var(--border); }
.grid-table thead .grid-sticky, .grid-table tfoot .grid-sticky { z-index: 4; background: var(--bg-subtle); }
.grid-table tbody tr:hover td, .grid-table tbody tr:hover .grid-sticky { background: var(--card-hover); }
.grid-table .g-edge { box-shadow: inset 1px 0 0 var(--border-strong); }
.grid-table[data-view="ess"] [data-g]:not([data-e]),
.grid-table[data-view="prov"] [data-g]:not([data-g="prov"]),
.grid-table[data-view="net"] [data-g]:not([data-g="net"]),
.grid-table[data-view="host"] [data-g]:not([data-g="host"]),
.grid-table[data-view="hw"] [data-g]:not([data-g="hw"]),
.grid-table[data-view="sys"] [data-g]:not([data-g="sys"]) { display: none; }
.grid-table .grid-groups th { padding: 5px 12px 4px; font-size: 10px; letter-spacing: 0.06em; border-bottom: 0; }
.grid-table .grid-group { --gc: #78716c; color: color-mix(in srgb, var(--gc) 80%, var(--text)); background: color-mix(in srgb, var(--gc) 9%, var(--bg-subtle)); box-shadow: inset 0 2px 0 var(--gc); }
.grid-table .grid-group[data-g="prov"] { --gc: #7c3aed; }
.grid-table .grid-group[data-g="net"] { --gc: #0d9488; }
.grid-table .grid-group[data-g="host"] { --gc: #2563eb; }
.grid-table .grid-group[data-g="hw"] { --gc: #d97706; }
.grid-table .grid-group[data-g="sys"] { --gc: #64748b; }
.grid-table .grid-group.g-edge { box-shadow: inset 0 2px 0 var(--gc), inset 1px 0 0 var(--border-strong); }
.grid-sort { all: unset; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
.grid-sort:hover { color: var(--text); }
.grid-sort:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; border-radius: 3px; }
.grid-sort[data-dir="asc"]::after { content: "\25B2"; font-size: 8px; }
.grid-sort[data-dir="desc"]::after { content: "\25BC"; font-size: 8px; }
.grid-table .num .grid-sort { flex-direction: row-reverse; }
.grid-table .grid-filter th { padding: 0 6px 7px; }
.grid-filter input { width: 100%; min-width: 64px; font-size: 11px; padding: 3px 7px; border: 1px solid var(--border); border-radius: 5px; background: var(--card); color: var(--text); text-transform: none; letter-spacing: 0; font-weight: 400; }
.grid-filter input:focus { outline: none; border-color: var(--primary); }
.grid-filter input:not(:placeholder-shown) { border-color: var(--primary); background: var(--primary-soft); }
.grid-name { display: inline-flex; align-items: center; gap: 7px; color: var(--text); font-weight: 600; }
.grid-name svg { color: var(--muted); flex: none; }
.grid-name:hover span { color: var(--primary-text); text-decoration: underline; }
.grid-status { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; text-transform: capitalize; color: var(--text-secondary); }
.grid-status i { width: 7px; height: 7px; border-radius: 50%; background: var(--offline); }
.grid-status-ok i { background: var(--ok); }
.grid-status-warning i { background: var(--warning); }
.grid-status-critical i { background: var(--critical); }
.grid-status-critical { color: var(--critical); font-weight: 500; }
.grid-status-pending i { background: var(--pending); }
.grid-empty { color: var(--border-strong); }
.grid-tag { display: inline-block; font-size: 10px; padding: 0 5px; border-radius: 4px; background: var(--search-bg); color: var(--muted); vertical-align: 1px; }
.grid-meter-cell { display: inline-flex; flex-direction: column; align-items: flex-end; gap: 3px; min-width: 54px; }
.grid-meter-cell .progress-bar { width: 100%; height: 3px; }
.grid-disk { min-width: 110px; }
.grid-disk + .grid-disk { margin-top: 6px; }
.grid-disk-top { display: flex; align-items: baseline; gap: 6px; margin-bottom: 3px; }
.grid-disk-top b { font-weight: 600; }
.grid-disk-mnt { font-family: "JetBrains Mono", "SFMono-Regular", Consolas, Menlo, monospace; font-size: 11.5px; color: var(--text-secondary); }
.grid-disk .progress-bar { height: 3px; }

/* Overview card: every disk of the server in one line */
.disk-strip { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.disk-pill { display: inline-flex; align-items: center; gap: 6px; padding: 3px 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 11px; background: var(--bg-subtle); white-space: nowrap; }
.disk-pill-k { color: var(--muted); font-weight: 500; }
.disk-pill-v { font-weight: 600; font-variant-numeric: tabular-nums; }
.disk-pill-bar { width: 34px; height: 4px; border-radius: 999px; background: var(--search-bg); overflow: hidden; }
.disk-pill-bar i { display: block; height: 100%; background: var(--primary); border-radius: 999px; }
.disk-pill-bar i.fill-warn { background: var(--warning); }
.disk-pill-bar i.fill-crit { background: var(--critical); }
