  :root { --tx:#1f1f1f; --mut:#7a7570; --ln:#e8e4de; --bg:#fbfaf8; --card:#fff; --acc:#2f2b27; --ok:#2e7d4f; --err:#b3261e; --soft:#f3f0eb; }
  * { box-sizing: border-box; }
  body { margin:0; font:14px/1.45 -apple-system, "Segoe UI", Inter, sans-serif; color:var(--tx); background:var(--bg); }
  .hidden { display:none !important; }
  a { color:inherit; }
  input, select, textarea { font:inherit; color:var(--tx); padding:6px 8px; border:1px solid var(--ln); border-radius:6px; background:#fff; width:100%; }
  textarea { min-height:60px; resize:vertical; }
  button { font:inherit; padding:7px 14px; border-radius:6px; border:1px solid var(--acc); background:var(--acc); color:#fff; cursor:pointer; font-weight:600; white-space:nowrap; }
  button.ghost { background:#fff; color:var(--acc); border-color:var(--ln); font-weight:500; }
  button.danger { background:#fff; color:var(--err); border-color:#f0d2cf; font-weight:500; }
  button:disabled { opacity:.5; cursor:default; }
  label.f { display:block; font-size:11px; color:var(--mut); margin:8px 0 2px; }
  .dot { display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:6px; vertical-align:0; flex:none; }
  .tag { display:inline-flex; align-items:center; font-size:11px; padding:1px 8px; border-radius:10px; color:#3a3530; white-space:nowrap; }
  .tag .dot { width:7px; height:7px; margin-right:5px; }

  /* logowanie */
  .center { max-width:360px; margin:12vh auto; background:var(--card); border:1px solid var(--ln); border-radius:10px; padding:24px; }
  .center h1 { font-size:13px; letter-spacing:.1em; margin:0 0 12px; }
  .center button { width:100%; margin-top:14px; }
  .err { color:var(--err); font-size:12px; margin-top:8px; }

  /* góra */
  .top { position:sticky; top:0; z-index:5; display:flex; align-items:center; gap:24px; padding:12px 24px; background:var(--card); border-bottom:1px solid var(--ln); }
  .top b { font-size:12px; letter-spacing:.12em; }
  .top nav { display:flex; gap:4px; flex:1; }
  .top nav a { padding:6px 12px; border-radius:6px; cursor:pointer; color:var(--mut); }
  .top nav a.on { background:var(--soft); color:var(--tx); font-weight:600; }
  .top .out { font-size:12px; color:var(--mut); cursor:pointer; text-decoration:underline; }

  /* biblioteka */
  .toolbar { display:flex; gap:10px; padding:16px 24px; align-items:center; flex-wrap:wrap; }
  .toolbar input[type=search] { max-width:340px; }
  .toolbar select { max-width:200px; }
  .toolbar .chk { display:flex; gap:6px; align-items:center; color:var(--mut); font-size:13px; white-space:nowrap; }
  .toolbar .chk input { width:auto; }
  .toolbar .count { margin-left:auto; color:var(--mut); font-size:13px; }
  .chips { display:flex; gap:6px; flex-wrap:wrap; padding:0 24px 14px; }
  .chips .tag { cursor:pointer; padding:3px 10px; font-size:12px; border:1px solid transparent; }
  .chips .tag.on { border-color:var(--acc); }
  .grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:14px; padding:0 24px 40px; }
  .card { background:var(--card); border:1px solid var(--ln); border-radius:10px; overflow:hidden; cursor:pointer; transition:box-shadow .15s; border-top-width:3px; }
  .card:hover { box-shadow:0 4px 14px rgba(0,0,0,.06); }
  .card .im { aspect-ratio:1; background:var(--soft); display:flex; align-items:center; justify-content:center; color:var(--mut); font-size:12px; }
  .card .im img { width:100%; height:100%; object-fit:contain; mix-blend-mode:multiply; }
  .card .b { padding:10px 12px; }
  .card .n { font-weight:600; font-size:13px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .card .s { color:var(--mut); font-size:12px; margin-top:2px; }
  .card .p { margin:6px 0; font-size:13px; }
  .card.arch { opacity:.5; }

  /* szuflada */
  .shade { position:fixed; inset:0; background:rgba(0,0,0,.2); z-index:9; }
  .drawer { position:fixed; top:0; right:0; bottom:0; width:min(500px, 100%); background:var(--card); z-index:10; overflow:auto; padding:20px 22px 40px; border-left:1px solid var(--ln); }
  .drawer .x { float:right; cursor:pointer; color:var(--mut); font-size:22px; line-height:1; }
  .drawer h2 { font-size:16px; margin:0 0 10px; padding-right:30px; }
  .drawer .imgs { display:flex; gap:8px; overflow-x:auto; padding-top:4px; }
  .drawer .ph { position:relative; flex:none; }
  .drawer .ph img { height:110px; border-radius:6px; background:var(--soft); display:block; }
  .drawer .ph b { position:absolute; top:4px; right:4px; cursor:pointer; background:#fff; border-radius:50%; width:20px; height:20px; text-align:center; line-height:19px; font-size:14px; box-shadow:0 1px 3px rgba(0,0,0,.25); }
  .drawer .ph.pend img { opacity:.8; }
  .drawer .ph img { cursor:grab; }
  .drawer .ph .main { position:absolute; top:4px; left:4px; background:var(--acc); color:#fff; font-size:10px; padding:1px 6px; border-radius:4px; }
  .drawer .ph .tools { position:absolute; left:4px; right:4px; bottom:4px; display:flex; gap:4px; justify-content:space-between; opacity:0; transition:opacity .15s; }
  .drawer .ph:hover .tools { opacity:1; }
  .drawer .ph .tools span { background:#fff; border-radius:4px; padding:0 7px; font-size:12px; cursor:pointer; box-shadow:0 1px 3px rgba(0,0,0,.25); line-height:20px; }
  .drawer .ph .tools .off { visibility:hidden; }
  .drawer .ph.drag { opacity:.35; }
  .drawer .ph.dover img { outline:2px solid var(--acc); outline-offset:-2px; }
  .drawer .hint { font-size:11px; color:var(--mut); margin-top:4px; }
  .lnk { display:flex; gap:6px; }
  .lnk input { flex:1; }
  .rimgs { display:flex; gap:6px; flex-wrap:wrap; margin:8px 0 4px; }
  .rimgs label { position:relative; cursor:pointer; }
  .rimgs img { width:72px; height:72px; object-fit:contain; background:var(--soft); border:2px solid var(--ln); border-radius:6px; display:block; }
  .rimgs input { position:absolute; top:4px; left:4px; width:auto; }
  .rimgs input:checked + img { border-color:var(--acc); }
  .lbl { font-size:11px; font-weight:700; letter-spacing:.08em; color:var(--mut); text-transform:uppercase; margin:14px 0 6px; }
  .drop { border:1.5px dashed var(--ln); border-radius:8px; padding:12px; text-align:center; color:var(--mut); font-size:12px; margin:8px 0 4px; }
  .drop.over { border-color:var(--acc); background:var(--soft); color:var(--tx); }
  .drop .pick { text-decoration:underline; cursor:pointer; color:var(--tx); }
  .drawer .row { display:flex; gap:8px; }
  .drawer .row > div { flex:1; }
  .drawer .acts { display:flex; gap:8px; margin-top:14px; flex-wrap:wrap; }
  .drawer .sec { margin-top:22px; padding-top:14px; border-top:1px solid var(--ln); font-size:11px; font-weight:700; letter-spacing:.08em; color:var(--mut); text-transform:uppercase; }
  .msg { font-size:12px; margin-top:8px; }
  .msg.ok { color:var(--ok); } .msg.err { color:var(--err); }

  /* projekty */
  .proj { display:grid; grid-template-columns:260px 1fr; min-height:calc(100vh - 53px); }
  .proj aside { border-right:1px solid var(--ln); padding:16px; background:var(--card); }
  .proj aside .it { padding:8px 10px; border-radius:6px; cursor:pointer; }
  .proj aside .it:hover { background:var(--soft); }
  .proj aside .it.on { background:var(--soft); font-weight:600; }
  .proj aside .it small { display:block; color:var(--mut); font-weight:400; }
  .proj aside .new { margin-top:14px; padding-top:14px; border-top:1px solid var(--ln); }
  .proj aside .new button { width:100%; margin-top:10px; }
  .pv { padding:20px 28px 60px; overflow-x:auto; }
  .pv .head { display:flex; align-items:flex-end; gap:10px; flex-wrap:wrap; margin-bottom:14px; }
  .pv .head h2 { margin:0; font-size:20px; }
  .pv .head .k { color:var(--mut); }
  .pv .head .sp { flex:1; }
  .pv .bar2 { display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:18px 0 0; }
  .pv .chk { display:flex; gap:6px; align-items:center; font-size:13px; color:var(--mut); white-space:nowrap; }
  .pv .chk input { width:auto; }
  .seg { display:inline-flex; border:1px solid var(--ln); border-radius:7px; overflow:hidden; background:#fff; }
  .seg a { padding:6px 12px; cursor:pointer; font-size:13px; color:var(--mut); }
  .seg a.on { background:var(--acc); color:#fff; }

  .sums { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
  .sum { background:#fff; border:1px solid var(--ln); border-radius:10px; padding:14px 16px; }
  .sum .st { font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--mut); margin-bottom:10px; }
  .sbar { display:flex; height:14px; border-radius:7px; overflow:hidden; background:var(--soft); }
  .sbar i { display:block; height:100%; }
  .sbar i + i { border-left:2px solid #fff; }
  .leg { margin-top:10px; display:grid; gap:3px; }
  .leg div { display:grid; grid-template-columns:16px 1fr auto 58px; gap:6px; align-items:center; font-size:13px; }
  .leg .lv { text-align:right; white-space:nowrap; }
  .leg .lp { text-align:right; color:var(--mut); }
  @media (max-width:1000px) { .sums { grid-template-columns:1fr; } }

  .grp { margin-top:22px; }
  .grp h3 { font-size:13px; letter-spacing:.06em; text-transform:uppercase; margin:0 0 6px; display:flex; justify-content:space-between; align-items:center; }
  .grp h3 .sv { color:var(--mut); font-weight:500; text-transform:none; letter-spacing:0; }
  table.z { width:100%; border-collapse:collapse; background:var(--card); border:1px solid var(--ln); }
  table.z th { text-align:left; font-size:11px; font-weight:600; color:var(--mut); padding:7px 8px; border-bottom:1px solid var(--ln); background:#fdfcfa; white-space:nowrap; }
  table.z td { padding:6px 8px; border-bottom:1px solid var(--ln); vertical-align:middle; font-size:13px; }
  table.z tr:last-child td { border-bottom:0; }
  table.z img { width:48px; height:48px; object-fit:contain; background:var(--soft); border-radius:4px; display:block; }
  table.z input, table.z select { padding:4px 6px; font-size:13px; }
  table.z .w-ozn { width:72px; } table.z .w-il { width:70px; } table.z .w-c { width:100px; }
  table.z .num { text-align:right; white-space:nowrap; }
  table.z .pn { font-weight:600; cursor:pointer; } table.z .ps { color:var(--mut); font-size:12px; margin:2px 0; }
  table.z .del { color:var(--mut); cursor:pointer; font-size:16px; }
  .empty { color:var(--mut); font-size:13px; padding:10px 0; }
  .total { margin-top:22px; text-align:right; font-size:15px; font-weight:700; }
  .st-propozycja{color:#7a7570} .st-do_akceptacji{color:#a46a00} .st-zaakceptowane{color:#2e7d4f} .st-odrzucone{color:#b3261e} .st-zamowione{color:#2457a6} .st-dostarczone{color:#1f1f1f}

  /* ceny w sklepach, duplikaty */
  .sbadge { display:inline-block; font-size:11px; padding:1px 7px; border-radius:8px; margin:6px 0 0 4px; }
  .sbadge.chg { background:#fbf1dc; color:#7a5200; }
  .sbadge.na { background:#fdecea; color:var(--err); }
  .chips .tag.ceny { background:#fbf1dc; color:#7a5200; }
  .stan { font-size:12px; background:var(--soft); border-radius:8px; padding:8px 10px; margin:8px 0; }
  .stan.chg { background:#fbf1dc; } .stan.na { background:#fdecea; }
  .stan button { padding:4px 10px; font-size:12px; }
  .dg { border:1px solid var(--ln); border-radius:10px; padding:10px 12px; margin:12px 0; }
  .dr { display:grid; grid-template-columns:auto 44px 1fr auto; gap:10px; align-items:center; padding:6px 0; font-size:13px; border-bottom:1px solid var(--ln); }
  .dr:last-of-type { border-bottom:0; }
  .dr img { width:44px; height:44px; object-fit:contain; background:var(--soft); border-radius:4px; }
  .dr input { width:auto; }
  .dr .ps { color:var(--mut); font-size:12px; }

  /* zakładki projektu i karta projektu */
  .ptop { display:flex; gap:2px; border-bottom:1px solid var(--ln); margin:-20px -28px 18px; padding:0 22px; background:#fff; overflow-x:auto; }
  .ptop a { padding:12px 14px 10px; cursor:pointer; color:var(--mut); border-bottom:2px solid transparent; white-space:nowrap; font-size:14px; }
  .ptop .ptsp { flex:1; min-width:12px; } .ptop a.ptkl { color:var(--acc); font-weight:600; position:sticky; right:-22px; background:#fff; box-shadow:-12px 0 12px -6px #fff; margin-right:-8px; }
  .ptop a.on { color:var(--tx); border-bottom-color:var(--acc); font-weight:600; }
  .ptop .tb { font-style:normal; font-size:11px; background:var(--soft); color:var(--mut); border-radius:8px; padding:0 6px; margin-left:6px; }
  .ptop .tb.red { background:#fdecea; color:var(--err); font-weight:600; }
  .btnlike { display:inline-block; padding:7px 14px; border:1px solid var(--ln); border-radius:6px; cursor:pointer; background:#fff; font-weight:500; color:var(--acc); }
  .khero { display:flex; gap:18px; align-items:center; background:#fff; border:1px solid var(--ln); border-radius:12px; padding:14px; margin-bottom:16px; }
  .kcov { width:200px; aspect-ratio:16/10; border-radius:8px; overflow:hidden; background:var(--soft); display:flex; align-items:center; justify-content:center; flex:none; }
  .kcov img { width:100%; height:100%; object-fit:cover; }
  .kht { flex:1; min-width:0; }
  .kht h2 { margin:6px 0 2px; font-size:22px; }
  .kst { display:flex; gap:6px; align-items:center; }
  .kst .pst { position:static; background:var(--soft); }
  .kdays { margin-top:6px; font-size:13px; color:var(--mut); }
  .kdays.late { color:var(--err); font-weight:600; }
  .kgrid { display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:14px; }
  .kw { background:#fff; border:1px solid var(--ln); border-radius:12px; padding:14px 16px; display:flex; flex-direction:column; gap:6px; }
  .kw.kwide { grid-column:1 / -1; }
  .kwh { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:4px; }
  .kwh b { font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--mut); }
  .kgo { font-size:12px; color:var(--mut); cursor:pointer; text-decoration:underline; }
  .kgos { display:flex; gap:12px; margin-top:4px; }
  .kv { display:flex; justify-content:space-between; gap:10px; font-size:13px; padding:2px 0; border-bottom:1px dashed var(--ln); }
  .kv span { color:var(--mut); } .kv b { font-weight:500; text-align:right; }
  .knote { font-size:13px; background:var(--soft); border-radius:8px; padding:7px 10px; white-space:pre-wrap; margin-top:4px; }
  .krow { display:flex; gap:8px; align-items:center; font-size:13px; padding:3px 0; }
  .krow > span:last-child { margin-left:auto; color:var(--mut); font-size:12px; white-space:nowrap; }
  .krow.late, .krow.late > span:last-child { color:var(--err); }
  .kdoc { cursor:pointer; } .kdoc:hover { color:var(--acc); text-decoration:underline; }
  .dotst { width:8px; height:8px; border-radius:50%; flex:none; background:#c9c3bb; }
  .dotst.w_trakcie { background:#e0a83c; } .dotst.zakonczony { background:var(--ok); }
  .kalert { font-size:12px; color:var(--err); font-weight:600; }
  .kmeet { background:#f3f7f4; border-radius:8px; padding:7px 10px; cursor:pointer; display:flex; flex-direction:column; font-size:13px; }
  .kmeet span { color:var(--mut); font-size:12px; }
  .klast { font-size:12px; color:var(--mut); }
  .kchips { display:flex; gap:4px; flex-wrap:wrap; margin-top:4px; }
  .kchips [data-go] { cursor:pointer; }
  .kdocs { display:grid; grid-template-columns:repeat(auto-fill, minmax(90px, 1fr)); gap:6px; margin-bottom:6px; }
  .kdk { font-size:11px; background:var(--soft); border-radius:8px; padding:6px 8px; cursor:pointer; display:flex; flex-direction:column; gap:2px; line-height:1.2; min-width:0; overflow-wrap:anywhere; }
  .kdk b { font-size:16px; }
  .kdk.zero { opacity:.5; }
  .kcon { display:flex; justify-content:space-between; gap:10px; font-size:13px; padding:4px 0; border-bottom:1px dashed var(--ln); }
  .kcon span { display:block; color:var(--mut); font-size:12px; }
  .kca { text-align:right; font-size:12px; display:flex; flex-direction:column; }
  .kca a { color:var(--acc); }
  .kwiz { display:flex; gap:8px; overflow-x:auto; }
  .kwiz img { height:120px; border-radius:6px; cursor:pointer; background:var(--soft); min-width:80px; }
  .ext { display:inline-block; min-width:38px; text-align:center; font-size:10px; font-weight:700; text-transform:uppercase; background:var(--soft); color:#5a534c; border-radius:4px; padding:2px 4px; }
  .ext.big { font-size:16px; padding:28px 0; width:100%; }
  .chips .tag.dim { opacity:.55; }
  #projView .chips .tag { cursor:pointer; padding:3px 10px; font-size:12px; border:1px solid var(--ln); background:#fff; }
  #projView .chips .tag.on { border-color:var(--acc); background:var(--soft); }
  table.dok img.dth { width:40px; height:40px; object-fit:cover; border-radius:4px; }
  .dname { cursor:pointer; font-weight:600; color:var(--tx); }
  .dname:hover { text-decoration:underline; }
  .wchips { display:flex; gap:6px; flex-wrap:wrap; margin:0 0 6px; }
  .wchips .tag { cursor:pointer; padding:3px 10px; font-size:12px; border:1px solid var(--ln); background:#fff; }
  .wchips .tag.on { border-color:var(--acc); background:var(--soft); }
  .wsel { margin-top:6px; padding:3px 6px; font-size:12px; }
  .dgrid { display:grid; grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); gap:12px; }
  .dcard { background:#fff; border:1px solid var(--ln); border-radius:10px; overflow:hidden; cursor:pointer; }
  .dcard img { width:100%; aspect-ratio:4/3; object-fit:cover; display:block; background:var(--soft); }
  .dcard div { padding:8px 10px; font-size:13px; } .dcard small { display:block; color:var(--mut); }
  .kini { display:flex; align-items:center; justify-content:center; color:#fff; font-weight:600; border-radius:50% !important; }
  .scard { display:flex; gap:14px; background:#fff; border:1px solid var(--ln); border-radius:10px; padding:12px 14px; margin-bottom:10px; cursor:pointer; }
  .scard:hover { box-shadow:0 4px 14px rgba(0,0,0,.05); }
  .scard.up { border-left:3px solid var(--ok); }
  .sdate { width:54px; text-align:center; flex:none; display:flex; flex-direction:column; line-height:1.15; }
  .sdate b { font-size:22px; } .sdate span { font-size:12px; text-transform:uppercase; color:var(--mut); } .sdate small { font-size:12px; margin-top:2px; }
  .sbody { flex:1; min-width:0; }
  .stop { display:flex; gap:8px; align-items:center; }
  .snote { margin-top:8px; font-size:13px; white-space:pre-wrap; background:var(--soft); border-radius:8px; padding:7px 10px; }
  .snote.ust { background:#f3f7f4; }
  .snote small { display:block; font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--mut); margin-bottom:2px; }
  .tl { position:relative; background:#fff; border:1px solid var(--ln); border-radius:10px; padding:30px 12px 10px; margin-bottom:14px; overflow:hidden; }
  .tlm { position:absolute; left:calc(12px + 180px); right:12px; top:0; height:24px; border-bottom:1px solid var(--ln); }
  .tlm span { position:absolute; top:5px; font-size:11px; color:var(--mut); padding-left:4px; border-left:1px solid var(--ln); height:100vh; }
  .tlr { display:flex; align-items:center; height:28px; position:relative; }
  .tll { width:180px; flex:none; font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; padding-right:8px; }
  .tlt { position:relative; flex:1; height:100%; }
  .tlb { position:absolute; top:7px; height:14px; border-radius:4px; background:#cfc7bd; }
  .tlb.w_trakcie { background:#e0a83c; } .tlb.zakonczony { background:#7fb48f; } .tlb.late { background:var(--err); }
  .tlk { position:absolute; top:7px; width:12px; height:12px; transform:translateX(-6px) rotate(45deg); background:#8a7564; }
  .tlk.zakonczony { background:var(--ok); } .tlk.late { background:var(--err); }
  .tltrack { position:absolute; left:calc(12px + 180px); right:12px; top:24px; bottom:0; pointer-events:none; z-index:1; }
  .tlnow { position:absolute; top:0; bottom:0; width:0; border-left:2px dashed var(--err); }
  .tlnow span { position:absolute; top:-2px; left:3px; font-size:10px; color:var(--err); }
  .tlb, .tlk { cursor:grab; }
  .tlb.drag, .tlk.drag { cursor:grabbing; opacity:.85; outline:2px solid var(--acc); outline-offset:1px; z-index:3; }
  .tlb.drag::after, .tlk.drag::after { content:attr(data-tip); position:absolute; top:-22px; left:0; white-space:nowrap; font-size:11px; background:var(--acc); color:#fff; padding:1px 6px; border-radius:4px; }
  .tlk.drag::after { transform:rotate(-45deg); left:10px; }
  .tlh { position:absolute; right:-2px; top:-2px; bottom:-2px; width:8px; cursor:ew-resize; }
  .tlsep { margin:8px 0 2px; padding-top:6px; border-top:1px dashed var(--ln); font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--mut); }
  .tlm-dot { position:absolute; top:8px; width:12px; height:12px; margin-left:-6px; border-radius:50%; background:#5f7fa3; border:2px solid #fff; box-shadow:0 0 0 1px #5f7fa3; cursor:pointer; z-index:2; }
  .tlm-dot.past { background:#b8c4d2; box-shadow:0 0 0 1px #b8c4d2; }
  .tlm-dot.t-budowa { background:#c48f7a; box-shadow:0 0 0 1px #c48f7a; }
  .tlm-dot:hover { transform:scale(1.3); }
  .tldl { cursor:pointer; } .tldl:hover .tll { text-decoration:underline; }
  .tldl .tll small { color:var(--mut); }
  .tldl .tlb, .tldl .tlk { cursor:pointer; }
  .tlb.dl { height:6px; top:11px; background:#d9cfe6; }
  .tlk.dl { background:#7a6a9a; border-radius:2px; } .tlk.dl.zakonczony { background:var(--ok); } .tlk.dl.late { background:var(--err); } .tlk.dl.w_trakcie { background:#e0a83c; }
  .tlb.dl.late { background:#f3c5c0; } .tlb.dl.zakonczony { background:#bfdcc8; } .tlb.dl.w_trakcie { background:#f1d9a6; }
  .dl-late { background:#fdecea; color:var(--err); } .dl-zakonczony { background:#eef6f0; color:var(--ok); } .dl-w_trakcie { background:#fbf1dc; color:#7a5200; }
  table.dlt tr[data-dlrow] { cursor:pointer; }
  .kdl { margin-bottom:4px; }
  table.har td.mv a { cursor:pointer; color:var(--mut); padding:0 2px; }
  .hs-w_trakcie { color:#a46a00; } .hs-zakonczony { color:var(--ok); }
  @media (max-width:800px) { .khero { flex-wrap:wrap; } .kcov { width:100%; } }

  /* dashboard projektów */
  h1.dh { font-size:20px; margin:0 8px 0 0; font-weight:600; }
  .kpis { display:grid; grid-template-columns:repeat(auto-fit, minmax(170px, 1fr)); gap:10px; padding:0 24px 14px; }
  .kpi { background:#fff; border:1px solid var(--ln); border-radius:10px; padding:12px 14px; cursor:pointer; display:flex; flex-direction:column; gap:2px; }
  .kpi b { font-size:22px; font-weight:600; line-height:1.1; }
  .kpi span { font-size:12px; color:var(--mut); }
  .kpi.red:not(.zero) b { color:var(--err); } .kpi.amber:not(.zero) b { color:#a46a00; }
  .kpi.zero b { color:var(--tx); }
  .kpi.on { border-color:var(--acc); box-shadow:inset 0 0 0 1px var(--acc); }
  #dashChips .tag { cursor:pointer; padding:3px 10px; font-size:12px; border:1px solid var(--ln); background:#fff; }
  #dashChips .tag.on { border-color:var(--acc); background:var(--soft); }
  .pgrid { display:grid; grid-template-columns:repeat(auto-fill, minmax(270px, 1fr)); gap:16px; padding:0 24px 40px; }
  .pcard { background:#fff; border:1px solid var(--ln); border-radius:12px; overflow:hidden; cursor:pointer; transition:box-shadow .15s; display:flex; flex-direction:column; }
  .pcard:hover { box-shadow:0 6px 18px rgba(0,0,0,.07); }
  .pcov { position:relative; aspect-ratio:16/10; background:var(--soft); display:flex; align-items:center; justify-content:center; overflow:hidden; }
  .pcov img { width:100%; height:100%; object-fit:cover; }
  .pcov.edit { aspect-ratio:16/8; border-radius:8px; margin-bottom:4px; }
  .pini { width:64px; height:64px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:#fff; font-weight:600; font-size:22px; letter-spacing:.04em; }
  .pst { position:absolute; left:10px; top:10px; font-size:11px; font-weight:600; padding:2px 9px; border-radius:10px; background:rgba(255,255,255,.92); }
  .ps-oferta { color:#2457a6; } .ps-w_toku { color:var(--ok); } .ps-wstrzymany { color:#a46a00; } .ps-zakonczony { color:var(--mut); }
  .pedit { position:absolute; right:10px; top:8px; width:30px; height:30px; padding:0; border-radius:50%; background:rgba(255,255,255,.92); color:var(--acc); border:0; font-size:16px; opacity:0; transition:opacity .15s; }
  .pcard:hover .pedit { opacity:1; }
  @media (hover:none) { .pedit { opacity:1; } }
  .pbd { padding:12px 14px 12px; display:flex; flex-direction:column; gap:5px; flex:1; }
  .pbd .pn { font-weight:600; font-size:15px; }
  .pbd .ps { color:var(--mut); font-size:12px; }
  .petap { font-size:12px; align-self:flex-start; background:var(--soft); padding:1px 8px; border-radius:4px; }
  .pline { display:flex; align-items:center; gap:6px; font-size:12px; color:var(--mut); }
  .pline .bbar { flex:1; width:auto; margin:0; }
  .pflags { display:flex; gap:4px; flex-wrap:wrap; }
  .pf { font-size:11px; padding:1px 7px; border-radius:8px; background:var(--soft); color:#4a4540; }
  .pf.red { background:#fdecea; color:var(--err); font-weight:600; } .pf.amber { background:#fbf1dc; color:#7a5200; }
  .pfoot { display:flex; justify-content:space-between; gap:8px; font-size:12px; color:var(--mut); margin-top:auto; padding-top:6px; border-top:1px solid var(--ln); }
  .asnav { display:flex; justify-content:space-between; font-size:12px; margin-bottom:12px; }
  .asnav a { color:var(--mut); cursor:pointer; text-decoration:underline; }

  /* elektryka */
  .elser { display:flex; gap:8px; align-items:center; flex-wrap:wrap; background:#fff; border:1px solid var(--ln); border-radius:10px; padding:10px 14px; margin-bottom:14px; font-size:13px; }
  .elser .bl { font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--mut); }
  .eschip { display:inline-flex; gap:6px; align-items:center; border:1px solid var(--ln); border-radius:16px; padding:3px 10px; cursor:pointer; }
  .eschip:hover { background:var(--soft); }
  .eschip small { color:var(--mut); }
  i.sw { display:inline-block; width:12px; height:12px; border-radius:3px; box-shadow:inset 0 0 0 1px rgba(0,0,0,.25); vertical-align:-1px; flex:none; }
  .frs { display:flex; flex-wrap:wrap; gap:12px; align-items:stretch; }
  .fr { background:#fff; border:1px solid var(--ln); border-radius:10px; padding:10px; width:250px; display:flex; flex-direction:column; gap:6px; }
  .frh { display:flex; gap:6px; align-items:center; }
  .fozn { width:74px; font-weight:700; padding:4px 6px; }
  .fsel { flex:1; min-width:0; padding:4px 6px; font-size:12px; }
  .fx { cursor:pointer; color:var(--mut); padding:0 3px; font-size:15px; }
  .fx:hover { color:var(--tx); }
  .frame { align-self:center; display:flex; gap:5px; padding:9px; border-radius:9px; box-shadow:inset 0 0 0 1px rgba(0,0,0,.18), 0 1px 4px rgba(0,0,0,.1); margin:6px 0; }
  .frame.pion { flex-direction:column; }
  .slot { width:48px; height:48px; border-radius:5px; background:rgba(255,255,255,.55); border:1px dashed rgba(0,0,0,.3); display:flex; flex-direction:column; align-items:center; justify-content:center; cursor:pointer; text-align:center; overflow:hidden; color:#666; }
  .slot.on { border:1px solid rgba(0,0,0,.22); box-shadow:inset 0 0 0 1px rgba(255,255,255,.25); }
  .slot b { font-size:12px; }
  .slot:not(.on) b { font-weight:400; }
  .slot small { font-size:8px; line-height:1.1; max-width:46px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; opacity:.85; }
  .slot:hover { outline:2px solid var(--acc); outline-offset:1px; }
  .frf { display:flex; gap:5px; flex-wrap:wrap; font-size:12px; color:var(--mut); align-items:center; }
  .frf select, .frf input { width:auto; padding:3px 5px; font-size:12px; }
  .fin { font-size:12px; padding:4px 6px; }
  .fradd { width:250px; min-height:150px; border:1.5px dashed var(--ln); border-radius:10px; display:flex; flex-direction:column; gap:8px; align-items:center; justify-content:center; padding:12px; }
  .fradd select { font-size:12px; }
  table.ez tr.sub td { background:var(--soft); font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--mut); }
  table.ez tr.tot td { font-weight:700; background:#fdfcfa; }
  table.mx th, table.mx td { text-align:center; } table.mx td:first-child, table.mx th:first-child { text-align:left; }
  .abbr { display:inline-block; min-width:30px; font-size:11px; background:var(--soft); border-radius:4px; padding:0 4px; text-align:center; }
  td.gd { max-width:280px; }

  /* zakupy */
  .zchips { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-bottom:6px; }
  .zchips .tag { cursor:pointer; padding:3px 10px; font-size:12px; border:1px solid var(--ln); background:#fff; }
  .zchips .tag.on { border-color:var(--acc); background:var(--soft); }
  .zchips .tag.lt { color:var(--err); border-color:#f3c5c0; }
  table.z tr.lrow td { background:#fdf3f2; }

  /* warianty, budżet, marża */
  .vchip { display:inline-block; min-width:20px; text-align:center; font-size:11px; font-weight:700; background:#e9e1f2; color:#5b4a73; border-radius:4px; padding:0 5px; margin-right:6px; cursor:pointer; }
  table.z tr.vrow td { background:#fbf9fd; }
  td.nc { color:var(--mut); text-decoration:line-through; }
  .lnkb { font-size:11px; color:var(--mut); text-decoration:underline; cursor:pointer; margin-left:6px; white-space:nowrap; font-weight:400; letter-spacing:0; text-transform:none; }
  .bud { display:flex; gap:10px; align-items:center; background:#fff; border:1px solid var(--ln); border-radius:10px; padding:10px 14px; margin-bottom:14px; flex-wrap:wrap; font-size:13px; }
  .bud .bl { font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--mut); }
  .bbar { display:inline-block; width:160px; height:8px; background:var(--soft); border-radius:4px; overflow:hidden; vertical-align:middle; margin:0 4px; }
  .grp .bbar { width:70px; }
  .bbar i { display:block; height:100%; background:var(--ok); }
  .bbar i.over { background:var(--err); }
  .overt { color:var(--err); font-weight:600; }

  /* szybkie dodawanie */
  .card { position:relative; }
  .qadd { position:absolute; top:8px; right:8px; width:32px; height:32px; border-radius:50%; padding:0; font-size:19px; line-height:1; font-weight:400; background:#fff; color:var(--acc); border:1px solid var(--ln); box-shadow:0 1px 4px rgba(0,0,0,.12); opacity:0; transition:opacity .15s; z-index:1; }
  .card:hover .qadd, .qadd:focus { opacity:1; }
  .qadd:hover { background:var(--acc); color:#fff; }
  @media (hover:none) { .qadd { opacity:1; } }
  .qpop { position:fixed; z-index:20; width:290px; background:#fff; border:1px solid var(--ln); border-radius:10px; box-shadow:0 8px 28px rgba(0,0,0,.14); padding:12px 14px; }
  .qpop .qh { font-weight:600; font-size:13px; }
  .qpop .row { display:flex; gap:8px; }
  .qpop .row > div { flex:1; }
  .pkchips { display:flex; gap:5px; flex-wrap:wrap; margin:8px 0; }
  .pkchips .tag { cursor:pointer; padding:2px 9px; border:1px solid transparent; }
  .pkchips .tag.on { border-color:var(--acc); }
  .pklist { display:flex; flex-direction:column; gap:6px; }
  .pk { display:grid; grid-template-columns:52px 1fr auto; gap:10px; align-items:center; padding:6px; border:1px solid var(--ln); border-radius:8px; cursor:pointer; }
  .pk:hover { background:var(--soft); }
  .pk.done { border-color:var(--ok); background:#eef6f0; }
  .pk .pim { width:52px; height:52px; background:var(--soft); border-radius:6px; overflow:hidden; }
  .pk .pim img { width:100%; height:100%; object-fit:contain; mix-blend-mode:multiply; }
  .pk .pn { font-weight:600; font-size:13px; }
  .pk .ps { color:var(--mut); font-size:12px; }
  .pk .pused { font-size:11px; color:var(--ok); margin-top:2px; }
  .pk button { padding:5px 10px; font-size:12px; }

  /* komentarze i udostępnianie */
  .cm { display:inline-block; font-size:11px; color:var(--mut); cursor:pointer; margin-top:3px; padding:1px 7px; border-radius:8px; border:1px solid var(--ln); white-space:nowrap; }
  .cm.none { opacity:.5; }
  .cm.new { background:#fdecea; color:var(--err); border-color:#f3c5c0; font-weight:600; opacity:1; }
  .thread { max-height:52vh; overflow:auto; display:flex; flex-direction:column; gap:8px; margin:12px 0; }
  .bub { padding:8px 10px; border-radius:10px; font-size:13px; max-width:88%; white-space:pre-wrap; word-wrap:break-word; }
  .bub.cl { background:var(--soft); align-self:flex-start; }
  .bub.me { background:#eef3ef; align-self:flex-end; }
  .bub .bh { font-size:11px; color:var(--mut); margin-bottom:3px; white-space:normal; }
  .bub .bh b { color:var(--tx); }
  .bub .akceptacja { color:var(--ok); font-weight:600; } .bub .odrzucenie { color:var(--err); font-weight:600; }
  .dst { font-size:11px; padding:1px 7px; border-radius:8px; background:var(--soft); }
  .ds-oczekuje { background:#fbf1dc; color:#7a5200; } .ds-zaakceptowany { background:#eef6f0; color:var(--ok); } .ds-odrzucony { background:#fdecea; color:var(--err); }
  .chk2 { display:flex; gap:8px; align-items:center; margin-top:10px; font-size:13px; }
  .chk2 input { width:auto; }
  button.alert { border-color:#f3c5c0; color:var(--err); }

  /* moodboard */
  .ptabs { align-self:center; margin-left:14px; }
  .hint { font-size:11px; color:var(--mut); }
  .mbrooms { display:flex; gap:6px; flex-wrap:wrap; margin:4px 0 14px; }
  .mbrooms .tag { cursor:pointer; padding:3px 10px; font-size:12px; border:1px solid transparent; }
  .mbrooms .tag.on { border-color:var(--acc); }
  .mbwrap { display:grid; grid-template-columns:220px 1fr; gap:16px; align-items:start; }
  .mbside { background:#fff; border:1px solid var(--ln); border-radius:10px; padding:12px; position:sticky; top:70px; }
  .mbside .st { font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--mut); margin:14px 0 6px; }
  .mbside .st:first-child { margin-top:0; }
  .mbprods { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; max-height:300px; overflow:auto; }
  .mp { position:relative; aspect-ratio:1; background:var(--soft); border-radius:6px; overflow:hidden; cursor:grab; display:flex; align-items:center; justify-content:center; font-size:10px; text-align:center; color:var(--mut); padding:2px; }
  .mp img { width:100%; height:100%; object-fit:contain; mix-blend-mode:multiply; }
  .mp b { position:absolute; left:2px; bottom:2px; background:#fff; font-size:9px; padding:0 4px; border-radius:3px; color:var(--tx); }
  .mp.on { outline:2px solid var(--ok); outline-offset:-2px; }
  .mbadd { display:block; padding:6px 8px; border:1px dashed var(--ln); border-radius:6px; margin-bottom:6px; cursor:pointer; font-size:13px; position:relative; }
  .mbadd:hover { background:var(--soft); }
  .mbpal { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:8px; }
  .mbpal i { width:28px; height:28px; border-radius:6px; cursor:pointer; box-shadow:inset 0 0 0 1px rgba(0,0,0,.08); }
  .mbtools { display:flex; gap:6px; flex-wrap:wrap; align-items:center; min-height:34px; margin-bottom:8px; }
  .mbtools button { padding:4px 10px; font-size:12px; }
  .board { position:relative; aspect-ratio:1.6; background:#fff; border:1px solid var(--ln); border-radius:4px; overflow:hidden; container-type:inline-size; isolation:isolate; touch-action:none; user-select:none; }
  .board .empty-b { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--mut); font-size:13px; text-align:center; padding:20px; pointer-events:none; }
  .mb-el { position:absolute; cursor:move; display:flex; flex-direction:column; }
  .mb-el.sel { outline:1.5px solid var(--acc); outline-offset:2px; }
  .mb-el .rs { position:absolute; right:-7px; bottom:-7px; width:13px; height:13px; background:#fff; border:1.5px solid var(--acc); border-radius:2px; cursor:nwse-resize; display:none; z-index:2; }
  .mb-el.sel .rs { display:block; }
  .mb-el .im { flex:1; min-height:0; display:flex; align-items:center; justify-content:center; overflow:hidden; color:var(--mut); font-size:12px; }
  .mb-el .im img { width:100%; height:100%; display:block; pointer-events:none; }
  .mb-el .im.contain img { object-fit:contain; mix-blend-mode:multiply; }
  .mb-el .im.cover img { object-fit:cover; }
  .mb-el .cap { font-size:clamp(7px, .9cqw, 13px); line-height:1.25; padding-top:.4cqw; color:#3a3530; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; flex:none; }
  .mb-el .cap small { display:block; color:var(--mut); }
  .t-kolor .sw { flex:1; border-radius:2px; box-shadow:inset 0 0 0 1px rgba(0,0,0,.06); }
  .t-tekst .tx { width:100%; line-height:1.15; font-weight:500; letter-spacing:-.01em; white-space:pre-wrap; outline:none; color:#2b2724; }
  .t-tekst .tx[contenteditable="true"] { cursor:text; background:#fffbe6; }
  @media (max-width:900px) { .mbwrap { grid-template-columns:1fr; } .mbside { position:static; } }

  /* wydruk */
  #print { display:none; }
  @page { size:A4 landscape; margin:12mm; }
  /* realizacja */
  .rtabs .tb { font-style:normal; font-size:11px; border-radius:8px; padding:0 6px; margin-left:4px; }
  .rtabs .tb.red { background:#fdecea; color:var(--err); font-weight:600; }
  .rtabs a.on .tb.red { background:#fff; }
  .tscroll { overflow-x:auto; border-radius:2px; }
  table.prt td.mv a { cursor:pointer; color:var(--mut); padding:0 2px; }
  table.prt td, table.ust td { white-space:nowrap; }
  table.prt td:nth-child(2), table.ust td.uop { white-space:normal; }
  table.prt .prbr { border:0; background:transparent; font-size:11px !important; color:var(--mut); padding:1px 6px !important; margin-top:1px; }
  table.prt .prd { width:128px; }
  table.prt td { padding:5px 5px; }
  .bbar.mini { display:inline-block; width:46px; vertical-align:middle; margin-left:6px; }
  .rdel { color:var(--mut); cursor:pointer; font-size:16px; }
  .rdel:hover { color:var(--err); }
  select.prs-w_toku, select.uss-w_naprawie { background:#fbf1dc; } select.prs-do_odbioru, select.uss-do_sprawdzenia { background:#e8eef6; }
  select.prs-odebrane, select.uss-zamknieta { background:#eef3ef; } select.uss-otwarta { background:#fdf3f2; }
  table.ust tr[data-usid] { cursor:pointer; } table.ust tr[data-usid]:hover td { background:#fdfcfa; }
  table.ust tr.usdone td { color:var(--mut); } table.ust tr.usdone td.uop b { text-decoration:line-through; font-weight:500; }
  .tlb .tlp { position:absolute; left:0; top:0; bottom:0; background:rgba(0,0,0,.2); border-radius:4px 0 0 4px; pointer-events:none; }
  .tlr.tlpr .tll small { color:var(--mut); }
  .tlm-dot.t-wizyta { background:#2f2b27; box-shadow:0 0 0 1px #2f2b27; border-radius:3px; }
  .tlm-dot.t-wizyta.past { background:#8f8780; box-shadow:0 0 0 1px #8f8780; }
  .tlm, .tlm span { pointer-events:none; }
  .tlfh { cursor:pointer; user-select:none; position:relative; z-index:2; } .tlfh:hover { color:var(--tx); }
  .tlsep.tlfh small { font-weight:500; letter-spacing:0; text-transform:none; margin-left:6px; }
  .tlar { display:inline-block; width:14px; color:var(--mut); }
  .tlsum { cursor:pointer; } .tlsum .tll { color:var(--mut); }
  .tlb.sumb { cursor:pointer; background:#cfc7bd; } .tlb.sumb.late { background:#e9b4ae; } .tlb.sumb.w_trakcie { background:#ecc98a; } .tlb.sumb.zakonczony { background:#a9cdb4; }
  .tlb.sumb .tlp { background:rgba(0,0,0,.28); }
  .tlk.sumk { cursor:default; }
  .tlall { display:flex; gap:4px; justify-content:flex-end; margin:-6px 0 6px; }
  /* harmonogram biura */
  .dplan { padding:0 24px 40px; }
  .plhead { display:flex; gap:12px; align-items:center; margin-bottom:10px; flex-wrap:wrap; }
  .plhead .hint { font-size:12px; color:var(--mut); max-width:560px; }
  .tl.plan { padding-top:30px; }
  .plw { height:20px; } .plw span { position:absolute; top:3px; font-size:10px; color:var(--mut); padding-left:3px; border-left:1px solid var(--ln); height:14px; line-height:14px; }
  .hm { height:26px; }
  .hmc { position:absolute; top:3px; bottom:3px; display:flex; align-items:center; justify-content:center; font-style:normal; font-size:11px; font-weight:600; border-right:2px solid #fff; border-radius:3px; cursor:default; }
  .hmc.l1 { background:#e6efe8; color:#2e6b45; } .hmc.l2 { background:#c9dfcf; color:#245a39; }
  .hmc.l3 { background:#f3dcab; color:#7a5200; } .hmc.l4 { background:#efb7ae; color:#8f1d15; }
  .hmc.tot { background:var(--soft); color:var(--tx); } .hmc.mt { background:#e3e9f1; color:#3d5a80; }
  .hm.tot .tll { font-weight:600; }
  .plg { background-image:linear-gradient(to right, #f1ede7 1px, transparent 1px); }
  .plp .tll { display:flex; align-items:center; gap:4px; } .plp .tll small, .pls .tll small { color:var(--mut); font-size:11px; }
  .plt { cursor:pointer; color:var(--mut); width:14px; flex:none; text-align:center; }
  .pln { cursor:pointer; font-weight:600; overflow:hidden; text-overflow:ellipsis; } .pln:hover { text-decoration:underline; }
  .pls .tll { padding-left:20px; }
  .tlb.pb { cursor:default; overflow:hidden; } .tlb.pb em { font-style:normal; font-size:9.5px; line-height:14px; padding:0 4px; color:#3a3530; white-space:nowrap; display:block; overflow:hidden; text-overflow:ellipsis; }
  .tlb.pb.late em { color:#fff; }
  .tlb.pfb { background:repeating-linear-gradient(45deg, #ece7e0 0 6px, #f7f4f0 6px 12px); border:1px dashed #cfc7bd; }
  .tl.plan .tlk { cursor:default; }
  .plr { position:absolute; bottom:2px; height:4px; background:#d8cbbb; border-radius:2px; overflow:hidden; }
  .plr s { display:block; height:100%; background:#8a7564; } .plr.big { top:9px; bottom:auto; height:10px; }
  .pld { position:absolute; top:2px; width:7px; height:7px; margin-left:-3px; border-radius:50%; background:#5f7fa3; z-index:2; }
  .pld.wz { background:#2f2b27; border-radius:1px; }
  .plleg { display:flex; gap:14px; flex-wrap:wrap; font-size:11px; color:var(--mut); margin-top:8px; align-items:center; }
  .plleg span { display:flex; gap:5px; align-items:center; }
  .plleg .hmc { position:static; width:16px; height:12px; border:0; }
  .plleg .lgb { width:18px; height:8px; border-radius:3px; background:#cfc7bd; display:inline-block; } .lgb.w { background:#e0a83c; } .lgb.z { background:#7fb48f; } .lgb.l { background:var(--err); }
  .plleg .plr.lg { position:static; width:18px; display:inline-block; } .plleg .pld.lg { position:static; margin:0; }
  #dashView { margin-right:6px; }
  .ustv { padding:16px 24px 50px; }
  .ush2 { display:flex; gap:10px; align-items:flex-start; margin-bottom:14px; flex-wrap:wrap; } .ush2 .sp { flex:1; } .ush2 .msg { align-self:center; font-size:12px; color:var(--mut); }
  .bed { display:grid; grid-template-columns:250px 1fr; gap:16px; align-items:start; }
  .beds { position:sticky; top:12px; background:#fff; border:1px solid var(--ln); border-radius:10px; padding:8px; }
  .bedsi { display:flex; gap:6px; align-items:center; padding:7px 8px; border-radius:7px; cursor:pointer; font-size:13px; }
  .bedsi > span:first-child { flex:1; min-width:0; } .bedsi small { color:var(--mut); }
  .bedsi.on { background:var(--soft); font-weight:600; } .bedsi:hover { background:#f8f6f2; }
  .bedsi .mv a, .bedq .mv a { cursor:pointer; color:var(--mut); padding:0 2px; }
  .bedm { background:#fff; border:1px solid var(--ln); border-radius:10px; padding:14px 16px; min-width:0; }
  .bedh { display:flex; gap:10px; align-items:flex-end; } .bedha { display:flex; gap:6px; }
  .becond { display:flex; gap:10px; flex-wrap:wrap; align-items:center; font-size:12px; color:var(--mut); margin-top:8px; }
  .becond label { display:flex; gap:4px; align-items:center; color:var(--tx); } .becond input { width:auto; }
  .bedqs { margin:14px 0 10px; display:flex; flex-direction:column; gap:10px; }
  .bedq { border:1px solid var(--ln); border-radius:10px; padding:10px 12px; background:#fdfcfa; }
  .bedqr { display:flex; gap:8px; align-items:center; } .bedqr select { width:auto; } .bedqt { flex:1; font-weight:600; }
  .bedn { width:20px; color:var(--mut); font-size:12px; text-align:center; flex:none; }
  .bedqg { display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:8px 12px; margin:8px 0 0 28px; }
  .bedqg label { display:flex; flex-direction:column; gap:3px; font-size:11px; color:var(--mut); }
  .bedqg label.wide { grid-column:1 / -1; } .bedqg label.chk { flex-direction:row; align-items:center; gap:6px; font-size:12px; color:var(--tx); } .bedqg label.chk input { width:auto; }
  .bedqg input, .bedqg textarea { font-size:13px; padding:5px 8px; }
  .bedq .becond { margin-left:28px; }
  .bprev { margin-top:12px; gap:0; padding:4px 16px; }
  @media (max-width:800px) { .bed { grid-template-columns:1fr; } .beds { position:static; } }
  .bedit .kw { gap:0; padding:4px 16px; }
  .bedit .grp:first-child { margin-top:4px; }
  .zr { display:inline-block; font-size:11px; background:var(--soft); border-radius:8px; padding:1px 7px; margin:1px 3px 1px 0; white-space:nowrap; }
  .zs { display:inline-block; font-size:11px; border-radius:8px; padding:1px 7px; margin:1px 3px 1px 0; background:var(--soft); white-space:nowrap; }
  table.zsum .zq { font-size:15px; } table.zsum td:nth-child(2) { white-space:nowrap; }
  tr.zmulti td:first-child { box-shadow:inset 3px 0 0 #8a7564; }
  .pf.zrz { cursor:help; background:#f1ece4; color:#5a4a3c; }
  /* korespondencja */
  .kor { display:grid; grid-template-columns:320px 1fr; border:1px solid var(--ln); border-radius:12px; background:#fff; min-height:480px; overflow:hidden; }
  .korl { border-right:1px solid var(--ln); background:#fdfcfa; overflow:auto; max-height:72vh; }
  .korf { display:flex; gap:4px; padding:8px; border-bottom:1px solid var(--ln); flex-wrap:wrap; }
  .korf a { font-size:12px; padding:3px 9px; border-radius:12px; cursor:pointer; color:var(--mut); } .korf a.on { background:var(--acc); color:#fff; }
  .korw { position:relative; padding:10px 12px; border-bottom:1px solid var(--ln); cursor:pointer; }
  .korw:hover { background:#f8f6f2; } .korw.on { background:var(--soft); }
  .korwh { display:flex; gap:8px; justify-content:space-between; } .korwh b { font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .korwh small { color:var(--mut); flex:none; }
  .korw.un .korwh b { font-weight:700; }
  .korws { font-size:12px; color:var(--mut); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding-right:24px; }
  .korun { position:absolute; right:12px; bottom:10px; font-style:normal; font-size:11px; font-weight:700; background:var(--err); color:#fff; border-radius:9px; padding:0 6px; }
  .korz { font-size:10px; color:var(--mut); text-transform:uppercase; letter-spacing:.06em; }
  .korc { display:flex; flex-direction:column; min-width:0; }
  .korch { display:flex; gap:10px; align-items:baseline; padding:12px 16px; border-bottom:1px solid var(--ln); flex-wrap:wrap; } .korch b { font-size:15px; } .korch small { color:var(--mut); }
  .korback { display:none; margin-left:0; }
  .kormsgs { flex:1; overflow:auto; max-height:56vh; padding:14px 16px; display:flex; flex-direction:column; gap:10px; }
  .kmsg { max-width:78%; border-radius:12px; padding:9px 12px; font-size:14px; }
  .kmsg.cl { background:var(--soft); align-self:flex-start; border-bottom-left-radius:3px; }
  .kmsg.me { background:#eef1ec; align-self:flex-end; border-bottom-right-radius:3px; }
  .kmh { font-size:11px; color:var(--mut); margin-bottom:3px; } .kmh b { color:var(--tx); }
  .kread { margin-left:8px; } .kmt { white-space:pre-wrap; overflow-wrap:anywhere; }
  .katt { display:flex; gap:8px; align-items:center; margin-top:6px; font-size:12px; flex-wrap:wrap; }
  .katt img { width:120px; height:84px; object-fit:cover; border-radius:6px; cursor:pointer; background:#e9e4dc; display:block; }
  .katt a[data-zatt] { cursor:pointer; text-decoration:underline; color:var(--tx); } .katt small { color:var(--mut); } .katt .kin { color:var(--ok); }
  .kcomp { border-top:1px solid var(--ln); padding:12px 16px; display:flex; flex-direction:column; gap:8px; }
  .kcacts { display:flex; gap:8px; align-items:center; }
  .kfiles { display:flex; gap:6px; flex-wrap:wrap; } .kfiles a { cursor:pointer; margin-left:4px; }
  .inbox { background:#fff; border:1px solid var(--ln); border-radius:12px; overflow:hidden; }
  .inr { position:relative; display:flex; gap:12px; align-items:center; padding:12px 14px; border-bottom:1px solid var(--ln); cursor:pointer; }
  .inr:hover { background:#f8f6f2; } .inr.un { background:#fffaf6; } .inr.un b { font-weight:700; }
  .inp { width:34px; height:34px; border-radius:50%; color:#fff; font-size:12px; font-weight:600; display:flex; align-items:center; justify-content:center; flex:none; }
  .inb { flex:1; min-width:0; } .inb small { color:var(--mut); } .ins { font-size:13px; color:var(--mut); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .inr .korun { position:static; } .int { color:var(--mut); font-size:12px; flex:none; }
  @media (max-width:800px) { .kor { grid-template-columns:1fr; } .kor.sel .korl { display:none; } .kor:not(.sel) .korc { display:none; } .korback { display:inline; } }
  .drawer.wide { width:min(760px, 100%); }
  .wcardr { align-items:flex-start; } .wacts { flex:none; }
  table.wpr td { padding:4px 6px; } table.wpr input, table.wpr select { font-size:12px; }
  .rph { display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:10px; margin-top:8px; }
  .rpi { background:var(--soft); border-radius:8px; padding:6px; display:flex; flex-direction:column; gap:4px; }
  .rpi img { width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:5px; background:#e9e4dc; cursor:zoom-in; display:block; }
  .rpi input { font-size:12px; padding:3px 6px; }
  .rpa { display:flex; gap:6px; align-items:center; font-size:11px; color:var(--mut); }
  .rpa label { display:flex; gap:4px; align-items:center; } .rpa input { width:auto; }
  .rpa .rdel { margin-left:auto; }
  .uq { background:var(--soft); border-radius:10px; padding:10px; display:flex; flex-direction:column; gap:6px; }
  .uqr { display:flex; gap:6px; flex-wrap:wrap; } .uqr select { width:auto; max-width:170px; }
  .ush { margin:12px 0 4px; font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--mut); }
  .usr { display:flex; gap:8px; align-items:center; padding:7px 4px; border-bottom:1px dashed var(--ln); cursor:pointer; font-size:13px; }
  .usr:hover { background:#fdfcfa; }
  .usr .ut { flex:1; min-width:0; } .usr .ut small { display:block; color:var(--mut); font-size:11px; }
  .sm { font-size:12px !important; padding:3px 8px !important; }
  .ust { font-size:11px; padding:1px 7px; border-radius:8px; background:#f1ede7; white-space:nowrap; font-weight:500; }
  .ust.us-otwarta { background:#fdecea; color:var(--err); } .ust.us-w_naprawie { background:#fbf1dc; color:#7a5200; }
  .ust.us-do_sprawdzenia { background:#e8eef6; color:#2c4f7a; } .ust.us-zamknieta { background:#eef3ef; color:var(--ok); }
  .ust.late { box-shadow:inset 0 0 0 1px var(--err); }
  .uthread { margin:6px 0 8px; }
  @media print {
    * { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
    body { background:#fff; }
    body > *:not(#print) { display:none !important; }
    #print { display:block; font-size:10pt; color:#111; }
    .ph { display:flex; justify-content:space-between; align-items:flex-end; border-bottom:1.5px solid #111; padding-bottom:6px; margin-bottom:10px; }
    .ph .l b { font-size:9pt; letter-spacing:.15em; }
    .ph .l div { font-size:15pt; font-weight:600; margin-top:4px; }
    .ph .r { text-align:right; font-size:9pt; color:#555; }
    .sums { break-inside:avoid; margin-bottom:6px; }
    .sum { border-color:#ddd; padding:8px 10px; }
    .leg div { font-size:9pt; }
    .pr { margin-top:12px; }
    .pr h4 { font-size:9pt; letter-spacing:.1em; text-transform:uppercase; margin:0 0 4px; display:flex; align-items:center; }
    .pt { width:100%; border-collapse:collapse; }
    .pt th { font-size:7.5pt; color:#666; text-align:left; font-weight:600; border-bottom:1px solid #999; padding:3px 5px; }
    .pt td { border-bottom:1px solid #ddd; padding:4px 5px; vertical-align:middle; font-size:9pt; }
    .pt tr { break-inside:avoid; }
    .pt img { width:22mm; height:22mm; object-fit:contain; display:block; }
    .pt .num { text-align:right; white-space:nowrap; }
    .pt .ps { color:#666; font-size:8pt; }
    .pt a { color:#666; text-decoration:none; font-size:7.5pt; word-break:break-all; }
    .ptot { text-align:right; font-weight:700; margin-top:10px; font-size:11pt; }
    .elprint table.z { width:100%; border-collapse:collapse; font-size:8.5pt; }
    .elprint table.z th, .elprint table.z td { padding:3px 5px; border-bottom:1px solid #ddd; text-align:left; }
    .elprint table.z .num { text-align:right; }
    .elprint .grp { margin-top:10px; break-inside:avoid; }
    .elprint .grp h3 { font-size:9.5pt; margin:0 0 4px; display:flex; justify-content:space-between; }
    .elprint .total { font-size:11pt; text-align:right; font-weight:700; margin-top:8px; }
    #print .board { width:100%; max-width:262mm; margin:0 auto; border:0; border-radius:0; }
  }

  /* ===== szkielet: menu boczne ===== */
  #vApp { display:grid; grid-template-columns:236px minmax(0, 1fr); min-height:100vh; }
  .side { position:sticky; top:0; height:100vh; height:100dvh; overflow:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; background:#f4f1ec; border-right:1px solid var(--ln); padding:16px 12px; display:flex; flex-direction:column; gap:2px; z-index:20; }
  .sbrand { padding:4px 10px 14px; font-size:13px; letter-spacing:.02em; } .sbrand b { font-weight:700; } .sbrand span { color:var(--mut); font-weight:500; }
  .side a { display:flex; align-items:center; gap:10px; padding:7px 10px; border-radius:8px; cursor:pointer; color:#3d3833; font-size:14px; user-select:none; }
  .side a:hover { background:#ebe6df; }
  .side a.on { background:#fff; color:var(--tx); font-weight:600; box-shadow:0 0 0 1px var(--ln); }
  .side .ico { flex:none; color:#6f6860; } .side a.on .ico { color:var(--tx); }
  .side kbd, .qmodal kbd { margin-left:auto; font:11px/1 inherit; color:var(--mut); border:1px solid var(--ln); border-radius:4px; padding:2px 5px; background:#fff; }
  .sadd { background:var(--acc) !important; color:#fff !important; font-weight:600; margin-bottom:4px; }
  .sadd .ico { color:#fff !important; } .sadd kbd { background:transparent !important; color:#d8d2ca !important; border-color:#6a625b !important; }
  .snav { display:flex; flex-direction:column; gap:2px; margin-top:10px; padding-top:10px; border-top:1px dashed #d9d3cb; }
  .snav small { margin-left:auto; font-size:10px; color:var(--mut); }
  .nb { margin-left:auto; font-style:normal; font-size:11px; font-weight:700; background:#e3ded6; color:var(--tx); border-radius:9px; padding:0 7px; line-height:18px; }
  .nb.red { background:var(--err); color:#fff; }
  .srecent { display:flex; flex-direction:column; margin:0 0 4px 18px; border-left:1px solid #ddd6cd; }
  .srecent a.srec { font-size:13px; padding:5px 10px; gap:8px; color:var(--mut); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:block; }
  .srecent a.srec i { display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:8px; vertical-align:middle; }
  .srecent a.srec.on { color:var(--tx); font-weight:600; background:#fff; box-shadow:none; }
  .sfoot { margin-top:auto; padding:12px 10px 0; border-top:1px dashed #d9d3cb; display:flex; justify-content:space-between; font-size:12px; color:var(--mut); }
  .sfoot a { display:inline; padding:0; text-decoration:underline; color:var(--mut); font-size:12px; } .sfoot a:hover { background:none; }
  .main { min-width:0; }
  .mtop { display:none; }
  .fab, .sideshade { display:none; }
  .proj { display:block; min-height:100vh; }
  .ustv { padding:20px 28px 50px; }

  /* ===== pulpit ===== */
  .pul { padding:24px 28px 50px; }
  .pulh h1 { margin:0; font-size:24px; font-weight:600; } .pulh p { margin:2px 0 18px; color:var(--mut); }
  .pme { color:var(--tx) !important; font-weight:400 !important; margin-bottom:14px; display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
  .pulg { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:16px; align-items:start; }
  .pcol { background:#fff; border:1px solid var(--ln); border-radius:12px; padding:14px 16px; display:flex; flex-direction:column; gap:6px; }
  .pch { display:flex; justify-content:space-between; align-items:center; margin-bottom:4px; }
  .pch b { display:flex; gap:8px; align-items:center; font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--mut); }
  .seg.sm2 a { padding:3px 9px; font-size:12px; }
  .pday h4 { margin:8px 0 4px; font-size:12px; color:var(--mut); font-weight:600; }
  .pitem { display:flex; gap:10px; padding:7px 8px; border-radius:8px; cursor:pointer; align-items:flex-start; }
  .pitem:hover { background:#f8f6f2; }
  .pitem b { font-weight:500; font-size:13px; display:block; } .pitem small { color:var(--mut); font-size:12px; }
  .pitem .pico { color:#8a8178; margin-top:1px; } .pitem.red .pico { color:var(--err); }
  .zquick { font-size:13px; padding:7px 10px; border:1px dashed var(--ln); border-radius:8px; background:#fdfcfa; width:100%; }
  .zrow { display:flex; gap:10px; align-items:flex-start; padding:7px 4px; border-bottom:1px dashed var(--ln); }
  .zrow:last-child { border-bottom:0; }
  .zrow input[type=checkbox] { width:16px; height:16px; margin-top:2px; flex:none; accent-color:var(--ok); }
  .zt { flex:1; min-width:0; } .ztt { cursor:pointer; font-size:13.5px; } .ztt:hover { text-decoration:underline; }
  .zt small { display:block; font-size:12px; color:var(--mut); } .zp { cursor:pointer; color:var(--mut); text-decoration:underline; }
  .zw { color:#c58b1b; margin-right:3px; vertical-align:-2px; }
  .zrow.done .ztt { text-decoration:line-through; color:var(--mut); }
  .oini { width:22px; height:22px; border-radius:50%; color:#fff; font-size:11px; font-weight:700; display:inline-flex; align-items:center; justify-content:center; flex:none; }
  .kzad .zquick { margin-top:4px; }

  /* ===== okienka: wyszukiwarka i „+” ===== */
  .qmodal { position:fixed; inset:0; z-index:40; background:rgba(40,36,32,.28); display:flex; align-items:flex-start; justify-content:center; padding:10vh 16px 16px; }
  .qbox { width:min(620px, 100%); background:#fff; border-radius:14px; box-shadow:0 20px 60px rgba(0,0,0,.2); overflow:hidden; display:flex; flex-direction:column; max-height:76vh; }
  .qsin { display:flex; gap:10px; align-items:center; padding:12px 16px; border-bottom:1px solid var(--ln); color:var(--mut); }
  .qsin input { border:0; outline:0; font-size:16px; padding:4px 0; flex:1; background:transparent; }
  .qsres { overflow:auto; padding:6px; }
  .qsg { font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--mut); padding:10px 10px 4px; font-weight:700; }
  .qsi { display:flex; gap:10px; align-items:center; padding:8px 10px; border-radius:8px; cursor:pointer; color:#6f6860; }
  .qsi b { display:block; font-weight:500; color:var(--tx); font-size:14px; } .qsi small { color:var(--mut); font-size:12px; }
  .qsi.on, .qsi:hover { background:var(--soft); }
  .qah { display:flex; gap:8px; align-items:baseline; padding:14px 16px 8px; } .qah small { color:var(--mut); }
  .qagrid { display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:8px; padding:8px 16px 16px; }
  .qat { display:flex; flex-direction:column; gap:8px; align-items:flex-start; padding:12px; border:1px solid var(--ln); border-radius:10px; cursor:pointer; font-size:13.5px; color:var(--tx); }
  .qat .ico { color:#6f6860; } .qat:hover { background:var(--soft); }
  .qat.pri { border-color:var(--acc); background:#fbfaf7; }
  .toastapp { position:fixed; left:50%; bottom:24px; transform:translate(-50%, 20px); background:var(--acc); color:#fff; padding:10px 16px; border-radius:10px; opacity:0; pointer-events:none; transition:.2s; z-index:60; font-size:14px; }
  .toastapp.on { opacity:1; transform:translate(-50%, 0); }
  table.kont tr[data-kid] { cursor:pointer; } table.kont tr[data-kid]:hover td { background:#fdfcfa; }
  table.kont .zr { cursor:pointer; }

  /* ===== telefon / wąski ekran ===== */
  @media (max-width:900px) {
    #vApp { grid-template-columns:1fr; }
    .side { position:fixed; left:0; top:0; bottom:0; width:260px; transform:translateX(-100%); transition:transform .2s; box-shadow:0 0 30px rgba(0,0,0,.15); }
    body.sideopen .side { transform:none; }
    body.sideopen .sideshade { display:block; position:fixed; inset:0; background:rgba(0,0,0,.25); z-index:15; }
    .mtop { display:flex; position:sticky; top:0; z-index:12; gap:14px; align-items:center; padding:10px 14px; background:var(--card); border-bottom:1px solid var(--ln); }
    .mtop a { cursor:pointer; color:var(--tx); display:flex; } #mAdd { display:none; } .mtop b { font-size:12px; letter-spacing:.18em; }
    .fab { display:flex; position:fixed; right:18px; bottom:18px; width:56px; height:56px; border-radius:50%; align-items:center; justify-content:center; font-size:30px; font-weight:300; padding:0; z-index:25; box-shadow:0 6px 20px rgba(0,0,0,.25); }
    .pulg { grid-template-columns:1fr; }
    .pul, .ustv { padding:16px 14px 80px; }
    .pv { padding:14px 12px 80px; }
    .toolbar { padding:12px 14px; }
    .qmodal { padding-top:4vh; }
  }
  @media (min-width:901px) and (max-width:1250px) { .pulg { grid-template-columns:1fr 1fr; } }

  /* ---------- sprzedaż i oferty ---------- */
  .ps-utracony { color:#9a8f86; text-decoration:line-through; }
  .pnum { font-size:11px; font-weight:500; color:var(--mut); margin-left:6px; letter-spacing:.02em; }
  .sstat { display:flex; flex-wrap:wrap; gap:18px; align-items:center; font-size:13px; color:var(--mut); margin:4px 0 14px; }
  .sstat b { color:var(--tx); }
  .sboard { display:grid; grid-template-columns:repeat(4, minmax(220px, 1fr)); gap:12px; align-items:start; overflow-x:auto; padding-bottom:6px; }
  .scol { background:var(--soft); border-radius:12px; padding:8px; min-height:160px; display:flex; flex-direction:column; gap:8px; transition:background .15s; }
  .scol.over { background:#e9e4dc; }
  .scolh { display:flex; justify-content:space-between; align-items:baseline; padding:2px 4px 4px; font-size:12px; }
  .scolh span { color:var(--mut); font-size:11px; }
  .scardx { background:#fff; border:1px solid var(--ln); border-radius:10px; padding:10px 11px; cursor:pointer; display:flex; flex-direction:column; gap:4px; }
  .scardx:hover { border-color:#cfc8bf; }
  .scardx.drag { opacity:.4; }
  .sch { display:flex; justify-content:space-between; gap:8px; align-items:baseline; }
  .sch small { color:var(--mut); font-size:11px; white-space:nowrap; }
  .scs { font-size:12px; color:var(--mut); }
  .sco { display:flex; justify-content:space-between; align-items:center; font-size:12px; gap:6px; }
  .scf { display:flex; flex-wrap:wrap; gap:4px 10px; font-size:11px; color:var(--mut); }
  .scb { display:flex; gap:4px; margin-top:2px; opacity:0; transition:opacity .15s; }
  .scb .lnkb { margin-left:0; margin-right:8px; }
  .scardx:hover .scb { opacity:1; }
  @media (hover:none) { .scb { opacity:1; } }
  .ofst { font-size:11px; padding:1px 7px; border-radius:9px; background:var(--soft); color:#5a534c; white-space:nowrap; }
  .of-wyslana { background:#e7eef9; color:#2457a6; }
  .of-zaakceptowana { background:#e3f1e8; color:var(--ok); }
  .of-odrzucona { background:#f6e6e4; color:var(--err); }
  .ofv { display:flex; gap:8px; flex-wrap:wrap; margin:6px 0 12px; }
  .ofvi { border:1px solid var(--ln); border-radius:8px; padding:6px 10px; background:#fff; cursor:pointer; font-size:13px; display:flex; flex-direction:column; gap:2px; }
  .ofvi small { color:var(--mut); font-size:11px; }
  .ofvi.on { border-color:var(--acc); box-shadow:0 0 0 1px var(--acc) inset; }
  .ofbar { display:flex; gap:8px; flex-wrap:wrap; align-items:center; padding:8px 0; border-bottom:1px solid var(--ln); margin-bottom:6px; }
  .ofdec { border-radius:10px; padding:12px 14px; margin-bottom:10px; display:flex; flex-direction:column; gap:4px; }
  .ofdec small { color:var(--mut); }
  .ofdec.ok { background:#eef6f0; border:1px solid #cfe5d6; }
  .ofdec.no { background:#f9efed; border:1px solid #efd6d2; }
  .ofdane { max-width:560px; margin-top:6px; background:#fff; }
  .ofdane td:first-child { color:var(--mut); width:180px; }
  .ofgrid { display:grid; grid-template-columns:minmax(0, 1fr) 320px; gap:22px; align-items:start; }
  .ofs { background:#fff; border:1px solid var(--ln); border-radius:12px; padding:12px 14px; position:sticky; top:12px; }
  .ofpak { display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:12px; }
  .ofp { background:#fff; border:1px solid var(--ln); border-radius:12px; padding:10px 12px; }
  .ofp.pol { border-color:#bfb6aa; box-shadow:0 0 0 1px #bfb6aa inset; }
  .ofpn { font-weight:600; font-size:15px; border-color:transparent; padding-left:0; }
  .ofpn:hover, .ofpn:focus { border-color:var(--ln); padding-left:8px; }
  .ofpc { font-weight:600; }
  .ofcalc { display:flex; gap:6px; align-items:center; flex-wrap:wrap; font-size:11px; color:var(--mut); margin-top:6px; }
  .ofcalc input { width:70px; padding:3px 6px; font-size:12px; }
  .ofpadd { border:1px dashed var(--ln); border-radius:12px; display:flex; align-items:center; justify-content:center; min-height:120px; color:var(--mut); cursor:pointer; }
  .ofpadd:hover { border-color:#bfb6aa; color:var(--tx); }
  .ofraty input { padding:4px 6px; }
  .ksprz select, .ksprz input[type=date] { padding:4px 6px; font-size:12px; }
  @media (max-width:900px) {
    .ofgrid { grid-template-columns:1fr; }
    .ofs { position:static; }
    .sboard { grid-template-columns:repeat(4, 78vw); }
  }
  .ofgrid .row, .ustv .row, .ksprz .row { display:flex; gap:8px; align-items:flex-end; }
  .ofgrid .row > div, .ustv .row > div, .ksprz .row > * { flex:1; min-width:0; }
  .ofp .row:first-child { align-items:center; }
  .ofp .row:first-child .ofpn { flex:1; }
  .ofp .row:first-child .chk, .ofp .row:first-child .rdel { flex:none; white-space:nowrap; }
  .ofcalc span:nth-of-type(3) { margin-left:8px; }
  .ofgrid .sec { font-size:11px; text-transform:uppercase; letter-spacing:.07em; color:var(--mut); margin:18px 0 6px; font-weight:600; }
  .ofs .sec:first-child { margin-top:0; }
  /* oferta – edytor prezentacji */
  .ofan3 { display:grid; grid-template-columns:repeat(3, 1fr); gap:10px; }
  .ofpnr { color:#8b6a31; font-size:13px; flex:none !important; }
  .ofpor { margin-top:12px; } .ofpor td, .ofpor th { vertical-align:middle; } .ofpor input, .ofpor select, .ofpod input { padding:4px 6px; }
  .ofcell.t { color:var(--ok); font-weight:600; } .ofcell.n { color:var(--mut); }
  .ofsek .chk2 { font-size:12.5px; }
  .ofm .sec small { text-transform:none; letter-spacing:0; font-weight:400; margin-left:6px; }
  .szl { display:flex; flex-direction:column; gap:6px; max-width:980px; }
  .szs { border:1px solid var(--ln); border-radius:10px; background:#fff; }
  .szs.off { opacity:.55; }
  .szh { display:flex; align-items:center; gap:10px; padding:9px 12px; cursor:pointer; }
  .szh small { color:var(--mut); } .szh .lnkb { margin-left:2px; }
  .szs.open .szh { border-bottom:1px solid var(--ln); background:var(--soft); border-radius:10px 10px 0 0; }
  .szb { padding:6px 14px 14px; }
  .szbl { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:10px; margin-top:10px; }
  .szbk { border:1px solid var(--ln); border-radius:8px; padding:8px; background:#fcfbf9; display:flex; flex-direction:column; gap:6px; }
  .szbk .row { display:flex; gap:6px; align-items:center; } .szbk .row input:first-child { flex:1; font-weight:600; }
  @media (max-width:900px) { .ofan3 { grid-template-columns:1fr; } }
  .ofp .chk select { max-width:160px; padding:3px 6px; } .ofp .row { flex-wrap:wrap; }
  .ofp .chk, .szbk .chk, .szh .chk { display:inline-flex; gap:6px; align-items:center; white-space:nowrap; font-size:13px; color:var(--mut); }
  .ofp .chk input[type=checkbox], .szbk .chk input[type=checkbox], .szh .chk input[type=checkbox] { width:auto; margin:0; }
  /* umowa */
  .umnew { max-width:620px; } .umnew h3 { margin:6px 0 4px; }
  .umfirmy { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:4px 0 6px; }
  .umfirma { display:flex; flex-direction:column; gap:2px; border:1px solid var(--ln); border-radius:10px; padding:10px 12px 10px 34px; cursor:pointer; position:relative; background:#fff; }
  .umfirma input { position:absolute; left:11px; top:12px; width:auto; margin:0; }
  .umfirma:has(input:checked) { border-color:var(--acc); box-shadow:0 0 0 1px var(--acc) inset; }
  .umfirma small { color:var(--mut); font-size:12px; } .umfirmy.sm .umfirma { padding:8px 10px 8px 32px; }
  .umgrid { display:grid; grid-template-columns:380px minmax(0, 1fr); gap:22px; align-items:start; }
  .umform .row { display:flex; gap:8px; } .umform .row > div { flex:1; min-width:0; }
  .umform .sec, .uwgrid .sec { font-size:11px; text-transform:uppercase; letter-spacing:.07em; color:var(--mut); margin:16px 0 4px; font-weight:600; }
  .umprev { background:#e9e7e3; border-radius:12px; padding:18px; position:sticky; top:12px; max-height:calc(100vh - 40px); overflow:auto; }
  .umpage { background:#fff; max-width:760px; margin:0 auto; padding:44px 52px; box-shadow:0 1px 6px rgba(0,0,0,.08); }
  .uwgrid { display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); gap:20px; align-items:start; }
  @media (max-width:1100px) { .umgrid, .uwgrid { grid-template-columns:1fr; } .umprev { position:static; max-height:none; } .umpage { padding:24px; } }
  #zapView { padding:0 24px 40px; }
  @media (max-width:900px) { #zapView { padding:0 14px 40px; } }
  .kv .kvs { display:block; font-weight:400; font-size:11.5px; color:var(--mut); }
  /* wycena */
  .wygrid { display:grid; grid-template-columns:400px minmax(0, 1fr); gap:24px; align-items:start; }
  .wyin .row, .kugrid { display:flex; gap:8px; } .wyin .row > div { flex:1; min-width:0; }
  .wyin .sec { font-size:11px; text-transform:uppercase; letter-spacing:.07em; color:var(--mut); margin:16px 0 4px; font-weight:600; }
  .wymn { display:grid; grid-template-columns:1fr 1fr; gap:0 10px; }
  .wyout { position:sticky; top:12px; }
  .wytab { background:#fff; } .wytab td, .wytab th { padding:7px 10px; } .wytab td small { color:var(--mut); }
  .wytab .wysum td { border-top:1px solid #cfc8bf; font-weight:600; }
  .wytab .wyfin td { background:#f3efe7; font-weight:700; font-size:15px; }
  .wyinfo { display:grid; grid-template-columns:repeat(3, 1fr); gap:10px; margin-top:12px; }
  .wyinfo > div { background:#fff; border:1px solid var(--ln); border-radius:10px; padding:10px 12px; display:flex; flex-direction:column; gap:2px; }
  .wyinfo span { font-size:11.5px; color:var(--mut); } .wyinfo b { font-size:16px; } .wyinfo small { font-size:11.5px; color:var(--mut); }
  .wyet { margin-top:8px; background:#fff; max-width:560px; }
  .kugrid { flex-wrap:wrap; } .kugrid > div { width:200px; }
  .kumn { display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:10px; }
  .kuzad input, .kuzad select { padding:3px 6px; font-size:12.5px; } .kuzad td:nth-child(2) { width:40%; } .kuzad input[type=checkbox] { width:auto; }
  @media (max-width:1100px) { .wygrid { grid-template-columns:1fr; } .wyout { position:static; } .wyinfo { grid-template-columns:1fr; } }
  .wyin { min-width:0; } .wyadr { display:flex; gap:8px; } .wyadr input { flex:1; min-width:0; } .wyadr button { flex:none; }
  .wymn select { min-width:0; }
  /* finanse */
  .stimer { padding:4px 4px 8px; }
  .stim { display:flex; align-items:center; gap:8px; padding:7px 10px; border-radius:8px; cursor:pointer; color:var(--mut); font-size:13px; }
  .stim:hover { background:#fff; }
  .stim.on { background:#fff; border:1px solid var(--ln); cursor:default; color:var(--tx); }
  .stim.on b { font-variant-numeric:tabular-nums; } .stim.on small { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--mut); }
  .stim button.sm { padding:3px 8px; font-size:12px; }
  .dotrec { width:8px; height:8px; border-radius:50%; background:#c0392b; animation:rec 1.4s infinite; flex:none; }
  @keyframes rec { 50% { opacity:.3; } }
  .fkpi { display:grid; grid-template-columns:repeat(auto-fit, minmax(170px, 1fr)); gap:10px; margin:6px 0 16px; }
  .fkpi > div { background:#fff; border:1px solid var(--ln); border-radius:10px; padding:10px 14px; display:flex; flex-direction:column; gap:2px; }
  .fkpi span { font-size:11.5px; color:var(--mut); } .fkpi b { font-size:19px; } .fkpi b.ok { color:var(--ok); } .fkpi small { font-size:11.5px; color:var(--mut); }
  .fpl input, .fpl select { padding:4px 6px; font-size:12.5px; } .fpl tr.late td { background:#fdf1ef; } .fpl tr.st-oplacona td { color:var(--mut); }
  .fpl tr.st-oplacona .plst { color:var(--ok); font-weight:600; }
  .fczasadd { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-bottom:10px; } .fczasadd > input, .fczasadd > select { width:auto; padding:5px 8px; } .fczasadd #czC { width:90px; } .fczasadd .fet select { width:210px; }
  .fczasadd input.bad { border-color:var(--err); }
  .fsum { display:flex; gap:14px; flex-wrap:wrap; font-size:13px; margin-bottom:8px; } .fsum i, .fdot { display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:5px; }
  .fcz td { font-size:13px; } .frent .fbar { display:inline-block; width:70%; height:8px; background:var(--soft); border-radius:4px; overflow:hidden; vertical-align:middle; }
  .fbar i { display:block; height:100%; background:var(--ok); } .fbar i.over { background:var(--err); }
  .finh { display:flex; align-items:center; gap:10px; margin-bottom:12px; } .finh .lnkb { font-size:18px; text-decoration:none; }
  .fgrid { display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:14px; margin-bottom:6px; }
  .ftab td { font-size:13px; cursor:pointer; } .ftab td small { display:block; color:var(--mut); font-size:11.5px; } .ftab tr.late td { color:var(--err); }
  .fchart { display:flex; gap:8px; align-items:flex-end; height:150px; padding-top:10px; }
  .fchart > div { flex:1; height:100%; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; gap:3px; position:relative; }
  .fchart i { display:block; width:70%; background:#b9a88d; border-radius:4px 4px 0 0; min-height:2px; } .fchart small { font-size:11px; color:var(--mut); } .fchart span { font-size:10.5px; color:var(--mut); }
  .frent2 tr { cursor:pointer; }
  @media (max-width:1100px) { .fgrid { grid-template-columns:1fr; } }
  .ftab td:nth-child(3) { white-space:nowrap; }
  /* prowizje */
  .fprow td { font-size:13px; cursor:pointer; } .fprow td small { display:block; color:var(--mut); font-size:11.5px; } .fprow tr.late td { background:#fdf1ef; } .fprow tr.st-otrzymana td { color:var(--mut); }
  .fsugg { font-size:13px; margin-top:8px; display:flex; gap:4px 10px; flex-wrap:wrap; align-items:center; } .fsugg .lnkb { margin:0; }
  .fgrid2 { display:grid; grid-template-columns:2fr 1fr; gap:14px; align-items:start; }
  .ktyp { display:inline-flex; flex-wrap:wrap; }
  @media (max-width:1100px) { .fgrid2 { grid-template-columns:1fr; } }
  /* Finanse: miesiąc / zestawienie / płatności */
  .finh .seg { margin-bottom:0; }
  .fmnav { display:flex; align-items:center; gap:10px; margin:0 0 10px; } .fmnav b { font-size:16px; min-width:150px; text-align:center; } .fmnav .lnkb { font-size:18px; text-decoration:none; margin:0; } .fmnav .seg { margin:0; }
  .fchart2 { height:170px; gap:6px; }
  .fchart2 > div { cursor:pointer; border-radius:6px; padding:0 2px; }
  .fchart2 > div:hover { background:#f6f3ee; } .fchart2 > div.on { background:#efe9df; } .fchart2 > div.on small { color:var(--tx); font-weight:700; }
  .fstack { width:70%; display:flex; flex-direction:column; min-height:2px; border-radius:4px 4px 0 0; overflow:hidden; }
  .fstack i, .flg i { display:block; width:100%; background:#8f7c5e; border-radius:0; min-height:0; }
  .fstack i.pl, .flg i.pl { background:repeating-linear-gradient(135deg, #e4dacb 0 4px, #d6c9b4 4px 8px); }
  .fstack i.lt, .flg i.lt { background:#e3a39b; }
  .fchart2 > div.fut small { font-style:italic; }
  .flg { display:flex; gap:14px; flex-wrap:wrap; font-size:11.5px; color:var(--mut); margin-top:6px; } .flg span { display:flex; align-items:center; gap:5px; } .flg i { width:14px; height:10px; border-radius:2px; }
  .fsumr td { font-weight:700; border-top:2px solid var(--ln); background:#faf8f5; cursor:default; }
  .ftab2 td, .ftab2 th { font-size:13px; } .ftab2 tr[data-fmk], .ftab2 tr[data-fok] { cursor:pointer; } .ftab2 tr.on td { background:#f6f1e7; } .ftab2 tr.fut td { color:var(--mut); } .ftab2 td.pln { color:var(--mut); font-style:italic; }
  .tscroll { overflow-x:auto; }
  .ffil { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:10px; } .ffil input#ftQ { width:260px; } .ffil select { width:auto; }
  .fkpi-s > div { padding:8px 12px; } .fkpi-s b { font-size:16px; }
  .fpl td { font-size:13px; vertical-align:middle; } .fpl td small { display:block; font-size:11px; }
  .fpl th.srt { cursor:pointer; user-select:none; white-space:nowrap; } .fpl th.srt.on { color:var(--tx); }
  .fpl select, .fpl input { font-size:12.5px; padding:3px 6px; width:auto; } .fpl input[data-fdok] { width:110px; }
  .fpl tr.late td { background:#fdf5f4; } .fpl tr.st-oplacona td { color:#5f5a52; } .fpl .nw, .ftab .nw { white-space:nowrap; }
  .fmlist td:nth-child(4) { white-space:nowrap; }
  @media (max-width:700px) { .finh { flex-wrap:wrap; } .finh .seg { margin-left:0 !important; } .ffil input#ftQ { width:100%; } }
  /* harmonogram: dymek, zależności, przeciąganie wierszy, szablony */
  #tlTip { position:fixed; z-index:2000; background:#2b2724; color:#fff; font-size:12px; line-height:1.4; padding:6px 10px; border-radius:7px; pointer-events:none; max-width:300px; box-shadow:0 4px 14px rgba(0,0,0,.18); opacity:0; transition:opacity .08s; }
  #tlTip.on { opacity:1; } #tlTip b { font-weight:600; }
  .tlb.drag::after, .tlk.drag::after { display:none; }
  .tldep { position:absolute; top:calc(14px - var(--up) * 28px); height:calc(var(--up) * 28px); border-left:1.5px solid #a39686; border-bottom:1.5px solid #a39686; border-bottom-left-radius:5px; pointer-events:none; z-index:0; }
  .tldep::after { content:""; position:absolute; right:-1px; bottom:-4.5px; border:4px solid transparent; border-left:5px solid #a39686; border-right:0; }
  .tldep.dn { top:14px; border-bottom:0; border-top:1.5px solid #a39686; border-radius:5px 0 0 0; }
  .tlr[data-har] .tll { cursor:grab; }
  .tlr.rdrag, tr.rdrag { opacity:.45; background:#f3eee6; }
  .hdl { cursor:grab; color:#b5aca0; font-size:15px; text-align:center; width:22px; user-select:none; padding:0 2px !important; }
  .hdl:hover { color:var(--tx); }
  .har .htyg { width:52px; text-align:right; } .har .hdep { width:140px; }
  .sumb[data-sumbar] { cursor:grab; outline:1px dashed transparent; } .sumb[data-sumbar]:hover { outline-color:#a39686; }
  .htprev td { font-size:13px; padding:5px 8px; } .htprev .nw { white-space:nowrap; }
  .hwtabs { display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin-bottom:10px; } .hwtabs .tag { cursor:pointer; border:1px solid transparent; } .hwtabs .tag.on { border-color:var(--acc); }
  .hwt td { padding:3px 6px; } .hwt input { padding:5px 8px; }
  /* tablica zadań */
  .zadv { padding:20px 24px 30px; }
  .zhead { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-bottom:12px; } .zhead .seg a { padding:5px 10px; }
  .zboard { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(215px, 1fr); gap:12px; overflow-x:auto; padding-bottom:10px; align-items:start; }
  .zcol { background:#f4f1ec; border-radius:12px; padding:8px; min-height:140px; border:2px solid transparent; transition:border-color .1s; }
  .zcol.over { border-color:var(--acc); background:#efe9df; }
  .zcol-inbox { background:#eef1f6; } .zcol-dzis { background:#f7efe2; } .zcol-oczekuje { background:#f1f0f4; } .zcol-zrobione { background:#eef3ee; }
  .zcolh { display:flex; align-items:baseline; gap:6px; padding:4px 6px 8px; } .zcolh b { font-size:13.5px; } .zcolh span { font-size:12px; color:var(--mut); } .zcolh small { margin-left:auto; font-size:11.5px; color:var(--mut); }
  .zcolb { display:flex; flex-direction:column; gap:6px; }
  .zempty { font-size:12px; color:var(--mut); text-align:center; padding:12px 4px; margin:0; }
  .zcap { background:#fff; border:1px solid var(--ln); border-radius:9px; padding:6px; margin-bottom:8px; }
  .zcap input { border:0; padding:6px 4px; font-size:13px; background:transparent; } .zcap input:focus { outline:none; }
  .zcapr { display:flex; gap:2px; } .zcapr a { cursor:pointer; padding:2px 7px; border-radius:6px; font-size:13px; opacity:.55; } .zcapr a.on { background:#f1ece4; opacity:1; }
  .zc { background:#fff; border:1px solid #e7e2da; border-left:3px solid #e7e2da; border-radius:8px; padding:7px 9px; cursor:pointer; box-shadow:0 1px 0 rgba(0,0,0,.03); }
  .zc:hover { border-color:#d6cfc4; } .zc.zdrag { opacity:.4; }
  .zc.pri-pilny { border-left-color:#c0392b; } .zc.pri-wysoki { border-left-color:#e0a83c; } .zc.pri-niski { border-left-color:#e7e2da; opacity:.85; }
  .zc.done .zct { text-decoration:line-through; color:var(--mut); }
  .zch { display:flex; gap:7px; align-items:flex-start; } .zch input { width:auto; margin-top:3px; flex:none; } .zct { flex:1; font-size:13.5px; line-height:1.35; } .zch .oini { flex:none; }
  .zrod { font-style:normal; margin-right:4px; }
  .zcm { display:flex; flex-wrap:wrap; gap:4px 8px; margin:5px 0 0 21px; font-size:11.5px; color:var(--mut); align-items:center; }
  .zcm .zp, .zrow .zp { color:var(--mut); text-decoration:none; background:#f3efe9; border-radius:5px; padding:0 6px; cursor:pointer; } .zcm .zp:hover { color:var(--tx); }
  .zpil { color:#fff; background:#c0392b; border-radius:5px; padding:0 6px; font-size:10.5px; font-weight:600; } .zwys { color:#8a5a00; background:#fbefd6; border-radius:5px; padding:0 6px; font-size:10.5px; font-weight:600; }
  .zwcz { color:#a0522d; background:#fbeee6; border-radius:5px; padding:0 6px; } .zcz { color:#5b5786; }
  .zqa { display:flex; gap:4px; margin:7px 0 0 21px; align-items:center; flex-wrap:wrap; } .zqa a { font-size:11.5px; border:1px solid var(--ln); border-radius:6px; padding:1px 7px; cursor:pointer; background:#fff; } .zqa a:hover { border-color:var(--acc); } .zqa span { margin-left:auto; font-size:11px; color:var(--mut); }
  .zc.zet { background:transparent; border:1.5px dashed #b9ad9c; border-left-width:1.5px; } .zc.zet.late { border-color:#d98b83; background:#fdf5f4; }
  .zetl { font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:#8a7564; font-weight:700; margin-top:2px; flex:none; }
  .zetdone { margin-left:auto; color:var(--mut); cursor:pointer; text-decoration:none; } .zetdone:hover { color:var(--ok); }
  .zrow.pri-pilny .ztt::before { content:""; } .zst { border-radius:5px; padding:0 6px; background:#f3efe9; } .zst-dzis { background:#f7efe2; color:#7a5200; } .zst-inbox { background:#eef1f6; }
  .zgrp { font-size:11px; text-transform:uppercase; letter-spacing:.07em; color:var(--mut); font-weight:700; margin:12px 0 4px; }
  .pinbox { display:block; margin:8px 0 2px; padding:7px 10px; background:#eef1f6; border-radius:8px; font-size:13px; cursor:pointer; color:var(--tx); text-decoration:none; }
  .zrodseg, .zstseg, .zpriseg { display:flex; flex-wrap:wrap; margin-bottom:6px; } .zstseg a, .zpriseg a, .zrodseg a { font-size:12.5px; padding:5px 9px; }
  .zpriseg a.pri-pilny.on { background:#c0392b; } .zpriseg a.pri-wysoki.on { background:#c98a1e; }
  .zchk { display:flex; flex-direction:column; gap:2px; } .zchk .chk2 { margin:0; display:flex; align-items:center; gap:6px; } .zchk .del { margin-left:auto; cursor:pointer; color:var(--mut); } .zcdone { text-decoration:line-through; color:var(--mut); }
  .zkom { display:flex; flex-direction:column; gap:8px; margin-bottom:8px; } .zk { background:#f7f4ef; border-radius:8px; padding:7px 10px; font-size:13px; } .zk small { color:var(--mut); }
  @media (max-width:700px) { .zadv { padding:14px 12px; } .zboard { grid-auto-columns:82vw; } .zhead #zQ { width:100% !important; } }
  .zfrom { margin-left:8px; font-size:11.5px; font-weight:500; color:var(--mut); border:1px solid var(--ln); border-radius:6px; padding:0 7px; cursor:pointer; background:#fff; text-decoration:none; white-space:nowrap; }
  .zfrom:hover { color:var(--tx); border-color:var(--acc); } .zfrom.on { color:var(--ok); border-color:#cfe3d5; background:#f1f8f3; }
  .kmsg .zfrom { opacity:.0; transition:opacity .1s; } .kmsg:hover .zfrom, .kmsg .zfrom.on { opacity:1; }
  @media (hover:none) { .kmsg .zfrom { opacity:1; } }
  .zsrc { color:#5b7fb3; cursor:pointer; text-decoration:none; } .zsrc:hover { text-decoration:underline; }
  /* karty etapów */
  .etw { display:grid; grid-template-columns:250px 1fr; gap:18px; align-items:start; }
  .etl { position:sticky; top:60px; display:flex; flex-direction:column; gap:2px; }
  .etli { display:flex; gap:9px; align-items:flex-start; padding:8px 10px; border-radius:8px; cursor:pointer; color:var(--tx); text-decoration:none; }
  .etli:hover { background:#f4f1ec; } .etli.on { background:#efe9df; }
  .etli span { flex:1; min-width:0; } .etli b { display:block; font-size:13.5px; font-weight:600; } .etli small { color:var(--mut); font-size:11.5px; }
  .etli em { font-style:normal; background:#fdecea; color:var(--err); border-radius:8px; padding:0 6px; font-size:11px; font-weight:600; }
  .etd { width:10px; height:10px; border-radius:50%; background:#d6d0c8; flex:none; margin-top:5px; display:inline-block; }
  .etd.ks-do_akceptacji { background:#e0a83c; box-shadow:0 0 0 3px #fbf1dc; } .etd.ks-uwagi { background:var(--err); } .etd.ks-zaakceptowany { background:var(--ok); }
  .hkarta { margin:0 0 0 4px; } .hkarta .etd { margin:0; vertical-align:middle; }
  .etc { background:#fff; border:1px solid var(--ln); border-radius:12px; padding:18px 20px; min-width:0; }
  .eth { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:10px; }
  .eth .chip { font-size:12px; padding:2px 9px; border-radius:10px; background:#f3efe9; } .eth .chip.wait { background:#fbf1dc; color:#7a5200; } .eth .chip.err { background:#fdecea; color:var(--err); } .eth .chip.ok { background:#e9f3ec; color:var(--ok); }
  .ethh { display:flex; align-items:center; gap:10px; margin:20px 0 8px; } .ethh b { font-size:12px; text-transform:uppercase; letter-spacing:.08em; color:var(--mut); } .ethh button { margin-left:auto; }
  .etv { border:1px solid var(--ln); border-radius:10px; padding:10px 12px; margin-bottom:8px; } .etv.draft { border-style:dashed; background:#fcfbf8; } .etv.over { border-color:var(--acc); background:#f6f1e7; }
  .etvh { display:flex; gap:8px; align-items:baseline; } .etvh[data-etold] { cursor:pointer; } .etvh small { color:var(--mut); font-size:12px; } .etar { margin-left:auto; color:var(--mut); }
  .etnote { margin:8px 0; font-size:13px; }
  .etfiles { display:grid; grid-template-columns:repeat(auto-fill, minmax(130px, 1fr)); gap:8px; }
  .etf { position:relative; border:1px solid var(--ln); border-radius:8px; overflow:hidden; cursor:pointer; background:#f7f4ef; display:flex; flex-direction:column; }
  .etf img { width:100%; height:92px; object-fit:cover; display:block; } .etf .ext.big { height:92px; display:flex; align-items:center; justify-content:center; font-size:15px; }
  .etf small { font-size:11.5px; padding:4px 6px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; background:#fff; }
  .etfx { position:absolute; top:3px; right:5px; color:#fff; background:rgba(0,0,0,.45); border-radius:50%; width:18px; height:18px; text-align:center; line-height:17px; font-size:13px; opacity:0; text-decoration:none; } .etf:hover .etfx { opacity:1; }
  .etadd { border:1px dashed var(--ln); border-radius:8px; display:flex; align-items:center; justify-content:center; min-height:110px; color:var(--mut); cursor:pointer; font-size:13px; } .etadd:hover { border-color:var(--acc); color:var(--tx); }
  .etk { display:flex; flex-direction:column; gap:6px; max-height:420px; overflow:auto; }
  .etk .bub { padding:7px 10px; border-radius:10px; font-size:13px; max-width:88%; white-space:pre-wrap; } .etk .bub.cl { background:#f3f0eb; align-self:flex-start; } .etk .bub.me { background:#eef3ef; align-self:flex-end; }
  .etk .bub .bh { font-size:11px; color:var(--mut); margin-bottom:2px; white-space:normal; } .etk .bub .bh b { color:var(--tx); }
  .etk .t-akceptacja { background:#e9f3ec !important; } .etk .t-uwagi { background:#fdf0ee !important; } .etk .t-wyslano, .etk .t-otwarto { background:transparent !important; border:1px dashed var(--ln); align-self:center !important; }
  .vtag { background:#fff; border:1px solid var(--ln); border-radius:5px; padding:0 5px; } .etyp { font-weight:600; }
  .etrep { margin-top:10px; } .etrep textarea { min-height:60px; }
  @media (max-width:900px) { .etw { grid-template-columns:1fr; } .etl { position:static; flex-direction:row; overflow-x:auto; } .etli { min-width:180px; } }
  /* etapy: pomieszczenia, tura uwag */
  .etmode { display:flex; gap:8px; align-items:center; margin:4px 0 10px; flex-wrap:wrap; }
  .ettura { background:#fbf6ea; border:1px solid #eedcb3; border-radius:10px; padding:10px 12px; margin-bottom:10px; font-size:13.5px; } .ettura.past { background:#fdf3f2; border-color:#efc9c4; }
  .etpom { border:1px solid var(--ln); border-radius:10px; padding:10px 12px; margin-bottom:12px; }
  .etpomh { display:flex; gap:10px; align-items:center; margin-bottom:6px; } .etpomh b { font-size:12px; text-transform:uppercase; letter-spacing:.08em; color:var(--mut); }
  .etpr { display:flex; gap:10px; align-items:center; padding:6px 0; border-top:1px solid #f1eee9; font-size:13.5px; flex-wrap:wrap; }
  .etpr .chip, .decc .chip { font-size:11.5px; padding:1px 8px; border-radius:10px; background:#f3efe9; } .chip.wait { background:#fbf1dc !important; color:#7a5200; } .chip.err { background:#fdecea !important; color:var(--err); } .chip.ok { background:#e9f3ec !important; color:var(--ok); }
  .etpr .lnkb { margin:0; }
  .etvp { display:flex; gap:6px 10px; flex-wrap:wrap; align-items:center; margin:0 0 8px; font-size:13px; } .etvp .chk2 { margin:0; }
  .etfr { font-size:11px; padding:2px 4px; border:0; border-top:1px solid var(--ln); border-radius:0; background:#faf8f5; }
  .vtag.rm { background:#eef1f6; border-color:#dde3ee; }
  .etzm { display:flex; flex-direction:column; gap:2px; background:#f6f3ee; border-radius:8px; padding:8px 12px; margin-bottom:10px; font-size:13px; } .etzm .lnkb { margin:0; }
  /* decyzje */
  .decc { background:#fff; border:1px solid var(--ln); border-radius:10px; padding:12px 14px; margin-bottom:8px; cursor:pointer; } .decc:hover { border-color:#d6cfc4; }
  .decc.new { border-color:#e6b4af; box-shadow:0 0 0 2px #fdecea; } .decc.zm { border-left:3px solid #c98a1e; }
  .dech { display:flex; gap:8px; align-items:center; flex-wrap:wrap; } .dech b { font-size:15px; }
  .decm { font-size:12.5px; color:var(--mut); margin-top:3px; }
  .deco { font-size:13.5px; margin-top:6px; white-space:pre-wrap; background:#faf8f5; border-radius:8px; padding:7px 10px; } .deco.ans { background:#fbf6ea; }
  .decops { display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; } .decop { border:1px solid var(--ln); border-radius:8px; padding:3px 10px; font-size:13px; } .decop.on { border-color:var(--ok); background:#e9f3ec; color:var(--ok); font-weight:600; }
  .decres { margin-top:8px; font-size:13.5px; color:var(--ok); }
  .deca { display:flex; gap:8px; margin-top:8px; align-items:center; } .deca:empty { display:none; }
  .decedit { display:flex; flex-direction:column; gap:8px; }
  .decer { display:grid; grid-template-columns:20px 1fr 100px 18px; gap:6px; align-items:center; } .decer .decero { grid-column:2 / 4; font-size:12.5px; } .decer .del { cursor:pointer; color:var(--mut); }
  /* brief: zdjęcia i kolory w edytorze */
  .bedimgs { display:flex; flex-wrap:wrap; gap:8px; } .bedimg { position:relative; width:130px; } .bedimg img { width:130px; height:96px; object-fit:cover; border-radius:6px; display:block; background:#f3efe9; } .bedimg input { font-size:12px; padding:3px 6px; margin-top:3px; } .bedimg .rdel { position:absolute; top:3px; right:5px; background:rgba(0,0,0,.5); color:#fff; border-radius:50%; width:18px; height:18px; text-align:center; line-height:17px; }
  .bedimgadd { width:130px; height:96px; border:1.5px dashed var(--ln); border-radius:6px; display:flex !important; align-items:center; justify-content:center; cursor:pointer; color:var(--mut); font-size:13px; } .bedimgadd.busy { opacity:.5; }
  .bedcols { display:flex; flex-wrap:wrap; gap:6px 12px; align-items:center; } .bedcol { display:flex; gap:4px; align-items:center; } .bedcol input[type=color] { width:30px; height:26px; padding:0; border:1px solid var(--ln); border-radius:5px; } .bedcol input:not([type=color]) { width:110px; font-size:12.5px; padding:3px 6px; }
/* panel klienta → powiadomienia czekające na wysłanie */
.powq .powqi{display:flex;gap:8px;align-items:flex-start;padding:6px 8px;border:1px solid var(--ln);border-radius:6px;margin-bottom:4px;font-size:13px}
.powq .powqi span{flex:1}
.powq .powqi small{display:block;color:var(--mut)}
.powq .powqi a{cursor:pointer;color:var(--mut);padding:0 4px}
.powq .powqi a:hover{color:var(--err)}
/* powiadomienia: stan wysyłki, edytor wzoru maila, podgląd */
.powst{margin:8px 0 4px;padding:8px 10px;border-radius:6px;font-size:13px;line-height:1.4}
.powst.on{background:#eef3ef;color:var(--ok)}
.powst.test{background:#fff6d6;color:#7a5b00}
.powst.off{background:var(--soft);color:var(--mut)}
.mailed{display:grid;grid-template-columns:minmax(260px,380px) 1fr;gap:18px;max-width:1100px;align-items:start}
.mailedf textarea{min-height:0;resize:vertical}
.mailedp iframe{width:100%;height:640px;border:1px solid var(--ln);border-radius:8px;background:#f7f6f3}
.mailedp .hint{margin:0 0 6px}
@media (max-width:900px){.mailed{grid-template-columns:1fr}.mailedp iframe{height:520px}}
.mailpv{position:fixed;inset:0;background:rgba(20,20,20,.45);z-index:300;display:flex;align-items:center;justify-content:center;padding:16px}
.mailpvb{background:var(--card);border-radius:10px;width:min(680px,100%);height:min(860px,100%);display:flex;flex-direction:column;overflow:hidden}
.mailpvh{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-bottom:1px solid var(--ln)}
.mailpvh div{flex:1}.mailpvh small{display:block;color:var(--mut);font-size:11px}.mailpvh b{font-size:14px}
.mailpvh .x{cursor:pointer;font-size:22px;line-height:1;color:var(--mut)}
.mailpvb iframe{flex:1;border:0;width:100%;background:#f7f6f3}
/* pływający timer */
.ftim{position:fixed;right:22px;bottom:22px;z-index:40;display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.ftbtn{width:48px;height:48px;border-radius:50%;background:#d23b2f;border:0;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 14px rgba(160,30,20,.35);transition:transform .12s}
.ftbtn:hover{transform:scale(1.07);background:#c0392b}
.ftplay{width:0;height:0;border-left:14px solid #fff;border-top:9px solid transparent;border-bottom:9px solid transparent;margin-left:4px}
.ftbadge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;border-radius:9px;background:#fff;color:#c0392b;border:1px solid #e8b4ae;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px;cursor:pointer}
.ftpill{display:flex;align-items:center;gap:8px;height:44px;padding:0 8px 0 14px;border-radius:22px;background:#fff;border:1px solid #e8b4ae;box-shadow:0 4px 14px rgba(0,0,0,.14);cursor:pointer;font-size:13px;color:var(--tx);max-width:320px}
.ftpill b{font-variant-numeric:tabular-nums;font-size:15px}
.ftpill small{color:var(--mut);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}
.ftstop{width:30px;height:30px;border-radius:50%;background:#d23b2f;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;flex:none}
.ftstop:hover{background:#b03024}
.ftim.long .ftpill{border-color:#e6b84a;background:#fff8e6}
.ftpanel{width:320px;max-width:calc(100vw - 32px);background:var(--card);border:1px solid var(--ln);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.18);padding:14px 16px}
.ftph{display:flex;align-items:flex-start;justify-content:space-between}
.ftph b{font-size:22px;font-variant-numeric:tabular-nums;display:block}.ftph small{color:var(--mut);font-size:12px}
.ftph .x{cursor:pointer;font-size:20px;color:var(--mut);line-height:1}
.ftpanel select,.ftpanel input{width:100%}
.ftend{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ftend .f{width:100%}.ftend input{width:110px}.ftend .hint{font-size:11px}
.ftwarn{margin:8px 0 0;padding:7px 9px;border-radius:6px;background:#fff6d6;color:#7a5b00;font-size:12px}
.ftalert{display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--tx);font-weight:400;text-decoration:none}
.ftu{border:1px solid var(--ln);border-radius:8px;padding:10px;margin-bottom:8px}
.ftuh{display:flex;gap:10px;align-items:baseline;margin-bottom:6px}.ftuh span{color:var(--mut);font-size:12px}
.ftu .row select{flex:1;min-width:0}
@media (max-width:800px){.ftim{right:18px;bottom:86px}.ftpill small{max-width:90px}}
@media print{.ftim{display:none}}
/* Zapytania → wszystkie oferty */
.ofsum{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:0 0 12px}
.ofsum div{background:var(--card);border:1px solid var(--ln);border-radius:8px;padding:10px 12px}
.ofsum small{display:block;color:var(--mut);font-size:11px;text-transform:uppercase;letter-spacing:.03em}
.ofsum b{font-size:18px;font-variant-numeric:tabular-nums}
.offil{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 10px}.offil select{width:auto}
.oftw{overflow-x:auto;border:1px solid var(--ln);border-radius:8px;background:var(--card)}
.oft{width:100%;margin:0;border:0}.oft th{cursor:pointer;white-space:nowrap;user-select:none}.oft td,.oft th{font-size:13px}.oft td{white-space:nowrap}
.oft tr[data-ofr]{cursor:pointer}.oft tr[data-ofr]:hover td{background:var(--soft)}
.oft .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.oft .ofpow{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--mut)}
@media (max-width:900px){.ofsum{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ofhar{width:100%;max-width:680px}.ofhar td:first-child{width:52%}.ofhar input[data-ohf="n"]{width:calc(100% - 46px)}.ofhar td{vertical-align:middle}
/* zaznaczanie wielu wierszy i akcje grupowe */
table.z .bkc{width:28px;padding-left:8px;padding-right:2px}
table.z .bkc input{width:auto;margin:0;cursor:pointer;accent-color:var(--acc,#2f2f2f)}
table.z tr.bksel td{background:#f4efe6}
.bkbar{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;z-index:45;display:flex;align-items:center;gap:8px;flex-wrap:wrap;max-width:calc(100vw - 32px);padding:8px 12px;background:var(--card);border:1px solid var(--ln);border-radius:10px;box-shadow:0 8px 28px rgba(0,0,0,.18);font-size:13px}
.bkbar select{width:auto;padding:4px 6px;font-size:13px}
.bkbar .bkdate{display:flex;align-items:center;gap:4px;color:var(--mut)}.bkbar .bkdate input{width:auto;padding:3px 6px;font-size:13px}
.bkbar.busy{opacity:.6;pointer-events:none}
table.prt.bk td:nth-child(2){white-space:nowrap}table.prt.bk td:nth-child(3){white-space:normal}
table.zsum.bk td:nth-child(2){white-space:normal}table.zsum.bk td:nth-child(3){white-space:nowrap}
tr.zmulti td.bkc{box-shadow:none}tr.zmulti td:nth-child(2){box-shadow:inset 3px 0 0 #8a7564}
@media (max-width:800px){.bkbar{bottom:150px}}
@media print{.bkbar,table.z .bkc{display:none}}
/* cofanie (Ctrl+Z) */
.undot{position:fixed;left:260px;bottom:22px;z-index:60;display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:8px;background:#2b2a28;color:#fff;font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.25);transform:translateY(140%);opacity:0;transition:transform .2s,opacity .2s;pointer-events:none}
.undot.on{transform:none;opacity:1;pointer-events:auto}
.undot a{color:#f3d9a4;font-weight:600;cursor:pointer;text-decoration:underline}
.undot small{color:#aaa;font-size:11px}
@media (max-width:800px){.undot{left:12px;right:12px;bottom:150px}.undot small{display:none}}
/* Finanse → Płatności: „+ Dodaj” */
.fadd{position:relative;display:inline-block}
.faddm{position:absolute;right:0;top:calc(100% + 4px);z-index:30;background:var(--card);border:1px solid var(--ln);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);padding:4px;min-width:170px}
.faddm a{display:block;padding:7px 10px;border-radius:6px;cursor:pointer;font-size:13px;white-space:nowrap}.faddm a:hover{background:var(--soft)}
/* nazwa aplikacji */
.appname{letter-spacing:.01em}.appname span,.mbrand span{color:var(--mut);font-weight:500}
/* clipper – pobieranie i instrukcja */
.sclip{display:flex;align-items:center;gap:8px;padding:6px 14px;margin:0 4px 6px;border-radius:8px;color:var(--mut);font-size:12.5px;cursor:pointer}
.sclip:hover{background:#fff;color:var(--tx)}
.clkroki{padding-left:0;list-style:none;counter-reset:k;margin:14px 0 4px}
.clkroki li{counter-increment:k;position:relative;padding:0 0 12px 34px;font-size:13px;line-height:1.5}
.clkroki li::before{content:counter(k);position:absolute;left:0;top:0;width:22px;height:22px;border-radius:50%;background:var(--soft);color:var(--tx);font-weight:600;font-size:12px;display:flex;align-items:center;justify-content:center}
.clkroki li > b{display:block}.clkroki li div b{color:var(--tx);font-weight:600}.clkroki li div{color:var(--mut)}
/* obecność zespołu */
.sobec{padding:8px 10px 4px}
.obh{font-size:11px;color:var(--mut);margin:0 0 6px;letter-spacing:.02em}
.obl{display:flex;flex-wrap:wrap;gap:6px}
.obk{position:relative;display:inline-flex;cursor:pointer}
.obk .oini{width:26px;height:26px;font-size:12px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:#fff;font-weight:600}
.obk.off .oini{opacity:.45;filter:grayscale(.6)}
.obd{position:absolute;right:-1px;bottom:-1px;width:9px;height:9px;border-radius:50%;border:2px solid var(--bg,#f6f4f1);background:#b9b3ab}
.obk.on .obd{background:#34a853}.obk.idle .obd{background:#e0a83c}
.obt{position:absolute;left:-2px;top:-2px;width:8px;height:8px;border-radius:50%;background:#d23b2f;border:2px solid var(--bg,#f6f4f1)}
.mobec{display:flex;gap:4px}.mobec .obk .oini{width:22px;height:22px;font-size:11px}
.obpop{position:fixed;z-index:70;background:var(--card);border:1px solid var(--ln);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.15);padding:9px 12px;font-size:12.5px;line-height:1.5;max-width:260px}
.obpop .obs{color:var(--mut)}.obpop .obs.on{color:#2e8a47}.obpop .obtm{color:#b03024}
/* Jak korzystać + podpowiedzi */
.pomv{padding:24px 28px 60px;max-width:1150px}
.pomh{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:8px}.pomh input{max-width:360px}
.pomtips{display:flex;align-items:center;gap:16px;flex-wrap:wrap;font-size:13px;margin:0 0 18px;color:var(--mut)}
.pomgrid{display:grid;grid-template-columns:200px 1fr;gap:28px;align-items:start}
.pomnav{position:sticky;top:16px;display:flex;flex-direction:column;gap:2px}
.pomnav a{padding:6px 10px;border-radius:6px;cursor:pointer;font-size:13px;color:var(--mut)}.pomnav a:hover,.pomnav a.on{background:#fff;color:var(--tx)}
.poms{background:var(--card);border:1px solid var(--ln);border-radius:10px;padding:16px 20px;margin-bottom:12px;scroll-margin-top:16px}
.pomsh{display:flex;align-items:baseline;gap:12px}.pomsh h2{font-size:16px;margin:0 0 6px;flex:1}
.poms p{margin:6px 0;font-size:13.5px;line-height:1.6;max-width:760px}
.pomtip{position:fixed;right:22px;bottom:86px;z-index:55;width:350px;max-width:calc(100vw - 32px);background:var(--card);border:1px solid var(--ln);border-left:3px solid #e0a83c;border-radius:10px;box-shadow:0 12px 32px rgba(0,0,0,.16);padding:12px 14px;font-size:13px;line-height:1.5;opacity:0;transform:translateY(10px);transition:opacity .2s,transform .2s}
.pomtip.on{opacity:1;transform:none}
.pomtiph{display:flex;align-items:center;gap:8px}.pomtiph b{flex:1}.pomtiph .x{cursor:pointer;color:var(--mut);font-size:18px;line-height:1}
.pomtip p{margin:6px 0 10px;color:#4a4744}
.pomtipa{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.pomtipa .lnkb{font-size:12px;margin:0}
@media (max-width:800px){.pomv{padding:16px}.pomgrid{grid-template-columns:1fr}.pomnav{display:none}.pomtip{right:16px;left:16px;width:auto;bottom:150px}}
@media print{.pomtip{display:none}}
/* Pulpit – harmonogram biura w skrócie */
.pbiuro{margin-top:16px}
.pbiuro .pch{flex-wrap:wrap;gap:10px}.pbsum{font-size:12.5px;color:var(--mut)}
.pbgrid{display:grid;gap:4px 4px;align-items:center;margin:8px 0 4px}
.pbw{font-size:11px;color:var(--mut);text-align:center}.pbw.on{color:var(--tx);font-weight:600}
.pbk{font-size:13px;display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden}
.pbc{height:24px;border-radius:4px;background:#f2efea;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;cursor:default}
.pbc.l1{background:#e6efe8;color:#2e6b45}.pbc.l2{background:#c9dfcf;color:#245a39}.pbc.l3{background:#f3dcab;color:#7a5200}.pbc.l4{background:#efb7ae;color:#8f1d15}
.pbtog{display:inline-block;margin:6px 0 0;font-size:12.5px}
.pblist{display:flex;flex-direction:column;margin-top:6px}
.pbr{display:grid;grid-template-columns:120px 1fr;gap:2px 12px;padding:7px 4px;border-top:1px solid var(--ln);cursor:pointer;font-size:13px;color:var(--tx);text-decoration:none}
.pbr:hover{background:var(--soft)}.pbr small{grid-column:2;color:var(--mut);font-size:12px}
.pbt{grid-row:span 2;font-size:12px;color:var(--mut)}.pbt.late{color:var(--err);font-weight:600}
@media (max-width:800px){.pbgrid{grid-template-columns:72px repeat(6,1fr)!important}.pbk{font-size:12px}.pbw{font-size:10px}}

/* iPad / iPhone: pasek boczny mieści się w widocznej części ekranu (Safari liczy 100vh razem z paskami przeglądarki) */
.side{padding-bottom:calc(14px + env(safe-area-inset-bottom))}
.sfoot{position:sticky;bottom:calc(-14px - env(safe-area-inset-bottom));background:#f4f1ec;padding-bottom:6px;z-index:1}
@media (max-width:800px){.side{height:auto;max-height:100dvh}}
  /* własne statusy */
  .zc.zreal { border-style:dashed; border-color:#c9b9a6; }
  .zrst { width:auto; font-size:11px; padding:1px 4px; height:auto; max-width:100%; border-color:transparent; font-weight:500; border-radius:8px; }
  table.sttab td { vertical-align:middle; } .sthdl a { cursor:pointer; color:var(--mut); padding:0 2px; text-decoration:none; } .sthdl a:hover { color:#2b2622; }
  /* zakładka + SOTE */
  .zakl { display:inline-block; padding:7px 14px; border-radius:8px; background:#2f2b27; color:#fff !important; font-weight:600; text-decoration:none; cursor:grab; }
  /* nowa wersja */
  .wersjabar { position:fixed; top:12px; left:50%; transform:translateX(-50%); z-index:9999; display:flex; align-items:center; gap:12px; background:#2f2b27; color:#fff; padding:9px 12px 9px 16px; border-radius:10px; box-shadow:0 6px 24px rgba(0,0,0,.18); font-size:13px; max-width:calc(100vw - 32px); }
  .wersjabar button { background:#fff; color:#2f2b27; border:0; padding:5px 12px; border-radius:6px; font-weight:600; cursor:pointer; }
  .wersjabar a { color:#cfc7bd; cursor:pointer; text-decoration:underline; font-size:12px; }
  /* numer wersji przy nazwie */
  .bwer, .side a.bwer { display:inline !important; padding:0 !important; background:none !important; border:0 !important; margin-left:6px; font-size:10.5px; font-weight:500; color:var(--mut); opacity:.75; letter-spacing:0; text-decoration:none; cursor:pointer; white-space:nowrap; }
  .bwer:hover { opacity:1; text-decoration:underline; }
  .appname .bwer { font-size:12px; cursor:default; vertical-align:middle; }
  .appname .bwer:hover { text-decoration:none; }
  .mbrand { white-space:nowrap; }
  /* przeciąganie palcem (js/29-dotyk.js) */
  .tdrag-ghost { position:fixed; z-index:9999; pointer-events:none; opacity:.92; transform:rotate(1.5deg) scale(1.02); box-shadow:0 12px 30px rgba(0,0,0,.22); margin:0 !important; }
  .tdrag-src { opacity:.35; }
  html.tdrag-on, html.tdrag-on body { -webkit-user-select:none; user-select:none; touch-action:none; }
  @media (hover:none) { [draggable="true"] { -webkit-touch-callout:none; -webkit-user-select:none; user-select:none; -webkit-user-drag:none; } }
  /* okienko boczne zawsze nad górnym paskiem (iPad / telefon) – krzyżyk nie jest zasłonięty */
  .drawer { z-index:21; padding-top:max(20px, env(safe-area-inset-top)); }
  .shade { z-index:19; }
  .drawer .x { position:sticky; top:0; z-index:2; background:var(--card); border-radius:50%; width:32px; height:32px; display:flex; align-items:center; justify-content:center; margin:-6px -8px 0 0; }
  .qpop { z-index:30; }
