/* ZordRegistry — style aplikacji (design tokeny + komponenty + layout).
   Fonty ładowane osobno w <head> (Google Fonts). */

:root {
    --bg: #F6F7F9;
    --panel: #FFFFFF;
    --border: #E6E8EB;
    --border-light: #F1F2F5;
    --text: #111723;
    --text-secondary: #5B6472;
    --text-secondary-2: #41506a;
    --text-muted: #8A93A2;
    --text-muted-2: #9aa3b1;
    --accent: #2A6FDB;
    --accent-hover: #205bbd;
    --accent-bg: #EAF1FC;
    --success: #1F8A5B;
    --success-bg: #E8F4EE;
    --danger: #D14343;
    --danger-bg: #FBEBEB;
    --dark: #11161F;
    --dark-text: #dfe6f0;
    --dark-border: #2b3340;
    --row-hover: #F4F8FF;
    --nav-hover: #F2F4F7;
    --docker-color: #2A6FDB;
    --helm-color: #3B82C4;
    --debian-color: #A80030;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body { font-family: 'Manrope', system-ui, sans-serif; -webkit-font-smoothing: antialiased; color: var(--text); background: var(--bg); }
.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
code, .mono { font-family: 'JetBrains Mono', monospace; }
a { color: inherit; text-decoration: none; }

h1 { font-size: 22px; font-weight: 800; letter-spacing: -.4px; }
h2 { font-size: 14.5px; font-weight: 800; }

table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
th { text-align: left; font-size: 11px; font-weight: 700; letter-spacing: .5px; color: var(--text-muted-2); text-transform: uppercase; padding: 11px 16px; background: #FAFBFC; border-bottom: 1px solid #EBEDF0; }
td { padding: 12px 16px; border-bottom: 1px solid var(--border-light); vertical-align: middle; white-space: nowrap; }
tbody tr:hover { background: var(--row-hover); }
tbody tr:last-child td { border-bottom: none; }

.panel { background: var(--panel); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; margin-bottom: 20px; }
.panel-body { padding: 18px; }
.panel-header { padding: 13px 18px; border-bottom: 1px solid var(--border-light); font-size: 13px; font-weight: 800; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px 12px; }

.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; margin-bottom: 20px; }
.stat-tile { background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: 15px 16px; }
.stat-label { font-size: 11px; font-weight: 700; letter-spacing: .4px; color: var(--text-muted-2); text-transform: uppercase; }
.stat-value { font-size: 27px; font-weight: 800; letter-spacing: -.5px; margin-top: 6px; }
.stat-sub { font-size: 12px; color: var(--text-muted); font-weight: 600; margin-top: 2px; }

.pill { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 700; padding: 3px 10px; border-radius: 999px; white-space: nowrap; }
.pill-dot { width: 6px; height: 6px; border-radius: 999px; background: currentColor; }
.pill-success { color: var(--success); background: var(--success-bg); }
.pill-neutral { color: var(--text-secondary); background: #F0F2F5; }
.pill-danger { color: var(--danger); background: var(--danger-bg); }
.pill-warning { color: #9A6700; background: #FFF6E5; }

.quota-bar { height: 6px; border-radius: 999px; background: var(--border-light); margin-top: 8px; overflow: hidden; }
.quota-bar-fill { height: 100%; border-radius: 999px; background: var(--accent); }

/* Jednolity rozmiar wszystkich przycisków — niezależnie od tagu (<button>/<label>/<a>)
   i wariantu. Warianty zmieniają WYŁĄCZNIE kolory/obramowanie, nigdy padding/font/border-width
   (spójna wysokość dzięki border-box + ramce 1px transparent także w .btn). */
.btn, .btn-danger, .btn-ghost, .btn-neutral {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px; margin: 0;
    font-family: inherit; font-weight: 700; font-size: 13px; line-height: 1.2; white-space: nowrap;
    padding: 8px 14px; border: 1px solid transparent; border-radius: 8px;
    cursor: pointer; text-decoration: none;
}
.btn { background: var(--accent); color: #fff; }
.btn:hover { background: var(--accent-hover); }
.btn-danger { background: transparent; color: var(--danger); border-color: #F1D4D4; }
.btn-danger:hover { background: var(--danger-bg); }
.btn-ghost { background: #fff; border-color: var(--border); color: var(--text-secondary); }
.btn-ghost:hover { background: var(--nav-hover); color: var(--text); }
.btn-neutral { background: transparent; color: var(--text-secondary); border-color: var(--border); }
.btn-neutral:hover { background: var(--nav-hover); color: var(--text); }
/* Modyfikator dla akcji w kolumnach tabel — pełny .btn ma padding 8px/line-height
   1.2 (~34px), co przy stałym padding:12px komórki (td) rozciągało wiersz do ~58px
   względem ~40px dla zwykłego tekstu. */
.btn-sm { padding: 4px 10px; font-size: 12px; }
.select-sm { width: auto; padding: 5px 11px; font-size: 12px; }

.field { margin-bottom: 14px; }
label { display: block; font-size: 12.5px; font-weight: 700; color: var(--text-secondary); margin-bottom: 5px; }
input[type=text], input[type=url], input[type=email], input[type=number], input[type=password], select, textarea {
    width: 100%; font-family: inherit; font-size: 13.5px; padding: 8px 11px;
    border: 1px solid #D9DCE2; border-radius: 8px; background: #fff; color: var(--text);
}
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--accent); }
.checkbox-row { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 500; color: var(--text-secondary-2); margin-right: 14px; }
.checkbox-row label { margin: 0; font-size: inherit; font-weight: inherit; color: inherit; }

.field-error { color: var(--danger); font-size: 12px; font-weight: 600; margin-top: 5px; display: none; }
.field-error:not(:empty) { display: block; }
.field.has-error input, .field.has-error select, .field.has-error textarea { border-color: var(--danger); }
.field.has-error > label { color: var(--danger); }
.is-validating { opacity: .7; cursor: progress; pointer-events: none; }

.error-banner { background: var(--danger-bg); color: var(--danger); padding: 10px 14px; border-radius: 8px; font-size: 13.5px; font-weight: 600; margin-bottom: 16px; }
.success-banner { background: var(--success-bg); color: var(--success); border: 1px solid #bfe4d1; padding: 12px 14px; border-radius: 8px; font-size: 13.5px; margin-bottom: 16px; word-break: break-all; }
.success-banner code { display: block; margin-top: 6px; font-size: 12.5px; }

.muted { color: var(--text-muted); font-size: 13px; }
.breadcrumb-sep { color: #cdd2da; }

.dark-box { background: var(--dark); color: var(--dark-text); border-radius: 12px; padding: 13px 14px; display: flex; align-items: center; gap: 14px; margin-bottom: 20px; }
.dark-box code { color: var(--dark-text); font-size: 13px; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.oauth-consent-details { margin-bottom: 18px; align-items: stretch; flex-direction: column; gap: 10px; }
.oauth-consent-detail { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.oauth-consent-detail code {
    display: block;
    width: 100%;
    line-height: 1.45;
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.brand-mark { width: 30px; height: 30px; border-radius: 8px; background: var(--text); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 16px; flex-shrink: 0; }
.brand-name { font-weight: 800; font-size: 15.5px; }

/* nimblephp/table — layout "zordregistry" (chrom w stylu design-tokens) */
.table-module { width: 100%; }
.tm-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 16px; border-bottom: 1px solid var(--border-light); }
.tm-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.tm-search { position: relative; display: flex; align-items: center; min-width: 220px; }
.tm-search i.bi { position: absolute; left: 10px; color: var(--text-muted-2); font-size: 13px; }
.tm-search input[type=search] { width: 100%; font-family: inherit; font-size: 13px; padding: 7px 11px 7px 30px; border: 1px solid #D9DCE2; border-radius: 8px; background: #fff; color: var(--text); }
.tm-search input[type=search]:focus { outline: none; border-color: var(--accent); }
.tm-filters { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; padding: 10px 16px; border-bottom: 1px solid var(--border-light); font-size: 13px; }
.tm-filters > div { float: none !important; }
.tm-filters .me-2 { margin-right: 0 !important; }
.tm-filters label[for="floatingSelect"] { position: static !important; font-size: 11.5px; color: var(--text-muted-2); margin-right: 6px; }
.tm-filters .form-check { display: flex !important; align-items: center; gap: 8px; margin: 0 !important; padding: 7px 12px !important; border: 1px solid #D9DCE2 !important; border-radius: 8px !important; background: #fff; }
.tm-filters .form-check-input { width: 15px; height: 15px; margin: 0 !important; accent-color: var(--accent); cursor: pointer; flex-shrink: 0; }
.tm-filters .form-check-label { font-size: 13px; color: var(--text); cursor: pointer; user-select: none; white-space: nowrap; margin: 0; }
.tm-filters select.ajax-form, .tm-filters input.ajax-form { font-family: inherit; font-size: 13px; padding: 7px 11px; border: 1px solid #D9DCE2; border-radius: 8px; background: #fff; color: var(--text); margin: 0 !important; }
.tm-filters select.ajax-form:focus, .tm-filters input.ajax-form:focus { outline: none; border-color: var(--accent); }
.tm-table-wrap { overflow-x: auto; }
.tm-th { display: inline-flex; align-items: center; gap: 6px; }
.sort-icon { color: var(--text-muted-2); font-size: 11px; }
.tm-footer { display: flex; justify-content: flex-end; padding: 12px 16px; border-top: 1px solid var(--border-light); }
.tm-pagination { display: inline-flex; gap: 4px; }
.tm-pagination .page-link { display: inline-flex; align-items: center; justify-content: center; min-width: 30px; height: 30px; padding: 0 8px; border: 1px solid var(--border); border-radius: 8px; font-size: 13px; font-weight: 700; color: var(--text-secondary); background: #fff; cursor: pointer; }
.tm-pagination .page-link:hover { background: var(--nav-hover); }
.tm-pagination .page-link.active { background: var(--accent); border-color: var(--accent); color: #fff; }

/* Jeden globalny kontener, którego treść doładowuje drawer.js. */
.drawer-overlay { position: fixed; inset: 0; background: rgba(17,22,31,.35); opacity: 0; visibility: hidden; transition: opacity .2s ease; z-index: 40; }
.drawer { position: fixed; top: 0; right: 0; height: 100vh; width: 420px; max-width: 92vw; background: var(--panel); border-left: 1px solid var(--border); box-shadow: -8px 0 30px rgba(17,22,31,.12); transform: translateX(100%); transition: transform .22s ease; z-index: 41; display: flex; flex-direction: column; }
.drawer-header { padding: 15px 20px; border-bottom: 1px solid var(--border-light); display: flex; align-items: center; justify-content: space-between; flex-shrink: 0; }
.drawer-header h2 { font-size: 15px; }
.drawer-body { padding: 20px; overflow-y: auto; flex: 1; }
.drawer-close { background: none; border: none; font-size: 22px; line-height: 1; color: var(--text-muted); cursor: pointer; padding: 0 2px; }
.drawer-close:hover { color: var(--text); }
.dynamic-drawer-root { display: contents; }
.dynamic-drawer-root > .drawer-overlay { border: 0; padding: 0; cursor: pointer; }
.dynamic-drawer-root.is-open > .drawer-overlay { opacity: 1; visibility: visible; }
.dynamic-drawer-root.is-open > .drawer { transform: translateX(0); }
.dynamic-drawer-root .drawer--wide { width: 640px; }
.dynamic-drawer-root .drawer--xwide { width: 760px; }
.drawer-loading { color: var(--text-muted); font-size: 13px; padding: 8px 0; }
body.drawer-open { overflow: hidden; }

/* Globalne zakładki — jeden kontrakt `[data-tabs]`, bez selektorów per widok/ID.
   Stan, ARIA, klawiaturę i opcjonalny query string obsługuje `assets/tabs.js`. */
.tabs { min-width: 0; }
.tabs-nav { display: flex; flex-wrap: wrap; gap: 4px; border-bottom: 1px solid var(--border); margin-bottom: 20px; }
.tab-button { appearance: none; display: inline-flex; align-items: center; gap: 7px; padding: 10px 16px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; margin: 0 0 -1px; background: transparent; font: inherit; font-size: 13px; font-weight: 700; line-height: 1.4; color: var(--text-muted); cursor: pointer; user-select: none; }
.tab-button:hover { color: var(--text); background: var(--nav-hover); }
.tab-button:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; border-radius: 5px 5px 0 0; }
.tab-button.is-active, .tab-button[aria-selected="true"] { color: var(--accent); border-bottom-color: var(--accent); background: transparent; }
.tab-button:disabled { opacity: .5; cursor: not-allowed; }
.tab-label { white-space: nowrap; }
.tab-count { font-size: 11px; font-weight: 700; color: var(--text-secondary); background: #F0F2F5; border-radius: 999px; padding: 1px 7px; }
.tab-count-danger { color: var(--danger); background: var(--danger-bg); }
.tab-count-warning { color: #8A6100; background: #FFF4CC; }
.tab-count-success { color: var(--success); background: var(--success-bg); }
.tab-panels { min-width: 0; }
.tab-panel { display: none; }
.tab-panel.is-active { display: block; }
.tab-panel[hidden] { display: none !important; }
.tabs:not(.tabs-initialized) .tab-panel:first-child { display: block; }
.settings-tabs .tabs-nav { position:sticky; z-index:4; top:0; padding-top:4px; background:var(--bg); }
.settings-section-panel { margin-bottom:16px; }
.settings-section-panel .panel-body { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 20px; }
.settings-actions { display:flex; justify-content:flex-end; padding:14px 16px; border:1px solid var(--border); border-radius:12px; background:var(--panel); box-shadow:0 1px 2px rgba(15,23,42,.04); }
.settings-actions .btn { min-width:178px; }
@media (max-width:800px) {
    .settings-section-panel .panel-body { grid-template-columns:1fr; }
}
.image-layer-history { padding:8px 18px 14px; }
.image-layer-platform { display:flex; align-items:center; gap:7px; padding:12px 0 8px; color:var(--text-secondary); font-size:12px; font-weight:800; }
.image-layer-entry { display:grid; grid-template-columns:34px minmax(0,1fr); gap:10px; padding:12px 0; border-top:1px solid var(--border-light); }
.image-layer-entry:first-child { border-top:0; }
.image-layer-number { display:grid; place-items:center; align-self:start; width:28px; height:28px; border-radius:8px; background:var(--accent-bg); color:var(--accent); font-size:11px; font-weight:800; }
.image-layer-entry--metadata .image-layer-number { background:var(--nav-hover); color:var(--text-muted); }
.image-layer-main { min-width:0; }
.image-layer-meta { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-bottom:7px; }
.image-layer-meta code { max-width:280px; overflow:hidden; color:var(--text-muted); font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.image-layer-meta strong { margin-left:auto; color:var(--text-secondary); font-size:12px; }
.image-layer-command { max-height:220px; padding:10px 12px; overflow:auto; border:1px solid var(--border-light); border-radius:8px; margin:0; background:#FAFBFC; color:var(--text); font-size:11.5px; line-height:1.55; white-space:pre-wrap; overflow-wrap:anywhere; word-break:break-word; }
.tag-overview-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.tag-overview-grid > .panel { min-width:0; }
.tag-security-summary { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:10px; }
.tag-security-summary > span { padding:7px 9px; border-radius:8px; background:var(--nav-hover); color:var(--text-muted); font-size:11px; }
.tag-security-summary b { display:block; margin-bottom:2px; color:var(--text); font-size:13px; }
.tag-warning,.tag-ok { display:flex; align-items:flex-start; gap:8px; padding:8px 10px; border-radius:8px; margin-top:6px; font-size:12px; line-height:1.45; }
.tag-warning { color:#8A6100; background:#FFF8E6; }
.tag-ok { color:var(--success); background:var(--success-bg); }
.tag-usage { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.tag-usage > div:not(.tag-related-tags) { min-width:0; padding:9px; border-radius:8px; background:var(--nav-hover); }
.tag-usage span,.image-config-grid span { display:block; margin-bottom:4px; color:var(--text-muted); font-size:11px; }
.tag-usage strong { display:block; overflow:hidden; font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
.tag-related-tags { grid-column:1/-1; display:flex; flex-wrap:wrap; gap:6px; }
.tag-related-tags a { padding:4px 8px; border-radius:99px; background:var(--accent-bg); color:var(--accent); font-size:11px; font-weight:700; }
.image-config-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 20px; }
.image-config-grid > div { min-width:0; }
.image-config-grid code { display:block; overflow-wrap:anywhere; font-size:11.5px; }
.image-base-info { display:flex; align-items:center; flex-wrap:wrap; gap:8px; padding:10px; margin-top:14px; border-radius:8px; background:var(--accent-bg); font-size:12px; }
.image-config-details { margin-top:12px; border:1px solid var(--border-light); border-radius:8px; }
.image-config-details > summary { padding:10px 12px; cursor:pointer; color:var(--text-secondary); font-size:12px; font-weight:700; }
.image-config-details .code-block { max-height:280px; margin:0; border-radius:0 0 8px 8px; }
.image-label-list { max-height:320px; overflow:auto; }
.image-label-list > div { display:grid; grid-template-columns:minmax(180px,.8fr) minmax(0,1.2fr); gap:12px; padding:8px 12px; border-top:1px solid var(--border-light); font-size:11.5px; }
.image-label-list span { overflow-wrap:anywhere; }
@media (max-width:800px) {
    .tag-overview-grid,.image-config-grid { grid-template-columns:1fr; }
}

/* Historia synchronizacji — oś czasu kart zamiast tabeli */
.sync-history { display: flex; flex-direction: column; gap: 10px; }
.sync-item { display: flex; gap: 12px; padding: 12px 14px; border: 1px solid var(--border-light); border-left: 3px solid var(--border); border-radius: 10px; background: var(--panel); }
.sync-item--completed { border-left-color: var(--success); }
.sync-item--failed { border-left-color: var(--danger); }
.sync-item--pending, .sync-item--running { border-left-color: var(--accent); }
.sync-item-icon { font-size: 17px; line-height: 1.3; width: 20px; text-align: center; flex-shrink: 0; color: var(--text-muted); }
.sync-item--completed .sync-item-icon { color: var(--success); }
.sync-item--failed .sync-item-icon { color: var(--danger); }
.sync-item--pending .sync-item-icon, .sync-item--running .sync-item-icon { color: var(--accent); }
.sync-item-main { flex: 1; min-width: 0; }
.sync-item-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.sync-item-ref { font-weight: 700; font-size: 13px; }
.sync-item-meta { font-size: 12px; color: var(--text-muted); margin-top: 4px; display: flex; flex-wrap: wrap; gap: 4px 10px; }
.sync-item-meta b { color: var(--text); font-weight: 700; }
.sync-item-error { margin-top: 8px; font-size: 11.5px; line-height: 1.5; color: var(--danger); background: var(--danger-bg); padding: 6px 9px; border-radius: 7px; word-break: break-word; }
/* Wariant „note" — completed z pominiętymi tagami (nie prawdziwy błąd) */
.sync-item-note { color: var(--text-secondary); background: var(--nav-hover); }
.sync-item-note b { color: var(--text); }

/* Zwijane powody (details) — domyślnie zamknięte, rozwijane kliknięciem; używane
   w karcie historii i w pasku podsumowania, by długa lista tagów nie zaśmiecała widoku. */
.sync-collapse > summary { cursor: pointer; font-weight: 600; list-style: none; outline: none; }
.sync-collapse > summary::-webkit-details-marker { display: none; }
.sync-collapse > summary::before { content: "\25B8"; display: inline-block; margin-right: 6px; transition: transform .15s ease; }
.sync-collapse[open] > summary::before { transform: rotate(90deg); }
.sync-collapse-body { margin-top: 8px; max-height: 220px; overflow-y: auto; line-height: 1.7; word-break: break-word; }

/* Monitoring crona */
.cron-status { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 18px; margin-bottom:14px; border:1px solid var(--border); border-left:4px solid var(--success); border-radius:12px; background:var(--panel); }
.cron-status--warning { border-left-color:#d9a400; }
.cron-status--error { border-left-color:var(--danger); }
.cron-alert-list { display:grid; gap:6px; margin-bottom:14px; color:var(--danger); }
.cron-alert-list > div { padding:9px 12px; border-radius:8px; background:var(--danger-bg); }
.cron-metrics { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; margin-bottom:16px; }
.cron-metric { padding:14px; border:1px solid var(--border-light); border-radius:10px; background:var(--panel); }
.cron-metric span { display:block; color:var(--text-muted); font-size:12px; margin-bottom:5px; }
.cron-metric strong { font-size:22px; }
.cron-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px; }
.cron-grid > .panel { min-width:0; }
.cron-chart-panel { position:relative; z-index:2; overflow:visible; }
.cron-chart-panel .panel-header { border-radius:12px 12px 0 0; background:var(--panel); }
.cron-chart-scroll { overflow:hidden; border-radius:0 0 12px 12px; }
.chartjs-chart { position:relative; width:100%; height:230px; padding:10px 14px 4px; background:var(--panel); }
.chartjs-chart--mcp { height:292px; }
.chartjs-chart--tall { height:340px; }
.chartjs-chart canvas { display:block; }
.monitoring-chart-grid { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:16px; margin:16px 0; }
.monitoring-chart-panel { grid-column:span 6; min-width:0; margin:0; }
.monitoring-chart-panel--wide { grid-column:span 12; }
.cron-chart { position:relative; z-index:3; width:max-content; min-width:100%; height:230px; display:flex; align-items:flex-end; gap:3px; padding:16px 20px 0; border-radius:0 0 12px 12px; border-bottom:1px solid var(--border); background:var(--panel); }
.cron-chart-column { position:relative; height:100%; flex:0 0 8px; min-width:0; display:flex; flex-direction:column; justify-content:flex-end; align-items:stretch; outline:none; }
.cron-chart-column::before { content:""; position:absolute; inset:0 -2px 24px; border-radius:5px 5px 0 0; background:var(--row-hover); opacity:0; pointer-events:none; transition:opacity .12s ease; }
.cron-chart-column:hover::before, .cron-chart-column:focus-visible::before { opacity:1; }
.cron-chart-bars { min-height:2px; display:flex; flex-direction:column; justify-content:flex-end; border-radius:4px 4px 0 0; overflow:hidden; background:var(--nav-hover); }
.cron-chart-success { min-height:2px; background:var(--success); }
.cron-chart-failed { min-height:2px; background:var(--danger); }
.cron-chart-column > span { height:24px; padding-top:5px; text-align:center; color:var(--text-muted); font-size:10px; }
.cron-chart-column > .cron-chart-day { color:var(--text-secondary); font-weight:700; white-space:nowrap; }
.cron-chart-bars, .cron-chart-column > span { position:relative; z-index:1; }
.cron-chart-tooltip { position:absolute; z-index:1000; top:8px; left:50%; width:154px; padding:10px 11px; border:1px solid var(--dark-border); border-radius:9px; background:var(--dark); color:var(--dark-text); box-shadow:0 8px 24px rgba(17,22,31,.22); opacity:0; visibility:hidden; transform:translate(-50%,6px); transition:opacity .12s ease,transform .12s ease,visibility .12s; pointer-events:none; font-size:11.5px; }
.cron-chart-tooltip::after { content:""; position:absolute; top:100%; left:50%; width:8px; height:8px; background:var(--dark); border-right:1px solid var(--dark-border); border-bottom:1px solid var(--dark-border); transform:translate(-50%,-4px) rotate(45deg); }
.cron-chart-column:hover .cron-chart-tooltip, .cron-chart-column:focus-visible .cron-chart-tooltip { opacity:1; visibility:visible; transform:translate(-50%,0); }
.cron-chart-tooltip > strong { display:block; padding-bottom:7px; margin-bottom:5px; border-bottom:1px solid var(--dark-border); font-size:12px; }
.cron-chart-tooltip-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding-top:4px; }
.cron-chart-tooltip-row > span { display:flex; align-items:center; gap:6px; color:#b8c1ce; }
.cron-chart-dot { display:inline-block; width:7px; height:7px; border-radius:50%; background:#8A93A2; }
.cron-chart-dot--success { background:var(--success); }
.cron-chart-dot--failed { background:var(--danger); }
.cron-chart-dot--total { background:var(--accent); }
.cron-chart-column:nth-child(-n+2) .cron-chart-tooltip { left:0; transform:translate(0,6px); }
.cron-chart-column:nth-child(-n+2):hover .cron-chart-tooltip, .cron-chart-column:nth-child(-n+2):focus-visible .cron-chart-tooltip { transform:translate(0,0); }
.cron-chart-column:nth-child(-n+2) .cron-chart-tooltip::after { left:12px; }
.cron-chart-column:nth-last-child(-n+2) .cron-chart-tooltip { right:0; left:auto; transform:translate(0,6px); }
.cron-chart-column:nth-last-child(-n+2):hover .cron-chart-tooltip, .cron-chart-column:nth-last-child(-n+2):focus-visible .cron-chart-tooltip { transform:translate(0,0); }
.cron-chart-column:nth-last-child(-n+2) .cron-chart-tooltip::after { right:8px; left:auto; }
.cron-process-list { display:grid; gap:0; }
.cron-process { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:12px 0; border-bottom:1px solid var(--border-light); font-size:12px; }
.cron-process:last-child { border-bottom:0; }
.cron-process--offline { opacity:.72; }
.cron-process-identity { display:flex; align-items:center; gap:10px; min-width:0; }
.cron-process-identity > div { min-width:0; }
.cron-process-identity .mono { margin-top:2px; overflow:hidden; text-overflow:ellipsis; }
.cron-process-name { display:flex; align-items:center; flex-wrap:wrap; gap:7px; }
.cron-process-name .pill { padding:2px 7px; font-size:10px; }
.cron-process-icon { display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; flex:0 0 32px; border-radius:9px; color:var(--success); background:var(--success-bg); font-size:15px; }
.cron-process--offline .cron-process-icon { color:var(--text-muted); background:var(--nav-hover); }
.cron-process-stats { flex-shrink:0; text-align:right; line-height:1.55; color:var(--text-secondary); }
.cron-empty-state { min-height:56px; display:flex; align-items:center; justify-content:center; gap:9px; padding:12px; border:1px dashed var(--border); border-radius:9px; background:#FAFBFC; color:var(--text-muted); font-size:13px; text-align:center; }
.cron-empty-state i { font-size:17px; }
.cron-empty-state--success i { color:var(--success); }
.cron-queue-description { padding:12px 18px; border-bottom:1px solid var(--border-light); color:var(--text-muted); font-size:12.5px; line-height:1.5; }
.cron-simple-table { display:grid; }
.cron-simple-table > div { display:grid; grid-template-columns:70px 1fr 180px; gap:12px; padding:10px 0; border-bottom:1px solid var(--border-light); }
.cron-simple-table > div:last-child { border-bottom:0; }

/* Diagnostyka połączeń storage */
.storage-connections-header { margin-bottom:16px; }
.storage-connections-header .panel-header { padding:16px 18px; border-bottom:0; }
.storage-connections-header h2 { display:flex; align-items:center; gap:8px; }
.storage-connections-header h2 i { color:var(--accent); }
.storage-connections-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.storage-connection { margin:0; border-left:4px solid var(--border); }
.storage-connection--ok { border-left-color:var(--success); }
.storage-connection--failed { border-left-color:var(--danger); }
.storage-connection-details dl { display:grid; gap:0; margin:0; }
.storage-connection-details dl > div { display:grid; grid-template-columns:130px minmax(0,1fr); gap:12px; padding:9px 0; border-bottom:1px solid var(--border-light); }
.storage-connection-details dt { color:var(--text-muted); font-size:12px; font-weight:700; }
.storage-connection-details dd { min-width:0; margin:0; overflow-wrap:anywhere; font-size:13px; }
.storage-connection-note { margin:14px 0 0; line-height:1.5; }
.storage-connection-transfer { border-top:1px solid var(--border-light); }
.storage-connection-transfer-header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:13px 16px 4px; }
.storage-connection-transfer-header > div:first-child strong,.storage-connection-transfer-header > div:first-child span { display:block; }
.storage-connection-transfer-header > div:first-child span { margin-top:2px; color:var(--text-muted); font-size:11px; }
.storage-transfer-summary { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:5px 12px; color:var(--text-muted); font-size:11px; }
.storage-transfer-summary b { color:var(--text); }
.storage-connection-chart { height:220px; padding-top:4px; border-radius:0 0 12px 12px; }
.storage-operation-table { padding:0 16px 16px; overflow-x:auto; }
.storage-operation-table table { font-size:11.5px; }
.storage-operation-table th,.storage-operation-table td { padding:7px 8px; }
.storage-operation-table th:first-child,.storage-operation-table td:first-child { padding-left:0; }
.storage-connections-checked { margin:12px 2px 0; font-size:12px; }
@media (max-width:800px) {
    .storage-connections-grid { grid-template-columns:1fr; }
    .storage-connections-header .panel-header { align-items:flex-start; }
    .storage-connection-details dl > div { grid-template-columns:1fr; gap:3px; }
    .storage-connection-transfer-header { display:block; }
    .storage-transfer-summary { justify-content:flex-start; margin-top:8px; }
}

/* Zwijane komunikaty w tabeli logów systemowych */
.system-log-message-text { display:block; white-space:normal; overflow-wrap:anywhere; line-height:1.5; }
.system-log-message-collapse { min-width:0; }
.system-log-message-collapse > summary { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; cursor:pointer; list-style:none; outline:none; }
.system-log-message-collapse > summary::-webkit-details-marker { display:none; }
.system-log-message-collapse > summary > span { min-width:0; overflow-wrap:anywhere; line-height:1.45; }
.system-log-message-collapse > summary::after { content:"Rozwiń"; flex:0 0 auto; padding:2px 7px; border-radius:999px; color:var(--text-muted); background:var(--nav-hover); font-size:10px; font-weight:700; }
.system-log-message-collapse[open] > summary::after { content:"Zwiń"; }
.system-log-message-collapse[open] > summary { padding-bottom:9px; border-bottom:1px solid var(--border-light); }
.system-log-message-body { padding-top:9px; }
.system-log-message-context { max-height:320px; margin:10px 0 0; padding:10px 12px; overflow:auto; border-radius:8px; color:var(--dark-text); background:var(--dark); white-space:pre-wrap; overflow-wrap:anywhere; font-size:11px; line-height:1.5; }

/* MCP monitoring */
.mcp-dashboard-header { margin-bottom:16px; }
.mcp-dashboard-header .panel-header { padding:16px 18px; border-bottom:0; }
.mcp-dashboard-header h2 { display:flex; align-items:center; gap:8px; }
.mcp-dashboard-header h2 i { color:var(--accent); }
.mcp-range-form { display:flex; align-items:center; gap:9px; color:var(--text-muted); font-size:12px; font-weight:700; }
.mcp-range-select { position:relative; display:flex; align-items:center; }
.mcp-range-select i { position:absolute; left:11px; color:var(--text-muted); pointer-events:none; }
.mcp-range-select select { min-width:145px; padding-left:32px; }
.mcp-metrics { display:grid; grid-template-columns:repeat(5,minmax(140px,1fr)); gap:12px; margin-bottom:16px; }
.mcp-metric { min-width:0; min-height:82px; padding:14px 15px; display:flex; align-items:center; gap:12px; border:1px solid var(--border-light); border-radius:12px; background:var(--panel); box-shadow:0 1px 2px rgba(15,23,42,.025); }
.mcp-metric > i { width:34px; height:34px; flex:0 0 34px; display:grid; place-items:center; border-radius:9px; background:var(--accent-bg); color:var(--accent); font-size:16px; }
.mcp-metric > div { min-width:0; }
.mcp-metric span { display:block; margin-bottom:3px; color:var(--text-muted); font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mcp-metric strong { font-size:21px; line-height:1.1; white-space:nowrap; }
.mcp-metric small { margin-left:6px; color:var(--text-muted); font-size:11px; font-weight:700; }
.mcp-metric--danger { border-color:color-mix(in srgb,var(--danger) 28%,var(--border-light)); }
.mcp-metric--danger > i { color:var(--danger); background:var(--danger-bg); }
.mcp-metric--warning > i { color:#b7791f; background:#fff8e6; }
.mcp-dashboard-grid { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:16px; margin-bottom:16px; }
.mcp-dashboard-grid > .panel { min-width:0; margin:0; }
.mcp-dashboard-grid > .mcp-chart-panel { grid-column:span 12; }
.mcp-dashboard-grid > .mcp-methods-panel,.mcp-dashboard-grid > .mcp-methods-chart-panel { grid-column:span 6; }
.mcp-dashboard-grid .panel-body { padding:10px 18px 14px; max-height:360px; overflow:auto; }
.mcp-legend { display:flex; align-items:center; gap:6px; color:var(--text-muted); font-size:11px; font-weight:600; }
.mcp-legend i { width:8px; height:8px; border-radius:50%; background:var(--success); }
.mcp-legend i:nth-child(2) { margin-left:5px; background:var(--danger); }
.mcp-chart-panel .cron-chart { height:292px; padding-bottom:0; }
.mcp-chart-panel .cron-chart-column { flex-basis:14px; }
.mcp-chart-range-6 .cron-chart-column { flex-basis:56px; }
.mcp-chart-panel .cron-chart-column > .mcp-chart-axis-label { height:42px; overflow:visible; color:var(--text-muted); line-height:1.15; white-space:nowrap; }
.mcp-chart-axis-label b,.mcp-chart-axis-label small { display:block; position:relative; left:50%; width:48px; transform:translateX(-50%); text-align:center; font-weight:600; }
.mcp-chart-axis-label b { color:var(--text-secondary); font-size:9.5px; }
.mcp-chart-axis-label small { margin-top:2px; font-size:9px; }
.mcp-chart-tooltip { position:absolute; z-index:1000; top:5px; left:0; width:190px; padding:12px; border:1px solid var(--border); border-radius:12px; background:#fff; color:var(--text); box-shadow:0 12px 34px rgba(15,23,42,.18); opacity:0; visibility:hidden; transform:translate(0,7px); transition:opacity .14s ease,transform .14s ease,visibility .14s; pointer-events:none; }
.mcp-chart-tooltip::after { content:""; position:absolute; top:100%; left:8px; width:9px; height:9px; border-right:1px solid var(--border); border-bottom:1px solid var(--border); background:#fff; transform:translate(0,-5px) rotate(45deg); }
.cron-chart-column:hover .mcp-chart-tooltip,.cron-chart-column:focus-visible .mcp-chart-tooltip { opacity:1; visibility:visible; transform:translate(0,0); }
.mcp-chart-tooltip-time { display:flex; align-items:center; gap:8px; padding-bottom:9px; border-bottom:1px solid var(--border-light); color:var(--text-muted); font-size:11px; }
.mcp-chart-tooltip-time > i { display:grid; place-items:center; width:28px; height:28px; border-radius:8px; background:var(--accent-bg); color:var(--accent); font-size:13px; }
.mcp-chart-tooltip-time span,.mcp-chart-tooltip-time strong { display:block; }
.mcp-chart-tooltip-time strong { margin-bottom:1px; color:var(--text); font-size:12px; }
.mcp-chart-tooltip-total { display:flex; align-items:baseline; gap:5px; padding:10px 0 8px; }
.mcp-chart-tooltip-total strong { font-size:24px; line-height:1; }
.mcp-chart-tooltip-total span { color:var(--text-muted); font-size:11px; }
.mcp-chart-tooltip-stats { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.mcp-chart-tooltip-stats > span { padding:7px 6px; border-radius:8px; background:var(--nav-hover); color:var(--text-muted); font-size:10px; white-space:nowrap; }
.mcp-chart-tooltip-stats i { display:inline-block; width:7px; height:7px; margin-right:4px; border-radius:50%; background:var(--success); }
.mcp-chart-tooltip-stats .is-error i { background:var(--danger); }
.mcp-chart-tooltip-stats b { color:var(--text); font-size:11px; }
.mcp-method-row { min-height:52px; display:grid; grid-template-columns:minmax(0,1fr) 38px 105px; align-items:center; gap:10px; border-bottom:1px solid var(--border-light); }
.mcp-method-row:last-child { border-bottom:0; }
.mcp-method-row > div { min-width:0; }
.mcp-method-row strong,.mcp-method-row small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mcp-method-row strong { font-size:12px; }
.mcp-method-row small { margin-top:3px; color:var(--text-muted); font-size:10px; }
.mcp-method-count { justify-self:center; min-width:28px; padding:3px 7px; border-radius:99px; background:var(--border-light); text-align:center; font-size:11px; font-weight:800; }
.mcp-method-meta { color:var(--text-muted); font-size:11px; text-align:right; white-space:nowrap; }
.mcp-method-meta.is-error { color:var(--danger); }
.mcp-empty { padding:36px 12px; color:var(--text-muted); text-align:center; }
.mcp-empty i { margin-right:5px; }
.mcp-calls-panel { margin-bottom:0; }
.mcp-calls-panel .panel-header p { margin:3px 0 0; font-size:11px; font-weight:500; }

@media (max-width:1200px) {
    .mcp-metrics { grid-template-columns:repeat(3,minmax(150px,1fr)); }
}

@media (max-width:650px) {
    .mcp-dashboard-header .panel-header { align-items:stretch; }
    .mcp-range-form { justify-content:space-between; width:100%; }
    .mcp-range-select select { min-width:160px; }
    .mcp-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
    .mcp-metric { min-height:72px; padding:11px; gap:9px; }
    .mcp-metric > i { width:30px; height:30px; flex-basis:30px; }
    .mcp-metric strong { font-size:18px; }
    .mcp-method-row { grid-template-columns:minmax(0,1fr) 34px; }
    .mcp-method-meta { grid-column:1 / -1; padding-bottom:8px; text-align:left; }
}
@media (max-width:900px) {
    .cron-grid { grid-template-columns:1fr; }
    .monitoring-chart-panel { grid-column:span 12; }
    .mcp-dashboard-grid > .mcp-methods-panel,.mcp-dashboard-grid > .mcp-methods-chart-panel { grid-column:span 12; }
    .cron-chart { gap:2px; }
    .cron-simple-table > div { grid-template-columns:55px 1fr; }
    .cron-simple-table > div span:last-child { grid-column:2; }
}
@media (max-width:600px) {
    .cron-status { align-items:flex-start; }
    .cron-process { align-items:flex-start; flex-direction:column; gap:8px; }
    .cron-process-stats { padding-left:42px; text-align:left; }
}

/* Tabela klucz-wartość (pola control pakietu Debian) — czysta, bez wewnętrznego scrolla */
.pkg-kv { width: 100%; border-collapse: collapse; font-size: 12.5px; margin-top: 10px; }
.pkg-kv td { padding: 6px 10px; border-bottom: 1px solid var(--border-light); vertical-align: top; }
.pkg-kv td:first-child { color: var(--text-muted); font-weight: 700; white-space: nowrap; width: 1%; }
.pkg-kv td:last-child { white-space: pre-wrap; word-break: break-word; }
.pkg-kv tr:last-child td { border-bottom: none; }

/* Layout aplikacji (sidebar + topbar) */
.app-shell { display: flex; height: 100vh; height: 100dvh; width: 100%; overflow: hidden; background: var(--bg); }
/* Sidebar zawsze scrolluje się wewnętrznie (min-height:0 pozwala flexowi skurczyć się
   poniżej wysokości contentu) — inaczej na niskich ekranach stopka „spada pod ekran". */
.sidebar { width: 252px; flex-shrink: 0; background: #fff; border-right: 1px solid var(--border); display: flex; flex-direction: column; min-height: 0; overflow-y: auto; }
.sidebar-toggle, .sidebar-burger, .sidebar-overlay { display: none; }

/* Małe ekrany / telefony: sidebar jako off-canvas (hamburger w topbarze, CSS-only). */
@media (max-width: 820px) {
    .sidebar-burger { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; margin-right: 6px; border-radius: 8px; cursor: pointer; color: var(--text-secondary); font-size: 20px; flex-shrink: 0; }
    .sidebar-burger:hover { background: var(--nav-hover); color: var(--text); }
    .sidebar { position: fixed; top: 0; left: 0; height: 100dvh; z-index: 45; transform: translateX(-100%); transition: transform .22s ease; box-shadow: 6px 0 30px rgba(17,22,31,.16); }
    .sidebar-toggle:checked ~ .sidebar { transform: translateX(0); }
    .sidebar-toggle:checked ~ .sidebar-overlay { display: block; position: fixed; inset: 0; background: rgba(17,22,31,.35); z-index: 44; }
    .main-content { padding: 18px 16px 32px; }
    .topbar { padding: 0 14px; }
    /* Nagłówek karty: tytuł w pierwszej linii, akcje pod nim (i one też mogą się zawijać). */
    .panel-header { align-items: flex-start; }
    .panel-header > div { flex-wrap: wrap; }
}
.brand { display: flex; align-items: center; gap: 10px; padding: 18px 18px 16px; }
.section-label { font-size: 10.5px; font-weight: 700; letter-spacing: .8px; color: var(--text-muted-2); text-transform: uppercase; padding: 8px 8px 6px; }
.nav-group { padding: 6px 12px 6px; }
.nav-list { display: flex; flex-direction: column; gap: 2px; }
.nav-link { display: flex; align-items: center; gap: 10px; padding: 7px 8px; border-radius: 8px; color: var(--text-secondary-2); font-weight: 600; font-size: 13.5px; }
.nav-link:hover { background: var(--nav-hover); }
.nav-link.active { background: var(--nav-hover); color: var(--text); }
.nav-link.disabled { color: var(--text-muted-2); cursor: default; }
.nav-icon { width: 24px; height: 24px; border-radius: 6px; color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 12px; flex-shrink: 0; }
.nav-count { font-size: 11.5px; font-weight: 700; color: var(--text-secondary); background: #F0F2F5; padding: 1px 7px; border-radius: 999px; }
.nav-link i.bi { width: 24px; flex-shrink: 0; text-align: center; font-size: 15px; color: var(--text-muted-2); }
.nav-link:hover i.bi, .nav-link.active i.bi { color: var(--accent); }
.nav-link.disabled i.bi { color: var(--text-muted-2); }
.sidebar-footer { margin-top: auto; padding: 14px 16px; border-top: 1px solid #EEF0F3; }
.avatar { width: 28px; height: 28px; border-radius: 999px; background: #E7ECF3; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 12px; color: #41506a; flex-shrink: 0; }
.user-row { display: flex; align-items: center; gap: 9px; }
.user-name { font-size: 12.5px; font-weight: 700; }
.user-role { font-size: 10.5px; color: var(--text-muted-2); font-weight: 600; }
.account-link { display: flex; align-items: center; gap: 9px; padding: 6px 8px; border-radius: 8px; text-decoration: none; color: inherit; }
.account-link:hover { background: var(--nav-hover); }
.account-link.active { background: var(--accent-bg); }
.main-col { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.topbar { height: 58px; flex-shrink: 0; background: #fff; border-bottom: 1px solid var(--border); display: flex; align-items: center; padding: 0 24px; gap: 16px; }
.topbar-title { font-size: 15px; font-weight: 700; flex: 1; min-width: 0; }
.main-content { flex: 1; overflow-y: auto; padding: 26px 30px 40px; }

/* Globalna wyszukiwarka / paleta nawigacji (`Ctrl+K`). Wyniki powstają wyłącznie
   przez DOM textContent w search.js; modal utrzymuje focus i inert na aplikacji. */
.global-search { position: fixed; inset: 0; z-index: 70; display: flex; align-items: flex-start; justify-content: center; padding: min(12vh, 96px) 18px 24px; visibility: hidden; pointer-events: none; }
.global-search-overlay { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: rgba(17, 22, 31, .5); opacity: 0; transition: opacity .16s ease; cursor: default; }
.global-search-dialog { position: relative; z-index: 1; width: min(680px, 100%); max-height: min(680px, 78vh); display: flex; flex-direction: column; overflow: hidden; background: var(--panel); border: 1px solid rgba(17, 23, 35, .12); border-radius: 14px; box-shadow: 0 24px 70px rgba(17, 22, 31, .25); opacity: 0; transform: translateY(-10px) scale(.99); transition: opacity .16s ease, transform .16s ease; }
.global-search.is-open { visibility: visible; pointer-events: auto; }
.global-search.is-open .global-search-overlay { opacity: 1; }
.global-search.is-open .global-search-dialog { opacity: 1; transform: translateY(0) scale(1); }
body.global-search-open { overflow: hidden; }

.global-search-trigger { display: inline-flex; align-items: center; gap: 8px; min-width: 190px; padding: 7px 8px 7px 11px; border: 1px solid #D9DCE2; border-radius: 8px; background: #fff; color: var(--text-muted); font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; }
.global-search-trigger:hover { border-color: #C7CBD2; color: var(--text-secondary); background: var(--nav-hover); }
.global-search-trigger:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.global-search-trigger span { flex: 1; text-align: left; }
.global-search-trigger kbd, .global-search-input-row kbd, .global-search-footer kbd { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 600; line-height: 1; color: var(--text-muted); background: var(--nav-hover); border: 1px solid var(--border); border-bottom-color: #D2D6DC; border-radius: 5px; padding: 4px 6px; box-shadow: 0 1px 0 #D8DCE2; white-space: nowrap; }

.global-search-input-row { min-height: 58px; display: flex; align-items: center; gap: 11px; padding: 0 15px; border-bottom: 1px solid var(--border); }
.global-search-input-row > .bi-search { color: var(--text-muted); font-size: 17px; flex-shrink: 0; }
.global-search-input-row input[type=search] { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--text); font: inherit; font-size: 15px; padding: 16px 0; }
.global-search-input-row input[type=search]::placeholder { color: var(--text-muted); }
.global-search-input-row input[type=search]::-webkit-search-cancel-button { cursor: pointer; }
.global-search-close { display: none; width: 34px; height: 34px; align-items: center; justify-content: center; border: 0; border-radius: 7px; background: transparent; color: var(--text-muted); cursor: pointer; }
.global-search-close:hover { color: var(--text); background: var(--nav-hover); }
.global-search-status { min-height: 35px; padding: 9px 16px 7px; color: var(--text-muted); font-size: 11.5px; font-weight: 600; }
.global-search-status.is-loading::before { content: ''; display: inline-block; width: 10px; height: 10px; margin-right: 7px; border: 2px solid #D8E4F7; border-top-color: var(--accent); border-radius: 50%; vertical-align: -1px; animation: global-search-spin .7s linear infinite; }
@keyframes global-search-spin { to { transform: rotate(360deg); } }

.global-search-results { min-height: 90px; overflow-y: auto; padding: 0 8px 10px; overscroll-behavior: contain; }
.global-search-group + .global-search-group { margin-top: 6px; }
.global-search-group h3 { padding: 7px 9px 5px; color: var(--text-muted-2); font-size: 10.5px; font-weight: 800; letter-spacing: .5px; text-transform: uppercase; }
.global-search-group-list { display: flex; flex-direction: column; gap: 2px; }
.global-search-result { display: flex; align-items: center; gap: 11px; min-width: 0; padding: 9px 10px; border-radius: 9px; outline: 0; }
.global-search-result:hover, .global-search-result.is-active, .global-search-result:focus { background: var(--accent-bg); }
.global-search-result-icon { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; color: var(--accent); background: #fff; border: 1px solid #DCE6F5; border-radius: 8px; }
.global-search-result-text { display: flex; flex: 1; min-width: 0; flex-direction: column; gap: 2px; }
.global-search-result-text strong { overflow: hidden; color: var(--text); font-size: 13px; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.global-search-result-text small { overflow: hidden; color: var(--text-muted); font-size: 11.5px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.global-search-result-arrow { flex-shrink: 0; color: var(--accent); font-size: 13px; opacity: 0; }
.global-search-result.is-active .global-search-result-arrow, .global-search-result:focus .global-search-result-arrow { opacity: 1; }
.global-search-empty { padding: 26px 18px 34px; color: var(--text-muted); font-size: 13px; text-align: center; }
.global-search-footer { display: flex; align-items: center; gap: 16px; padding: 9px 16px; border-top: 1px solid var(--border-light); color: var(--text-muted); font-size: 10.5px; }
.global-search-footer span { display: inline-flex; align-items: center; gap: 4px; }
.global-search-footer kbd { padding: 3px 5px; font-size: 9px; }

@media (max-width: 820px) {
    .global-search-trigger { min-width: 36px; width: 36px; height: 36px; justify-content: center; padding: 0; }
    .global-search-trigger span, .global-search-trigger kbd { display: none; }
    .global-search { padding: 10px; align-items: flex-start; }
    .global-search-dialog { width: 100%; max-height: calc(100dvh - 20px); border-radius: 12px; }
    .global-search-input-row > kbd { display: none; }
    .global-search-close { display: inline-flex; }
    .global-search-footer { display: none; }
}

/* Layout gościa (logowanie) */
.guest-shell { min-height: 100vh; display: flex; align-items: center; justify-content: center; }
.guest-panel { width: 100%; max-width: 21rem; }
.guest-brand { display: flex; align-items: center; gap: 10px; justify-content: center; margin-bottom: 22px; }

/* Przewijana tabela — poziomy scroll na małych ekranach (uniwersalne) */
.table-scroll { overflow-x: auto; }
.table-scroll > table { min-width: 520px; }

/* Blok kodu + kolorowanie składni (uniwersalne, JS: [data-highlight]) */
.code-block { background: var(--dark); color: var(--dark-text); border-radius: 12px; padding: 14px 16px; overflow-x: auto; font-family: 'JetBrains Mono', monospace; font-size: 12px; line-height: 1.55; white-space: pre; margin: 0; }
.code-block .tok-key { color: #7cc7ff; }
.code-block .tok-string { color: #9ae6b4; }
.code-block .tok-number { color: #f6c177; }
.code-block .tok-bool { color: #d6a2ff; }
.code-block .tok-null { color: #ff9aa2; }
