/* styles/nabidka.css
   Styly pro Generátor nabídek (views/nabidka.js). Ceník se edituje v views/components.js.
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── Layout generátoru nabídky ─────────────────────────────────────────────── */
.ng-wrap   { display:flex; flex-direction:column; min-height:100vh; }
.ng-body   { display:flex; align-items:flex-start; flex:1; }
.ng-sidebar{ width:360px; min-width:280px; overflow-y:auto;
             background:var(--c-surface); border-right:1px solid var(--c-border);
             padding:14px 12px 90px;            /* spodní padding aby ng-toolbar nepřekrýval Přepočítat */
             flex-shrink:0; display:flex; flex-direction:column; gap:10px;
             position:sticky; top:48px; max-height:calc(100vh - 48px); }
.ng-main   { flex:1; padding:20px 24px 100px;    /* analogicky pro hlavní obsah */
             display:flex; flex-direction:column; gap:14px; }
.ng-toolbar{ position:fixed; bottom:0; left:0; right:0; background:var(--c-surface);
             border-top:1px solid var(--c-border); padding:10px 24px;
             display:flex; align-items:center; justify-content:space-between; gap:12px;
             flex-wrap:wrap;
             box-shadow:0 -2px 10px rgba(0,0,0,.07); z-index:50; }
.tb-actions{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; }

/* ── Sidebar sekce ─────────────────────────────────────────────────────────── */
.cfg-sec   { background:var(--c-bg); border:1px solid var(--c-border);
             border-radius:var(--c-radius); padding:12px 14px; }
.cfg-title { font-size:11px; font-weight:700; text-transform:uppercase;
             letter-spacing:.06em; color:var(--c-text-muted); margin-bottom:10px; }
.cfg-grid  { display:grid; grid-template-columns:1fr 1fr; gap:7px; }
.cfg-full  { grid-column:1/-1; }
.cfg-lbl   { display:block; font-size:11px; font-weight:600; color:var(--c-text-muted); margin-bottom:2px; }

/* Aktivní zákazník — pill v sidebar nad pick/import buttons. Zvýrazní, že
   generátor je napojený na konkrétní offer.json (linkedOffer != null). */
