/* ============================================================
   SYSTEM PAGE
   ============================================================ */

/* ── System page tabs ──────────────────────────────────────────────────── */
.sys-tabs {
    display: flex;
    gap: 0;
    border-bottom: 1px solid var(--border-primary);
    margin-bottom: var(--space-m);
}
.sys-tab {
    display: inline-block;
    padding: var(--space-3xs) var(--space-s);
    font-size: var(--step--1);
    font-weight: 500;
    color: var(--text-secondary);
    text-decoration: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: color .15s, border-color .15s;
}
.sys-tab:hover {
    color: var(--text-primary);
}
.sys-tab.active {
    color: var(--accent-primary);
    border-bottom-color: var(--accent-primary);
}

/* ── Status section (always-visible panel above tabs) ─────────────────── */
.sys-status-section {
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    border-radius: var(--radius);
    padding: var(--space-s) var(--space-m);
    margin-bottom: var(--space-m);
}
.sys-status-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-s);
}
.sys-status-toggle {
    background: none;
    border: 1px solid var(--border-primary);
    color: var(--text-secondary);
    border-radius: var(--radius);
    font-size: var(--step--2);
    font-family: inherit;
    padding: var(--space-3xs) var(--space-2xs);
    cursor: pointer;
    white-space: nowrap;
    transition: color .15s, border-color .15s;
}
.sys-status-toggle:hover {
    color: var(--text-primary);
    border-color: var(--border-secondary);
}
.sys-status-meta {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-m) var(--space-l);
    margin-top: var(--space-m);
    padding-top: var(--space-m);
    border-top: 1px solid var(--border-primary);
}
@media (max-width: 700px) {
    .sys-status-meta { grid-template-columns: 1fr; }
}

/* ── Status cards ──────────────────────────────────────────────────────── */
.srv-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: var(--space-s);
    margin-bottom: var(--space-l);
}
.srv-card {
    background: var(--bg-primary);
    border: 1px solid var(--border-primary);
    border-radius: var(--radius);
    padding: var(--space-s) var(--space-m);
}
.srv-card__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-3xs);
}
.srv-card__name {
    font-size: var(--step--1);
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--text-secondary);
    font-weight: 500;
}
.srv-card__detail {
    font-size: var(--step--2);
    color: var(--text-tertiary);
    margin-top: var(--space-3xs);
    font-family: ui-monospace, "SFMono-Regular", Consolas, monospace;
}
.status-ok      { color: var(--accent-green);  font-weight: 600; font-size: var(--step--1); }
.status-warn    { color: var(--warning);        font-weight: 600; font-size: var(--step--1); }
.status-err     { color: var(--error);          font-weight: 600; font-size: var(--step--1); }
.status-unknown { color: var(--text-tertiary);  font-weight: 600; font-size: var(--step--1); }

.srv-section-title {
    font-size: var(--step--1);
    text-transform: uppercase;
    letter-spacing: .1em;
    color: var(--text-secondary);
    border-bottom: 1px solid var(--border-primary);
    padding-bottom: var(--space-3xs);
    margin: 0 0 var(--space-s);
    font-weight: 500;
}
/* Compact variant: no border, no margin — used inside sys-status-header */
.srv-section-title--compact {
    margin: 0;
    border: none;
    padding: 0;
}
/* Sub-section variant: tighter bottom margin — used for PHP/disk sub-headings */
.srv-section-title--sub { margin-bottom: var(--space-xs); }

/* ── PHP info grid ─────────────────────────────────────────────────────── */
.php-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: var(--space-3xs) var(--space-xs);
    margin-bottom: var(--space-l);
}
/* Flush variant: no bottom margin — used inside sys-status-meta cell */
.php-grid--flush { margin-bottom: 0; }
.php-item {
    background: var(--bg-primary);
    border: 1px solid var(--border-primary);
    border-radius: var(--radius);
    padding: var(--space-3xs) var(--space-xs);
}
.php-item__key {
    font-size: var(--step--2);
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--text-tertiary);
}
.php-item__val {
    font-size: var(--step--1);
    font-family: ui-monospace, "SFMono-Regular", Consolas, monospace;
    color: var(--text-primary);
    margin-top: var(--space-3xs);
}

/* ── Disk bar ──────────────────────────────────────────────────────────── */
.disk-bar-wrap {
    background: var(--border-primary);
    border-radius: var(--radius);
    height: 6px;
    margin-top: var(--space-2xs);
    overflow: hidden;
}
.disk-bar {
    height: 100%;
    border-radius: var(--radius);
    width: var(--disk-pct, 0%);
    background: var(--disk-color, var(--accent-green));
    transition: width .3s;
}
.disk-stats {
    display: flex;
    justify-content: space-between;
    font-size: var(--step--2);
    color: var(--text-secondary);
    margin-top: var(--space-3xs);
}

/* ── Tab panel loading state ───────────────────────────────────────────── */
#sys-tab-panel {
    min-height: 8rem;
    position: relative;
}
#sys-tab-panel.htmx-request {
    opacity: 0.4;
    pointer-events: none;
    transition: opacity 0.1s;
}
#sys-tab-panel.htmx-request::after {
    content: '';
    position: absolute;
    inset: 0;
    background: repeating-linear-gradient(
        -45deg,
        transparent,
        transparent 6px,
        rgba(0,0,0,0.03) 6px,
        rgba(0,0,0,0.03) 12px
    );
    border-radius: var(--radius);
    animation: sys-panel-shimmer 1s linear infinite;
    background-size: 200% 200%;
}
@keyframes sys-panel-shimmer {
    0%   { background-position: 0 0; }
    100% { background-position: 100% 100%; }
}

