/* Module-specific layout: Ceníky master-detail, customer pricing, lookups, PDF preview */

/* ── Ceníky: master-detail grid ── */
.pricing{display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start}
.lihost{padding:8px;max-height:calc(100vh - 240px);overflow:auto}
.li{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;cursor:pointer}
.li:hover{background:var(--card-2)}
.li.on{background:var(--red-t);box-shadow:inset 3px 0 0 var(--red)}
.li .ic{width:38px;height:38px;border-radius:9px;background:var(--red-t);color:var(--red-d);
  display:grid;place-items:center;font-weight:800;font-size:12px;flex:0 0 auto}
.li .nm{font-weight:650;font-size:13.5px}
.li .sub{color:var(--ink-2);font-size:12px}
.li .rt{margin-left:auto;text-align:right}

/* ── Ceníky: detail header ── */
.det-hd{padding:14px 18px;border-bottom:1px solid var(--line)}
.det-hd .row1{display:flex;align-items:center;gap:10px}
.det-hd h2{margin:0;font-size:19px;font-weight:800}
.badges{display:flex;gap:7px;margin-top:9px;flex-wrap:wrap;align-items:center}
.det-hd .seg{margin-top:12px}

/* ── Customer pricing / lookups ── */
.grid2{display:grid;grid-template-columns:1.1fr 1fr;gap:16px;align-items:start}
.formcard{padding:16px 18px}
.formcard .fld{margin-bottom:13px}
.formcard label{font-size:12px;font-weight:700;color:var(--ink-2);display:block;margin-bottom:5px}
.formcard select,.formcard input{width:100%;border:1px solid var(--in-bd);border-radius:9px;
  padding:8px 11px;font-size:14px;outline:none;font-family:inherit;background:var(--card);color:var(--ink)}
.formcard select:focus,.formcard input:focus{border-color:var(--red);box-shadow:0 0 0 3px var(--red-t)}
.steps{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.step{flex:1;min-width:110px;border:1px solid var(--line);background:var(--card-2);border-radius:10px;padding:10px 12px}
.step .n{font-size:10.5px;font-weight:800;color:var(--red);letter-spacing:.04em}
.step b{display:block;font-size:13px;margin-top:2px}
.step small{color:var(--ink-2)}
.arrow{color:var(--in-bd);font-weight:800;font-size:16px}
.exbox{margin-top:14px;background:var(--card-2);border:1px solid var(--line);border-radius:10px;
  padding:12px 14px;font-size:13px}
.lookrow{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--line-2)}
.lookrow:last-child{border-bottom:none}
.lookrow .o{color:var(--ink-3);font-size:12px;width:18px;text-align:center}

/* ── Ceníky: drag-to-reorder items (Pořadí) ── */
#det-items tr.drag{cursor:grab}
#det-items tr.drag:active{cursor:grabbing}
#det-items tr.dragging{opacity:.4;background:var(--red-t)}
#det-items .drag-handle{white-space:nowrap}
#det-items .drag-handle .dh{display:inline-block;color:var(--ink-3);font-weight:700;
  margin-right:6px;letter-spacing:-1px}
#det-items tr.drag:hover .drag-handle .dh{color:var(--red-d)}

/* ── Ceníky: derived line category tags (device / set / spare part) ── */
.kat{display:inline-block;font-size:10px;font-weight:700;line-height:1;
  padding:2px 6px;border-radius:10px;vertical-align:middle;white-space:nowrap}
/* Export-PDF split button + dropdown (Jen zařízení / Celý ceník) */
.splitbtn{position:relative;display:inline-flex}
.splitbtn .btn:first-child{border-top-right-radius:0;border-bottom-right-radius:0}
.splitbtn .caret{border-top-left-radius:0;border-bottom-left-radius:0;padding-left:7px;padding-right:7px;margin-left:-1px}
.splitbtn .menu{position:absolute;top:100%;right:0;margin-top:3px;min-width:180px;z-index:60;
  background:var(--card);border:1px solid var(--line);border-radius:7px;box-shadow:0 8px 22px rgba(0,0,0,.16);overflow:hidden}
