/* /Components/Layout/MainLayout.razor.rz.scp.css */
#blazor-error-ui[b-uds7gtn8sf] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-uds7gtn8sf] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
/* Okno Blazora nigdy się nie pokazuje — połączenie wznawia się po cichu. */
#components-reconnect-modal[b-st26nt72zg] {
    display: none !important;
}

/* Cienki pasek u góry, gdy łączenie trwa dłużej niż chwilę. */
#pt-reconnect-bar[b-st26nt72zg] {
    position: fixed;
    inset: 0 0 auto 0;
    height: 3px;
    z-index: 2000;
    pointer-events: none;
    opacity: 0;
    transition: opacity .3s ease;
    background-image: linear-gradient(90deg, transparent, var(--c-primary, var(--accent, #7c3aed)), transparent);
    background-size: 40% 100%;
    background-repeat: no-repeat;
}

#pt-reconnect-bar.on[b-st26nt72zg] {
    opacity: 1;
    animation: pt-reconnect-slide-b-st26nt72zg 1.1s linear infinite;
}

@keyframes pt-reconnect-slide-b-st26nt72zg {
    from { background-position: -40% 0; }
    to { background-position: 140% 0; }
}

/* Dyskretna informacja tylko wtedy, gdy internetu naprawdę nie ma. */
#pt-offline-pill[b-st26nt72zg] {
    position: fixed;
    left: 50%;
    bottom: calc(24px + env(safe-area-inset-bottom, 0px));
    z-index: 2000;
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .55rem .95rem;
    border-radius: 99px;
    background: #1f2937;
    color: #fff;
    font-size: .85rem;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .25);
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, 16px);
    transition: opacity .3s ease, transform .3s ease;
}

#pt-offline-pill.on[b-st26nt72zg] {
    opacity: 1;
    transform: translate(-50%, 0);
}

@media (prefers-reduced-motion: reduce) {
    #pt-reconnect-bar.on[b-st26nt72zg] { animation: none; background-size: 100% 100%; opacity: .6; }
    #pt-offline-pill[b-st26nt72zg] { transition: none; }
}
/* /Components/Pages/Panel/Updates.razor.rz.scp.css */
/* ── Tony stanów (wspólne dla chipów, banerów, kroków) ── */
.upd-head[b-kcwixmo90d], .upd-hero[b-kcwixmo90d], .upd-flow[b-kcwixmo90d], .upd-card[b-kcwixmo90d] {
    --ok: #047857; --ok-bg: #ecfdf5; --ok-bd: #a7f3d0;
    --warn: #b45309; --warn-bg: #fffbeb; --warn-bd: #fde68a;
    --danger: #b91c1c; --danger-bg: #fef2f2; --danger-bd: #fecaca;
    --info: #4338ca; --info-bg: #eef2ff; --info-bd: #c7d2fe;
    --muted: #64748b; --muted-bg: #f1f5f9; --muted-bd: #e2e8f0;
    --card-bd: #e6e8ee;
}

.upd-head[b-kcwixmo90d] { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: 1.25rem; flex-wrap: wrap; }
.upd-head p[b-kcwixmo90d] { max-width: 62ch; }