/* ── Log viewer ────────────────────────────────────────────────────────── */
.log-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2xs);
    margin-bottom: var(--space-m);
}
.log-toolbar label {
    font-size: var(--step--1);
    color: var(--text-secondary);
}
.log-toolbar select {
    padding: var(--space-3xs) var(--space-xs);
}
.log-toolbar select:focus { outline: 2px solid var(--accent-primary); }

.log-meta {
    font-size: var(--step--2);
    color: var(--text-tertiary);
    font-family: ui-monospace, "SFMono-Regular", Consolas, monospace;
    margin-bottom: var(--space-xs);
    display: flex;
    gap: var(--space-m);
    flex-wrap: wrap;
}
.log-meta span::before { content: attr(data-label) ": "; opacity: .6; }

.log-unavailable {
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    border-radius: var(--radius);
    padding: var(--space-m);
    color: var(--text-secondary);
    font-size: var(--step--1);
}
.log-unavail-path {
    font-family: ui-monospace, "SFMono-Regular", Consolas, monospace;
    font-size: var(--step--2);
    margin-top: var(--space-3xs);
    opacity: .7;
}
.log-unavail-dev {
    margin-top: var(--space-2xs);
    font-size: var(--step--2);
    opacity: .7;
}
.log-empty {
    color: var(--text-secondary);
    font-size: var(--step--1);
    padding: var(--space-s) 0;
}
.log-output {
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    border-radius: var(--radius);
    padding: var(--space-s);
    overflow-x: auto;
    font-family: ui-monospace, "SFMono-Regular", Consolas, "Courier New", monospace;
    font-size: var(--step--2);
    line-height: 1.55;
    max-height: 62vh;
    overflow-y: auto;
    position: relative;
}
.log-line {
    display: block;
    white-space: pre;
    padding: var(--space-3xs) var(--space-3xs);
    border-radius: var(--radius);
    color: var(--text-primary);
}
.log-line + .log-line { border-top: 1px solid var(--border-primary); }
.log-crit   { color: var(--sys-syntax-crit);    background: var(--error-muted-bg); }
.log-error  { color: var(--error); }
.log-warn   { color: var(--warning); }
.log-notice { color: var(--sys-syntax-notice); }
.log-line::before {
    content: attr(data-n);
    display: inline-block;
    min-width: 4ch;
    margin-right: var(--space-xs);
    opacity: .3;
    text-align: right;
    user-select: none;
}
.log-count-badge {
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    border-radius: var(--radius);
    font-size: var(--step--2);
    padding: var(--space-3xs) var(--space-2xs);
    color: var(--text-secondary);
    font-family: ui-monospace, monospace;
}
.log-copy-btn {
    /* uses .btn--secondary .btn--sm but with absolute positioning overrides */
    position: absolute;
    top: var(--space-2xs);
    right: var(--space-2xs);
    z-index: 2;
}
.log-copy-btn:hover {
    color: var(--text-primary);
    border-color: var(--accent-primary);
}
.log-copy-btn.copied {
    color: var(--accent-green);
    border-color: var(--accent-green);
}

.sys-refresh-note {
    font-size: var(--step--2);
    color: var(--text-secondary);
    margin-bottom: var(--space-m);
}
.sys-refresh-note a {
    color: var(--accent-primary);
    text-decoration: none;
}
.sys-refresh-note a:hover { text-decoration: underline; }

/* ── Cache freshness badges ────────────────────────────────────────────── */
.sys-cache-badge {
    display: inline-block;
    font-size: var(--step--2);
    font-weight: 400;
    font-family: ui-monospace, monospace;
    padding: var(--space-3xs) var(--space-3xs);
    border-radius: var(--radius);
    margin-left: var(--space-xs);
    vertical-align: middle;
    line-height: 1.6;
}
.sys-cache-badge--hit {
    background: var(--warning-muted-bg);
    color: var(--warning);
    border: 1px solid var(--warning-muted-border);
}
.sys-cache-badge--miss {
    background: var(--success-muted-bg);
    color: var(--success);
    border: 1px solid var(--success-muted-border);
}

/* ── Nginx config viewer ───────────────────────────────────────────────── */
.nginx-source-badge {
    display: inline-block;
    font-size: var(--step--2);
    font-family: ui-monospace, monospace;
    padding: var(--space-3xs) var(--space-2xs);
    border-radius: var(--radius);
    margin-left: var(--space-2xs);
    vertical-align: middle;
}
.nginx-source-badge--live {
    background: var(--success-muted-bg);
    color: var(--success);
    border: 1px solid var(--success-muted-border);
}
.nginx-source-badge--local {
    background: var(--warning-muted-bg);
    color: var(--warning);
    border: 1px solid var(--warning-muted-border);
}
/* Nginx syntax highlight layers inside .log-output */
.nginx-comment   { color: var(--sys-syntax-comment);   font-style: italic; }
.nginx-directive { color: var(--sys-syntax-directive); }
.nginx-block     { color: var(--sys-syntax-block);     font-weight: 600; }
.nginx-value     { color: var(--sys-syntax-value); }
.nginx-location  { color: var(--sys-syntax-location); }