.splitbtn .menu.hidden{display:none}
.splitbtn .menu div{padding:9px 13px;font-size:13px;cursor:pointer;white-space:nowrap}
.splitbtn .menu div:hover{background:var(--card-2)}
/* fixed pastel category tints — readable in both themes (dark text on light chip) */
.kat-device{background:#e7f0e7;color:#2f6b34}
.kat-accessory{background:#e6eef5;color:#345a7a}
.kat-set{background:#eee7f3;color:#6a3f8c}
.kat-spare_part{background:#f0ece2;color:#7a6a3a}

/* ── Servis: free-text detail sections ── */
.svsec{padding:12px 18px;border-bottom:1px solid var(--line-2)}
.svsec:last-child{border-bottom:none}
.svsec .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2);font-weight:700;margin-bottom:4px}
.svsec .tx{font-size:13.5px;white-space:pre-wrap;line-height:1.5}

/* ── Objednávky/Nabídky/Poptávky: list is full-width; record detail + its
   composition now live in the shared right-side drawer (see components.css
   .drawer). The old .obj-split/.obj-detail inline panel was removed. ── */

/* Servis + Objednávky + Nabídky tables fill the viewport height (detail lives
   in the drawer now, so the list gets the whole screen) instead of the shared
   .tbl-scroll 400px cap. Gated above the mobile breakpoint so mobile.css's
   max-height:none still wins. */
@media(min-width:701px){
  #srv-table .tbl-scroll,
  #obj-table .tbl-scroll,
  #nab-table .tbl-scroll{max-height:calc(100vh - 312px)}
  /* Poptávky has no KPI strip and no footer above/below the list, so it needs
     a smaller offset than the KPI-topped screens to fill the same height. */
  #pop-table .tbl-scroll{max-height:calc(100vh - 177px)}
}

/* Tables with a user-configurable column layout (colTable() in ui.js): widths
   come from the layout's <colgroup>, so the table is fixed-layout — every
   column keeps exactly the width it was dragged to instead of being
   re-balanced by its content. */
table.coltbl{table-layout:fixed;width:100%}
table.coltbl th{position:relative}
table.coltbl td{overflow:hidden;text-overflow:ellipsis}
/* opt-out for a column whose value is prose, not a code: wrap it instead of
   cutting it off at the column's width */
table.coltbl td.wrap{white-space:normal;overflow-wrap:anywhere;text-overflow:clip}
/* ExO and the serial number are long codes: let them wrap inside their column
   rather than being clipped. */
#srv-table td.srv-exo,#srv-table td.srv-serc{white-space:normal;overflow-wrap:anywhere;word-break:break-word}

/* Drag handle on the right edge of every header cell. */
.colrz{position:absolute;top:0;right:0;width:7px;height:100%;cursor:col-resize;user-select:none}
.colrz:hover{background:var(--red);opacity:.45}
body.col-resizing{cursor:col-resize;user-select:none}

/* Column chooser (modal): draggable rows, checkbox = visibility. */
.collist{display:flex;flex-direction:column;gap:2px;max-height:52vh;overflow:auto}
.colrow{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:6px;cursor:grab;background:var(--card-2);border:1px solid var(--line)}
.colrow:hover{border-color:var(--in-bd)}
.colrow.dragging{opacity:.45}
.colrow label{display:flex;align-items:center;gap:6px;flex:1;cursor:pointer;margin:0}
.colrow label input{width:auto}
.colrow .grip{color:var(--ink-3);letter-spacing:-2px}

/* ── PDF preview — a paper sheet, deliberately light in both themes ── */
.pdfprev{padding:18px}
.pdf{max-width:560px;margin:0 auto;background:#fff;border:1px solid var(--line);
  box-shadow:var(--sh);padding:22px 26px;font-size:12px;color:#1E1A1B}
.pdf .h{display:flex;justify-content:space-between;align-items:flex-start}
.pdf .logo{background:#B01E2E;color:#fff;font-weight:800;padding:5px 11px;
  border-radius:3px;letter-spacing:.5px}
.pdf h4{text-align:center;margin:12px 0 8px}
.pdf table th{background:#D9D2BF;color:#3a3320;border:1px solid #b9b08f;
  text-transform:none;letter-spacing:0;font-size:11px;
  position:static;box-shadow:none;padding:5px 7px}
.pdf table td{border:1px solid #d8cfb0;background:#EDE8DA;font-size:11px;color:#1E1A1B;padding:4px 7px}

@media(max-width:900px){.pricing,.grid2{grid-template-columns:1fr}}

/* ── Admin dashboard (V6) ─────────────────────────────────────── */
.dsh-alerts{display:grid;gap:8px}
.dsh-quiet{font-size:12.5px;color:var(--ink-2);margin:8px 2px 14px}
.dsh-quiet:empty{margin:0 0 12px}
.dsh-digest{font-size:12.5px;color:var(--ink-2);margin:8px 2px 14px}
.dsh-digest b{color:var(--ink);font-weight:700}
.dsh-digest b.bad{color:var(--bad)}
.dsh-digest.muted{color:var(--ink-3)}
.dal{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);
  border-left:4px solid var(--line);border-radius:10px;padding:11px 14px}
.dal.crit{border-left-color:var(--bad)} .dal.warn{border-left-color:var(--warn)}
.dal.info{border-left-color:var(--info)}
.dal:hover{border-color:var(--ink-3);border-left-width:4px}
.dal .dal-n{font-size:21px;font-weight:800;min-width:62px;text-align:right}
.dal .dal-t b{display:block;font-size:14px}
.dal .dal-t span{font-size:12.5px;color:var(--ink-2)}
.dal .link{margin-left:auto;color:var(--info);font-weight:600;font-size:12.5px;white-space:nowrap}
.dsh-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:12px}
.dsh-kpis .kpi .n{font-size:26px;font-weight:800;letter-spacing:-.01em}
.dsh-kpis .kpi .l{font-size:12.5px;color:var(--ink-2);margin-top:1px}
.dsh-kpis .kpi .s{font-size:12px;color:var(--ink-3);margin-top:6px}
.dsh-kpis .kpi:hover{border-color:var(--ink-3)}
.kpi-trend{display:flex;align-items:center;gap:6px;margin-top:8px}
.kpi-spark{display:block;flex-shrink:0}
.kpi-delta{font-size:11.5px;font-weight:700;white-space:nowrap}
.kpi-delta.good{color:var(--ok)}
.kpi-delta.bad{color:var(--bad)}
.kpi-delta.muted{color:var(--ink-3);font-weight:600}
.dsh-states{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.dsh-states h4{margin:0 0 10px;font-size:13px;color:var(--ink-2);font-weight:600}
.chart-cap{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.chart-cap .cv{font-size:12px;color:var(--ink-3)}
.axis{font-size:9.5px;fill:var(--ink-3);font-family:inherit}
.dlabel{font-size:10px;font-weight:700;fill:var(--ink-2);font-family:inherit}
.gridln{stroke:var(--line-2);stroke-width:1}
.barfill{fill:var(--info)}
.bar:hover .barfill{filter:brightness(0.82)}
[data-bar]{cursor:pointer}
.dsh-hitrect{cursor:crosshair}
.dsh-crosshair{stroke:var(--ink-3);stroke-width:1}
.dsh-hoverdot{stroke:var(--card);stroke-width:2}
.sez{font-size:12.5px;color:var(--ink-2);font-weight:400}
.hbar{display:grid;grid-template-columns:110px 1fr 64px;gap:8px;align-items:center;font-size:12.5px;margin:5px 0}
.hbar .tr{height:10px;border-radius:4px;background:var(--mut-t);overflow:hidden}
.hbar .fl{height:100%;border-radius:4px;display:block}
.hbar .v{text-align:right;color:var(--ink-2)}
@media (max-width:1000px){.dsh-states{grid-template-columns:1fr}}

/* chart hover tooltip — single shared instance, positioned in JS. Value
   leads (strong, high-contrast); the month label follows, secondary. */
.dsh-tip{position:fixed;display:none;z-index:1000;pointer-events:none;
  background:var(--card);border:1px solid var(--line);border-radius:8px;
  box-shadow:var(--sh);padding:7px 10px;white-space:nowrap}
.dsh-tip b{display:block;font-size:14px;font-weight:700;color:var(--ink);
  font-variant-numeric:tabular-nums}
.dsh-tip-l{display:block;font-size:11.5px;color:var(--ink-3);margin-top:1px}

/* ── Admin dashboard: layout + tables ──────────────────────────── */
.dsh-bar{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.dsh-row3{display:grid;gap:12px;margin-bottom:12px}
/* .card carries no padding of its own (see components.css) — these dashboard
   cards aren't KPI tiles (which get padding from .kpi), so give them their
   own or their content sits flush against the border. */
.dsh-row3 > .card:not(.kpi),
.dsh-states > .card{padding:16px}
.dsh-row3 table{width:100%;border-collapse:collapse;font-size:13px}
.dsh-states table{width:100%;border-collapse:collapse;font-size:13px}
.dsh-row3 th,.dsh-states th{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);
  text-align:left;font-weight:600;padding:4px 8px;border-bottom:1px solid var(--line)}
.dsh-row3 td,.dsh-states td{padding:6px 8px;border-bottom:1px solid var(--line-2)}
.dsh-row3 td.r,.dsh-row3 th.r,.dsh-states td.r,.dsh-states th.r{text-align:right}
@media (max-width:1000px){
  .dsh-row3{grid-template-columns:1fr !important}
}

/* ── Admin dashboard: Objednávky / Servis detail cards ────────── */
.dfigs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:4px 0 12px}
.dfig{text-align:center;background:var(--card-2);border:1px solid var(--line-2);border-radius:8px;padding:8px 4px}
.dfig .fn{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}
.dfig .fn.bad{color:var(--bad)} .dfig .fn.warn{color:var(--warn)}
.dfig .fl{font-size:11px;color:var(--ink-3);margin-top:3px;line-height:1.25}
.dnote{font-size:12.5px;color:var(--ink-2);margin:2px 0}
.dnote b{color:var(--ink)}
.dsub{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);margin:12px 0 5px}
.dtop{display:flex;flex-direction:column;gap:3px}
.dtr{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:3px 0;border-bottom:1px solid var(--line-2)}
.dtr:last-child{border-bottom:none}
.dtn{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dtv{color:var(--ink-2);font-weight:700}
@media (max-width:560px){.dfigs{grid-template-columns:repeat(2,1fr)}}

/* dashboard detail: money rows */
.dmoney{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;margin:8px 0 2px;
  padding-top:8px;border-top:1px solid var(--line-2);font-size:13px}
.dmoney .dml{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--ink-3);flex-basis:100%}
.dmoney .dmv{color:var(--ink)}
.dmoney .dmv b{font-size:15px}
.dmoney .dmv.muted{color:var(--ink-3);font-size:12px}

/* dashboard detail: yearly amount tables */
.dyt{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:4px}
.dyt th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);
  font-weight:600;text-align:left;padding:3px 8px;border-bottom:1px solid var(--line)}