.ng-customer-active {
  display:flex; align-items:center; gap:8px;
  padding:8px 12px; margin-bottom:8px;
  background:var(--c-primary-bg);
  border:1.5px solid var(--c-primary);
  border-radius:var(--c-radius);
  font-size:13px;
}
.ng-customer-active-label {
  color:var(--c-primary); font-size:10px; font-weight:700;
  text-transform:uppercase; letter-spacing:.05em;
}
.ng-customer-active strong { color:var(--c-text); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ng-customer-id { font-family:monospace; color:var(--c-primary); font-size:11px; opacity:.8; }
.ng-customer-clear {
  background:none; border:none; cursor:pointer;
  color:var(--c-text-muted); font-size:18px; line-height:1;
  padding:0 6px; border-radius:4px; transition:all .15s;
}
.ng-customer-clear:hover { background:#fef2f2; color:#dc2626; }

/* ── Systémový souhrn ──────────────────────────────────────────────────────── */
.sys-summary{ background:var(--c-primary-bg); border:1px solid;
              border-color:color-mix(in srgb,var(--c-primary) 30%,transparent);
              border-radius:6px; padding:8px 12px; font-size:12px; color:var(--c-primary);
              font-weight:600; display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.sys-sum-item{ display:flex; align-items:center; gap:4px; }

/* ── Šablona status ────────────────────────────────────────────────────────── */
.tpl-status-box{ font-size:12px; padding:7px 10px; border-radius:6px; border:1px solid; line-height:1.4; }
.tpl-missing   { background:var(--c-bg); color:var(--c-text-muted); border-color:var(--c-border); }
.tpl-ok        { background:var(--c-green-bg); color:var(--c-green); border-color:#86efac; font-weight:600; }

/* ── Dirty banner ──────────────────────────────────────────────────────────── */
.dirty-banner{ background:#fff7ed; border:1px solid #fed7aa; border-radius:6px;
               padding:6px 12px; font-size:12px; color:#92400e;
               display:none; align-items:center; gap:6px; }
.dirty-banner.visible{ display:flex; }
[data-theme="dark"] .dirty-banner { background:#1a0d00; }

/* ── Tabulka položek ───────────────────────────────────────────────────────── */
.table-card       { background:var(--c-surface); border:1px solid var(--c-border); border-radius:var(--c-radius); overflow:hidden; }
.table-card-header{ padding:11px 16px; border-bottom:1px solid var(--c-border);
                    display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; }
.tc-title  { font-size:13px; font-weight:600; color:var(--c-text); }
.tc-meta   { font-size:11px; color:var(--c-text-muted); }

.offer-table{ width:100%; border-collapse:collapse; font-size:13px; }
.offer-table th{
  padding:7px 10px; background:var(--c-bg);
  border-bottom:2px solid var(--c-border);
  font-size:10px; font-weight:700; text-transform:uppercase;
  letter-spacing:.05em; color:var(--c-text-muted); white-space:nowrap;
}
.offer-table td { padding:4px 7px; border-bottom:1px solid var(--c-border-light); vertical-align:middle; }
.offer-table tr.tr-sec td {
  background:var(--c-bg); font-size:10px; font-weight:700;
  text-transform:uppercase; letter-spacing:.07em; color:var(--c-text-muted);
  padding:8px 10px 3px; border-bottom:none;
}
.offer-table tbody tr:not(.tr-sec):hover td { background:var(--c-bg); }

/* Inline inputs v tabulce */
.ti           { border:1px solid transparent; border-radius:4px; padding:3px 5px;
                font-size:13px; font-family:inherit; background:transparent; color:var(--c-text);
                transition:border-color .12s,background .12s; }
.ti:hover     { border-color:var(--c-border); background:var(--c-surface); }
.ti:focus     { border-color:var(--c-primary); background:var(--c-surface); outline:none; }
.ti[type="number"]{ text-align:right; -moz-appearance:textfield; }
.ti[type="number"]::-webkit-inner-spin-button,
.ti[type="number"]::-webkit-outer-spin-button{ -webkit-appearance:none; }
.ti-name   { width:100%; min-width:160px; }
.ti-mj     { width:34px; text-align:center; }
.ti-price  { width:95px; }
.ti-qty    { width:52px; }
.td-total  { text-align:right; font-weight:600; white-space:nowrap; padding-right:12px !important; min-width:90px; }
/* Zisk per položka — interní sloupec, .no-print v HTML ho schová v tisku/PDF.
   Excel/PDF export buduje vlastní data array z items[] (ne ze DOMu), takže
   tento sloupec se v exportu neobjeví. */
.td-profit { text-align:right; font-weight:600; white-space:nowrap; padding-right:12px !important; min-width:80px; font-size:12px; }
.td-del    { padding:0 4px 0 2px !important; width:26px; }
.btn-del   { background:none; border:none; color:var(--c-text-light); cursor:pointer;
             font-size:16px; line-height:1; padding:2px 4px; border-radius:4px; }
.btn-del:hover{ color:#dc2626; background:#fef2f2; }
.td-num    { color:var(--c-text-muted); font-size:11px; padding-left:10px !important; width:28px; }
.add-row-bar{ padding:8px 12px; border-top:1px solid var(--c-border-light); }

/* ── Souhrn (totals) ───────────────────────────────────────────────────────── */
.totals-card{ background:var(--c-surface); border:1px solid var(--c-border); border-radius:var(--c-radius); padding:14px 20px; }
.tot-row    { display:flex; justify-content:space-between; align-items:center;
              padding:4px 0; font-size:13px; border-bottom:1px solid var(--c-border-light); }
.tot-row:last-child { border-bottom:none; }
.tot-lbl    { color:var(--c-text-muted); }
.tot-val    { font-weight:600; }
.tot-big    { font-size:15px; font-weight:700; padding:5px 0; }
.tot-nzu    { color:var(--c-primary); font-weight:600; }
.tot-fin    { font-size:16px; font-weight:700; color:var(--c-primary);
              padding-top:8px; margin-top:2px; border-top:2px solid var(--c-border) !important; }

/* ── Kalkulace zisku (interní) ─────────────────────────────────────────────── */
.profit-card { background:#fffbeb; border:1px solid #fde68a; border-radius:var(--c-radius); padding:12px 16px; }
[data-theme="dark"] .profit-card { background:#1a160a; border-color:#854d0e; }
.profit-hd   { display:flex; align-items:center; justify-content:space-between; cursor:pointer; user-select:none; }
.profit-hdl  { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:#854d0e; }
[data-theme="dark"] .profit-hdl { color:#fbbf24; }
.profit-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px; margin-top:12px; }
.prft-item   { text-align:center; background:rgba(255,255,255,.55); border-radius:6px; padding:8px 4px; }
[data-theme="dark"] .prft-item { background:rgba(0,0,0,.25); }
.prft-lbl    { font-size:10px; color:var(--c-text-muted); text-transform:uppercase; letter-spacing:.04em; margin-bottom:3px; }
.prft-val    { font-size:15px; font-weight:700; }
.v-green { color:var(--c-green); }
.v-warn  { color:#d97706; }
.v-bad   { color:#dc2626; }

/* ── Toolbar ───────────────────────────────────────────────────────────────── */
.tb-info   { font-size:13px; color:var(--c-text-muted); }
.tb-info strong { color:var(--c-text); font-size:14px; }
.zisk-chip { font-size:11px; font-weight:700; padding:2px 8px; border-radius:10px; margin-left:8px; display:inline-block; }
.zisk-ok   { background:var(--c-green-bg); color:var(--c-green); }
.zisk-warn { background:#fff7ed; color:#d97706; }
.zisk-bad  { background:#fef2f2; color:#dc2626; }

/* ── Poznámky ──────────────────────────────────────────────────────────────── */
.offer-notes{ font-size:11px; color:var(--c-text-muted); line-height:1.7; }

/* ── Banner napojené nabídky ─────────────────────────────────────────────── */
.linked-offer-banner{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  background:var(--c-primary-bg); border:1px solid;
  border-color:color-mix(in srgb,var(--c-primary) 30%,transparent);
  border-radius:var(--c-radius); padding:10px 14px; margin-bottom:8px; flex-wrap:wrap;
}
.lob-info{ display:flex; flex-direction:column; gap:1px; }
.lob-info strong{ font-size:13px; color:var(--c-primary); }
.lob-info small{ font-size:11px; color:var(--c-text-muted); }
.lob-actions{ display:flex; gap:6px; flex-wrap:wrap; }
.lob-toast{
  flex-basis:100%; font-size:12px; color:var(--c-green);
  background:var(--c-green-bg); border:1px solid #86efac; border-radius:6px;
  padding:6px 10px; white-space:pre-line; transition:opacity .3s;
}

/* ── Tisk / PDF ────────────────────────────────────────────────────────────── */
.print-hdr { display:none; }

@media print {
  .top-nav, .ng-sidebar, .ng-toolbar,
  .profit-card, .dirty-banner, .add-row-bar,
  .td-del, .btn-del, .no-print { display:none !important; }

  .ng-wrap { display:block; }
  .ng-body { display:block; }
  .ng-main { padding:0; gap:10px; }

  .print-hdr  { display:block !important; margin-bottom:12px; }
  .ph-top     { display:flex; justify-content:space-between; align-items:flex-start; }
  .ph-co      { font-size:10px; color:#555; line-height:1.7; }
  .ph-co strong{ font-size:14px; font-weight:800; color:#111; display:block; }
  .ph-right   { text-align:right; font-size:10px; color:#555; }
  .ph-right strong{ font-size:15px; font-weight:700; color:#111; display:block; }
  .ph-line    { border:none; border-top:2px solid #111; margin:8px 0 6px; }
  .ph-cust    { font-size:13px; font-weight:700; }
  .ph-addr    { font-size:10px; color:#555; }
  .ph-meta    { display:flex; gap:16px; font-size:10px; color:#555; margin-top:5px; flex-wrap:wrap; }

  .table-card { border:none; border-radius:0; }
  .table-card-header { display:none; }
  .offer-table{ font-size:10px; }
  .offer-table th{ padding:4px 7px; font-size:9px; }
  .offer-table td{ padding:2px 6px; }
  .offer-table tr.tr-sec td{ padding:5px 7px 2px; }
  .ti{ border:none; background:transparent; padding:0; font-size:10px; pointer-events:none; }

  .totals-card{ border:none; padding:6px 0 0; }
  .tot-row{ font-size:10px; padding:2px 0; }
  .tot-big{ font-size:12px; }
  .tot-fin{ font-size:13px; }

  .offer-notes{ font-size:8px; margin-top:12px; border-top:1px solid #ddd; padding-top:8px; }
  @page { margin:14mm 12mm; }
}

@media (max-width:820px) {
  .ng-body    { flex-direction:column; }
  .ng-sidebar { width:100%; position:static; max-height:none; border-right:none; border-bottom:1px solid var(--c-border); }
  .profit-grid{ grid-template-columns:1fr 1fr; }
}

/* ── Editor ceníku ─────────────────────────────────────────────────────────── */
.cenik-wrap{ display:flex; flex-direction:column; min-height:100vh; }
.cenik-hdr { padding:18px 24px 14px; border-bottom:1px solid var(--c-border); display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.cenik-title{ font-size:17px; font-weight:700; color:var(--c-text); display:flex; align-items:center; gap:8px; }
.cenik-badge-modified{ font-size:11px; font-weight:600; background:#fef9c3; color:#854d0e; border:1px solid #fde68a; border-radius:10px; padding:2px 8px; }
[data-theme="dark"] .cenik-badge-modified{ background:#1a160a; color:#fbbf24; border-color:#854d0e; }
.cenik-actions{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.cenik-hint{ font-size:12px; color:var(--c-text-muted); padding:8px 24px; }
.cenik-body{ flex:1; overflow-y:auto; padding:0 24px 40px; }

.cenik-group-hdr{ font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.07em;
                  color:var(--c-text-muted); padding:16px 0 6px; border-bottom:2px solid var(--c-border); margin-bottom:0; }

.cenik-table{ width:100%; border-collapse:collapse; font-size:13px; }
.cenik-table th{
  padding:7px 10px; background:var(--c-bg); border-bottom:2px solid var(--c-border);
  font-size:10px; font-weight:700; text-transform:uppercase;
  letter-spacing:.05em; color:var(--c-text-muted); white-space:nowrap; text-align:left;
}
.cenik-table th.r{ text-align:right; }
.cenik-table td{ padding:4px 8px; border-bottom:1px solid var(--c-border-light); vertical-align:middle; }
.cenik-table tbody tr:hover td{ background:var(--c-bg); }
.cenik-table td.r{ text-align:right; }
.cenik-table td.muted{ color:var(--c-text-muted); font-size:11px; }
.cenik-table td.null-val{ color:var(--c-text-light); font-style:italic; font-size:11px; }

/* Inline price input v ceníku */
.pi{ border:1px solid transparent; border-radius:4px; padding:3px 6px; font-size:13px;
     font-family:inherit; background:transparent; color:var(--c-text);
     text-align:right; width:100px; -moz-appearance:textfield;
     transition:border-color .12s,background .12s; }
.pi:hover { border-color:var(--c-border); background:var(--c-surface); }
.pi:focus { border-color:var(--c-primary); background:var(--c-surface); outline:none; }
.pi::-webkit-inner-spin-button,
.pi::-webkit-outer-spin-button{ -webkit-appearance:none; }
.pi.changed{ border-color:var(--c-primary); background:var(--c-primary-bg); }

.save-flash{ animation:saveFlash .6s ease; }
@keyframes saveFlash {
  0%   { background:var(--c-green-bg); }
  100% { background:transparent; }
}
