/* Kryształowe Wzgórze — barwy z logo i CSS strony sali (krysztalowe-wzgorze.pl): granat #001764, turkus #46A8AE, grafit #494949.
   Logo dostępne tylko jako PNG — odcienie do potwierdzenia z księgą znaku. */
:root {
  --tlo:#f5f7fa; --karta:#ffffff; --tekst:#23272f; --drugi:#6b7280; --linia:#e3e7ee;
  --granat:#001764; --turkus:#46a8ae; --akcent:#001764; --plus:#1e7a4c; --minus:#b3261e; --pole:#ffffff;
  --c-towar:#46a8ae; --c-obsluga:#001764; --c-uslugi:#9fd3d6; --c-prowizja:#2d6f74; --c-stale:#b8bfc9; --c-zysk:#3aa169;
  --c-wplynelo:#001764; --c-oczekiwane:#46a8ae; --cien:0 1px 2px rgba(0,23,100,.06), 0 4px 13px rgba(0,23,100,.05);
}
@media (prefers-color-scheme: dark) { :root {
  --tlo:#0e1320; --karta:#161d2e; --tekst:#e8ebf2; --drugi:#9aa3b5; --linia:#27304a;
  --granat:#9db1ff; --akcent:#9db1ff; --plus:#63c98f; --minus:#ff8a80; --pole:#1b2338;
  --c-obsluga:#6f86e0; --c-stale:#5c6478; --c-prowizja:#7cc4c8; --c-wplynelo:#6f86e0; --cien:none;
} }
* { box-sizing:border-box; }
body { margin:0; font:16px/1.55 system-ui, -apple-system, "Segoe UI", sans-serif; background:var(--tlo); color:var(--tekst); }
a { color:var(--akcent); }
h1 { font-size:1.6rem; margin:.25rem 0 .25rem; color:var(--granat); letter-spacing:-.01em; }
h2 { font-size:1.1rem; margin:0 0 .75rem; } h3 { font-size:1rem; margin:1.25rem 0 .5rem; display:flex; justify-content:space-between; gap:1rem; }
small { font-size:.82rem; }
.drugi { color:var(--drugi); font-size:.92rem; } .plus { color:var(--plus); } .minus { color:var(--minus); } .blad { color:var(--minus); }