.dyt td{padding:3px 8px;border-bottom:1px solid var(--line-2);font-variant-numeric:tabular-nums}
.dyt tr:last-child td{border-bottom:none}
.dyt td.r,.dyt th.r{text-align:right}

/* dashboard yearly table: grand-total row */
.dyt .dyt-tot td{border-top:2px solid var(--line);border-bottom:none;font-weight:700;padding-top:5px}
.dyt .dyt-tot td:first-child{color:var(--ink-2);text-transform:uppercase;font-size:11px;letter-spacing:.04em}

/* customer addresses: billing + shipping branch cards (nastaveni drawer) */
.addr-card{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;
  border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:6px;
  font-size:12.5px;line-height:1.5}
.addr-card.empty-addr{align-items:center;color:var(--ink-3)}
.addr-card .addr-body{min-width:0}
.addr-card .addr-actions{display:flex;gap:6px;flex-shrink:0}

/* ── Historie změn (audit log) — field-level diff cells ─────────────────────── */
.hst-diff{display:flex;flex-direction:column;gap:2px}
.hst-chg{font-size:13px;line-height:1.5}
.hst-fld{color:var(--ink-2);font-weight:600}
.hst-old{color:var(--ink-3);text-decoration:line-through}
.hst-arr{color:var(--ink-3);margin:0 2px}
.hst-new{color:var(--ink);font-weight:600}