/* ── Baner stanu ── */
.upd-hero[b-kcwixmo90d] {
    display: flex; gap: 1rem; align-items: flex-start; padding: 1.25rem 1.4rem; border-radius: 1rem;
    border: 1px solid var(--tone-bd); background: var(--tone-bg); margin-bottom: 1rem;
}
.upd-tone-ok[b-kcwixmo90d] { --tone: var(--ok); --tone-bg: var(--ok-bg); --tone-bd: var(--ok-bd); }
.upd-tone-pending[b-kcwixmo90d] { --tone: var(--warn); --tone-bg: var(--warn-bg); --tone-bd: var(--warn-bd); }
.upd-tone-running[b-kcwixmo90d] { --tone: var(--info); --tone-bg: var(--info-bg); --tone-bd: var(--info-bd); }
.upd-tone-muted[b-kcwixmo90d] { --tone: var(--muted); --tone-bg: var(--muted-bg); --tone-bd: var(--muted-bd); }
.upd-hero-icon[b-kcwixmo90d] {
    width: 48px; height: 48px; border-radius: 14px; display: grid; place-items: center; flex-shrink: 0;
    background: #fff; color: var(--tone); font-size: 1.5rem; box-shadow: 0 1px 2px rgba(15, 23, 42, .06);
}
.upd-hero-title[b-kcwixmo90d] { font-size: 1.15rem; font-weight: 700; color: #0f172a; text-wrap: balance; }
.upd-hero-text[b-kcwixmo90d] { color: #475569; font-size: .9rem; margin-top: .15rem; }
.upd-hero-steps[b-kcwixmo90d] { margin: .6rem 0 0; padding-left: 1.2rem; font-size: .9rem; color: #334155; }
.upd-hero-steps li + li[b-kcwixmo90d] { margin-top: .15rem; }
.upd-hero-hint[b-kcwixmo90d] { margin-top: .6rem; font-size: .82rem; color: var(--tone); font-weight: 600; }
.upd-spin[b-kcwixmo90d] { display: inline-block; animation: upd-spin-b-kcwixmo90d 1.4s linear infinite; }
@keyframes upd-spin-b-kcwixmo90d { to { transform: rotate(360deg); } }

/* ── Przepływ wersji: GitHub → serwer → Portal / aplikacja ── */
.upd-flow[b-kcwixmo90d] { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.4rem; margin-bottom: 1rem; }
.upd-node[b-kcwixmo90d] {
    position: relative; background: #fff; border: 1px solid var(--card-bd); border-radius: .9rem;
    padding: .9rem 1rem; display: flex; flex-direction: column; gap: .35rem; min-width: 0;
}
.upd-node:not(:last-child)[b-kcwixmo90d]::after {
    content: "\F138"; font-family: "bootstrap-icons"; position: absolute; right: -1.15rem; top: 50%;
    transform: translateY(-50%); color: #94a3b8; font-size: .95rem;
}
.upd-node:nth-child(3)[b-kcwixmo90d]::after { display: none; } /* Portal i aplikacja powstają niezależnie z repo */
.upd-node-label[b-kcwixmo90d] { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); display: flex; gap: .4rem; align-items: center; }
.upd-node-commit[b-kcwixmo90d] { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 1.05rem; font-weight: 700; color: #0f172a; }
.upd-node-meta[b-kcwixmo90d] { font-size: .78rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ── Chipy ── */
.upd-chip[b-kcwixmo90d] {
    display: inline-flex; align-items: center; align-self: flex-start; gap: .2rem; padding: .18rem .6rem; border-radius: 999px;
    font-size: .72rem; font-weight: 600; border: 1px solid transparent; white-space: nowrap;
}
.upd-chip-ok[b-kcwixmo90d] { color: var(--ok); background: var(--ok-bg); border-color: var(--ok-bd); }
.upd-chip-warn[b-kcwixmo90d] { color: var(--warn); background: var(--warn-bg); border-color: var(--warn-bd); }
.upd-chip-danger[b-kcwixmo90d] { color: var(--danger); background: var(--danger-bg); border-color: var(--danger-bd); }
.upd-chip-info[b-kcwixmo90d] { color: var(--info); background: var(--info-bg); border-color: var(--info-bd); }
.upd-chip-muted[b-kcwixmo90d] { color: var(--muted); background: var(--muted-bg); border-color: var(--muted-bd); }

/* ── Karty ── */
.upd-card[b-kcwixmo90d] { background: #fff; border: 1px solid var(--card-bd); border-radius: 1rem; padding: 1.2rem 1.3rem; margin-bottom: 1rem; }
.upd-action[b-kcwixmo90d] { display: flex; flex-direction: column; margin-bottom: 0; }
.upd-action-head[b-kcwixmo90d] { display: flex; align-items: center; gap: .75rem; margin-bottom: 1rem; }
.upd-action-icon[b-kcwixmo90d] { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; background: #eef0ff; color: #4f46e5; font-size: 1.2rem; flex-shrink: 0; }
.upd-action-icon-alt[b-kcwixmo90d] { background: #ecfeff; color: #0e7490; }
.upd-what[b-kcwixmo90d] { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); margin-bottom: .4rem; }
.upd-list[b-kcwixmo90d] { padding-left: 1.2rem; margin-bottom: .75rem; font-size: .88rem; color: #334155; }
.upd-list li + li[b-kcwixmo90d] { margin-top: .25rem; }
.upd-action .btn.w-100[b-kcwixmo90d] { margin-top: auto; padding: .6rem 1rem; font-weight: 600; }
.upd-confirm[b-kcwixmo90d] { margin-top: auto; border: 1px solid var(--info-bd); background: var(--info-bg); border-radius: .75rem; padding: .8rem 1rem; font-size: .9rem; }

.upd-adv[b-kcwixmo90d] { margin-top: .9rem; border-top: 1px dashed var(--card-bd); padding-top: .7rem; }
.upd-adv summary[b-kcwixmo90d], .upd-log summary[b-kcwixmo90d], .upd-faq summary[b-kcwixmo90d] { cursor: pointer; font-size: .85rem; font-weight: 600; color: #475569; }
.upd-adv[open] summary[b-kcwixmo90d] { margin-bottom: .6rem; }

/* ── Trwające zadanie ── */
.upd-job[b-kcwixmo90d] { border-left: 4px solid var(--jt); }
.upd-job-info[b-kcwixmo90d] { --jt: #6366f1; }
.upd-job-ok[b-kcwixmo90d] { --jt: #10b981; }
.upd-job-warn[b-kcwixmo90d] { --jt: #f59e0b; }
.upd-job-danger[b-kcwixmo90d] { --jt: #ef4444; }
.upd-job-muted[b-kcwixmo90d] { --jt: #94a3b8; }
.upd-job-head[b-kcwixmo90d] { display: flex; align-items: center; gap: .75rem; margin-bottom: 1rem; }
.upd-job-head > .bi[b-kcwixmo90d] { font-size: 1.3rem; color: var(--jt); }

.upd-steps[b-kcwixmo90d] { list-style: none; display: flex; gap: 0; padding: 0; margin: 0 0 .5rem; overflow-x: auto; }
.upd-step[b-kcwixmo90d] { flex: 1; min-width: 96px; display: flex; flex-direction: column; align-items: center; gap: .35rem; position: relative; text-align: center; }
.upd-step:not(:last-child)[b-kcwixmo90d]::after {
    content: ""; position: absolute; top: 13px; left: calc(50% + 16px); right: calc(-50% + 16px); height: 2px; background: #e2e8f0;
}
.upd-step-done:not(:last-child)[b-kcwixmo90d]::after { background: #10b981; }
.upd-step-dot[b-kcwixmo90d] {
    width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; font-size: .8rem;
    border: 2px solid #cbd5e1; background: #fff; color: #fff; z-index: 1;
}
.upd-step-done .upd-step-dot[b-kcwixmo90d] { background: #10b981; border-color: #10b981; }
.upd-step-current .upd-step-dot[b-kcwixmo90d] { border-color: #6366f1; box-shadow: 0 0 0 4px rgba(99, 102, 241, .18); animation: upd-pulse-b-kcwixmo90d 1.6s ease-in-out infinite; }
.upd-step-fail .upd-step-dot[b-kcwixmo90d] { background: #ef4444; border-color: #ef4444; }
.upd-step-label[b-kcwixmo90d] { font-size: .76rem; color: var(--muted); font-weight: 600; }
.upd-step-current .upd-step-label[b-kcwixmo90d] { color: #4338ca; }
.upd-step-done .upd-step-label[b-kcwixmo90d] { color: #0f172a; }
@keyframes upd-pulse-b-kcwixmo90d { 50% { box-shadow: 0 0 0 7px rgba(99, 102, 241, .08); } }

.upd-result[b-kcwixmo90d] { margin-top: .75rem; padding: .7rem .9rem; border-radius: .7rem; font-size: .9rem; font-weight: 600; border: 1px solid; }
.upd-result-ok[b-kcwixmo90d] { color: var(--ok); background: var(--ok-bg); border-color: var(--ok-bd); }
.upd-result-warn[b-kcwixmo90d] { color: var(--warn); background: var(--warn-bg); border-color: var(--warn-bd); }
.upd-result-danger[b-kcwixmo90d] { color: var(--danger); background: var(--danger-bg); border-color: var(--danger-bd); }
.upd-result-info[b-kcwixmo90d], .upd-result-muted[b-kcwixmo90d] { color: var(--info); background: var(--info-bg); border-color: var(--info-bd); }

.upd-tenants[b-kcwixmo90d] { margin-top: 1rem; }
.upd-tenant-grid[b-kcwixmo90d] { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: .4rem; }
.upd-tenant[b-kcwixmo90d] {
    display: flex; align-items: center; gap: .45rem; padding: .4rem .6rem; border-radius: .55rem; font-size: .8rem;
    border: 1px solid var(--tt-bd); background: var(--tt-bg); color: #0f172a; min-width: 0;
}
.upd-tenant i[b-kcwixmo90d] { color: var(--tt); }
.upd-tenant small[b-kcwixmo90d] { margin-left: auto; color: var(--tt); font-weight: 600; white-space: nowrap; }
.upd-tenant-ok[b-kcwixmo90d] { --tt: var(--ok); --tt-bg: var(--ok-bg); --tt-bd: var(--ok-bd); }
.upd-tenant-warn[b-kcwixmo90d] { --tt: var(--warn); --tt-bg: var(--warn-bg); --tt-bd: var(--warn-bd); }
.upd-tenant-danger[b-kcwixmo90d] { --tt: var(--danger); --tt-bg: var(--danger-bg); --tt-bd: var(--danger-bd); }
.upd-tenant-info[b-kcwixmo90d] { --tt: var(--info); --tt-bg: var(--info-bg); --tt-bd: var(--info-bd); }
.upd-tenant-muted[b-kcwixmo90d] { --tt: var(--muted); --tt-bg: #fff; --tt-bd: var(--muted-bd); }

/* ── Log ── */
.upd-log[b-kcwixmo90d] { margin-top: 1rem; }
.upd-log[open] summary[b-kcwixmo90d] { margin-bottom: .5rem; }
.upd-log-body[b-kcwixmo90d] {
    background: #0f172a; color: #cbd5e1; border-radius: .7rem; padding: .8rem 1rem; max-height: 360px; overflow: auto;
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .74rem; line-height: 1.6; white-space: pre-wrap;
}
.upd-log-line[b-kcwixmo90d] { display: block; }
.upd-log-time[b-kcwixmo90d] { color: #64748b; margin-right: .6rem; }
.upd-log-stage[b-kcwixmo90d] { color: #818cf8; margin-right: .6rem; }
.upd-log-success[b-kcwixmo90d] { color: #6ee7b7; }
.upd-log-warn[b-kcwixmo90d] { color: #fcd34d; }
.upd-log-error[b-kcwixmo90d] { color: #fca5a5; }

/* ── Historia ── */
.upd-history[b-kcwixmo90d] { list-style: none; padding: 0; margin: 0; }
.upd-history-item + .upd-history-item[b-kcwixmo90d] { border-top: 1px solid #f1f5f9; }
.upd-history-row[b-kcwixmo90d] {
    width: 100%; display: flex; align-items: center; gap: .75rem; padding: .65rem .25rem; background: none; border: 0; border-radius: .6rem;
}
.upd-history-row:hover[b-kcwixmo90d] { background: #f8fafc; }
.upd-history-row:focus-visible[b-kcwixmo90d] { outline: 2px solid #6366f1; outline-offset: 2px; }
.upd-history-icon[b-kcwixmo90d] { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; flex-shrink: 0; }
.upd-tone-bg-ok[b-kcwixmo90d] { background: var(--ok-bg); color: var(--ok); }
.upd-tone-bg-warn[b-kcwixmo90d] { background: var(--warn-bg); color: var(--warn); }
.upd-tone-bg-danger[b-kcwixmo90d] { background: var(--danger-bg); color: var(--danger); }
.upd-tone-bg-info[b-kcwixmo90d] { background: var(--info-bg); color: var(--info); }
.upd-tone-bg-muted[b-kcwixmo90d] { background: var(--muted-bg); color: var(--muted); }
.upd-history-detail[b-kcwixmo90d] { padding: 0 .25rem .9rem 3.1rem; }

/* ── FAQ ── */
.upd-faq details[b-kcwixmo90d] { border-top: 1px solid #f1f5f9; padding: .6rem 0; }
.upd-faq details p[b-kcwixmo90d] { font-size: .87rem; color: #475569; margin: .5rem 0 0; max-width: 75ch; }

@media (max-width: 991.98px) {
    .upd-flow[b-kcwixmo90d] { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
    .upd-node[b-kcwixmo90d]::after { display: none; }
}
@media (max-width: 575.98px) {
    .upd-node[b-kcwixmo90d] { padding: .7rem .8rem; }
    .upd-hero[b-kcwixmo90d] { padding: 1rem; }
    .upd-history-detail[b-kcwixmo90d] { padding-left: .25rem; }
}
@media (prefers-reduced-motion: reduce) {
    .upd-spin[b-kcwixmo90d], .upd-step-current .upd-step-dot[b-kcwixmo90d] { animation: none; }
}