/* górny pasek */
header.gora { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem 1.25rem; padding:.5rem 1rem; background:var(--karta); border-bottom:3px solid var(--turkus); box-shadow:var(--cien); }
.marka { display:flex; align-items:center; gap:.5rem; text-decoration:none; color:var(--granat); font-weight:700; margin-right:auto; }
header nav { display:flex; flex-wrap:wrap; gap:.25rem; }
header nav a { text-decoration:none; color:var(--tekst); padding:.35rem .6rem; border-radius:6px; }
header nav a:hover { background:var(--tlo); }
header nav a[aria-current] { background:var(--granat); color:#fff; }
@media (prefers-color-scheme: dark) { header nav a[aria-current] { color:#0e1320; } }
header form { margin:0; }
main { padding:1.25rem 1rem 3rem; max-width:1180px; margin:0 auto; }

/* formularze */
select, input, button { font:inherit; padding:.4rem .6rem; border:1px solid var(--linia); border-radius:6px; background:var(--pole); color:var(--tekst); max-width:100%; }
button { background:var(--granat); color:#fff; border:0; cursor:pointer; }
button.cichy { background:transparent; color:var(--drugi); border:1px solid var(--linia); }
form.filtry { display:flex; flex-wrap:wrap; gap:.5rem .75rem; align-items:center; margin:1rem 0; }
.chipy { display:flex; flex-wrap:wrap; gap:.3rem; }
.chipy input { position:absolute; opacity:0; pointer-events:none; }
.chipy span { display:inline-block; padding:.3rem .75rem; border:1px solid var(--linia); border-radius:999px; background:var(--karta); cursor:pointer; font-size:.9rem; }
.chipy input:checked + span { background:var(--granat); border-color:var(--granat); color:#fff; }
.chipy input:focus-visible + span { outline:2px solid var(--turkus); }

/* panele i kafle */
.panel { background:var(--karta); border:1px solid var(--linia); border-radius:10px; padding:1rem 1.25rem; margin:1rem 0; box-shadow:var(--cien); }
.panel.alarm { border-color:var(--minus); }
.kafle { display:grid; grid-template-columns:repeat(auto-fit, minmax(10.5rem, 1fr)); gap:.75rem; margin:1rem 0; }
.kafel { background:var(--karta); border:1px solid var(--linia); border-left:4px solid var(--turkus); border-radius:10px; padding:.75rem 1rem; box-shadow:var(--cien); }
.kafel span { display:block; color:var(--drugi); font-size:.85rem; }
.kafel b { display:block; font-size:1.45rem; color:var(--granat); line-height:1.3; }
.kafel.alarm { border-left-color:var(--minus); } .kafel.alarm b { color:var(--minus); }
.kafel small, .kafel a { color:var(--drugi); }

/* legenda i kolory kategorii */
.legenda { display:flex; flex-wrap:wrap; gap:.4rem 1rem; font-size:.85rem; color:var(--drugi); margin:.5rem 0; }
.legenda i, .legenda-duza i, .koszt summary i { display:inline-block; width:.75rem; height:.75rem; border-radius:3px; margin-right:.35rem; vertical-align:-1px; }
.s-towar { background:var(--c-towar); stroke:var(--c-towar); } .s-obsluga { background:var(--c-obsluga); stroke:var(--c-obsluga); }
.s-uslugi { background:var(--c-uslugi); stroke:var(--c-uslugi); } .s-stale { background:var(--c-stale); stroke:var(--c-stale); }
.s-zysk { background:var(--c-zysk); stroke:var(--c-zysk); }
.s-prowizja { background:var(--c-prowizja); stroke:var(--c-prowizja); }
i.wplynelo { background:var(--c-wplynelo); } i.oczekiwane { background:var(--c-oczekiwane); opacity:.55; }

/* karty imprez */
.siatka { display:grid; grid-template-columns:repeat(auto-fill, minmax(17rem, 1fr)); gap:.9rem; }
a.impreza { display:block; background:var(--karta); border:1px solid var(--linia); border-radius:10px; padding:.9rem 1rem; color:inherit; text-decoration:none; box-shadow:var(--cien); transition:transform .12s, border-color .12s; }
a.impreza:hover { transform:translateY(-2px); border-color:var(--turkus); }
a.impreza.przyszla { border-top:3px solid var(--turkus); }
.naglowek { display:flex; gap:.75rem; align-items:center; margin-bottom:.75rem; }
.data-duza { display:flex; flex-direction:column; align-items:center; justify-content:center; min-width:3.1rem; padding:.2rem .3rem; border-radius:8px; background:var(--tlo); color:var(--drugi); font-size:.78rem; text-transform:uppercase; line-height:1.1; }
.data-duza b { font-size:1.35rem; color:var(--granat); }
.kto { display:flex; flex-direction:column; min-width:0; } .kto b { overflow-wrap:anywhere; } .kto small { color:var(--drugi); }
.pasek { display:flex; height:.8rem; border-radius:999px; overflow:hidden; background:var(--linia); }
.pasek span { height:100%; }
.wynik-linia { display:flex; justify-content:space-between; gap:.5rem; margin-top:.45rem; font-size:.88rem; color:var(--drugi); }
.wynik-linia .plus, .wynik-linia .minus { font-weight:600; }

/* płatności */
.postep { height:.7rem; border-radius:999px; background:var(--linia); overflow:hidden; }
.postep span { display:block; height:100%; background:linear-gradient(90deg, var(--granat), var(--turkus)); }
.platnosc-opis { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.25rem .75rem; margin-top:.4rem; font-size:.88rem; color:var(--drugi); }
.platnosc-opis b { color:var(--tekst); } .zostalo b { color:var(--granat); }
.platnosc.brak { font-size:.88rem; color:var(--drugi); border:1px dashed var(--linia); border-radius:8px; padding:.4rem .6rem; }
ol.os-wplat { list-style:none; padding:0; margin:1rem 0 0; border-left:2px solid var(--linia); }
ol.os-wplat li { position:relative; display:grid; grid-template-columns:6.5rem 7rem 1fr; gap:.5rem; padding:.3rem 0 .3rem 1rem; align-items:baseline; }
ol.os-wplat li::before { content:""; position:absolute; left:-.42rem; top:.7rem; width:.7rem; height:.7rem; border-radius:50%; background:var(--granat); }
ol.os-wplat li.przyszla::before { background:var(--karta); border:2px solid var(--turkus); }
ol.os-wplat li.zalegla::before { border-color:var(--minus); }
ol.os-wplat small { color:var(--drugi); }

/* wynik imprezy: pierścień + legenda */
.wynik-uklad { display:grid; grid-template-columns:minmax(12rem, 16rem) 1fr; gap:1.5rem; align-items:center; }
svg.pierscien { width:100%; max-width:16rem; }
svg.pierscien .tor { fill:none; stroke:var(--linia); stroke-width:5; }
svg.pierscien .seg { fill:none; stroke-width:5; transition:stroke-width .12s; cursor:pointer; }
svg.pierscien a:hover .seg { stroke-width:6.5; }
.srodek-wartosc { font-size:6px; font-weight:700; text-anchor:middle; fill:var(--granat); }
.srodek-opis { font-size:2.6px; text-anchor:middle; fill:var(--drugi); text-transform:uppercase; letter-spacing:.1px; }
ul.legenda-duza { list-style:none; margin:0; padding:0; }
ul.legenda-duza li, ul.legenda-duza li a { display:flex; gap:.75rem; align-items:baseline; }
ul.legenda-duza li { padding:.4rem 0; border-bottom:1px solid var(--linia); }
ul.legenda-duza li a { flex:1; color:inherit; text-decoration:none; }
ul.legenda-duza span { flex:1; } ul.legenda-duza b { white-space:nowrap; } ul.legenda-duza small { width:3.8rem; }
ul.legenda-duza li a:hover span { text-decoration:underline; }
ul.legenda-duza small { color:var(--drugi); text-align:right; }
ul.legenda-duza li.przychod b { color:var(--granat); } ul.legenda-duza li.suma { font-weight:600; }

/* rozwijane koszty */
details.koszt { border:1px solid var(--linia); border-radius:8px; margin:.5rem 0; background:var(--karta); scroll-margin-top:1rem; }
details.koszt summary { padding:.6rem .8rem; cursor:pointer; font-weight:600; list-style:none; display:flex; align-items:center; }
details.koszt summary::-webkit-details-marker { display:none; }
details.koszt summary::after { content:"▾"; margin-left:.5rem; color:var(--drugi); transition:transform .12s; }
details.koszt[open] summary::after { transform:rotate(180deg); }
details.koszt summary span { margin-left:auto; font-weight:400; color:var(--drugi); font-size:.88rem; }
details.koszt > :not(summary) { margin:0 .8rem .8rem; }
details.koszt:target, details.koszt[open] { border-color:var(--turkus); }
.osoby { display:flex; flex-wrap:wrap; gap:.3rem; } .osoby span { background:var(--tlo); border-radius:999px; padding:.1rem .6rem; font-size:.85rem; }

/* tabele */
.tabela { width:100%; overflow-x:auto; }
table { width:100%; border-collapse:collapse; }
th, td { text-align:left; padding:.45rem .5rem; border-bottom:1px solid var(--linia); vertical-align:top; }
th { font-size:.82rem; color:var(--drugi); font-weight:600; }
td.kw, th.kw { text-align:right; white-space:nowrap; }
.karty { display:grid; grid-template-columns:repeat(auto-fit, minmax(13rem, 1fr)); gap:.75rem; }
.karta { border:1px solid var(--linia); border-radius:8px; padding:.75rem; background:var(--karta); }
.karta b { display:block; font-size:1.25rem; }
.kropka { display:inline-block; width:.7rem; height:.7rem; border-radius:50%; background:var(--drugi); }
.kropka.plus { background:var(--plus); } .kropka.minus { background:var(--minus); }

/* wykres wpływów */
.przelacznik { display:inline-flex; border:1px solid var(--linia); border-radius:8px; overflow:hidden; margin-bottom:.75rem; }
.przelacznik a { padding:.3rem .8rem; text-decoration:none; color:var(--tekst); font-size:.9rem; }
.przelacznik a[aria-current] { background:var(--granat); color:#fff; }
.slupki { display:flex; align-items:flex-end; gap:3px; height:13rem; padding-top:.5rem; border-bottom:1px solid var(--linia); overflow-x:auto; }
a.slupek { flex:1 0 1.6rem; display:flex; flex-direction:column; align-items:stretch; height:100%; text-decoration:none; }
.kolumna { flex:1; display:flex; flex-direction:column; justify-content:flex-end; border-radius:4px 4px 0 0; overflow:hidden; }
.kolumna span { display:block; width:100%; }
.kolumna .wplynelo { background:var(--c-wplynelo); } .kolumna .oczekiwane { background:var(--c-oczekiwane); opacity:.6; }
a.slupek:hover .kolumna { filter:brightness(1.15); }
.podpis { font-size:.68rem; color:var(--drugi); text-align:center; padding-top:.25rem; white-space:nowrap; }
a.slupek.biezacy .podpis { color:var(--granat); font-weight:700; }
a.slupek.biezacy .kolumna { box-shadow:0 0 0 1px var(--turkus); }
table.lista-wplywow td:first-child { width:7rem; color:var(--drugi); }
h3 .suma { color:var(--granat); }

/* najbliższe imprezy */
ul.najblizsze { list-style:none; margin:0; padding:0; }
ul.najblizsze li a { display:grid; grid-template-columns:auto minmax(0, 1fr) minmax(12rem, 22rem); gap:.9rem; align-items:center; padding:.55rem 0; border-bottom:1px solid var(--linia); color:inherit; text-decoration:none; }
ul.najblizsze li a:hover .kto b { color:var(--granat); text-decoration:underline; }
.okruszki { margin:0 0 .25rem; font-size:.9rem; } .okruszki a { text-decoration:none; }

form.obsluga { margin-top:1rem; } form.obsluga input { width:6rem; text-align:right; } form.obsluga td { vertical-align:middle; }
form.obsluga tr.reczne td:first-child { font-weight:600; } form.obsluga button { margin-top:.75rem; }
em.szac { font-style:normal; font-size:.72rem; color:var(--turkus); border:1px solid var(--turkus); border-radius:999px; padding:0 .4rem; margin-left:.3rem; white-space:nowrap; }

@media (max-width: 640px) {
  header.gora { gap:.35rem .75rem; } header nav { order:3; width:100%; flex-wrap:nowrap; overflow-x:auto; }
  header nav a { white-space:nowrap; }
  form.obsluga thead { display:none; }
  form.obsluga tr { display:grid; grid-template-columns:repeat(3, 1fr); gap:.2rem .5rem; padding:.45rem 0; border-bottom:1px solid var(--linia); }
  form.obsluga td { border:0; padding:0; text-align:left; font-size:.85rem; }
  form.obsluga td:first-child { grid-column:1 / -1; font-weight:600; }
  form.obsluga td[data-e]::before { content:attr(data-e); display:block; color:var(--drugi); font-size:.72rem; }
  form.obsluga input { width:100%; }
  table.faktury thead { display:none; }
  table.faktury tr { display:grid; grid-template-columns:1fr auto; gap:0 .75rem; padding:.45rem 0; border-bottom:1px solid var(--linia); }
  table.faktury td { border:0; padding:0; text-align:left; }
  table.faktury .f-data { grid-column:1; color:var(--drugi); font-size:.8rem; } table.faktury .f-proc { grid-column:2; grid-row:1; text-align:right; }
  table.faktury .f-nr { grid-column:1 / -1; font-size:.85rem; } table.faktury .f-dost { grid-column:1 / -1; font-weight:600; }
  table.faktury .f-kw, table.faktury .f-ud { text-align:left; font-size:.85rem; } table.faktury .f-ud { text-align:right; }
  table.faktury .f-kw::before, table.faktury .f-ud::before { content:attr(data-e) " "; color:var(--drugi); font-size:.75rem; }
  h1 { font-size:1.35rem; }
  .wynik-uklad { grid-template-columns:1fr; justify-items:center; } ul.legenda-duza { width:100%; }
  ul.najblizsze li a { grid-template-columns:auto minmax(0, 1fr); } ul.najblizsze .ile { grid-column:1 / -1; }
  .slupki { height:10rem; } a.slupek { flex-basis:1.3rem; } .podpis { font-size:.6rem; writing-mode:vertical-rl; transform:rotate(180deg); }
  ol.os-wplat li { grid-template-columns:5.5rem 1fr; } ol.os-wplat li small { grid-column:2; }
  .kafle { grid-template-columns:1fr 1fr; gap:.5rem; } .kafel { padding:.6rem .75rem; } .kafel b { font-size:1.15rem; }
}

/* Alerty cen zakupu */
:root { --d0:#001764; --d1:#46a8ae; --d2:#c47f17; --d3:#8a4fbf; --d4:#6b7280; }
@media (prefers-color-scheme: dark) { :root { --d0:#9db1ff; } }
.d0 { stroke:var(--d0); fill:var(--d0); background:var(--d0); } .d1 { stroke:var(--d1); fill:var(--d1); background:var(--d1); }
.d2 { stroke:var(--d2); fill:var(--d2); background:var(--d2); } .d3 { stroke:var(--d3); fill:var(--d3); background:var(--d3); }
.d4 { stroke:var(--d4); fill:var(--d4); background:var(--d4); }
.wykres-cen { position:relative; display:block; width:100%; height:4.5rem; background:var(--tlo); border-radius:6px; }
.wykres-cen.duzy { height:13rem; }
.wykres-cen svg { display:block; width:100%; height:100%; }
.wykres-cen polyline { fill:none; stroke-width:2; }
.wykres-cen .kropka { position:absolute; width:.45rem; height:.45rem; margin:-.225rem 0 0 -.225rem; border-radius:50%; }
.wykres-cen.duzy .kropka { width:.6rem; height:.6rem; margin:-.3rem 0 0 -.3rem; }
.os-cen { display:flex; justify-content:space-between; gap:.5rem; font-size:.8rem; margin-top:.25rem; }
.alerty { display:grid; grid-template-columns:repeat(auto-fill, minmax(21rem, 1fr)); gap:.9rem; }
article.alert { background:var(--karta); border:1px solid var(--linia); border-left:4px solid var(--minus); border-radius:10px; padding:.8rem 1rem; box-shadow:var(--cien); display:flex; flex-direction:column; gap:.6rem; min-width:0; }
article.alert.zmiana_dostawcy { border-left-color:var(--turkus); }
article.alert.przejrzany { opacity:.6; }
.alert-gora { display:flex; flex-wrap:wrap; align-items:baseline; gap:.25rem .6rem; }
.alert-nazwa { flex:1; min-width:0; font-weight:600; overflow-wrap:anywhere; }
.alert-proc { font-size:1.2rem; }
.znacznik { font-size:.75rem; text-transform:uppercase; letter-spacing:.04em; color:var(--drugi); width:100%; }
.alert dl { display:grid; grid-template-columns:auto 1fr; gap:.15rem .75rem; margin:.5rem 0 0; font-size:.88rem; }
.alert dt { color:var(--drugi); } .alert dd { margin:0; overflow-wrap:anywhere; }
.alert form { margin:0; align-self:flex-end; }
.przewijana { overflow-x:auto; }
table.tabela-zakupow { width:100%; border-collapse:collapse; font-size:.9rem; }
table.tabela-zakupow th, table.tabela-zakupow td { padding:.4rem .5rem; border-bottom:1px solid var(--linia); text-align:left; vertical-align:top; }
table.tabela-zakupow .kw { text-align:right; white-space:nowrap; }
@media (max-width:560px) { .alerty { grid-template-columns:1fr; } }

/* Wydzielanie kosztów poza salę */
form.poza-sala { display:flex; gap:.25rem; margin:0; white-space:nowrap; }
form.poza-sala select, form.poza-sala button { font-size:.8rem; padding:.2rem .4rem; }

/* Wyszukiwarka faktur */
form.szukaj-faktur { display:flex; flex-wrap:wrap; gap:.5rem .75rem; align-items:center; margin:1rem 0; }
form.szukaj-faktur input[type=search] { flex:1 1 21rem; font-size:1.05rem; padding:.55rem .75rem; }
form.szukaj-faktur label { display:flex; align-items:center; gap:.35rem; color:var(--drugi); font-size:.9rem; }
.znak { display:inline-block; padding:.05rem .45rem; border-radius:999px; font-size:.78rem; background:var(--tlo); border:1px solid var(--linia); }
.znak.sprzedaz { border-color:var(--turkus); color:var(--turkus); }
table.wyniki-faktur td { font-size:.88rem; }
@media (max-width:640px) {
  table.wyniki-faktur thead { display:none; }
  table.wyniki-faktur, table.wyniki-faktur tbody { display:block; }
  table.wyniki-faktur tr { display:grid; grid-template-columns:auto 1fr auto; gap:.15rem .6rem; padding:.6rem 0; border-bottom:1px solid var(--linia); }
  table.wyniki-faktur td { display:block; border:0; padding:0; min-width:0; overflow-wrap:anywhere; }
  table.wyniki-faktur td:nth-child(3), table.wyniki-faktur td:nth-child(6), table.wyniki-faktur td:nth-child(7) { grid-column:1 / -1; }
  table.wyniki-faktur td:nth-child(5) { grid-column:3; grid-row:1; font-weight:600; }
  table.wyniki-faktur td:nth-child(4) { grid-column:1 / 3; grid-row:1; }
}

.znak.alert-znak { border-color:var(--minus); color:var(--minus); }
/* zamówienia kuchni */
.znak.kuchnia-brak { background:#f3f3f3; color:#666; }
.znak.kuchnia-wybor, .znak.kuchnia-szkic { background:#fff4d6; color:#7a5a00; }
.znak.kuchnia-zamowione { background:#e3f4e6; color:#1d6b2c; }
details.panel > summary { cursor:pointer; }
.goscie-pola { display:flex; gap:1rem; flex-wrap:wrap; }
.goscie-pola input { width:6rem; }
.menu-sekcje { display:grid; grid-template-columns:repeat(auto-fill, minmax(min(100%, 21rem), 1fr)); gap:.8rem; }
fieldset.menu-sekcja { border:1px solid var(--linia); border-radius:8px; padding:.5rem .8rem .7rem; margin:0; min-width:0; }
fieldset.menu-sekcja legend { font-weight:600; padding:0 .3rem; }
fieldset.menu-sekcja label { display:block; padding:.2rem 0; line-height:1.35; }
fieldset.menu-sekcja input:disabled + * , fieldset.menu-sekcja label:has(input:disabled) { opacity:.55; }
form.menu-wybor textarea { width:100%; box-sizing:border-box; }
input.ilosc { text-align:right; }
.akcje-zamowienia { display:flex; gap:1rem; align-items:center; flex-wrap:wrap; }
.akcje-zamowienia form { margin:0; }
@media print {
  header.gora, .nie-drukuj { display:none !important; }
  .druk-dostawca { break-after:page; }
  .druk-dostawca:last-of-type { break-after:auto; }
}
.przepis-tabela input[name=surowiec] { width:100%; min-width:6rem; box-sizing:border-box; }
.przepis-tabela input[name=ilosc] { width:4.5rem; text-align:right; }
.przepis-tabela td, .przepis-tabela th { padding-left:.3rem; padding-right:.3rem; }
