/* ===========================================================================
   Motyw "ERP" - niebieska paleta (granatowy panel boczny, niebieski akcent),
   nadpisuje tokeny z style.css (front z demo). Statusy zamowien zostaja
   semantyczne (--st-*), zmienia sie tylko kolor marki i tla.
   =========================================================================== */
:root {
  --bg: #eef2f7;
  --card: #ffffff;
  --sunken: #f5f7fb;
  --ink: #0f172a;
  --muted: #5b6b82;
  --line: #dbe2ec;
  --line-strong: #c3cddb;
  --primary: #1d4ed8;
  --primary-d: #1e3a8a;
  --primary-soft: #e3ebff;
  --side: #0b1a33;
  --side-ink: #a9b8d0;
  --shadow: 0 1px 2px rgba(15, 23, 42, .06);
  --st-w_realizacji: #6d28d9; --st-w_realizacji-bg: #ede7fd;
}
.nav-label { color: #6d7f9e; }
.nav a.nav-active { background: rgba(96, 165, 250, .16); color: #fff; }
.nav a.nav-active .nav-ico { color: #60a5fa; }
@media (min-width: 761px) {
  .topbar { background: linear-gradient(180deg, #0d2142 0%, var(--side) 55%); border-right: 1px solid #06101f; }
}
.clickable:hover { background: #f1f5fd; }
.board-card:hover { background: #f4f7fd; }
.seg a.seg-on { background: var(--primary); }
.f-status-chip:has(input:checked) { background: var(--primary); border-color: var(--primary); }
.pipe-step.is-on { background: var(--primary-soft); }
h2 { border-left-color: var(--primary); }
/* ekran logowania (w style.css kolory marki wpisane na sztywno) */
.auth-blob-1 { background: #2563eb !important; }
.auth-blob-2 { background: #0ea5e9 !important; }
.auth-logo { box-shadow: 0 8px 20px rgba(29, 78, 216, .32); }
.auth-field input:focus { border-color: #1d4ed8; box-shadow: 0 0 0 4px rgba(29, 78, 216, .16); }
body.auth-page { background: radial-gradient(circle at 20% 10%, #16305a 0%, #0b1a33 55%, #071224 100%); }

/* ===========================================================================
   Czesc handlowo-ksiegowa (sprzedaz, zakupy, magazyn, finanse, ksiegi,
   podatki, KSeF). Korzysta z tokenow i komponentow style.css (front z demo:
   --primary, --line, --sunken, .card, .table, .panel, .badge, .seg...).
   =========================================================================== */

.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.mono { font-family: var(--mono); font-size: .86em; }
.nowrap { white-space: nowrap; }
.ujemna { color: var(--st-problem); }
.dodatnia { color: var(--st-zakonczone); }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* zakladki stron ustawien/modulow */
.tabs { display: flex; gap: .25rem; flex-wrap: wrap; border-bottom: 1px solid var(--line); margin: 0 0 1.2rem; }
.tabs a { padding: .55rem .9rem; border-radius: 8px 8px 0 0; color: var(--muted); font-weight: 600; font-size: .9rem;
  text-decoration: none; border: 1px solid transparent; border-bottom: 0; margin-bottom: -1px; }
.tabs a:hover { color: var(--ink); background: var(--sunken); }
.tabs a.on { color: var(--ink); background: var(--card); border-color: var(--line); }

/* siatka formularza */
.form-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 0 1rem; }
.form-grid .span2 { grid-column: span 2; }
.form-grid .span-all { grid-column: 1 / -1; }
.form-section { margin: 1.4rem 0 .4rem; font-size: .78rem; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--muted); border-bottom: 1px solid var(--line); padding-bottom: .35rem; }
.form-section:first-child { margin-top: 0; }
.check { display: flex; align-items: center; gap: .45rem; font-weight: 500; }
.check input { width: auto; margin: 0; }
.actions-bar { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; margin-top: 1rem; }
.actions-bar .spacer { flex: 1; }
.toolbar { display: flex; gap: .4rem; flex-wrap: wrap; align-items: center; }
.toolbar form { margin: 0; }

/* statusy dokumentow */
.badge-dok-szkic { background: var(--st-oczekujacy-bg); color: var(--st-oczekujacy); }
.badge-dok-wystawiony { background: var(--st-zakonczone-bg); color: var(--st-zakonczone); }
.badge-dok-anulowany { background: var(--st-anulowano-bg); color: var(--st-anulowano); text-decoration: line-through; }
.badge-ksef-do_wyslania, .badge-ksef-wysylanie, .badge-ksef-offline { background: var(--st-w_realizacji-bg); color: var(--st-w_realizacji); }
.badge-ksef-przyjeta { background: var(--st-wyslane-bg); color: var(--st-wyslane); }
.badge-ksef-odrzucona, .badge-ksef-blad { background: var(--st-problem-bg); color: var(--st-problem); }
.badge-ksef-nie_dotyczy { background: var(--st-anulowano-bg); color: var(--st-anulowano); }
.badge-plat-nierozliczony { background: var(--st-problem-bg); color: var(--st-problem); }
.badge-plat-czesciowo { background: var(--st-w_realizacji-bg); color: var(--st-w_realizacji); }
.badge-plat-rozliczony { background: var(--st-zakonczone-bg); color: var(--st-zakonczone); }
.badge-neutral { background: var(--sunken); color: var(--muted); border: 1px solid var(--line); }
.badge-ok { background: var(--st-zakonczone-bg); color: var(--st-zakonczone); }
.badge-warn { background: #fff4d6; color: #8a5a00; }
.badge-err { background: var(--st-problem-bg); color: var(--st-problem); }

/* uklad karty dokumentu: podglad + panel boczny */
.doc-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 1.2rem; align-items: start; }
.doc-aside .card { margin-bottom: 1rem; }
.doc-aside h3 { margin: 0 0 .6rem; font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.kv { display: grid; grid-template-columns: auto 1fr; gap: .3rem .8rem; margin: 0; font-size: .9rem; }
.kv dt { color: var(--muted); }
.kv dd { margin: 0; text-align: right; overflow-wrap: anywhere; }
.aside-actions { display: flex; flex-direction: column; gap: .45rem; }
.aside-actions .btn, .aside-actions form, .aside-actions form .btn { width: 100%; }
.aside-actions form { margin: 0; }

/* podglad dokumentu (jak wydruk) */
.paper { background: #fff; color: #111; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow);
  padding: 2rem 2.2rem; font-size: .9rem; line-height: 1.4; }
.paper h1 { font-size: 1.35rem; margin: 0; letter-spacing: -.01em; }
.paper .doc-meta { color: #555; font-size: .85rem; margin-top: .25rem; }
.paper-head { display: flex; justify-content: space-between; gap: 1.5rem; align-items: flex-start; margin-bottom: 1.4rem; }
.paper-parties { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin-bottom: 1.2rem; }
.paper-party h4 { margin: 0 0 .3rem; font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: #777; }
.paper-party .nazwa { font-weight: 700; }
.paper table { width: 100%; border-collapse: collapse; margin: .6rem 0; }
.paper th { text-align: left; font-size: .7rem; letter-spacing: .05em; text-transform: uppercase; color: #666;
  border-bottom: 1.5px solid #222; padding: .35rem .4rem; }
.paper td { border-bottom: 1px solid #e3e3e3; padding: .38rem .4rem; vertical-align: top; }
.paper tr.przed td { color: #777; font-style: italic; }
.paper .sumy { width: auto; margin-left: auto; min-width: 55%; }
.paper .sumy td, .paper .sumy th { text-align: right; }
.paper .razem td { font-weight: 700; border-top: 1.5px solid #222; }
.paper .do-zaplaty { font-size: 1.1rem; font-weight: 800; text-align: right; margin: .8rem 0 .2rem; }
.paper .slownie { text-align: right; color: #555; font-size: .85rem; }
.paper-foot { display: flex; justify-content: space-between; gap: 1.5rem; margin-top: 1.4rem; align-items: flex-end; }
.paper .qr { text-align: center; font-family: var(--mono); font-size: .62rem; max-width: 190px; word-break: break-all; }
.paper .qr svg { width: 120px; height: 120px; display: block; margin: 0 auto .25rem; }
.paper .podpisy { display: flex; gap: 3rem; margin-top: 2.6rem; font-size: .75rem; color: #666; }
.paper .podpisy div { border-top: 1px dotted #999; padding-top: .3rem; min-width: 180px; text-align: center; }
.stempel-anulowany { display: inline-block; border: 3px solid var(--st-problem); color: var(--st-problem); font-weight: 800;
  letter-spacing: .15em; padding: .2rem .7rem; transform: rotate(-4deg); }

/* edytor pozycji dokumentu */
.lines { width: 100%; border-collapse: collapse; }
.lines th { font-size: .7rem; letter-spacing: .07em; text-transform: uppercase; color: var(--muted); text-align: left;
  padding: .45rem .35rem; border-bottom: 1px solid var(--line); background: var(--sunken); }
.lines td { padding: .35rem; border-bottom: 1px solid var(--line); vertical-align: top; }
.lines input, .lines select { margin: 0; padding: .38rem .45rem; font-size: .88rem; }
.lines .c-lp { width: 2.2rem; color: var(--muted); text-align: center; padding-top: .7rem; }
.lines .c-ilosc { width: 6rem; } .lines .c-jm { width: 5rem; } .lines .c-cena { width: 8rem; }
.lines .c-rabat { width: 4.5rem; } .lines .c-vat { width: 7.5rem; } .lines .c-wart { width: 8rem; text-align: right; padding-top: .7rem; }
.lines .c-usun { width: 2.5rem; }
.lines .opis { margin-top: .3rem; font-size: .8rem; }
.lines tr.przed td { background: var(--sunken); color: var(--muted); }
.lines-sum { display: flex; justify-content: flex-end; gap: 1.6rem; margin-top: .8rem; font-size: .95rem; }
.lines-sum strong { font-size: 1.15rem; }

/* tabele ksiegowe */
.ledger td.wn, .ledger td.ma { width: 8.5rem; }
.ledger tr.suma td { font-weight: 700; background: var(--sunken); }
.ledger tr.syntetyczne td { font-weight: 700; }
.ledger tr.analityczne td:first-child { padding-left: 1.6rem; }
.rap td.lvl1 { font-weight: 700; }
.rap td.lvl2 { padding-left: 1.4rem; }
.rap td.lvl3 { padding-left: 2.6rem; color: var(--muted); }
.rap tr.wynik td { font-weight: 800; background: var(--sunken); }

.kafle { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .8rem; margin-bottom: 1.2rem; }
.kafel { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: .85rem 1rem;
  text-decoration: none; color: var(--ink); box-shadow: var(--shadow); }
a.kafel:hover { border-color: var(--primary); }
.kafel .k-lbl { font-size: .72rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--muted); }
.kafel .k-val { font-size: 1.45rem; font-weight: 800; letter-spacing: -.02em; font-variant-numeric: tabular-nums; margin-top: .15rem; }
.kafel .k-sub { font-size: .78rem; color: var(--muted); }
.kafel.alarm .k-val { color: var(--st-problem); }

.note { border-left: 3px solid var(--primary); background: var(--primary-soft); padding: .7rem .9rem; border-radius: 0 8px 8px 0;
  font-size: .9rem; margin: .8rem 0; }
.note-warn { border-left-color: #d49b00; background: #fff8e1; }
.note-err { border-left-color: var(--st-problem); background: var(--st-problem-bg); }
.steps { counter-reset: krok; list-style: none; padding: 0; margin: .5rem 0; }
.steps li { counter-increment: krok; position: relative; padding: .35rem 0 .35rem 2.1rem; }
.steps li::before { content: counter(krok); position: absolute; left: 0; top: .3rem; width: 1.5rem; height: 1.5rem; border-radius: 50%;
  background: var(--ink); color: #fff; font-size: .78rem; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.steps li.done::before { background: var(--st-zakonczone); content: "✓"; }
pre.xml { background: #17140f; color: #e8e2d9; padding: 1rem; border-radius: 8px; overflow: auto; max-height: 420px; font-size: .78rem; }

@media (max-width: 1100px) {
  .doc-layout { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  .paper { padding: 1rem; }
  .paper-parties { grid-template-columns: 1fr; }
  .form-grid .span2 { grid-column: 1 / -1; }
  .lines thead { display: none; }
  .lines tr { display: grid; grid-template-columns: 1fr 1fr; gap: .3rem; padding: .5rem 0; border-bottom: 1px solid var(--line); }
  .lines td { border: 0; padding: .15rem; }
  .lines td.c-naz { grid-column: 1 / -1; }
  .lines .c-lp, .lines .c-usun { display: none; }
}

/* wydruk (PDF z przegladarki): sam papier */
@media print {
  .topbar, .app-footer, .doc-aside, .fchat-toggle, .ai-toggle, .page-head, .flash, .no-print { display: none !important; }
  body:not(.auth-page) { padding-left: 0 !important; }
  .container { max-width: none; margin: 0; padding: 0; }
  .doc-layout { display: block; }
  .paper { border: 0; box-shadow: none; padding: 0; }
}

/* Tabela kompaktowa (listy w panelach ERP) - zwykla tabela z mniejszym odstepem.
   Uwaga: .table-mini z bazowego arkusza to widget z przewijaniem (display:block). */
.table.table-compact th, .table.table-compact td { padding: .45rem .65rem; font-size: .86rem; }
.table.table-compact thead th { font-size: .7rem; }
.table td.num, .table th.num { text-align: right; }
.btn:disabled, .btn[disabled] { opacity: .45; cursor: not-allowed; pointer-events: none; }

/* Kokpit (strona startowa ERP) */
.kafle.kafle-6 { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
a.kafel { text-decoration: none; color: inherit; transition: border-color .15s, box-shadow .15s, transform .15s; }
a.kafel:hover { border-color: var(--primary); box-shadow: 0 6px 18px rgba(29, 78, 216, .12); transform: translateY(-1px); }
.kafel .k-unit { font-size: .8rem; font-weight: 600; color: var(--muted); }
.kokpit-szukaj { display: flex; gap: .5rem; align-items: center; min-width: min(460px, 100%); }
.kokpit-szukaj input { flex: 1; min-width: 0; }
.skroty { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: .5rem; }
.skroty form { margin: 0; }
.skrot { display: block; width: 100%; text-align: left; padding: .7rem .9rem; border-radius: 10px; border: 1px solid var(--line);
         background: var(--card, #fff); color: var(--ink, #0f172a); font: inherit; font-weight: 600; font-size: .9rem;
         text-decoration: none; cursor: pointer; }
.skrot:hover { border-color: var(--primary); color: var(--primary); }
.kokpit-dol .chart-wrap { position: relative; height: 280px; }
.nav-search { margin: .2rem 0 .6rem; }
.nav-search input { width: 100%; padding: .5rem .7rem; border-radius: 9px; border: 1px solid rgba(255, 255, 255, .14);
                    background: rgba(255, 255, 255, .06); color: #e2e8f0; font: inherit; font-size: .85rem; }
.nav-search input::placeholder { color: rgba(226, 232, 240, .55); }
.nav-search input:focus { outline: none; border-color: #60a5fa; background: rgba(255, 255, 255, .1); }
@media (min-width: 1380px) { .kafle.kafle-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
