/* ============================================================
   PTI — design tokens + base components
   Adapted from the UI mockup (pti-ui). CSP-friendly: external file,
   no inline styles. Fonts loaded via <link> in the page <head>.
   ============================================================ */

:root {
  --bg: #F5F1E8; --surface: #FBF8F1; --card: #FFF; --tint: #F0EADC; --tint-2: #E8E0CC;
  --ink-1: #1F1A12; --ink-2: #4A4438; --ink-3: #6B6356; --ink-4: #9A9388; --ink-5: #C2BCAE;
  --line: #E8DFCC; --line-2: #DDD2BA; --line-3: #C9BC9C;
  --brand: #7A1F2E; --brand-2: #5E1623; --brand-tint: #F4E6E8;
  --gold: #B8893A; --gold-tint: #F4E9CF;
  --ok: #4F6A3D; --ok-tint: #E6EDD9;
  --warn: #B8753A; --warn-tint: #F7E8D2;
  --bad: #A8392F; --bad-tint: #F7DDD9;
  --sh-sm: 0 1px 2px rgba(40,30,15,.04), 0 1px 1px rgba(40,30,15,.03);
  --sh-md: 0 4px 12px rgba(40,30,15,.06), 0 2px 4px rgba(40,30,15,.04);
  --sh-lg: 0 12px 36px rgba(40,30,15,.10), 0 4px 8px rgba(40,30,15,.04);
  --sh-xl: 0 24px 60px rgba(40,30,15,.14);
  --r-sm: 6px; --r-md: 10px; --r-lg: 16px; --r-xl: 24px;
  --f-d: 'Fraunces', Georgia, serif;
  --f-u: 'Manrope', -apple-system, system-ui, sans-serif;
  --f-m: 'JetBrains Mono', 'SF Mono', monospace;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body { font-family: var(--f-u); background: var(--bg); color: var(--ink-1);
  font-size: 15px; line-height: 1.5; -webkit-font-smoothing: antialiased; }
button { font: inherit; cursor: pointer; }
input, select { font: inherit; }
a { color: var(--brand); text-decoration: none; }
a:hover { text-decoration: underline; }

/* ---------- topbar (logged-in shell) ---------- */
.topbar { background: var(--card); border-bottom: 1px solid var(--line);
  padding: 14px 28px; display: flex; align-items: center; gap: 22px; }
.logo { font-family: var(--f-d); font-weight: 500; font-size: 17px;
  letter-spacing: -.015em; display: flex; align-items: center; gap: 10px; }
.logo-mark { width: 30px; height: 30px; background: var(--brand); border-radius: 7px;
  display: grid; place-items: center; color: #fff; font-weight: 800; font-size: 13px;
  letter-spacing: -.04em; font-family: var(--f-u); }
.logo-sub { font-size: 11px; color: var(--ink-3); font-style: italic; font-weight: 400; }
.tenant-chip { padding: 6px 12px; background: var(--tint); border-radius: var(--r-sm);
  font-size: 12px; color: var(--ink-2); font-weight: 500; display: inline-flex;
  align-items: center; gap: 8px; }
.spacer { flex: 1; }
.user { display: flex; align-items: center; gap: 10px; padding: 5px 14px 5px 6px;
  border-radius: 40px; background: var(--tint); font-size: 13px; }
.user-av { width: 28px; height: 28px; border-radius: 50%; background: var(--gold);
  color: #fff; display: grid; place-items: center; font-weight: 700; font-size: 12px; }
.user-name { font-weight: 600; }
.user-role { color: var(--ink-3); font-family: var(--f-m); font-size: 11px; }

/* ---------- page wrapper ---------- */
.wrap { max-width: 1080px; margin: 0 auto; padding: 36px 28px; }
.wrap h1 { font-family: var(--f-d); font-weight: 350; font-size: 32px;
  letter-spacing: -.02em; margin-bottom: 8px; }
.wrap h1 em { font-style: italic; color: var(--brand); }
.wrap h2 { font-family: var(--f-d); font-weight: 400; font-size: 22px;
  letter-spacing: -.01em; margin: 28px 0 14px; }
.wrap h3 { font-family: var(--f-d); font-weight: 500; font-size: 17px; margin: 20px 0 10px; }
.muted { color: var(--ink-3); }

/* ---------- buttons ---------- */
.btn-p { background: var(--brand); color: #fff; border: 0; border-radius: var(--r-md);
  font-weight: 600; font-size: 14px; padding: 13px 22px; display: inline-flex;
  align-items: center; gap: 8px; transition: background .12s; }
.btn-p:hover { background: var(--brand-2); text-decoration: none; }
.btn-p:disabled { background: var(--ink-5); cursor: not-allowed; }
.btn-s { background: var(--card); color: var(--ink-1); border: 1px solid var(--line-2);
  border-radius: var(--r-md); font-weight: 600; font-size: 14px; padding: 12px 20px;
  display: inline-flex; align-items: center; gap: 8px; }
.btn-s:hover { background: var(--tint); text-decoration: none; }
.btn-g { background: transparent; color: var(--ink-2); border: 0; font-weight: 600;
  font-size: 13px; padding: 10px 14px; border-radius: var(--r-md); }
.btn-g:hover { background: var(--tint); color: var(--ink-1); text-decoration: none; }

/* ---------- form fields ---------- */
.field { margin-bottom: 16px; }
.field label { display: block; font-family: var(--f-m); font-size: 11px;
  letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 7px; }
.field input, .field select {
  width: 100%; padding: 12px 14px; background: var(--surface);
  border: 1px solid var(--line-2); border-radius: var(--r-md); color: var(--ink-1);
  font-size: 15px; transition: border-color .12s, box-shadow .12s; }
.field input:focus, .field select:focus { outline: 0; border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--brand-tint); }

/* ---------- alerts ---------- */
.alert { padding: 12px 14px; border-radius: var(--r-md); margin-bottom: 16px; font-size: 14px; }
.alert-err { background: var(--bad-tint); border: 1px solid #e9b3ad; color: #7e251d; }
.alert-ok  { background: var(--ok-tint); border: 1px solid #bcd29c; color: #38501f; }

/* ---------- cards / panels ---------- */
.panel { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg);
  box-shadow: var(--sh-sm); padding: 22px 24px; }

/* ---------- table ---------- */
.table { width: 100%; border-collapse: collapse; background: var(--card);
  border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; }
.table th, .table td { text-align: left; padding: 11px 16px; border-bottom: 1px solid var(--line); }
.table th { font-family: var(--f-m); font-size: 11px; letter-spacing: .06em;
  text-transform: uppercase; color: var(--ink-3); background: var(--tint); font-weight: 600; }
.table tr:last-child td { border-bottom: 0; }
.table tbody tr:hover { background: var(--surface); }
.chip { display: inline-block; padding: 3px 10px; border-radius: 30px; font-family: var(--f-m);
  font-size: 11px; text-transform: uppercase; letter-spacing: .04em; }
.chip-ok { background: var(--ok-tint); color: #38501f; }
.chip-muted { background: var(--tint); color: var(--ink-3); }

/* ============================================================
   LOGIN (workstation PIN + admin) — from mockup
   ============================================================ */
.login { display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 60px 24px; min-height: 100vh;
  background: radial-gradient(ellipse at top, rgba(184,137,58,.06), transparent 60%),
    radial-gradient(ellipse at bottom, rgba(122,31,46,.04), transparent 70%), var(--bg); }
.login-mark { width: 56px; height: 56px; background: var(--brand); border-radius: 14px;
  display: grid; place-items: center; color: #fff; font-weight: 800; font-size: 22px;
  letter-spacing: -.04em; margin-bottom: 18px; box-shadow: var(--sh-md); font-family: var(--f-u); }
.login-title { font-family: var(--f-d); font-size: 38px; font-weight: 350;
  letter-spacing: -.025em; margin-bottom: 4px; text-align: center; }
.login-title em { font-style: italic; color: var(--brand); }
.login-sub { font-size: 13px; color: var(--ink-3); margin-bottom: 40px; letter-spacing: .02em; }
.login-card { background: var(--card); border-radius: var(--r-xl); padding: 40px 48px 44px;
  box-shadow: var(--sh-lg); border: 1px solid var(--line); width: 100%; max-width: 440px; }
.login-tenant { display: flex; align-items: center; gap: 10px; padding-bottom: 22px;
  border-bottom: 1px solid var(--line); margin-bottom: 28px; font-size: 13px; }
.login-tenant-l { color: var(--ink-3); }
.login-tenant-v { color: var(--ink-1); font-weight: 600; flex: 1; }
.login-lbl { font-family: var(--f-m); font-size: 11px; letter-spacing: .1em; color: var(--ink-3);
  margin-bottom: 14px; text-transform: uppercase; text-align: center; }

/* tenant picker buttons */
.tenant-btn { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left;
  padding: 16px 18px; margin-bottom: 10px; background: var(--surface);
  border: 1px solid var(--line-2); border-radius: var(--r-md); font-size: 15px; font-weight: 600;
  color: var(--ink-1); transition: all .12s; }
.tenant-btn:hover { background: var(--tint); border-color: var(--line-3); }
.tenant-btn .av { width: 34px; height: 34px; border-radius: 9px; background: var(--brand);
  color: #fff; display: grid; place-items: center; font-weight: 800; font-size: 14px; }

/* PIN display + pad */
.pin-disp { display: flex; gap: 14px; justify-content: center; margin-bottom: 30px; min-height: 16px; }
.pin-dot { width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--line-3);
  transition: all .15s; }
.pin-dot.on { background: var(--brand); border-color: var(--brand); }
.pinpad { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.pinkey { height: 62px; background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--r-md); font-family: var(--f-d); font-size: 23px; font-weight: 400;
  color: var(--ink-1); transition: all .1s; }
.pinkey:hover { background: var(--tint); border-color: var(--line-2); }
.pinkey:active { transform: scale(.97); }
.pinkey.act { font-family: var(--f-u); font-size: 13px; color: var(--ink-3); font-weight: 600; }
.pinkey.go { background: var(--brand); color: #fff; border-color: var(--brand); }
.pinkey.go:hover { background: var(--brand-2); }
.login-foot { margin-top: 32px; font-size: 10px; color: var(--ink-4); text-align: center;
  font-family: var(--f-m); letter-spacing: .08em; text-transform: uppercase; }
.login-back { display: block; text-align: center; margin-top: 22px; font-size: 12px; }

/* 2FA / generic centered form inside login-card */
.login-card .field:last-of-type { margin-bottom: 0; }
.login-card .btn-p { width: 100%; justify-content: center; margin-top: 20px; }

/* ---------- admin sub-nav ---------- */
.adminnav { display: flex; gap: 4px; margin-bottom: 26px; border-bottom: 1px solid var(--line); padding-bottom: 0; flex-wrap: wrap; }
.adminnav-link { padding: 9px 16px; font-size: 13px; font-weight: 600; color: var(--ink-3); border-radius: var(--r-sm) var(--r-sm) 0 0; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.adminnav-link:hover { color: var(--ink-1); background: var(--tint); text-decoration: none; }
.adminnav-link.on { color: var(--brand); border-bottom-color: var(--brand); }

/* ---------- admin utilities ---------- */
.toolbar { display: flex; align-items: center; gap: 12px; margin: 18px 0; flex-wrap: wrap; }
.toolbar .spacer { flex: 1; }
.actions { display: flex; gap: 6px; }
.actions a, .actions button { font-size: 12px; padding: 6px 12px; }
.swatch { display: inline-block; width: 14px; height: 14px; border-radius: 4px; border: 1px solid var(--line-2); vertical-align: middle; margin-right: 6px; }
.mono { font-family: var(--f-m); font-variant-numeric: tabular-nums; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.chip-bad { background: var(--bad-tint); color: #7e251d; }
.chip-warn { background: var(--warn-tint); color: #7a4a1c; }
.cards-count { display: flex; gap: 16px; flex-wrap: wrap; margin: 8px 0 4px; }
.count-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 18px 22px; min-width: 140px; }
.count-card .n { font-family: var(--f-d); font-size: 34px; font-weight: 350; color: var(--brand); line-height: 1; }
.count-card .l { font-family: var(--f-m); font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); margin-top: 8px; }
.inline-note { font-size: 12px; color: var(--ink-4); margin-top: 4px; }

/* ---------- textarea + checklist + switches ---------- */
.field textarea { width: 100%; padding: 12px 14px; background: var(--surface); border: 1px solid var(--line-2);
  border-radius: var(--r-md); color: var(--ink-1); font-size: 15px; min-height: 78px; resize: vertical; font-family: var(--f-u); }
.field textarea:focus { outline: 0; border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-tint); }
.checklist { display: flex; flex-wrap: wrap; gap: 8px; }
.checklist label { display: inline-flex; align-items: center; gap: 7px; padding: 8px 13px; background: var(--surface);
  border: 1px solid var(--line-2); border-radius: 30px; font-size: 13px; font-weight: 500; cursor: pointer; text-transform: none; letter-spacing: 0; color: var(--ink-1); margin: 0; }
.checklist label:hover { background: var(--tint); }
.checklist input { accent-color: var(--brand); }
.switches { display: flex; flex-wrap: wrap; gap: 14px; }
.switches label { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 500;
  color: var(--ink-1); text-transform: none; letter-spacing: 0; margin: 0; cursor: pointer; }
.switches input { accent-color: var(--brand); width: 16px; height: 16px; }
.fieldset { border: 1px solid var(--line); border-radius: var(--r-md); padding: 16px 18px; margin-bottom: 16px; }
.fieldset > .lgnd { font-family: var(--f-m); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 12px; }
.tags { display: flex; flex-wrap: wrap; gap: 4px; }
.tag { display: inline-block; padding: 2px 9px; background: var(--tint); border-radius: 20px; font-size: 11px; color: var(--ink-2); }

/* ---------- pricing workspace ---------- */
.pworkspace { display: grid; grid-template-columns: 1fr; gap: 22px; }
.dim-row { display: flex; align-items: flex-start; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.dim-row:last-child { border-bottom: 0; }
.dim-main { flex: 1; }
.dim-type { font-family: var(--f-m); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--gold); }
.dim-label { font-family: var(--f-d); font-size: 16px; font-weight: 500; margin: 2px 0 6px; }
.ver-status { font-family: var(--f-m); font-size: 11px; text-transform: uppercase; letter-spacing: .04em; padding: 3px 10px; border-radius: 30px; }
.ver-draft { background: var(--tint); color: var(--ink-3); }
.ver-active { background: var(--ok-tint); color: #38501f; }
.ver-archived { background: var(--bad-tint); color: #7e251d; }
.crumbs { font-size: 13px; color: var(--ink-3); margin-bottom: 4px; }
.crumbs a { color: var(--ink-3); }
.matrix-hint { background: var(--gold-tint); border: 1px solid #e6cf9a; border-radius: var(--r-md); padding: 14px 16px; font-size: 13px; color: var(--ink-2); }

/* ---------- utility classes (CSP-safe; no inline styles) ---------- */
.mt   { margin-top: 20px; } .mt-12 { margin-top: 12px; } .mt-16 { margin-top: 16px; }
.mt-18 { margin-top: 18px; } .mt-22 { margin-top: 22px; }
.mb-10 { margin-bottom: 10px; }
.inline-form { display: inline; }
.col-520 { max-width: 520px; } .col-560 { max-width: 560px; }
.col-640 { max-width: 640px; } .col-820 { max-width: 820px; }
.h1-sub { font-size: 18px; } .cat-sub { font-size: 12px; }
.ta-tall { min-height: 120px; }
/* product image thumbnails */
.pthumb { width: 42px; height: 42px; object-fit: cover; border-radius: 6px;
  border: 1px solid var(--line); vertical-align: middle; margin-right: 10px; }
.pthumb-empty { display: inline-block; width: 42px; height: 42px; border-radius: 6px;
  background: var(--tint); vertical-align: middle; margin-right: 10px; }
.pthumb-lg { max-width: 260px; max-height: 170px; border-radius: 8px;
  border: 1px solid var(--line); display: block; margin-bottom: 10px; }
.swatch-svg { width: 14px; height: 14px; vertical-align: middle; margin-right: 6px; border-radius: 3px; }

/* ---------- pricing matrix editor ---------- */
.mtx-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--card); }
.mtx { border-collapse: collapse; width: 100%; }
.mtx th, .mtx td { border: 1px solid var(--line); padding: 8px 10px; text-align: center; vertical-align: middle; }
.mtx thead th { background: var(--tint); font-family: var(--f-m); font-size: 11px; letter-spacing: .04em;
  text-transform: uppercase; color: var(--ink-3); font-weight: 600; }
.mtx tbody th { background: var(--surface); text-align: left; font-family: var(--f-u); font-weight: 600;
  font-size: 13px; color: var(--ink-1); white-space: nowrap; position: sticky; left: 0; }
.mtx-corner { background: var(--tint) !important; }
.mtx-cell { display: flex; flex-direction: column; gap: 4px; align-items: stretch; min-width: 96px; }
.mtx-in { display: flex; align-items: center; gap: 4px; }
.mtx-in .cur { font-family: var(--f-m); font-size: 11px; color: var(--ink-4); width: 16px; text-align: right; }
.mtx input { width: 100%; padding: 6px 8px; border: 1px solid var(--line-2); border-radius: var(--r-sm);
  font-family: var(--f-m); font-size: 13px; text-align: right; background: var(--surface); }
.mtx input:focus { outline: 0; border-color: var(--brand); box-shadow: 0 0 0 2px var(--brand-tint); }
.mtx input.eur { color: var(--ink-3); }
/* 1D list variant */
.mtx-list input { max-width: 130px; }
/* tabs (3D) */
.mtx-tabs { display: flex; gap: 4px; flex-wrap: wrap; margin: 6px 0 14px; }
.mtx-tab { padding: 8px 16px; border: 1px solid var(--line-2); background: var(--surface);
  border-radius: var(--r-md); font-size: 13px; font-weight: 600; color: var(--ink-2); }
.mtx-tab.on { background: var(--brand); color: #fff; border-color: var(--brand); }
.mtx-panel { display: none; }
.mtx-panel.on { display: block; }
.mtx-axislabel { font-family: var(--f-m); font-size: 11px; color: var(--gold); text-transform: uppercase;
  letter-spacing: .06em; margin-bottom: 8px; }
.savebar { position: sticky; bottom: 0; background: var(--card); border-top: 1px solid var(--line);
  padding: 14px 0; margin-top: 22px; display: flex; gap: 12px; align-items: center; }

/* ===================== seller workstation: catalog ===================== */
.shome-bar { display: flex; gap: 12px; align-items: center; margin: 4px 0 18px; flex-wrap: wrap; }
.shome-search { flex: 1; min-width: 240px; position: relative; }
.shome-search input { width: 100%; padding: 16px 18px; font-size: 17px; border: 1px solid var(--line-2);
  border-radius: var(--r-lg); background: var(--card); font-family: var(--f-u); }
.shome-search input:focus { outline: 0; border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-tint); }
.shome-cats { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 20px; }
.cat-chip { padding: 9px 16px; border-radius: 999px; border: 1px solid var(--line-2); background: var(--card);
  font-size: 14px; font-weight: 600; color: var(--ink-2); white-space: nowrap; }
.cat-chip.on { background: var(--brand); color: #fff; border-color: var(--brand); }
.pgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 16px; }
.pcard { display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: var(--r-lg);
  overflow: hidden; background: var(--card); box-shadow: var(--sh-sm); transition: box-shadow .12s, transform .12s; }
.pcard:hover { box-shadow: var(--sh-md); transform: translateY(-2px); }
.pcard-img { width: 100%; aspect-ratio: 16/10; object-fit: cover; background: var(--tint); display: block; }
.pcard-noimg { width: 100%; aspect-ratio: 16/10; background: linear-gradient(135deg, var(--tint), var(--surface));
  display: flex; align-items: center; justify-content: center; color: var(--ink-4); font-family: var(--f-d);
  font-size: 30px; }
.pcard-body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 4px; flex: 1; }
.pcard-ag { font-family: var(--f-m); font-size: 11px; letter-spacing: .04em; text-transform: uppercase; color: var(--gold); }
.pcard-name { font-family: var(--f-d); font-size: 17px; font-weight: 500; color: var(--ink-1); line-height: 1.25; }
.pcard-foot { margin-top: auto; padding-top: 8px; display: flex; align-items: baseline; gap: 5px; }
.pcard-from { font-size: 12px; color: var(--ink-4); }
.pcard-price { font-family: var(--f-m); font-size: 16px; font-weight: 700; color: var(--ink-1); }
.pgrid-empty { padding: 40px; text-align: center; color: var(--ink-4); }

/* ===================== seller workstation: product detail ===================== */
.pd-back { display: inline-block; margin-bottom: 14px; font-size: 14px; color: var(--ink-3); }
.pd-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 28px; align-items: start; }
.pd-hero { position: relative; border-radius: var(--r-xl); overflow: hidden; border: 1px solid var(--line); }
.pd-hero-img { width: 100%; aspect-ratio: 16/10; object-fit: cover; display: block; background: var(--tint); }
.pd-hero-noimg { width: 100%; aspect-ratio: 16/10; background: linear-gradient(135deg, var(--tint), var(--surface));
  display: flex; align-items: center; justify-content: center; color: var(--ink-4); font-family: var(--f-d); font-size: 44px; }
.pd-hero-ag { position: absolute; top: 14px; left: 14px; background: rgba(255,255,255,.92); color: var(--brand);
  font-family: var(--f-m); font-size: 12px; font-weight: 700; letter-spacing: .03em; padding: 6px 12px;
  border-radius: 999px; box-shadow: var(--sh-sm); }
.pd-title { font-family: var(--f-d); font-size: 30px; font-weight: 500; margin: 16px 0 4px; color: var(--ink-1); }
.pd-facts { display: flex; flex-wrap: wrap; gap: 18px; padding: 14px 0; border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line); margin: 10px 0 16px; }
.pd-fact-l { font-family: var(--f-m); font-size: 10px; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-4); }
.pd-fact-v { font-size: 15px; font-weight: 600; color: var(--ink-1); }
.pd-desc { color: var(--ink-2); line-height: 1.6; font-size: 15px; }
.pd-side { border: 1px solid var(--line); border-radius: var(--r-lg); padding: 18px; background: var(--card); box-shadow: var(--sh-sm); }
.pd-side h3 { font-family: var(--f-d); font-size: 19px; font-weight: 500; margin: 0 0 12px; }
.pd-price-tbl { width: 100%; border-collapse: collapse; font-size: 14px; }
.pd-price-tbl th, .pd-price-tbl td { padding: 7px 8px; border-bottom: 1px solid var(--line); text-align: left; }
.pd-price-tbl th { font-family: var(--f-m); font-size: 10px; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-4); }
.pd-price-tbl td.num { text-align: right; font-family: var(--f-m); font-weight: 600; white-space: nowrap; }
.pd-price-tbl .eur { color: var(--ink-3); font-weight: 400; }
.pd-cta { display: block; width: 100%; margin-top: 18px; text-align: center; font-size: 17px; padding: 16px; }
.pd-noprice { color: var(--warn); font-size: 14px; }
@media (max-width: 760px) { .pd-grid { grid-template-columns: 1fr; } }

/* version commission/bonus inline override */
.num-mini { width: 58px; text-align: right; padding: 5px 6px; }
.ov-form { display: inline-flex; gap: 5px; align-items: center; }

/* ===================== seller: sale builder ===================== */
.bld-grid { display: grid; grid-template-columns: 1.5fr 1fr; gap: 26px; align-items: start; }
.bld-head { display: flex; gap: 14px; align-items: center; margin-bottom: 6px; }
.bld-thumb { width: 64px; height: 64px; border-radius: var(--r-md); object-fit: cover; border: 1px solid var(--line); }
.bld-thumb-x { width: 64px; height: 64px; border-radius: var(--r-md); background: var(--tint); display: flex;
  align-items: center; justify-content: center; font-family: var(--f-d); color: var(--ink-4); }
.bld-dim { margin: 18px 0; }
.bld-dim-label { font-family: var(--f-m); font-size: 11px; letter-spacing: .05em; text-transform: uppercase;
  color: var(--gold); margin-bottom: 9px; }
.bld-opts { display: flex; flex-wrap: wrap; gap: 9px; }
.bld-opt { position: relative; }
.bld-opt input { position: absolute; opacity: 0; width: 0; height: 0; }
.bld-opt span { display: block; padding: 12px 18px; border: 1.5px solid var(--line-2); border-radius: var(--r-md);
  font-size: 15px; font-weight: 600; color: var(--ink-2); background: var(--card); cursor: pointer; user-select: none; }
.bld-opt.on span { border-color: var(--brand); background: var(--brand-tint); color: var(--brand); }
.bld-row { display: flex; gap: 18px; flex-wrap: wrap; margin: 18px 0; }
.bld-field { flex: 1; min-width: 150px; }
.bld-field label { display: block; font-family: var(--f-m); font-size: 11px; letter-spacing: .05em;
  text-transform: uppercase; color: var(--ink-4); margin-bottom: 7px; }
.bld-field input { width: 100%; padding: 13px 14px; font-size: 16px; border: 1px solid var(--line-2);
  border-radius: var(--r-md); font-family: var(--f-u); background: var(--card); }
.bld-field input:focus { outline: 0; border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-tint); }
.qty-step { display: flex; align-items: stretch; }
.qty-step button { width: 46px; font-size: 22px; border: 1px solid var(--line-2); background: var(--surface);
  color: var(--ink-1); cursor: pointer; }
.qty-step button:first-child { border-radius: var(--r-md) 0 0 var(--r-md); }
.qty-step button:last-child { border-radius: 0 var(--r-md) var(--r-md) 0; }
.qty-step input { text-align: center; border-radius: 0; border-left: 0; border-right: 0; max-width: 80px; }
/* right column: price summary (seller sees CUSTOMER price only) */
.bld-side { border: 1px solid var(--line); border-radius: var(--r-lg); padding: 22px; background: var(--card);
  box-shadow: var(--sh-sm); position: sticky; top: 16px; }
.bld-side h3 { font-family: var(--f-d); font-weight: 500; margin: 0 0 16px; font-size: 20px; }
.bld-line { display: flex; justify-content: space-between; align-items: baseline; padding: 7px 0; font-size: 14px; color: var(--ink-3); }
.bld-total { display: flex; justify-content: space-between; align-items: baseline; padding: 14px 0 4px;
  margin-top: 8px; border-top: 1px solid var(--line); }
.bld-total-l { font-size: 14px; color: var(--ink-3); }
.bld-total-czk { font-family: var(--f-m); font-size: 30px; font-weight: 700; color: var(--ink-1); }
.bld-total-eur { font-family: var(--f-m); font-size: 15px; color: var(--ink-3); text-align: right; }
.bld-disc-note { font-size: 12px; color: var(--ink-4); margin-top: 4px; }
.bld-add { width: 100%; margin-top: 18px; font-size: 17px; padding: 16px; }
.bld-strike { text-decoration: line-through; color: var(--ink-4); font-size: 16px; font-weight: 400; margin-right: 8px; }
@media (max-width: 820px){ .bld-grid { grid-template-columns: 1fr; } .bld-side { position: static; } }

/* ===================== seller: cart ===================== */
.cart-item { display: flex; gap: 14px; padding: 16px 0; border-bottom: 1px solid var(--line); align-items: flex-start; }
.cart-thumb { width: 70px; height: 70px; border-radius: var(--r-md); object-fit: cover; border: 1px solid var(--line); flex-shrink: 0; }
.cart-thumb-x { width: 70px; height: 70px; border-radius: var(--r-md); background: var(--tint); flex-shrink: 0; }
.cart-main { flex: 1; }
.cart-name { font-family: var(--f-d); font-size: 18px; color: var(--ink-1); }
.cart-meta { font-size: 13px; color: var(--ink-3); margin-top: 3px; }
.cart-meta .chip-sm { display: inline-block; background: var(--tint); border-radius: 5px; padding: 2px 7px; margin-right: 5px; font-size: 12px; }
.cart-price { text-align: right; white-space: nowrap; }
.cart-price-czk { font-family: var(--f-m); font-weight: 700; font-size: 17px; }
.cart-price-eur { font-family: var(--f-m); font-size: 13px; color: var(--ink-3); }
.cart-sum { display: flex; justify-content: flex-end; gap: 28px; align-items: baseline; padding: 18px 0; font-size: 16px; }
.cart-sum-czk { font-family: var(--f-m); font-size: 26px; font-weight: 700; }
.cart-empty { padding: 50px; text-align: center; color: var(--ink-4); }

/* ---------- variant comparison cards (sale builder) ---------- */
.bld-diagram { background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--r-lg); padding: 14px; margin-bottom: 14px; }
.bld-diagram img { display: block; width: 100%; height: auto; border-radius: var(--r-md); }
.vcards-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; }
.vcard { position: relative; display: flex; flex-direction: column; gap: 7px;
  background: var(--card); border: 1.5px solid var(--line); border-radius: var(--r-lg);
  padding: 14px 14px 13px; cursor: pointer;
  transition: border-color .12s, box-shadow .12s, transform .1s; }
.vcard:hover { transform: translateY(-2px); box-shadow: var(--sh-sm); }
.vcard input { position: absolute; opacity: 0; width: 0; height: 0; }
.vcard.on { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-tint); }
.vcard-chip { align-self: flex-start; font-family: var(--f-m); font-size: 10.5px;
  font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #fff;
  padding: 4px 9px; border-radius: var(--r-sm); }
.vchip--green { background: #6E8B5B; }
.vchip--gold { background: var(--gold); }
.vchip--purple { background: #7A2E6E; }
.vchip--navy { background: #1B2A4A; }
.vchip--teal { background: #2E6E6A; }
.vchip--burgundy { background: var(--brand); }
.vchip--neutral { background: var(--ink-3); }
.vcard-ds { font-size: 12.5px; color: var(--ink-3); line-height: 1.4; }
.vcard-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.vcard-badge { font-size: 10.5px; font-weight: 700; padding: 3px 8px; border-radius: 999px;
  border: 1px solid var(--line-2); color: var(--ink-3); background: var(--surface); }
.vcard-badge--warn { color: var(--brand-2); border-color: var(--gold); background: var(--gold-tint); }
.vcard-pr { margin-top: auto; padding-top: 4px; font-family: var(--f-m); font-weight: 700;
  font-size: 17px; color: var(--ink-1); }
.vcard-pr small { font-size: 12px; color: var(--ink-3); font-weight: 600; }

/* variant card — feature lines (compare what each variant includes) */
.vcard-feats { display: flex; flex-direction: column; gap: 4px; margin: 2px 0 2px; }
.vcard-feat { display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
  font-size: 12px; color: var(--ink-2); line-height: 1.35; }
.vcard-feat--off { color: var(--ink-4); }
.vfeat-l { color: var(--ink-4); }
.vfeat-v { color: var(--ink-1); font-weight: 600; text-align: right; }
.vfeat-ic { font-family: var(--f-m); font-weight: 700; }
.vfeat-yes { color: var(--ok); }
.vfeat-no { color: var(--ink-4); }

/* "Jak objednat" — seller-facing ordering info (shown when no contingent) */
.howto { margin-top: 14px; border: 1px solid var(--color-border-info, #c9d6e5); border-radius: var(--r-md, 10px);
  background: var(--color-background-info, #f3f7fb); padding: 12px 14px; }
.howto-h { font-family: var(--f-m); font-size: 11px; letter-spacing: .05em; text-transform: uppercase;
  color: var(--ink-3, #5b6b7a); margin-bottom: 8px; }
.howto-instr { font-size: 14px; line-height: 1.5; color: var(--ink-1); margin-bottom: 8px; }
.howto-row { display: flex; justify-content: space-between; gap: 12px; padding: 5px 0;
  border-top: 0.5px solid var(--color-border-tertiary, #e3e8ee); font-size: 14px; }
.howto-l { color: var(--ink-3, #5b6b7a); }
.howto-v { color: #7A1F2E; text-decoration: none; font-weight: 600; }
.howto-v:hover { text-decoration: underline; }
/* kontingent: ujištění o přímém prodeji (zelený akcent) */
.howto--instant { border-color: #bfd8c4; background: #f3f9f4; }
.howto--instant .howto-h { color: #2f7d4f; }
.howto-ok { display: flex; align-items: flex-start; gap: 7px; font-size: 14px; font-weight: 600;
  color: #2f7d4f; margin-bottom: 8px; }
.howto-ok::before { content: "✓"; font-weight: 800; }
/* rezervační poznámka pro prodejce (přihlašovací údaje apod.) */
.howto-note { margin-top: 10px; padding: 9px 11px; border: 1px dashed var(--color-border-info, #c9d6e5);
  border-radius: 8px; background: rgba(255, 255, 255, .55); font-size: 13.5px; line-height: 1.55;
  color: var(--ink-1); word-break: break-word; }
.howto-note-h { font-family: var(--f-m); font-size: 10.5px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--ink-3, #5b6b7a); margin-bottom: 4px; }
/* povinný addon (přičítá se automaticky za osobu) */
.pdx-addon--mand { opacity: .96; }
.pdx-mand { font-size: 12px; font-weight: 600; color: #2f7d4f; white-space: nowrap; }
/* matice produkty × kategorie (admin)
   Pozn.: sticky NESMÍ mít předka s overflow ≠ visible (uvěznil by ho) —
   proto bez overflow na wrapu A varianta karty .adm-card--flow (standardní
   .adm-card má overflow:hidden kvůli rohům, což sticky hlavičku zablokovalo).
   Hlavička i sloupec se lepí vůči stránce; top = výška sticky topbaru (jako .ptab). */
.adm-card--flow{ overflow:visible; }
.adm-card:has(.catm){ overflow:visible; }
/* v3: VLASTNÍ scroll kontejner — sticky uvnitř něj funguje nezávisle na předcích.
   Výška ~ okno minus topbar a hlavička stránky; hlavička tabulky se lepí na top:0 wrapu. */
.catm-wrap { overflow: auto; max-height: calc(100vh - var(--topbar-h) - 84px); min-height: 320px;
  border: 1px solid var(--color-border, #e3dccf); border-radius: 8px; overscroll-behavior: contain; }
.catm { border-collapse: separate; border-spacing: 0; width: 100%; }
.table.catm { overflow: visible; border: 0; border-radius: 0; } /* VINÍK: .table má overflow:hidden (rohy) → věznil sticky; stejná oprava jako .table.ptab */
.catm thead th { position: sticky; top: 0; z-index: 6; background: #faf7f1; vertical-align: bottom; padding: 8px 6px; box-shadow: 0 1px 0 var(--line-2); }
.catm th.catm-prod { position: sticky; left: 0; z-index: 5; background: #faf7f1; text-align: left; min-width: 260px; max-width: 360px; padding: 6px 10px; }
.catm thead th.catm-prod { z-index: 7; }
.catm th.catm-cat { font-size: 12px; line-height: 1.25; max-width: 110px; text-align: center; }
.catm td.catm-cell { text-align: center; padding: 4px 6px; border-top: 1px solid var(--color-border, #eee); }
.catm td.catm-cell input { width: 17px; height: 17px; accent-color: #7A1F2E; cursor: pointer; }
.catm tbody tr:hover td, .catm tbody tr:hover th.catm-prod { background: #f3eee4; }
.catm-pname { display: block; font-weight: 600; font-size: 13.5px; }
.catm th.catm-prod small { display: block; font-weight: 400; }

.sched-hint{display:block;margin-top:4px;font-size:12px;color:#9a7b00;}

/* admin schedule editor */
.row-form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;}
.dow-row{display:flex;gap:10px;flex-wrap:wrap;}
.dow{display:inline-flex;align-items:center;gap:4px;font-size:13px;}

/* product detail redesign — hero + availability grid */
.pd-hero{display:flex;gap:24px;align-items:stretch;margin:8px 0 6px;}
.pd-hero-img{width:300px;height:190px;flex:none;object-fit:cover;border-radius:var(--r-lg);border:1px solid var(--line);box-shadow:0 6px 20px rgba(0,0,0,.06);}
.pd-hero-noimg{display:flex;align-items:center;justify-content:center;font-family:var(--f-d);font-size:64px;color:#fff;background:linear-gradient(135deg,var(--brand),var(--brand-2));}
.pd-hero-tt{display:flex;flex-direction:column;justify-content:center;gap:6px;min-width:0;}
.pd-hero-ag{font-family:var(--f-m);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--gold);}
.pd-hero-title{font-family:var(--f-d);font-weight:500;font-size:34px;line-height:1.1;margin:2px 0;color:var(--ink-1);}
.pd-hero-sub{color:var(--ink-3);font-size:15px;}
.pd-avail{margin:6px 0 2px;}
.pd-avail-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;}
.pd-avail-lbl{font-family:var(--f-m);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-4);}
.pd-avail-val{font-size:15px;font-weight:600;color:var(--ink-1);}
.dow-grid{border-collapse:separate;border-spacing:5px;margin:10px 0 2px;}
.dow-grid th{font-family:var(--f-m);font-size:11px;font-weight:600;color:var(--ink-4);width:36px;padding:0 0 2px;text-align:center;}
.dow-grid th.on{color:var(--brand);}
.dow-grid td{width:36px;height:24px;text-align:center;border-radius:7px;background:var(--line-3);}
.dow-grid td.on{background:var(--brand-tint);}
.dow-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--brand);vertical-align:middle;}
@media (max-width:680px){.pd-hero{flex-direction:column;gap:14px;}.pd-hero-img{width:100%;height:200px;}.pd-hero-title{font-size:28px;}}

/* live search dropdown */
.shome-searchwrap{position:relative;}
.sr-pop{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:40;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 16px 40px rgba(0,0,0,.14);
  max-height:62vh;overflow:auto;padding:6px;}
.sr-pop[hidden]{display:none;}
.sr-list{display:flex;flex-direction:column;gap:2px;}
.sr-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--r-md);cursor:pointer;}
.sr-row:hover,.sr-row.hi{background:var(--brand-tint);}
.sr-kh{font-family:var(--f-m);font-size:12px;color:var(--ink-4);width:18px;text-align:center;flex:none;}
.sr-row.hi .sr-kh{color:var(--brand);font-weight:700;}
.sr-mn{flex:1;min-width:0;}
.sr-name{font-size:15px;font-weight:600;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sr-name mark{background:var(--gold-tint);color:inherit;padding:0 1px;border-radius:3px;}
.sr-m{font-size:12px;color:var(--ink-3);margin-top:2px;display:flex;align-items:center;gap:6px;}
.ag-tag{font-family:var(--f-m);font-size:10px;letter-spacing:.03em;text-transform:uppercase;color:var(--gold);}
.sr-m .sep{color:var(--ink-4);}
.sr-pb{flex:none;text-align:right;}
.sr-pf{font-size:11px;color:var(--ink-4);margin-right:3px;}
.sr-p{font-weight:700;color:var(--ink-1);}
.sr-empty{padding:16px;color:var(--ink-3);font-size:14px;text-align:center;}

/* reservation confirmation gate */
.reserve-confirm{display:flex;gap:10px;align-items:flex-start;margin:2px 0 14px;padding:12px 14px;
  background:var(--warn-tint);border:1px solid var(--warn);border-radius:var(--r-md);
  font-size:13.5px;line-height:1.4;color:var(--ink-1);cursor:pointer;}
.reserve-confirm input{margin-top:2px;flex:none;width:18px;height:18px;accent-color:var(--brand);}

/* home dashboard */
.pal0{--acc:#7A1F2E;--acc-bg:#F4E6E8}.pal1{--acc:#2D5C9E;--acc-bg:#DFE7F2}.pal2{--acc:#4A7A88;--acc-bg:#E0EDF0}
.pal3{--acc:#5C7548;--acc-bg:#E6EDD9}.pal4{--acc:#B8753A;--acc-bg:#F7E8D2}.pal5{--acc:#5B2E4B;--acc-bg:#F3E8EE}
.pal6{--acc:#A8392F;--acc-bg:#F7DDD9}.pal7{--acc:#4A3D24;--acc-bg:#EFE9D8}.pal8{--acc:#385C7A;--acc-bg:#E2EAF0}
.pal9{--acc:#6A4A8A;--acc-bg:#EBE4F2}
.btn-quick{display:inline-flex;align-items:center;gap:6px;padding:0 16px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--card);color:var(--ink-2);font-weight:600;cursor:not-allowed;opacity:.6;}
.shome-stat{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:10px 0 18px;padding:10px 14px;background:var(--bg);border-radius:var(--r-md);font-size:13px;color:var(--ink-2);}
.shome-stat-u{font-weight:700;color:var(--ink-1);}
.shome-stat-i strong{color:var(--ink-1);}
.shome-stat-note{color:var(--ink-4);font-size:12px;margin-left:auto;}
.shome-crumb{display:flex;align-items:center;gap:12px;margin:10px 0 14px;color:var(--ink-3);font-size:14px;}
.lbl-mono{font-family:var(--f-m);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-4);margin:6px 0;}
.cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(186px,1fr));gap:12px;margin:8px 0 22px;}
.cat{display:block;padding:16px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);text-decoration:none;border-left:4px solid var(--acc);transition:.12s;}
.cat:hover{box-shadow:0 6px 18px rgba(0,0,0,.07);transform:translateY(-1px);}
.cat-ic{width:38px;height:38px;border-radius:10px;background:var(--acc-bg);color:var(--acc);display:flex;align-items:center;justify-content:center;font-family:var(--f-d);font-weight:600;font-size:18px;margin-bottom:10px;}
.cat-name{font-weight:700;color:var(--ink-1);font-size:15px;}
.cat-meta{font-size:12px;color:var(--ink-3);margin-top:3px;}.cat-meta strong{color:var(--ink-1);}
.ag-row{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 22px;}
.ag{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--card);text-decoration:none;color:var(--ink-1);font-size:13px;font-weight:600;}
.ag:hover{border-color:var(--acc);}
.ag-dot{width:9px;height:9px;border-radius:50%;background:var(--acc);flex:none;}
.ag-num{font-family:var(--f-m);font-size:11px;color:var(--ink-3);background:var(--bg);border-radius:8px;padding:1px 6px;}
.three{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:8px;}
.colc{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);padding:14px;}
.colc-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.colc-h-t{font-weight:700;font-size:14px;color:var(--ink-1);}
.colc-l{display:flex;flex-direction:column;gap:2px;}
.ci{display:flex;align-items:center;gap:10px;padding:9px 8px;border-radius:var(--r-md);text-decoration:none;}
.ci:hover{background:var(--brand-tint);}
.ci-pin{color:var(--gold);font-size:13px;flex:none;}
.ci-b{flex:1;min-width:0;}
.ci-name{font-size:14px;font-weight:600;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ci-m{font-size:12px;color:var(--ink-3);margin-top:1px;}
.ci-r{flex:none;text-align:right;}.ci-p{font-size:13px;font-weight:700;color:var(--ink-1);}
.colc-empty{color:var(--ink-3);font-size:13px;padding:12px 8px;line-height:1.4;}
@media(max-width:820px){.three{grid-template-columns:1fr;}}

.pin-star{color:var(--gold);}

/* sale finalize (payment) + success */
.bld-actions{display:flex;flex-direction:column;gap:8px;margin-top:6px;}
.bld-add2{text-align:center;}
.pay-grid{display:grid;grid-template-columns:1fr 320px;gap:22px;align-items:start;margin-top:6px;}
.pay-side{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--card);padding:22px;position:sticky;top:20px;}
.pay-side h3{font-family:var(--f-d);font-weight:500;margin:0 0 14px;font-size:20px;}
.pay-item{display:flex;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--line);}
.pay-item:last-child{border-bottom:0;}
.pay-item-n{font-weight:600;color:var(--ink-1);}
.pay-item-p{text-align:right;font-weight:700;color:var(--ink-1);white-space:nowrap;}
.pay-pickup-row{padding:10px 0;border-bottom:1px solid var(--line);}
.pay-pickup-row:last-child{border-bottom:0;}
.pay-pickup-n{font-weight:600;margin-bottom:6px;}
.pay-pickup-n .req{color:var(--warn);font-size:12px;font-weight:700;}
.pay-methods{display:flex;gap:12px;}
.pay-method{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer;font-weight:600;}
.pay-method input{accent-color:var(--brand);}
.pay-method:has(input:checked){border-color:var(--brand);background:var(--brand-tint);}
.pay-sum{display:flex;justify-content:space-between;align-items:baseline;font-size:15px;}
.pay-sum-l{color:var(--ink-2);}
.pay-sum-czk{font-family:var(--f-d);font-size:26px;font-weight:600;color:var(--ink-1);}
.pay-sum-eur{text-align:right;color:var(--ink-3);font-size:13px;margin-top:2px;}
.pay-paid{display:flex;justify-content:space-between;margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:14px;color:var(--ink-2);}
.pay-balance{display:flex;justify-content:space-between;margin-top:4px;font-size:14px;color:var(--ink-3);}
.pay-confirm{width:100%;margin-top:18px;}
.success-wrap{max-width:680px;margin:0 auto;}
.success-head{display:flex;align-items:center;gap:16px;margin:8px 0 18px;}
.success-check{width:52px;height:52px;border-radius:50%;background:var(--ok-tint);color:var(--ok);display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:700;flex:none;}
.voucher-no{display:flex;flex-direction:column;gap:4px;padding:18px 22px;border:1px dashed var(--brand);border-radius:var(--r-lg);background:var(--brand-tint);}
.voucher-no-l{font-family:var(--f-m);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);}
.voucher-no-v{font-family:var(--f-m);font-size:28px;font-weight:700;color:var(--brand);letter-spacing:.02em;}
@media (max-width:820px){.pay-grid{grid-template-columns:1fr;}.pay-side{position:static;}}
@media print{.no-print,.adminnav,.topbar,.appfoot{display:none!important;}}

/* fulfillment badge (instant vs reservation) */
.pbadge{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-size:13px;font-weight:700;line-height:1;white-space:nowrap;}
.pbadge svg{flex:none;}
.pbadge-go{background:var(--ok-tint);color:var(--ok);}
.pbadge-wait{background:var(--warn-tint);color:var(--warn);}
.pbadge-sm{padding:3px 8px;font-size:11px;gap:4px;}
.pd-hero-badge{margin-top:10px;}
.pcard-badge{margin-top:8px;}

/* deposit payment choice */
.pay-amount{margin:12px 0;padding:12px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);}
.pay-amount-l{font-family:var(--f-m);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-4);margin-bottom:6px;}
.pay-amt-opt{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:13px;font-weight:600;cursor:pointer;color:var(--ink-2);}
.pay-amt-opt input{accent-color:var(--brand);flex:none;}
.pay-balance.balance-hot{margin-top:10px;padding:10px 12px;background:var(--warn-tint);border-radius:var(--r-md);font-weight:800;font-size:16px;color:var(--warn);}
.pay-balance.balance-hot span{color:var(--warn);}

/* admin: computed deposit hint */
.callout-amt{margin:6px 0 10px;padding:8px 12px;background:var(--ok-tint);border-radius:var(--r-md);font-weight:700;color:var(--ink-1);font-size:13px;}

/* ---- Phase 4: post-sale ops (sales.php) ---- */
.ps-status{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.ps-status.ok{background:#e6f4ea;color:#1e7e34}
.ps-status.bad{background:#fde8e8;color:#c0392b}
.ps-status.warn{background:#fff4e0;color:#b9770e}
.ps-status.muted{background:#eef0f2;color:#667}
.ps-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.ps-h1{margin:0 0 2px;font-size:22px}
.ps-lbl{display:block;font-size:13px;font-weight:600;margin:12px 0 4px}
.ps-in{width:100%;padding:9px 11px;border:1px solid #ccd2d8;border-radius:9px;font:inherit;background:#fff}
textarea.ps-in{resize:vertical}
.ps-hint{font-size:13px;margin-bottom:4px}
.btn-danger{display:inline-block;padding:10px 18px;border:0;border-radius:10px;background:#c0392b;color:#fff;font:inherit;font-weight:700;cursor:pointer}
.btn-danger:hover{background:#a93226}
.inline-note.err{background:#fde8e8;color:#c0392b}
.inline-note.ok{background:#e6f4ea;color:#1e7e34}
.ps-search{display:flex;gap:8px;margin-bottom:16px}
.ps-search .ps-in{flex:1}
.ps-row{display:flex;align-items:center;gap:14px;padding:12px 6px;border-top:1px solid #eef0f2;text-decoration:none;color:inherit}
.ps-row:first-child{border-top:0}
.ps-row:hover{background:#fafbfc}
.ps-row-v{font-family:'JetBrains Mono',monospace;font-weight:700;min-width:150px}
.ps-row-c{flex:1}
.ps-row-d{font-size:13px;min-width:120px}
.ps-row-t{font-weight:700;min-width:90px;text-align:right}
.ps-audit{padding:8px 0;border-top:1px solid #eef0f2}
.ps-audit:first-child{border-top:0}
.ps-audit .a-act{font-family:'JetBrains Mono',monospace;font-weight:700;margin-right:8px}
.ps-audit .a-meta{color:#889;font-size:13px}

/* ===================== PRODUCT PAGE REDESIGN (.pdx) ===================== */
.pdx{ --pp:var(--surface); }
.pdx h2,.pdx h3,.pdx h4{ font-family:var(--f-d); }
.pdx-hero{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; margin-top:14px; }
.pdx-heroTop{ display:grid; grid-template-columns:280px 1fr; min-height:210px; }
.pdx-photo{ position:relative; background:radial-gradient(circle at 82% 18%,rgba(255,255,255,.14),transparent 40%),linear-gradient(135deg,var(--brand),var(--brand-2)); color:#fff; padding:20px; display:flex; flex-direction:column; justify-content:space-between; }
.pdx-photo--img{ padding:0; }
.pdx-photo--img img{ width:100%; height:100%; object-fit:cover; display:block; }
.pdx-photo--img .pdx-ag{ position:absolute; top:14px; left:14px; }
.pdx-ag{ font-family:var(--f-m); font-size:11px; letter-spacing:.12em; text-transform:uppercase; background:rgba(255,255,255,.18); border:1px solid rgba(255,255,255,.28); border-radius:999px; padding:6px 10px; width:max-content; }
.pdx-big{ font-family:var(--f-d); font-size:118px; line-height:.7; opacity:.16; }
.pdx-pname{ font-weight:800; }
.pdx-heroText{ padding:26px 28px; display:flex; flex-direction:column; justify-content:center; }
.pdx-heroText h2{ font-size:40px; line-height:1.05; font-weight:350; margin:0; }
.pdx-en{ font-size:17px; color:var(--ink-3); margin-top:8px; }
.pdx-badges{ display:flex; gap:8px; margin-top:15px; flex-wrap:wrap; }
.pdx-badge{ border-radius:999px; padding:6px 11px; font-weight:800; font-size:12px; }
.pdx-badge.green{ background:var(--ok-tint); color:var(--ok); }
.pdx-facts{ display:grid; grid-template-columns:repeat(5,1fr); border-top:1px solid var(--line); }
.pdx-fact{ padding:13px 15px; border-right:1px solid var(--line); }
.pdx-fact:last-child{ border-right:0; }
.pdx-fact span{ display:block; font-family:var(--f-m); font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-4); margin-bottom:4px; }
.pdx-fact b{ font-size:14px; font-weight:700; }
.pdx-fact.langFact{ background:linear-gradient(180deg,#fff,var(--brand-tint)); border-bottom:3px solid var(--brand); }

.pdx-card{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); padding:20px; margin-top:16px; }
.pdx-card h3{ font-size:22px; font-weight:450; margin:0 0 12px; }
.pdx-sectionHeader{ display:flex; align-items:baseline; gap:11px; margin-bottom:13px; flex-wrap:wrap; }
.pdx-sectionHeader h3{ margin:0; }
.pdx-stepNo{ font-family:var(--f-m); font-size:12px; background:var(--brand); color:#fff; border-radius:999px; padding:3px 9px; }
.pdx-hint{ color:var(--ink-3); font-size:13px; }
.pdx-infoGrid{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.pdx-infoBox{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-md); padding:13px; }
.pdx-infoBox h4{ margin:0 0 7px; font-size:12px; text-transform:uppercase; letter-spacing:.06em; font-family:var(--f-m); color:var(--brand); }
.pdx-infoBox ul{ margin:0; padding-left:17px; color:var(--ink-3); font-size:13px; }
.pdx-infoBox li{ margin:3px 0; }
.pdx-schedule{ display:flex; gap:7px; align-items:center; flex-wrap:wrap; }
.pdx-day{ width:33px; height:33px; border-radius:9px; background:var(--tint); display:grid; place-items:center; font-family:var(--f-m); font-size:12px; color:var(--ink-4); }
.pdx-day.on{ background:var(--brand-tint); color:var(--brand); border:1px solid var(--line-3); }
.pdx-desc{ color:var(--ink-2); font-size:15px; line-height:1.55; }

.pdx-product{ display:grid; grid-template-columns:minmax(0,1fr) 330px; gap:18px; align-items:start; margin-top:16px; }
.pdx-maincol{ display:grid; gap:0; }
.pdx-maincol > .pdx-card:first-child{ margin-top:0; }
.pdx-side{ position:sticky; top:18px; }
.pdx-sidein{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--sh-lg); padding:20px; }
.pdx-side h2{ font-size:22px; font-weight:450; margin:0 0 14px; }
.pdx-summary{ display:grid; gap:7px; margin-bottom:14px; }
.pdx-sumrow{ display:flex; justify-content:space-between; gap:12px; font-size:13px; color:var(--ink-3); }
.pdx-sumrow strong{ font-family:var(--f-m); color:var(--ink-1); white-space:nowrap; }
.pdx-totalBox{ border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:14px 0; margin:12px 0; }
.pdx-total-l{ color:var(--ink-3); font-size:13px; }
.pdx-total-v{ display:flex; align-items:baseline; gap:10px; }
.pdx-total-czk{ font-family:var(--f-m); font-size:34px; font-weight:700; letter-spacing:-.03em; }
.pdx-strike{ font-family:var(--f-m); font-size:15px; color:var(--ink-4); text-decoration:line-through; }
.pdx-total-eur{ font-family:var(--f-m); font-size:14px; color:var(--ink-3); }
.pdx-cta{ width:100%; border:0; background:var(--brand); color:#fff; border-radius:var(--r-md); padding:14px; font-weight:800; font-size:16px; cursor:pointer; margin-top:6px; }
.pdx-cta:hover{ background:var(--brand-2); }
.pdx-cta:disabled{ background:var(--ink-5); cursor:not-allowed; }
.pdx-cta2{ width:100%; margin-top:9px; border:1px solid var(--line-2); background:#fff; border-radius:var(--r-md); padding:11px; font-weight:800; cursor:pointer; }
.pdx-cta2:disabled{ opacity:.5; cursor:not-allowed; }
.pdx-confirm{ display:flex; gap:9px; background:var(--warn-tint); border:1px solid var(--line-3); border-radius:var(--r-md); padding:11px; margin:8px 0 4px; font-size:13px; }
.pdx-confirm input{ width:17px; height:17px; }

.pdx-options{ display:grid; grid-template-columns:repeat(auto-fit,minmax(195px,1fr)); gap:10px; }
.pdx .vcard{ position:relative; border:1.5px solid var(--line); background:var(--surface); border-radius:var(--r-md); padding:14px; cursor:pointer; display:block; }
.pdx .vcard input{ position:absolute; opacity:0; pointer-events:none; }
.pdx .vcard.on{ border-color:var(--brand); background:var(--brand-tint); box-shadow:inset 0 0 0 1px var(--brand); }
.pdx .vcard.on::after{ content:'✓'; position:absolute; top:10px; right:11px; background:var(--brand); color:#fff; width:21px; height:21px; border-radius:50%; display:grid; place-items:center; font-weight:900; font-size:12px; }
.pdx-pill{ display:inline-block; font-weight:800; font-size:16px; }
.pdx-vds{ margin:6px 0 8px; color:var(--ink-3); font-size:13px; }
.pdx-feats{ display:grid; gap:4px; margin:8px 0; font-size:13px; color:var(--ink-3); }
.pdx-feat{ display:flex; gap:7px; align-items:center; }
.pdx-feat.off{ opacity:.6; }
.pdx-feat b{ margin-left:auto; font-family:var(--f-m); color:var(--ink-2); }
.pdx-fic{ font-weight:900; }
.pdx-fic.ok{ color:var(--ok); }
.pdx-fic.no{ color:var(--bad); }
.pdx-vbadges{ display:flex; gap:6px; flex-wrap:wrap; margin-top:6px; }
.pdx-vbadge{ font-family:var(--f-m); font-size:10px; letter-spacing:.05em; text-transform:uppercase; background:var(--gold-tint); color:var(--gold); padding:3px 7px; border-radius:5px; }
.pdx-vbadge.warn{ background:var(--warn-tint); color:var(--warn); }
.pdx-vprice{ display:block; margin-top:9px; font-family:var(--f-m); font-weight:700; color:var(--brand); font-size:16px; }
.pdx-vprice small{ font-family:var(--f-u); font-size:12px; color:var(--ink-3); font-weight:600; }
.pdx-opts{ display:grid; gap:8px; }
.pdx .bld-opt{ display:flex; gap:9px; align-items:center; border:1.5px solid var(--line); background:var(--surface); border-radius:var(--r-md); padding:11px 13px; cursor:pointer; }
.pdx .bld-opt.on{ border-color:var(--brand); background:var(--brand-tint); }
.pdx-diagram{ margin-bottom:12px; border:1px solid var(--line); border-radius:var(--r-md); overflow:hidden; }
.pdx-diagram img{ width:100%; display:block; }

.pdx-qtyList{ display:grid; gap:8px; }
.pdx .qrow{ display:grid; grid-template-columns:1fr auto auto; gap:14px; align-items:center; background:var(--surface); border:1px solid var(--line); border-radius:var(--r-md); padding:11px 13px; }
.pdx-qn{ font-weight:800; }
.pdx-unit,.pdx-cellPrice{ font-family:var(--f-m); font-weight:700; color:var(--brand); white-space:nowrap; font-size:13px; }
.pdx-unit small,.pdx-cellPrice small{ font-family:var(--f-u); color:var(--ink-3); font-weight:600; }
.pdx-step{ display:grid; grid-template-columns:34px 38px 34px; align-items:center; background:var(--tint); border-radius:9px; padding:3px; }
.pdx-step--solo{ width:max-content; }
.pdx-step button{ height:32px; border:1px solid var(--line); background:#fff; border-radius:7px; font-weight:900; cursor:pointer; }
.pdx-step input{ text-align:center; font-family:var(--f-m); font-weight:700; border:0; background:transparent; width:100%; }
.pdx-cstep{ display:grid; grid-template-columns:27px 30px 27px; background:var(--tint); padding:2px; border-radius:8px; }
.pdx-cstep button{ height:27px; border:1px solid var(--line); border-radius:6px; background:#fff; font-weight:900; cursor:pointer; }
.pdx-cstep input{ text-align:center; font-family:var(--f-m); font-weight:700; border:0; background:transparent; width:100%; }

.pdx-matrixWrap{ overflow:auto; border:1px solid var(--line); border-radius:var(--r-md); }
.pdx-matrix{ width:100%; border-collapse:collapse; min-width:560px; }
.pdx-matrix th{ font-family:var(--f-m); font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-3); background:var(--tint); padding:11px; text-align:left; }
.pdx-matrix td{ border-top:1px solid var(--line); padding:10px; vertical-align:middle; }
.pdx-matrix td .qrow{ grid-template-columns:1fr auto; gap:8px; background:transparent; border:0; padding:0; }
.pdx-zone{ font-weight:800; }
.pdx-cellOff{ color:var(--ink-4); font-size:13px; opacity:.6; }
.qrow--off{ opacity:.42; }
.qrow--off .pdx-step button, .qrow--off .pdx-cstep button, .qrow--off input{ cursor:not-allowed; }
.pdx-x{ color:#c0392b; font-weight:700; font-size:15px; }

.pdx-addon{ display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; background:var(--surface); border:1px solid var(--line); border-radius:var(--r-md); padding:11px 13px; }
.pdx-formGrid{ display:grid; grid-template-columns:1fr 1fr; gap:11px; }
.pdx-field{ display:grid; gap:6px; margin:10px 0 0; }
.pdx-field label{ font-family:var(--f-m); font-size:11px; text-transform:uppercase; letter-spacing:.07em; color:var(--ink-3); }
.pdx-field input,.pdx-field select{ border:1px solid var(--line-2); border-radius:var(--r-md); background:#fff; padding:11px; color:var(--ink-1); font:inherit; }
.pdx-secondary{ background:var(--surface); }
.pdx-secondary h3{ font-size:18px; }
.pdx-subBlock{ margin-top:10px; }
.pdx-subT{ font-family:var(--f-m); font-size:11px; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-3); margin-bottom:7px; }

@media (max-width:980px){
  .pdx-product{ grid-template-columns:1fr; }
  .pdx-side{ position:static; }
  .pdx-heroTop{ grid-template-columns:1fr; }
  .pdx-facts{ grid-template-columns:repeat(2,1fr); }
  .pdx-infoGrid{ grid-template-columns:1fr 1fr; }
  .pdx-formGrid{ grid-template-columns:1fr; }
}
@media (max-width:640px){
  .pdx-heroText h2{ font-size:30px; }
  .pdx-facts,.pdx-infoGrid{ grid-template-columns:1fr; }
  .pdx .qrow{ grid-template-columns:1fr auto; }
  /* responsive matrix → stacked cards, single DOM (no duplicate inputs) */
  .pdx-matrix{ min-width:0; }
  .pdx-matrix thead{ display:none; }
  .pdx-matrix,.pdx-matrix tbody,.pdx-matrix tr,.pdx-matrix td,.pdx-matrix th{ display:block; }
  .pdx-matrix tr{ border:1px solid var(--line); border-radius:var(--r-md); margin-bottom:10px; padding:6px; }
  .pdx-matrix td{ border-top:0; display:flex; justify-content:space-between; align-items:center; gap:12px; padding:8px 6px; }
  .pdx-matrix td::before{ content:attr(data-col); font-weight:700; color:var(--ink-2); }
  .pdx-matrix .pdx-zone{ background:var(--tint); border-radius:8px; margin-bottom:4px; }
}

/* ============================================================
   HOME DASHBOARD — REDESIGN (.dash) — appended for mockup
   Builds strictly on existing tokens. CSP-safe (no inline styles).
   ============================================================ */

/* widen the shell a touch: counter sits at a desk, wide screen */
.wrap--dash{ max-width:1280px; }

/* --- command bar: search is the hero, actions flank it --- */
.dash-top{ display:grid; grid-template-columns:1fr auto; gap:14px; align-items:start; margin:4px 0 6px; }
.dash-searchwrap{ position:relative; }
.dash-search{ position:relative; }
.dash-search input{ width:100%; padding:18px 20px 18px 52px; font-size:18px; border:1px solid var(--line-2);
  border-radius:var(--r-lg); background:var(--card); font-family:var(--f-u); box-shadow:var(--sh-sm); }
.dash-search input:focus{ outline:0; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-tint); }
.dash-search-ic{ position:absolute; left:18px; top:50%; transform:translateY(-50%); color:var(--ink-4); pointer-events:none; }
.dash-search-kbd{ position:absolute; right:16px; top:50%; transform:translateY(-50%); font-family:var(--f-m);
  font-size:11px; color:var(--ink-4); border:1px solid var(--line-2); border-radius:6px; padding:3px 7px; background:var(--surface); }
.dash-search input:focus ~ .dash-search-kbd{ display:none; }

/* primary actions next to search */
.dash-acts{ display:flex; gap:10px; }
.dash-quick{ display:inline-flex; align-items:center; gap:8px; padding:0 20px; height:60px; border-radius:var(--r-lg);
  border:0; background:var(--brand); color:#fff; font-weight:700; font-size:15px; cursor:pointer; box-shadow:var(--sh-sm); transition:background .12s; }
.dash-quick:hover{ background:var(--brand-2); }
.dash-quick svg{ flex:none; }

/* --- in-progress sale / cart banner (the "rozjetý prodej") --- */
.dash-cart{ display:flex; align-items:center; gap:16px; margin:14px 0 0; padding:14px 18px;
  background:linear-gradient(180deg,#fff,var(--gold-tint)); border:1px solid var(--line-3);
  border-left:4px solid var(--gold); border-radius:var(--r-lg); box-shadow:var(--sh-sm); }
.dash-cart[hidden]{ display:none; }
.dash-cart-ic{ width:42px; height:42px; border-radius:11px; background:var(--gold); color:#fff;
  display:grid; place-items:center; flex:none; }
.dash-cart-b{ flex:1; min-width:0; }
.dash-cart-t{ font-weight:700; color:var(--ink-1); font-size:15px; }
.dash-cart-m{ font-size:13px; color:var(--ink-3); margin-top:2px; }
.dash-cart-m b{ font-family:var(--f-m); color:var(--ink-1); }
.dash-cart-warn{ display:inline-flex; align-items:center; gap:5px; margin-left:8px; color:var(--warn); font-weight:700; }
.dash-cart-acts{ display:flex; gap:8px; flex:none; }

/* --- shift strip: today's numbers, end-of-shift --- */
.dash-shift{ display:flex; align-items:center; gap:0; margin:16px 0 6px; border:1px solid var(--line);
  border-radius:var(--r-lg); background:var(--card); overflow:hidden; box-shadow:var(--sh-sm); }
.dash-shift-cell{ padding:14px 20px; border-right:1px solid var(--line); display:flex; flex-direction:column; gap:3px; }
.dash-shift-cell:last-child{ border-right:0; }
.dash-shift-l{ font-family:var(--f-m); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-4); }
.dash-shift-v{ font-family:var(--f-d); font-size:26px; font-weight:400; color:var(--ink-1); line-height:1; }
.dash-shift-v.brand{ color:var(--brand); }
.dash-shift-v.muted{ color:var(--ink-4); }
.dash-shift-user{ display:flex; align-items:center; gap:9px; }
.dash-shift-av{ width:30px; height:30px; border-radius:50%; background:var(--gold); color:#fff;
  display:grid; place-items:center; font-weight:700; font-size:12px; }
.dash-shift-sp{ flex:1; }
.dash-shift-act{ padding:14px 20px; }

/* --- section labels w/ optional action on the right --- */
.dash-seclbl{ display:flex; align-items:baseline; justify-content:space-between; margin:26px 0 10px; }
.dash-seclbl-t{ font-family:var(--f-m); font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-4); }
.dash-seclbl-a{ font-size:12px; font-weight:600; }

/* --- two-column main: left = browse, right = rails --- */
.dash-main{ display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:24px; align-items:start; margin-top:4px; }
.dash-railcol{ display:flex; flex-direction:column; gap:16px; position:sticky; top:16px; }

/* favorites as quick-sell rows (the heart: 1-2 clicks to sell) */
.qsell{ border:1px solid var(--line); border-radius:var(--r-lg); background:var(--card); overflow:hidden; box-shadow:var(--sh-sm); }
.qsell-h{ display:flex; align-items:center; justify-content:space-between; padding:13px 16px; border-bottom:1px solid var(--line); }
.qsell-h-t{ font-weight:700; font-size:14px; color:var(--ink-1); display:flex; align-items:center; gap:7px; }
.qsell-h-t .star{ color:var(--gold); }
.qsell-h-edit{ font-size:12px; font-weight:600; color:var(--ink-3); }
.qsell-list{ display:flex; flex-direction:column; }
.qsell-row{ display:grid; grid-template-columns:1fr auto auto; gap:10px; align-items:center;
  padding:11px 14px; border-top:1px solid var(--line); text-decoration:none; color:inherit; transition:background .1s; }
.qsell-row:first-child{ border-top:0; }
.qsell-row:hover{ background:var(--brand-tint); }
.qsell-b{ min-width:0; }
.qsell-name{ font-size:14px; font-weight:600; color:var(--ink-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.qsell-m{ font-size:11px; color:var(--ink-3); margin-top:2px; display:flex; align-items:center; gap:6px; }
.qsell-ag{ font-family:var(--f-m); font-size:10px; letter-spacing:.03em; text-transform:uppercase; color:var(--gold); }
.qsell-price{ font-family:var(--f-m); font-size:13px; font-weight:700; color:var(--ink-1); white-space:nowrap; text-align:right; }
.qsell-price small{ font-family:var(--f-u); font-size:11px; color:var(--ink-4); font-weight:600; display:block; }
.qsell-price.noprice{ color:var(--warn); font-size:11px; font-weight:600; }
.qsell-go{ width:30px; height:30px; border-radius:8px; background:var(--surface); border:1px solid var(--line-2);
  display:grid; place-items:center; color:var(--brand); flex:none; }
.qsell-row:hover .qsell-go{ background:var(--brand); color:#fff; border-color:var(--brand); }

/* small fulfillment dot for rails */
.fdot{ display:inline-block; width:7px; height:7px; border-radius:50%; flex:none; }
.fdot-go{ background:var(--ok); }
.fdot-wait{ background:var(--warn); }

/* recent / top-seller compact rail */
.rail{ border:1px solid var(--line); border-radius:var(--r-lg); background:var(--card); padding:14px 16px; box-shadow:var(--sh-sm); }
.rail-h{ font-weight:700; font-size:14px; color:var(--ink-1); margin-bottom:8px; display:flex; align-items:center; justify-content:space-between; }
.rail-h .cnt{ font-family:var(--f-m); font-size:11px; color:var(--ink-4); font-weight:500; }
.rail-list{ display:flex; flex-direction:column; gap:1px; }
.rail-row{ display:grid; grid-template-columns:auto 1fr auto; gap:10px; align-items:center; padding:8px 6px;
  border-radius:var(--r-md); text-decoration:none; color:inherit; }
.rail-row:hover{ background:var(--surface); }
.rail-rank{ font-family:var(--f-m); font-size:12px; font-weight:700; color:var(--gold); width:16px; text-align:center; }
.rail-nm{ min-width:0; }
.rail-name{ font-size:13px; font-weight:600; color:var(--ink-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rail-sub{ font-size:11px; color:var(--ink-4); margin-top:1px; }
.rail-val{ font-family:var(--f-m); font-size:12px; font-weight:700; color:var(--ink-2); white-space:nowrap; }
.rail-empty{ color:var(--ink-4); font-size:12px; padding:10px 6px; line-height:1.4; }

/* "rezervace nutná" reminder rail — warm, can't-miss */
.rmd{ border:1px solid var(--line-3); border-left:4px solid var(--warn); border-radius:var(--r-lg);
  background:var(--warn-tint); padding:14px 16px; }
.rmd-h{ display:flex; align-items:center; gap:7px; font-weight:700; font-size:13px; color:var(--warn); margin-bottom:8px; }
.rmd-list{ display:flex; flex-direction:column; gap:7px; }
.rmd-row{ display:flex; align-items:center; gap:9px; font-size:13px; color:var(--ink-1); text-decoration:none; }
.rmd-row:hover{ text-decoration:underline; }
.rmd-v{ font-family:var(--f-m); font-weight:700; color:var(--brand); flex:none; }
.rmd-empty{ font-size:12px; color:var(--ink-3); }

/* --- categories: keep the tile language, tighten for density --- */
.dash-cats{ display:grid; grid-template-columns:repeat(auto-fill,minmax(168px,1fr)); gap:10px; }

/* --- agencies row (reuse .ag/.ag-dot, just wrapper spacing) --- */
.dash-ags{ display:flex; flex-wrap:wrap; gap:8px; }

/* --- bilingual price helper popover for tourist (toggleable) --- */
.dash-biling{ font-size:12px; color:var(--ink-3); display:inline-flex; align-items:center; gap:6px; }

/* keyboard hint footer */
.dash-kbar{ display:flex; flex-wrap:wrap; gap:16px; margin:30px 0 8px; padding:12px 16px;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r-md); font-size:12px; color:var(--ink-3); }
.dash-kbar kbd{ font-family:var(--f-m); font-size:11px; background:var(--card); border:1px solid var(--line-2);
  border-radius:5px; padding:2px 6px; color:var(--ink-2); margin:0 2px; }
.dash-kbar b{ color:var(--ink-2); }

/* responsive: collapse rail under the browse area on narrow/half-screen */
@media (max-width:1040px){
  .dash-main{ grid-template-columns:1fr; }
  .dash-railcol{ position:static; flex-direction:row; flex-wrap:wrap; }
  .dash-railcol > *{ flex:1; min-width:260px; }
  .dash-top{ grid-template-columns:1fr; }
  .dash-acts{ justify-content:stretch; }
  .dash-quick{ flex:1; justify-content:center; }
}
@media (max-width:560px){
  .dash-shift{ flex-wrap:wrap; }
  .dash-shift-cell{ flex:1 1 40%; }
  .dash-railcol > *{ min-width:100%; }
}

/* dashboard shift-cell text variants (replace inline styles; CSP-safe) */
.dash-shift-v--name{ font-size:16px; font-family:var(--f-u); font-weight:700; }
.dash-shift-v--mono{ font-size:16px; font-family:var(--f-m); font-weight:700; }
.dash-shift-v--mono.warn{ color:var(--warn); }
.dash-shift-cur{ font-size:14px; color:var(--ink-3); }
.dash-kbar-note{ color:var(--ink-4); }
.qsell-row.pressed{ transform:scale(.995); }

/* topbar user chip is now a link to the sales/voucher overview */
.user { color: var(--ink-1); cursor: pointer; }
.user:hover { text-decoration: none; box-shadow: inset 0 0 0 1px var(--line); }

/* Admin — reporty */
.rep-cards{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:14px; }
.rep-filter{ display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap; margin:8px 0 6px; }
.rep-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.rep-cell{ display:flex; flex-direction:column; gap:2px; }
.rep-l{ font-size:12px; color:var(--ink-4); }
.rep-v{ font-size:18px; font-weight:700; }
.rep-eur{ color:var(--ink-4); font-weight:600; }
.table td.num, .table th.num{ text-align:right; white-space:nowrap; }

/* Stanice + PIN prodejce u platby */
.login-station{ width:100%; padding:10px 12px; border:1px solid var(--line); border-radius:var(--r-md); margin:4px 0 12px; font-size:15px; background:var(--surface); }
.pay-pin{ margin:14px 0; display:flex; flex-direction:column; gap:4px; }
.pay-pin-l{ font-size:12px; color:var(--ink-4); font-weight:700; text-transform:uppercase; letter-spacing:.04em; }
.pay-pin-input{ padding:11px 13px; border:1px solid var(--line); border-radius:var(--r-md); font-size:18px; letter-spacing:6px; text-align:center; }
.pay-pin-note{ font-size:11px; color:var(--ink-4); }

/* Admin Produkty — filtrovací lišta */
.prod-filter{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:14px 0 6px; }
.prod-filter .pf-search{ flex:1 1 220px; min-width:170px; padding:9px 12px; border:1px solid var(--line); border-radius:var(--r-md); font-size:14px; }
.prod-filter select{ padding:9px 10px; border:1px solid var(--line); border-radius:var(--r-md); background:var(--surface); font-size:14px; }
.pf-count{ font-size:13px; margin:0 0 12px; }

/* Admin Pořadí */
.ord-pick{ display:flex; flex-wrap:wrap; gap:18px; margin:14px 0 10px; }
.ord-pickform{ display:flex; align-items:center; gap:8px; }
.ord-pickform label{ font-weight:700; font-size:13px; }
.ord-pickform select{ padding:8px 10px; border:1px solid var(--line); border-radius:var(--r-md); background:var(--surface); }
.ord-h2{ margin:0 0 4px; font-size:18px; }
.ord-wcell{ width:90px; }
.ord-w{ width:62px; padding:6px 8px; border:1px solid var(--line); border-radius:var(--r-md); text-align:center; }
.ord-table tr.ord-pinned{ background:#f3f6fd; }

/* Admin Produkty — hlavička se „+ Přidat produkt" */
.prod-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:0 0 6px; }
.prod-head h1{ margin:0; }

/* Admin editor — akční lišta + rychlé odkazy */
.form-actions{ display:flex; gap:10px; align-items:center; margin-top:18px; flex-wrap:wrap; }
.editor-links{ display:flex; gap:8px; flex-wrap:wrap; margin:2px 0 14px; }

/* Admin Produkty — štítky chybí nastavení, checkbox, hromadné akce, mazání */
.flag-warn{ display:inline-block; margin-left:6px; padding:1px 7px; border-radius:999px; font-size:11px; font-weight:700; background:#fdecea; color:#c0392b; }
.flag-info{ display:inline-block; margin-left:6px; padding:1px 7px; border-radius:999px; font-size:11px; font-weight:700; background:#eef2f7; color:#5b6b7c; }
.cbcell{ width:30px; text-align:center; }
.bulk-bar{ display:flex; align-items:center; gap:8px; margin:8px 0 2px; flex-wrap:wrap; }
.bulk-l{ font-size:13px; color:#5b6b7c; font-weight:600; }
.btn-d{ display:inline-block; padding:5px 10px; border-radius:var(--r-md,8px); border:1px solid #e3b4ae; background:#fff; color:#c0392b; font-size:13px; text-decoration:none; cursor:pointer; }
.btn-d:hover{ background:#fdecea; }
.alert-warn{ background:#fff8e6; border:1px solid #f0d699; color:#7a5b10; }
.confirm-del{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.confirm-del-acts{ display:flex; gap:8px; align-items:center; }

/* Admin — černý boční panel (nahrazuje horizontální adminnav) */
.topbar{ position: sticky; top: 0; z-index: 20; }
.adm-side{ position: fixed; top: 0; left: 0; bottom: 0; width: 212px; background:#1F1A12; color:#C9C2B0; padding-top: 74px; overflow-y:auto; z-index: 5; display:flex; flex-direction:column; }
.adm-side-brand{ padding: 4px 20px 16px; display:flex; align-items:center; gap:10px; border-bottom:1px solid rgba(240,198,116,.08); margin-bottom:8px; }
.adm-side-mark{ width:30px; height:30px; border-radius:8px; background: var(--brand); color:#fff; display:grid; place-items:center; font-weight:700; font-size:12px; }
.adm-side-brand-t{ font-size:15px; color:#fff; font-weight:600; }
.adm-side-nav{ display:flex; flex-direction:column; }
.adm-side-group-l{ padding:14px 20px 4px; font-size:10px; color:#6F6452; letter-spacing:.14em; text-transform:uppercase; font-weight:700; }
.adm-side-link{ display:block; padding:9px 20px; font-size:14px; color:#C9C2B0; text-decoration:none; font-weight:500; border-left:3px solid transparent; }
.adm-side-link:hover{ background:rgba(255,255,255,.04); color:#fff; text-decoration:none; }
.adm-side-link.active{ background:rgba(184,137,58,.12); border-left-color: var(--brand); color:#fff; font-weight:700; }
.wrap--admin{ max-width:none; margin:0; padding:28px 28px 48px 244px; }
@media (max-width: 720px){
  .adm-side{ position:static; width:auto; padding-top:14px; }
  .wrap--admin{ padding-left:28px; }
}
@media print{ .adm-side{ display:none !important; } .wrap--admin{ padding-left:28px; } }

/* Admin → Admini: 2FA enrolment (QR + záložní kódy) */
.enrol{ border:1px solid var(--gold); background: var(--gold-tint); }
.enrol-grid{ display:flex; gap:24px; flex-wrap:wrap; align-items:flex-start; }
.enrol-qr{ background:#fff; padding:10px; border-radius:var(--r-md); border:1px solid var(--line); }
.qr-svg{ display:block; width:180px; height:180px; }
.enrol-info{ flex:1 1 280px; }
.enrol-secret{ font-family:var(--f-m); font-size:15px; letter-spacing:1px; background:#fff; border:1px solid var(--line); border-radius:var(--r-sm); padding:8px 12px; display:inline-block; }
.rc-list{ display:flex; flex-wrap:wrap; gap:8px; margin-top:6px; }
.rc{ font-family:var(--f-m); font-size:13px; background:#fff; border:1px solid var(--line-2); border-radius:var(--r-sm); padding:5px 9px; }


/* ============================================================
   ADMIN — editor sekce (section-cards) + tmavý sticky savebar
   Vize: docs/pti-ui-mockup.html (.adm-card, .adm-savebar).
   Plně přes tokeny, CSP-safe. Primárně pro editor produktu
   (products.php), navržené jako znovupoužitelný admin vzor.
   ============================================================ */

/* editor shell — širší než staré col-820, pohodlné 2 sloupce uvnitř */
.adm-editor{ max-width:1040px; }
.adm-editor-head{ display:flex; align-items:flex-start; gap:16px; flex-wrap:wrap; margin:6px 0 16px; }
.adm-editor-head h3{ font-family:var(--f-d); font-weight:400; font-size:26px; letter-spacing:-.01em; margin:0; flex:1 1 320px; }
.adm-editor-head h3 em{ font-style:italic; color:var(--brand); }

/* sekce = karta s teplou hlavičkou */
.adm-card{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-md);
  margin-bottom:16px; overflow:hidden; box-shadow:var(--sh-sm); }
.adm-card-h{ display:flex; align-items:center; gap:13px; padding:13px 20px;
  border-bottom:1px solid var(--line); background:var(--surface); }
.adm-card-no{ flex:none; width:26px; height:26px; border-radius:999px; background:var(--brand);
  color:#fff; display:grid; place-items:center; font-family:var(--f-m); font-size:12px; font-weight:700; }
.adm-card-ht{ flex:1; min-width:0; }
.adm-card-title{ font-family:var(--f-d); font-size:17px; font-weight:500; color:var(--ink-1); letter-spacing:-.01em; }
.adm-card-title em{ color:var(--brand); font-style:italic; }
.adm-card-sub{ font-family:var(--f-m); font-size:11px; letter-spacing:.03em; color:var(--ink-3); margin-top:2px; }
.adm-card-body{ padding:18px 20px; }
.adm-card-body > .field:last-child,
.adm-card-body > .grid-2:last-child,
.adm-card-body > .switches:last-child{ margin-bottom:0; }
/* dlouhé pole přes obě sloupcové buňky */
.fld-wide{ grid-column:1 / -1; }
/* náhled obrázku v kartě (nahrazuje starý .fieldset rámeček) */
.adm-card .pthumb-lg{ margin-bottom:12px; }

/* tmavý sticky savebar — vize z mockupu */
.adm-savebar{ position:sticky; bottom:0; z-index:8; display:flex; align-items:center; gap:14px;
  margin-top:18px; padding:13px 18px; background:#1F1A12; color:#fff;
  border-radius:var(--r-md); box-shadow:0 -6px 22px rgba(40,30,15,.14); }
.adm-savebar-info{ flex:1; min-width:0; font-size:12.5px; color:rgba(255,255,255,.6);
  font-family:var(--f-m); letter-spacing:.02em; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.adm-savebar-info b{ color:#F0C674; font-weight:700; }
.adm-savebar .btn-g{ color:rgba(255,255,255,.78); }
.adm-savebar .btn-g:hover{ background:rgba(255,255,255,.08); color:#fff; }
.adm-savebar .btn-s{ background:transparent; color:#fff; border-color:rgba(255,255,255,.24); }
.adm-savebar .btn-s:hover{ background:rgba(255,255,255,.07); }
.adm-savebar .btn-p{ background:var(--gold); color:#1F1A12; }
.adm-savebar .btn-p:hover{ background:#D6A04A; }
.adm-savebar .btn-p:disabled,
.adm-savebar .btn-s:disabled{ background:rgba(255,255,255,.16); color:rgba(255,255,255,.45);
  border-color:transparent; cursor:not-allowed; }
@media print{ .adm-savebar{ display:none; } }
@media (max-width:560px){
  .adm-savebar{ flex-wrap:wrap; }
  .adm-savebar-info{ flex:1 1 100%; white-space:normal; }
}

/* volitelné: zvýraznění „rozpracované" sekce a dirty-stav (řídí app.js) */
.adm-card.is-dirty .adm-card-no{ background:var(--gold); color:#1F1A12; }

/* ============================================================
   ADMIN — boční panel: ikony, počty (badge), patička s uživatelem
   Doplňuje stávající .adm-side* (nemění je). Ikony = inline SVG
   se stroke:currentColor → dědí barvu odkazu (hover/active).
   ============================================================ */
.adm-side-link{ display:flex; align-items:center; gap:11px; }
.adm-side-ic{ flex:none; color:#7F745E; transition:color .12s; }
.adm-side-link:hover .adm-side-ic{ color:#fff; }
.adm-side-link.active .adm-side-ic{ color:var(--gold); }
.adm-side-tx{ flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* počet u položky (mockup je má) — jemný tmavý pill, gold na aktivní */
.adm-side-badge{ flex:none; min-width:20px; height:18px; padding:0 6px; border-radius:999px;
  display:inline-grid; place-items:center; font-family:var(--f-m); font-size:10.5px; font-weight:700;
  color:#C9C2B0; background:rgba(255,255,255,.08); }
.adm-side-link:hover .adm-side-badge{ background:rgba(255,255,255,.14); color:#fff; }
.adm-side-link.active .adm-side-badge{ background:var(--gold-tint); color:var(--brand-2); }

/* patička s uživatelem — drží se dole (aside je flex column) */
.adm-side-foot{ margin-top:auto; display:flex; align-items:center; gap:10px; padding:14px 20px;
  border-top:1px solid rgba(240,198,116,.10); }
.adm-side-foot-av{ flex:none; width:32px; height:32px; border-radius:50%; background:var(--gold);
  color:#1F1A12; display:grid; place-items:center; font-weight:800; font-size:13px; }
.adm-side-foot-b{ display:flex; flex-direction:column; min-width:0; }
.adm-side-foot-n{ color:#fff; font-weight:600; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.adm-side-foot-r{ color:#8A7F69; font-family:var(--f-m); font-size:10.5px; letter-spacing:.04em; text-transform:uppercase; }
@media (max-width:720px){
  .adm-side-foot{ margin-top:0; }
}

/* ============================================================
   ADMIN — Ceny (pricing.php) + Matice (matrix.php)
   Priorita č. 2 — „srdce adminu". Staví na .adm-card / .adm-savebar /
   .mtx* / tokenech. Scoped pod nové třídy, nepřepisuje stávající.
   Vize: docs/pti-ui-mockup.html (sekce pricing matrix).
   ============================================================ */

/* --- pricing workspace: 2 sloupce (matice/dimenze vlevo, verze vpravo) --- */
.pric-grid{ display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:22px; align-items:start; margin-top:6px; }
.pric-main{ min-width:0; }
.adm-rside{ position:sticky; top:16px; display:flex; flex-direction:column; gap:16px; }
@media (max-width:1040px){
  .pric-grid{ grid-template-columns:1fr; }
  .adm-rside{ position:static; }
}

/* cenový „vzorec" (počet buněk) — teplejší než holý matrix-hint */
.pric-formula{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:12px 16px;
  background:var(--gold-tint); border:1px solid #e6cf9a; border-radius:var(--r-md); font-size:13px; color:var(--ink-2); }
.pric-formula .f{ font-family:var(--f-m); font-weight:700; color:var(--ink-1); background:#fff;
  border:1px solid var(--line-2); border-radius:var(--r-sm); padding:3px 9px; }
.pric-formula .f em{ font-style:normal; color:var(--gold); margin:0 5px; }
.pric-formula .note{ margin-left:auto; font-family:var(--f-m); font-size:11px; color:var(--ink-3); }

/* dimenze jako řádky v kartě (čísla/chips) — využívá stávající .dim-* + .tag */
.adm-card .dim-row:first-child{ padding-top:0; }
.adm-card .dim-row:last-child{ padding-bottom:0; }

/* --- verze jako karty v pravém sidebaru (mockup .ver-row) --- */
.ver-list{ display:flex; flex-direction:column; }
.ver-row{ padding:13px 16px; border-left:3px solid transparent; }
.ver-row + .ver-row{ border-top:1px solid var(--line); }
.ver-row.is-active{ background:var(--gold-tint); border-left-color:var(--gold); }
.ver-row.is-draft{ background:rgba(45,92,158,.04); }
.ver-row-h{ display:flex; align-items:center; gap:8px; margin-bottom:4px; }
.ver-row-name{ font-weight:700; font-size:14px; color:var(--ink-1); flex:1; min-width:0;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ver-row-tag{ flex:none; font-family:var(--f-m); font-size:9px; letter-spacing:.1em; text-transform:uppercase;
  font-weight:700; padding:2px 8px; border-radius:30px; }
.ver-row-tag.t-active{ background:var(--ok-tint); color:#38501f; }
.ver-row-tag.t-draft{ background:#DFE7F2; color:#2D5C9E; }
.ver-row-tag.t-archived{ background:var(--tint-2); color:var(--ink-4); }
.ver-row-meta{ font-family:var(--f-m); font-size:11px; color:var(--ink-3); line-height:1.5; }
.ver-row-acts{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin-top:9px; }
.ver-row-acts .btn-s,.ver-row-acts .btn-g{ font-size:12px; padding:6px 11px; }
.ver-ov{ display:flex; align-items:center; gap:6px; margin-top:8px; padding-top:8px; border-top:1px dashed var(--line); }
.ver-ov-l{ font-family:var(--f-m); font-size:10px; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-4); }
.ver-ov .num-mini{ width:52px; }

/* --- matice: bulk toolbar + lepší buňky + změněný stav --- */
.mtx-toolbar{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; padding:11px 16px;
  background:var(--surface); border-bottom:1px solid var(--line); }
.mtx-toolbar-l{ font-family:var(--f-m); font-size:10px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--ink-4); font-weight:700; margin-right:4px; }
.mtx-btn{ display:inline-flex; align-items:center; gap:6px; padding:6px 11px; background:var(--card);
  border:1px solid var(--line-2); border-radius:var(--r-sm); font-size:12px; font-weight:600; color:var(--ink-2); cursor:pointer; }
.mtx-btn:hover{ background:var(--tint); border-color:var(--line-3); color:var(--ink-1); }
.mtx-btn svg{ flex:none; color:var(--ink-3); }
.mtx-toolbar-r{ margin-left:auto; font-family:var(--f-m); font-size:11px; color:var(--ink-3); }
.mtx-toolbar-r .mtx-chg{ background:var(--gold-tint); color:#6B4A1A; padding:2px 8px; border-radius:30px; font-weight:700; }
.mtx-toolbar-r .mtx-chg[hidden]{ display:none; }

/* sticky hlavička + první sloupec uvnitř scrollu */
.mtx-wrap{ max-height:none; }
.mtx thead th{ position:sticky; top:0; z-index:3; }
.mtx thead th.mtx-corner{ z-index:4; left:0; }

/* prominentní Kč, podřízené € (drží stávající .mtx-in/.cur/.eur) */
.mtx-cell{ position:relative; }
.mtx-in .cur{ font-weight:700; }
.mtx input{ transition:border-color .12s, box-shadow .12s, background .12s; }
.mtx-cell.is-changed{ }
.mtx-cell.is-changed::before{ content:''; position:absolute; left:-10px; top:-8px; bottom:-8px; width:3px;
  background:var(--brand); border-radius:2px; }
.mtx-cell.is-changed .mtx-in:first-child input{ background:#FBF5F7; border-color:var(--brand); }
.mtx-cell.is-changed::after{ content:'\25CF'; position:absolute; top:-4px; right:0; color:var(--brand); font-size:8px; }
/* buňka, na které je kurzor (klávesová navigace) */
.mtx input.mtx-here{ box-shadow:0 0 0 3px var(--brand-tint); }

/* pravý prvek v hlavičce karty (počet dimenzí apod.) */
.adm-card-h-r{ flex:none; font-family:var(--f-m); font-size:11px; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-3); background:var(--tint); border-radius:var(--r-sm); padding:4px 9px; }

/* ============================================================
   ADMIN — hustá tabulka produktů (.ptab) + řádkové „•••" menu
   Priorita č. 4. Staví na .table; nepřepisuje jiné tabulky.
   ============================================================ */
:root{ --topbar-h:59px; }

/* .ptab: zebra, sticky hlavička, sevřenější řádky, NEklipuje (kvůli popup menu) */
.table.ptab{ overflow:visible; }                 /* aby „•••" popup nebyl oříznutý */
.ptab thead th{ position:sticky; top:var(--topbar-h); z-index:5; box-shadow:0 1px 0 var(--line-2); }
.ptab tbody tr:nth-child(even){ background:var(--surface); }
.ptab tbody tr:hover{ background:var(--brand-tint); }
.ptab th, .ptab td{ padding:9px 14px; vertical-align:middle; }
.ptab td.mono{ color:var(--ink-2); }

/* produktová buňka: thumb + jméno + štítky vedle sebe */
.ptab-prod{ }
.ptab-prod .pthumb, .ptab-prod .pthumb-empty{ vertical-align:top; }
.ptab-prodn{ display:inline-block; vertical-align:middle; }
.ptab .tags{ margin-top:4px; }

/* štítky „chybí nastavení" — jemný badge s tečkou */
.flag-warn, .flag-info{ display:inline-flex; align-items:center; gap:5px; }
.flag-warn::before, .flag-info::before{ content:''; width:5px; height:5px; border-radius:50%; background:currentColor; opacity:.7; }

/* akční buňka: úzká, akce vpravo */
.ptab-actcell{ white-space:nowrap; text-align:right; }
.rowacts{ display:inline-flex; gap:6px; align-items:center; justify-content:flex-end; }
.rowacts .btn-s{ font-size:12px; padding:6px 12px; }

/* „•••" overflow menu — nativní <details> (CSP-safe, bez JS) */
.rowmenu{ position:relative; display:inline-block; }
.rowmenu > summary{ list-style:none; cursor:pointer; }
.rowmenu > summary::-webkit-details-marker{ display:none; }
.rowmenu-btn{ display:inline-grid; place-items:center; width:32px; height:32px; border-radius:var(--r-sm);
  border:1px solid var(--line-2); background:var(--card); color:var(--ink-2); font-weight:700; letter-spacing:1px; }
.rowmenu-btn:hover{ background:var(--tint); color:var(--ink-1); }
.rowmenu[open] > summary .rowmenu-btn, .rowmenu[open] .rowmenu-btn{ background:var(--brand); color:#fff; border-color:var(--brand); }
.rowmenu-pop{ position:absolute; right:0; top:calc(100% + 5px); z-index:30; min-width:194px;
  background:var(--card); border:1px solid var(--line-2); border-radius:var(--r-md); box-shadow:var(--sh-lg);
  padding:5px; display:flex; flex-direction:column; }
.rowmenu-f{ margin:0; display:block; }
.rowmenu-i{ display:block; width:100%; text-align:left; padding:8px 12px; border-radius:var(--r-sm);
  font-size:13px; font-weight:600; color:var(--ink-1); background:transparent; border:0; cursor:pointer; }
.rowmenu-i:hover{ background:var(--tint); text-decoration:none; }
.rowmenu-i--danger{ color:var(--bad); }
.rowmenu-i--danger:hover{ background:var(--bad-tint); }

/* elegantnější filtrační lišta — karta místo holých polí */
.prod-filter{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--sh-sm); padding:12px 14px; margin:14px 0 8px; }
.prod-filter .pf-search{ flex:1 1 240px; }
.prod-filter input, .prod-filter select{ background:var(--surface); }
.prod-filter input:focus, .prod-filter select:focus{ outline:0; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-tint); }
.prod-filter .btn-p{ padding:9px 16px; font-size:14px; }
.pf-count{ color:var(--ink-3); }

/* bulk lišta vedle filtru — kompaktní */
.bulk-bar{ padding:2px 2px 6px; }

@media print{ .rowmenu-pop{ display:none !important; } .ptab thead th{ position:static; } }

/* ============================================================
   PRODEJNÍ FRONTEND — košík · platba · směna · prodeje (priorita #5)
   Dotyková stanice: vzdušné, velké klikací plochy, CZK hlavní.
   Staví na stávajících .cart-/.pay-/.dash-/.ps-/.rail- třídách.
   ============================================================ */

/* náhrada inline style v payment.php (CSP) */
.h3-opt{ font-weight:400; font-size:13px; color:var(--ink-3); }

/* doplnění chybějících tříd pro shift.php */
.dash-browse{ min-width:0; }
.dash-bonusbox{ display:flex; flex-direction:column; gap:10px; margin:14px 0 4px; padding:16px 18px;
  background:linear-gradient(180deg,#fff,var(--gold-tint)); border:1px solid var(--line-3);
  border-left:4px solid var(--gold); border-radius:var(--r-lg); box-shadow:var(--sh-sm); }
.dash-bonusbox .bld-opt{ display:flex; align-items:center; gap:10px; font-size:15px; }
.dash-bonusbox .bld-opt input{ width:20px; height:20px; accent-color:var(--brand); flex:none; }
.dash-bonusbox .pdx-cta2{ align-self:flex-start; width:auto; padding:12px 22px; }
.dash-bonusbox.done{ background:var(--ok-tint); border-color:#bcd29c; border-left-color:var(--ok);
  flex-direction:row; align-items:center; gap:8px; font-size:15px; color:#38501f; }
.dash-bonusbox.done b{ color:#38501f; }

/* PLATBA — zvýraznění kroku „zadej PIN" (gate na vystavení voucheru) */
.pay-pin{ margin:16px 0 10px; padding:16px; border:1.5px solid var(--brand); border-radius:var(--r-lg);
  background:var(--brand-tint); display:flex; flex-direction:column; gap:8px; position:relative; }
.pay-pin::before{ content:'PIN'; position:absolute; top:-9px; left:14px; background:var(--brand); color:#fff;
  font-family:var(--f-m); font-size:10px; font-weight:700; letter-spacing:.1em; padding:2px 9px; border-radius:30px; }
.pay-pin-l{ font-size:13px; color:var(--brand-2); font-weight:700; text-transform:none; letter-spacing:0; }
.pay-pin-input{ padding:14px 16px; border:1px solid var(--line-2); border-radius:var(--r-md); font-size:24px;
  letter-spacing:10px; text-align:center; background:#fff; font-family:var(--f-m); }
.pay-pin-input:focus{ outline:0; border-color:var(--brand); box-shadow:0 0 0 3px rgba(122,31,46,.18); }
.pay-pin-note{ font-size:12px; color:var(--ink-3); }
.pay-confirm{ font-size:17px; padding:16px; }            /* velké dokončovací tlačítko */

/* KOŠÍK — dotykový akční pruh (scoped, neovlivní .savebar v matici) */
.savebar.cart-actions{ position:static; gap:12px; flex-wrap:wrap; padding-top:18px; }
.savebar.cart-actions .btn-p{ font-size:17px; padding:15px 26px; }
.savebar.cart-actions .btn-s{ font-size:15px; padding:14px 22px; }
.cart-sum{ border-top:2px solid var(--line); margin-top:6px; }

/* PRODEJE — čitelný seznam: hlavička + zebra + dotykové řádky */
.ps-head-row{ display:flex; align-items:center; gap:14px; padding:9px 6px; border-bottom:1px solid var(--line-2);
  font-family:var(--f-m); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-4); font-weight:700; }
.ps-head-row .ps-row-v{ min-width:150px; } .ps-head-row .ps-row-c{ flex:1; }
.ps-head-row .ps-row-d{ min-width:120px; } .ps-head-row .ps-row-t{ min-width:90px; text-align:right; }
.ps-head-row .ps-row-pm{ min-width:84px; }
.ps-row{ padding:13px 6px; }
.ps-row:nth-child(even){ background:var(--surface); }
.ps-row-pm{ min-width:84px; font-size:13px; color:var(--ink-3); }
.ps-search .ps-in{ padding:13px 14px; font-size:15px; }

/* Admin → Stav systému */
.sys-intro{ margin:-4px 0 14px; }
.sys-table td{ vertical-align:top; }
.sys-table tr.sys-sec td{ padding-top:18px; font-family:var(--f-d); font-size:15px; color:var(--ink-1); font-weight:600; border-bottom:2px solid var(--line-2); }
.sys-table td:first-child{ width:230px; color:var(--ink-2); }
.sys-table td:nth-child(2){ width:140px; white-space:nowrap; }
.sys-table code{ font-family:var(--f-m); font-size:12px; background:var(--tint); padding:1px 5px; border-radius:4px; }
.chip-warn{ background:var(--warn-tint, #F6E8CF); color:var(--warn, #8A5A12); }
.sys-runbook{ margin-top:22px; }
.sys-runbook .checklist li{ margin:6px 0; }

/* Admini → menu „Spravovat": mini-formulář pro změnu hesla + poznámka */
.rowmenu-pw{ display:flex; flex-direction:column; gap:5px; padding:7px 12px; border-top:1px solid var(--line-2); }
.rowmenu-pw input{ width:100%; font-size:13px; padding:5px 8px; }
.rowmenu-note{ padding:7px 12px; color:var(--ink-4); font-size:12px; border-top:1px solid var(--line-2); }

/* Reporty — řádek součtu agenturního výpisu */
.table tfoot .rep-total td{ font-weight:700; border-top:2px solid var(--line-2); background:var(--tint); }

/* Dashboard — počasí v Praze (3 dny) */
.rail.wx .wx-row{ display:flex; gap:6px; padding:10px 12px 12px; }
.wx-day{ flex:1; text-align:center; background:var(--tint); border-radius:var(--r-sm); padding:8px 4px 7px; }
.wx-dname{ font-size:11px; color:var(--ink-3); font-weight:700; text-transform:uppercase; letter-spacing:.03em; }
.wx-ic{ color:var(--brand); display:flex; justify-content:center; margin:3px 0 1px; }
.wx-t{ font-size:14px; }
.wx-t b{ color:var(--ink-1); }
.wx-tmin{ color:var(--ink-4); }
.wx-rain{ font-size:11px; color:var(--gold); font-weight:700; margin-top:1px; }
/* Dashboard — leaderboard prodejců (medaile TOP 3) */
.lb-rank{ font-weight:700; }
.lb-rank--1{ background:var(--gold); color:#fff; }
.lb-rank--2{ background:#9AA1A9; color:#fff; }
.lb-rank--3{ background:#C08552; color:#fff; }

/* Atributy produktu — pás čipů (hero / detail) */
.attr-strip{ display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
.attr-chip{ display:inline-flex; align-items:center; gap:5px; padding:4px 9px 4px 7px; background:var(--tint); border:1px solid var(--line-2); border-radius:999px; font-size:12.5px; color:var(--ink-2); }
.attr-chip .attr-svg{ color:var(--ink-3); }
.attr-chip--inc{ background:var(--gold-tint, #F6ECD6); border-color:var(--gold); color:#7A5A16; }
.attr-chip--inc .attr-svg{ color:var(--gold); }
/* Atributy — kompaktní ikony na kartě katalogu */
.attr-icons{ display:flex; align-items:center; gap:5px; margin:4px 0 2px; color:var(--ink-3); }
.attr-i{ display:inline-flex; }
.attr-more{ font-size:11px; font-weight:700; color:var(--ink-4); }
/* Atributy — přepínače v editoru */
.attr-checks{ display:flex; flex-wrap:wrap; gap:6px 10px; align-items:center; }
.attr-grp{ width:100%; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-4); margin-top:8px; }
.attr-opt{ display:inline-flex; align-items:center; gap:5px; font-size:13px; color:var(--ink-2); }
.attr-opt .attr-svg{ color:var(--ink-3); }

/* Atributy — filtr katalogu (čipy) */
.attr-filter{ display:flex; flex-wrap:wrap; gap:6px; margin:2px 0 14px; }
.attr-fchip{ display:inline-flex; align-items:center; gap:5px; padding:5px 11px 5px 8px; background:var(--surface); border:1px solid var(--line-2); border-radius:999px; font-size:12.5px; color:var(--ink-2); text-decoration:none; }
.attr-fchip .attr-svg{ color:var(--ink-3); }
.attr-fchip:hover{ border-color:var(--brand); color:var(--brand); }
.attr-fchip:hover .attr-svg{ color:var(--brand); }
.attr-fchip--on{ background:var(--brand); border-color:var(--brand); color:#fff; }
.attr-fchip--on .attr-svg{ color:#fff; }
/* qsell — drobné ikony atributů v meta řádku */
.qsell-m .attr-icons{ margin:0 0 0 auto; }
.qsell-m .attr-i{ color:var(--ink-4); }

/* Připomínka rezervací — řádek s rychlým odfajknutím */
.rmd-row{ justify-content:space-between; }
.rmd-row:hover{ text-decoration:none; }
.rmd-link{ flex:1; min-width:0; color:var(--ink-1); text-decoration:none; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rmd-link:hover{ text-decoration:underline; }
.rmd-done-f{ flex:none; margin:0; }
.rmd-done{ flex:none; cursor:pointer; font-size:12px; font-weight:600; color:var(--ok,#2F7D32); background:var(--ok-tint,#E6F2E6); border:1px solid var(--ok,#2F7D32); border-radius:999px; padding:3px 10px; white-space:nowrap; }
.rmd-done:hover{ background:var(--ok,#2F7D32); color:#fff; }

/* WhatsApp tlačítko (po prodeji) */
.btn-wa{ display:inline-flex; align-items:center; gap:7px; background:#25D366; color:#fff; border:1px solid #1DA851; border-radius:var(--r-md,10px); padding:9px 16px; font-weight:600; text-decoration:none; }
.btn-wa:hover{ background:#1DA851; }
.btn-wa-ic{ color:#fff; }
.success-hint{ margin-left:auto; font-size:13px; color:var(--ink-3); max-width:340px; }

/* legenda řad pod sektorem v cenové matici */
.pdx-zone small{ display:block; font-weight:400; margin-top:2px; }

/* přepínač jazyka CS/EN */
.lang-switch{ display:inline-flex; gap:2px; border:1px solid var(--line,#ddd); border-radius:999px; overflow:hidden; }
.lang-opt{ padding:4px 9px; font-size:12px; font-weight:600; color:var(--ink-3,#777); text-decoration:none; line-height:1; }
.lang-opt--on{ background:var(--brand,#7A1F2E); color:#fff; }
.login-lang{ position:absolute; top:14px; right:14px; }

/* ============================================================
   FIX — cenový matrix (product.php) přetékal pod nákupní panel
   ------------------------------------------------------------
   Příčina: v každé buňce byla CENA + STEPPER vedle sebe
   (.pdx-matrix td .qrow{grid-template-columns:1fr auto}). Při 3+
   sloupcích typů návštěvníků byla tabulka širší než .pdx-maincol
   (vedle je 330px sticky nákupní panel) → poslední „+" se ořízl
   o hranu .pdx-matrixWrap.
   Řešení (CSP-safe, jen vzhled): v buňce dát CENU NAD STEPPER →
   sloupce se zúží ~2× a 3–4 typy se pohodlně vejdou; horizontální
   scroll zůstává jako pojistka pro extrémně mnoho sloupců.
   Vlož na KONEC app.css (scoped pod .pdx-matrix; nic nepřepisuje jinde).
   ============================================================ */
.pdx-matrix{ min-width:0; }                                   /* ať se tabulka smrští do maincol */
.pdx-matrixWrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
.pdx-matrix th{ text-align:center; }                          /* hlavičky typů na střed nad sloupci */
.pdx-matrix th:first-child{ text-align:left; }                /* ZÓNA zůstává vlevo */
.pdx-matrix td{ text-align:center; }
.pdx-matrix .pdx-zone{ text-align:left; }
.pdx-matrix td .qrow{ grid-template-columns:1fr; justify-items:center; gap:6px; }  /* cena NAD stepper */
.pdx-matrix td .pdx-cellPrice{ font-size:13px; line-height:1.15; }

/* ── Náhrada za inline style= v admin/schedules.php (CSP-safe) ── */
.field--grow{ flex:1; }                          /* pole roste ve flex řádku .row-form */
.sched-h1-sub{ font-size:14px; font-weight:400; } /* odlehčený podnadpis v <h1> Rozvrhy */

/* dashboard — Prodáš hned (kontingent / sell now) */
.dash-instant{ border:1px solid #bcd29c; border-radius:var(--r-lg); background:var(--ok-tint); overflow:hidden; box-shadow:var(--sh-sm); margin-top:18px; }
.dash-instant-h{ display:flex; align-items:center; gap:9px; padding:12px 16px; border-bottom:1px solid #cdddb4; }
.dash-instant-h .di-ic{ color:var(--ok); display:flex; flex:none; }
.dash-instant-h-tt{ display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.dash-instant-h-t{ font-weight:700; font-size:14px; color:#38501f; }
.dash-instant-h-s{ font-size:12px; color:#5c7345; font-weight:500; }
.di-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:10px; padding:14px 16px; }
.di-card{ display:flex; flex-direction:column; gap:3px; background:var(--card); border:1px solid #cdddb4; border-radius:var(--r-md); padding:10px 12px; text-decoration:none; transition:border-color .12s, box-shadow .12s, transform .12s; }
.di-card:hover{ border-color:var(--ok); box-shadow:var(--sh-sm); transform:translateY(-1px); }
.di-name{ font-weight:700; font-size:13px; color:var(--ink-1); line-height:1.25; }
.di-ag{ font-size:11.5px; color:var(--ink-3); }
.di-foot{ display:flex; align-items:center; justify-content:space-between; margin-top:3px; gap:6px; }
.di-price{ font-weight:700; font-size:12.5px; color:#38501f; white-space:nowrap; }
.di-price.noprice{ font-weight:600; color:var(--ink-3); font-size:11.5px; }
.di-price small{ display:block; font-weight:600; color:#5c7345; font-size:10.5px; }
.di-go{ color:var(--ok); display:flex; flex:none; }

/* success akční lišta — jednotná velikost tlačítek (overlay 162) */
.savebar.success-actions{ flex-wrap:wrap; align-items:stretch; }
.savebar.success-actions .btn-p,
.savebar.success-actions .btn-s,
.savebar.success-actions .btn-wa,
.savebar.success-actions button{
  font-size:14px; font-weight:600; padding:12px 18px; min-height:46px; box-sizing:border-box;
  display:inline-flex; align-items:center; justify-content:center; gap:8px; line-height:1; cursor:pointer;
}

/* ===== overlay 163 — UX expert: doladění success lišty (merge-protect na aktuální app.css) ===== */
/* ============================================================
   success.php — UX doladění akční lišty + stavové hlášky (nad PTI-162)
   Scoped pod .success-wrap / .success-actions. NEMĚNÍ prvky, akce, data
   ani třídy tlačítek — jen layout, seskupení a vzhled hlášky. CSP-safe.
   Vlož na KONEC app.css.
   ============================================================ */
/* akční lišta v toku (ne sticky), vzdušná, s mezerou mezi zalomenými řádky */
.savebar.success-actions{ position:static; bottom:auto; border-top:1px solid var(--line);
  margin-top:14px; padding:16px 0 0; gap:10px; row-gap:10px; justify-content:flex-start; }

/* logické seskupení BEZ změny DOM: „doručení" vlevo · navigace vpravo
   (attribute selektor na „Správa prodeje" odsadí pravou skupinu; robustní
   i když se „Poslat agentuře" nezobrazí) */
.success-actions a[href^="/sales.php"]{ margin-left:auto; }

/* drž uniformní velikosti z 162, ať řada nezubatí */
.success-actions .btn-p,
.success-actions .btn-wa,
.success-actions .btn-s{ flex:0 1 auto; }

/* „Nový prodej" = hlavní další krok prodejce → decentní zvýraznění (zůstává odkaz/btn-s) */
.success-actions a[href="/"]{ border-color:var(--brand); color:var(--brand); font-weight:700; }
.success-actions a[href="/"]:hover{ background:var(--brand-tint); color:var(--brand); }

/* e-mail pole těsněji k doručovacím tlačítkům (čte se jako „zadej → pošli") */
.success-wrap form .field{ margin-bottom:10px; }

/* stavová hláška jako čistý pill s ikonou (scoped — .inline-note jinde nedotčen) */
.success-wrap .inline-note.ok,
.success-wrap .inline-note.err{ display:flex; align-items:center; gap:9px;
  font-size:14px; font-weight:600; padding:12px 16px; border-radius:var(--r-md); margin:0 0 14px; }
.success-wrap .inline-note.ok::before{ content:'\2713'; font-weight:800; font-size:15px; }
.success-wrap .inline-note.err::before{ content:'!'; flex:none; width:18px; height:18px;
  border-radius:50%; background:#c0392b; color:#fff; display:inline-flex; align-items:center;
  justify-content:center; font-size:12px; font-weight:800; }

/* ============================================================================
   KLIENTSKÝ KATALOG (catalog.php) — redesign 165.
   Veřejný kiosk, „native iPad / retina app" pocit. Optimalizace na svislý tablet,
   plná responzivita (telefon → tablet → desktop/landscape). Vše tokenizované,
   prefix .kat- (.cat-/.attr- jsou cizí). Bez inline stylu (CSP). Hover jen pro myš.
   ========================================================================== */

/* ---- shell + frosted lišta ---- */
.kat-bar{ position:sticky; top:0; z-index:50; display:flex; align-items:center; gap:12px;
  padding:11px 20px; border-bottom:1px solid var(--line);
  background:rgba(251,248,241,.82); -webkit-backdrop-filter:saturate(180%) blur(14px);
  backdrop-filter:saturate(180%) blur(14px); }
.kat-brand{ display:inline-flex; align-items:baseline; gap:9px; text-decoration:none; flex:none;
  -webkit-tap-highlight-color:transparent; }
.kat-brand-mark{ font-family:var(--f-d); font-weight:600; font-size:23px; color:var(--brand); letter-spacing:.4px; }
.kat-brand-t{ font-family:var(--f-u); font-weight:600; font-size:14px; color:var(--ink-3); }
.kat-bar-sp{ flex:1 1 auto; }
.kat-bar-home{ flex:none; font-family:var(--f-u); font-weight:600; font-size:14px; text-decoration:none;
  color:var(--brand); padding:0 16px; min-height:48px; display:inline-flex; align-items:center;
  border:1px solid var(--line-2); border-radius:999px; background:var(--card);
  -webkit-tap-highlight-color:transparent; transition:background .18s, border-color .18s; }
.kat-bar .lang-switch{ flex:none; }

.kat-wrap{ max-width:1040px; margin:0 auto; padding:24px 22px 72px; font-family:var(--f-u); color:var(--ink-1); }

/* ---- vyhledávání v liště (na všech stránkách) ---- */
.kat-search{ position:relative; flex:1 1 auto; max-width:560px; min-width:0; }
.kat-search-ic{ position:absolute; left:16px; top:50%; transform:translateY(-50%); color:var(--ink-4); pointer-events:none; }
.kat-search-input{ width:100%; box-sizing:border-box; height:48px; padding:0 18px 0 44px;
  font-family:var(--f-u); font-size:16px; color:var(--ink-1); background:var(--card);
  border:1.5px solid var(--line-2); border-radius:999px; box-shadow:var(--sh-sm);
  -webkit-appearance:none; appearance:none; transition:border-color .18s, box-shadow .18s; }
.kat-search-input::placeholder{ color:var(--ink-4); }
.kat-search-input:focus{ outline:none; border-color:var(--brand); box-shadow:0 0 0 4px var(--brand-tint); }
.kat-search-pop{ position:absolute; left:0; right:0; top:calc(100% + 10px); z-index:60;
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--sh-lg); max-height:66vh; overflow-y:auto; -webkit-overflow-scrolling:touch;
  overflow:hidden auto; }
.kat-sr-list{ display:flex; flex-direction:column; }
.kat-sr-row{ display:flex; align-items:center; gap:14px; padding:15px 18px; text-decoration:none;
  color:inherit; border-bottom:1px solid var(--line); -webkit-tap-highlight-color:transparent; }
.kat-sr-row:last-child{ border-bottom:0; }
.kat-sr-row.hi, .kat-sr-row:active{ background:var(--brand-tint); }
.kat-sr-mn{ flex:1 1 auto; min-width:0; }
.kat-sr-name{ font-family:var(--f-d); font-weight:500; font-size:18px; color:var(--brand-2); line-height:1.2; }
.kat-sr-name mark{ background:var(--gold-tint); color:inherit; border-radius:3px; padding:0 1px; }
.kat-sr-meta{ display:flex; align-items:center; gap:7px; margin-top:3px; font-size:14px; color:var(--ink-3); }
.kat-sr-ag{ font-weight:700; letter-spacing:.3px; text-transform:uppercase; font-size:12px; color:var(--ink-3); }
.kat-sr-sep{ color:var(--ink-5); }
.kat-sr-price{ flex:none; font-family:var(--f-m); font-weight:700; font-size:15px; color:var(--brand-2); white-space:nowrap; }
.kat-sr-from{ font-family:var(--f-u); font-weight:500; font-size:13px; color:var(--ink-3); }
.kat-sr-empty{ padding:22px 18px; text-align:center; font-size:16px; color:var(--ink-3); }

/* ---- breadcrumb ---- */
.kat-crumbs{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:6px 0 16px; font-size:14px; color:var(--ink-3); }
.kat-crumb{ color:var(--brand); text-decoration:none; padding:8px 4px; min-height:40px; display:inline-flex; align-items:center;
  -webkit-tap-highlight-color:transparent; }
.kat-crumb[aria-current]{ color:var(--ink-3); }
.kat-crumb-sep{ color:var(--ink-5); }

/* ---- domů: nadpis + dlaždice kategorií ---- */
.kat-hometop{ margin:10px 0 26px; }
.kat-h1{ font-family:var(--f-d); font-weight:400; font-size:44px; line-height:1.08; margin:0 0 8px; color:var(--brand-2);
  letter-spacing:-.01em; }
.kat-lead{ font-size:18px; line-height:1.55; color:var(--ink-3); margin:0; max-width:54ch; }
.kat-catgrid{ display:grid; grid-template-columns:repeat(2,1fr); gap:18px; }
.kat-cat{ display:flex; flex-direction:column; gap:12px; padding:26px 24px; min-height:178px;
  border-radius:var(--r-lg); text-decoration:none; border:1px solid var(--line); box-shadow:var(--sh-sm);
  background:linear-gradient(155deg, var(--acc-bg,#F0EADC), var(--card) 78%);
  -webkit-tap-highlight-color:transparent; transition:transform .18s cubic-bezier(.2,.7,.2,1), box-shadow .18s; }
.kat-cat:active{ transform:scale(.98); }
.kat-cat-ic{ display:inline-flex; width:56px; height:56px; align-items:center; justify-content:center;
  border-radius:var(--r-md); background:var(--card); color:var(--acc,var(--brand)); box-shadow:var(--sh-sm); }
.kat-cat-name{ font-family:var(--f-d); font-weight:500; font-size:25px; line-height:1.12; color:var(--acc,var(--brand)); margin-top:auto; }
.kat-cat-n{ font-size:14px; font-weight:600; color:var(--ink-3); }

/* ---- mřížka produktů v kategorii ---- */
.kat-cat-title{ font-family:var(--f-d); font-weight:400; font-size:34px; margin:2px 0 20px; color:var(--brand-2); }
.kat-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:18px; }
.kat-tile{ display:flex; flex-direction:column; border-radius:var(--r-lg); overflow:hidden;
  background:var(--card); border:1px solid var(--line); box-shadow:var(--sh-sm); text-decoration:none; color:inherit;
  -webkit-tap-highlight-color:transparent; transition:transform .18s cubic-bezier(.2,.7,.2,1), box-shadow .18s; }
.kat-tile:active{ transform:scale(.99); }
.kat-tile-ph{ aspect-ratio:4/3; background:var(--tint); overflow:hidden; }
.kat-tile-img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s cubic-bezier(.2,.7,.2,1); }
.kat-tile-ph--noimg{ display:flex; align-items:center; justify-content:center;
  background:linear-gradient(150deg, var(--brand-tint), var(--tint)); }
.kat-tile-ph--noimg span{ font-family:var(--f-d); font-size:56px; color:var(--brand); opacity:.5; }
.kat-tile-body{ display:flex; flex-direction:column; gap:7px; padding:16px 16px 18px; flex:1 1 auto; }
.kat-tile-ag{ font-size:12px; font-weight:700; letter-spacing:.3px; text-transform:uppercase; color:var(--ink-3); }
.kat-tile-name{ font-family:var(--f-d); font-weight:500; font-size:22px; line-height:1.16; color:var(--brand-2); }
.kat-tile-foot{ margin-top:auto; padding-top:6px; display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.kat-tile-from{ font-size:13px; color:var(--ink-3); }

/* ---- detail ---- */
.kat-detail{ display:block; }
.kat-hero{ position:relative; border-radius:var(--r-lg); overflow:hidden; aspect-ratio:16/9; max-height:42vh;
  background:var(--tint); box-shadow:var(--sh-md); margin-bottom:18px; }
.kat-hero-img{ width:100%; height:100%; object-fit:cover; display:block; }
.kat-hero::after{ content:''; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(180deg, transparent 58%, rgba(20,12,8,.26)); }
.kat-hero--noimg{ display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg, var(--brand) 0%, var(--brand-2) 60%, #3c0e18 100%); }
.kat-hero--noimg::after{ display:none; }
.kat-hero-init{ font-family:var(--f-d); font-size:120px; color:#fff; opacity:.85; }
.kat-d-head{ margin-bottom:14px; }
.kat-d-ag{ font-size:13px; font-weight:700; letter-spacing:.4px; text-transform:uppercase; color:var(--ink-3); margin-bottom:5px; }
.kat-d-title{ font-family:var(--f-d); font-weight:500; font-size:34px; line-height:1.08; margin:0 0 5px; color:var(--brand-2);
  letter-spacing:-.01em; }
.kat-d-sub{ font-size:17px; color:var(--ink-3); margin-bottom:10px; }

.kat-pricelead{ display:flex; align-items:baseline; flex-wrap:wrap; gap:10px; margin:0 0 18px; padding:13px 18px;
  background:var(--brand-tint); border:1px solid #E7C9CE; border-radius:var(--r-md); }
.kat-pricelead .l{ font-size:13px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--brand-2); }
.kat-pricelead b{ font-family:var(--f-d); font-size:27px; font-weight:600; color:var(--brand-2); }
.kat-pricelead .eur{ font-family:var(--f-m); font-size:14px; color:var(--ink-3); }

.kat-facts{ display:flex; flex-wrap:wrap; gap:10px; margin:0 0 20px; }
.kat-fact{ display:flex; flex-direction:column; gap:2px; padding:10px 16px; min-height:48px; justify-content:center;
  background:var(--tint); border-radius:var(--r-md); border:1px solid var(--line); }
.kat-fact span{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:var(--ink-3); }
.kat-fact b{ font-size:16px; color:var(--ink-1); }

.kat-d-cols{ display:flex; flex-direction:column; gap:16px; }
.kat-d-main{ display:flex; flex-direction:column; gap:16px; min-width:0; }
.kat-card{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); padding:20px 22px; box-shadow:var(--sh-sm); }
.kat-card h2{ font-family:var(--f-d); font-weight:500; font-size:21px; margin:0 0 12px; color:var(--brand-2); }
.kat-prose{ font-size:17px; line-height:1.62; color:var(--ink-2); margin:0; }
.kat-list{ margin:0; padding-left:20px; font-size:16px; line-height:1.55; color:var(--ink-2); }
.kat-list li{ margin:3px 0; }

/* ceník (read-only) */
.kat-prices{ display:flex; flex-direction:column; gap:14px; }
.kat-px{ font-family:var(--f-m); white-space:nowrap; text-align:right; }
.kat-px b{ font-size:17px; color:var(--brand-2); }
.kat-eur{ font-family:var(--f-m); font-size:12.5px; color:var(--ink-4); margin-left:6px; }
.kat-px--ask{ font-family:var(--f-u); font-size:15px; color:var(--ink-3); font-style:italic; }
.kat-px-solo{ font-size:20px; }
.kat-px-solo .kat-px b{ font-size:29px; }
.kat-from{ font-family:var(--f-u); font-size:14px; color:var(--ink-3); }
.kat-plist{ display:flex; flex-direction:column; }
.kat-prow{ display:flex; align-items:baseline; gap:14px; padding:12px 2px; border-bottom:1px solid var(--line); }
.kat-prow:last-child{ border-bottom:0; }
.kat-prow-l{ font-size:16px; color:var(--ink-2); flex:1 1 auto; min-width:0; }
.kat-prow-l small{ display:block; font-size:12.5px; color:var(--ink-3); }

.kat-mxwrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
.kat-matrix{ border-collapse:collapse; width:100%; font-size:15px; }
.kat-matrix th, .kat-matrix td{ border:1px solid var(--line); padding:11px 12px; }
.kat-matrix thead th{ background:var(--tint); color:var(--ink-2); font-weight:700; text-align:right; }
.kat-matrix thead th:first-child{ text-align:left; }
.kat-mx-corner{ background:transparent !important; border:0 !important; }
.kat-mx-row{ text-align:left !important; background:var(--surface); font-weight:600; color:var(--ink-1); }
.kat-mx-row small{ display:block; font-size:12px; font-weight:400; color:var(--ink-4); }
.kat-mxprice{ text-align:right; font-family:var(--f-m); }
.kat-mxprice b{ color:var(--brand-2); }
.kat-matrix tbody tr:nth-child(even) td:not(.kat-mx-row){ background:#FCFAF4; }
.kat-mx-off{ color:var(--ink-5); text-align:right; }

.kat-pgroup{ margin:4px 0 10px; }
.kat-pgroup-h{ font-weight:700; font-size:16px; color:var(--ink-3); margin:0 0 6px; }
.kat-pgroup-h small{ font-weight:400; color:var(--ink-4); }

/* varianta (jediná) */
.kat-vblock{ border:1px solid var(--line-2); border-radius:var(--r-md); padding:16px 18px; background:var(--surface); }
.kat-vhead{ display:flex; align-items:center; flex-wrap:wrap; gap:6px; font-family:var(--f-d); font-weight:500;
  font-size:19px; color:var(--brand-2); margin-bottom:8px; }
.kat-vsep{ color:var(--ink-5); }
.kat-vds{ font-size:14.5px; color:var(--ink-3); margin:0 0 10px; line-height:1.5; }
.kat-feats{ display:flex; flex-direction:column; gap:4px; margin:0 0 10px; }
.kat-feat{ display:flex; align-items:center; gap:8px; font-size:14.5px; color:var(--ink-2); }
.kat-feat.off{ color:var(--ink-4); }
.kat-feat b{ margin-left:auto; }
.kat-fic{ font-weight:800; }
.kat-fic.ok{ color:var(--ok); }
.kat-fic.no{ color:var(--bad); }
.kat-vbadges{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px; }
.kat-vbadge{ font-size:12px; font-weight:700; padding:3px 9px; border-radius:999px; background:var(--gold-tint); color:#7A5A1F; }

/* hluboký ceník → akordeony (native <details>, bez JS) */
.kat-pacc{ border:1px solid var(--line-2); border-radius:var(--r-md); background:var(--card); margin-bottom:10px; overflow:hidden; }
.kat-pacc > summary{ list-style:none; cursor:pointer; display:flex; align-items:center; gap:12px;
  padding:14px 16px; min-height:56px; -webkit-tap-highlight-color:transparent; }
.kat-pacc > summary::-webkit-details-marker{ display:none; }
.kat-pacc-name{ font-family:var(--f-d); font-weight:500; font-size:18px; color:var(--brand-2); flex:1 1 auto; min-width:0;
  display:inline-flex; align-items:center; gap:6px; flex-wrap:wrap; }
.kat-pacc-from{ font-family:var(--f-m); font-size:14px; color:var(--ink-3); white-space:nowrap; }
.kat-pacc-from b{ color:var(--brand-2); font-size:16px; }
.kat-pacc-chev{ width:22px; height:22px; color:var(--ink-4); transition:transform .2s cubic-bezier(.2,.7,.2,1); flex:none; }
.kat-pacc[open] > summary{ border-bottom:1px solid var(--line); }
.kat-pacc[open] .kat-pacc-chev{ transform:rotate(180deg); }
.kat-pacc-body{ padding:8px 16px 14px; }

.kat-eurnote{ font-family:var(--f-u); font-size:12.5px; color:var(--ink-3); margin:14px 2px 0; }

/* jazyky výkladu / místo srazu / plán sezení */
.kat-flag{ border-radius:2px; vertical-align:-2px; box-shadow:0 0 0 1px rgba(0,0,0,.08); }
.kat-langs{ display:flex; flex-wrap:wrap; gap:10px; }
.kat-lang{ display:inline-flex; align-items:center; gap:7px; padding:9px 14px; min-height:44px; font-size:15px;
  font-weight:600; background:var(--tint); border:1px solid var(--line); border-radius:999px; }
.kat-meet-addr{ font-size:16px; font-weight:600; color:var(--ink-1); }
.kat-meet-note{ font-size:15px; color:var(--ink-3); line-height:1.55; margin-top:6px; }
.kat-map{ margin-top:14px; border-radius:var(--r-md); overflow:hidden; border:1px solid var(--line); }
.kat-map img{ display:block; width:100%; height:auto; }
.kat-seatmap{ background:var(--tint); border-radius:var(--r-md); padding:14px; text-align:center; }
.kat-seatmap img{ display:inline-block; max-width:100%; height:auto; max-height:540px; border-radius:var(--r-sm); }

/* highlighty (přehledové body) */
.kat-hl{ background:var(--brand-tint); border-color:var(--brand); }
.kat-hllist{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:9px; }
.kat-hllist li{ position:relative; padding-left:28px; font-size:16px; line-height:1.5; color:var(--ink-1); }
.kat-hllist li::before{ content:"✓"; position:absolute; left:2px; top:0; color:var(--brand); font-weight:800; }

/* galerie fotek (vodorovný pruh, scroll-snap, bez JS) */
.kat-gal{ display:flex; gap:12px; overflow-x:auto; padding-bottom:6px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; }
.kat-gal-img{ flex:0 0 auto; height:210px; width:auto; max-width:88%; object-fit:cover; border-radius:var(--r-md);
  border:1px solid var(--line); scroll-snap-align:start; }

/* svoz / vyzvednutí */
.kat-meet-pickup{ margin-top:10px; font-size:14.5px; font-weight:600; color:var(--brand-2);
  background:var(--brand-tint); border:1px solid var(--brand); border-radius:999px; padding:7px 13px; display:inline-block; }

/* admin: galerie produktu (náhledy + odebrání) */
.pgal-h{ font-family:var(--f-u); font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:.04em;
  color:var(--ink-3); margin:18px 0 8px; }
.pgal-grid{ display:flex; flex-wrap:wrap; gap:10px; margin:0 0 12px; }
.pgal-item{ display:flex; flex-direction:column; gap:5px; width:120px; cursor:pointer; }
.pgal-thumb{ width:120px; height:90px; object-fit:cover; border-radius:var(--r-sm); border:1px solid var(--line); }
.pgal-rm{ font-size:12px; color:var(--ink-3); display:flex; align-items:center; gap:5px; }

/* prodej (product.php): highlighty */
.pdx-hllist{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.pdx-hllist li{ position:relative; padding-left:26px; font-size:15px; line-height:1.5; color:var(--ink-1); }
.pdx-hllist li::before{ content:"✓"; position:absolute; left:0; top:0; color:var(--brand); font-weight:800; }

.kat-empty{ padding:52px 22px; text-align:center; font-size:17px; color:var(--ink-3);
  background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); }

/* ---- responzivita ---- */
@media (min-width:840px){
  .kat-d-cols{ flex-direction:row; align-items:flex-start; }
  .kat-d-side{ flex:0 0 360px; position:sticky; top:78px; }
}
@media (min-width:980px){
  .kat-catgrid{ grid-template-columns:repeat(3,1fr); }
  .kat-grid{ grid-template-columns:repeat(3,1fr); }
}
/* matice → karty na úzku (portrait kiosk / telefon): žádný vodorovný scroll */
@media (max-width:720px){
  .kat-matrix, .kat-matrix thead, .kat-matrix tbody, .kat-matrix tr, .kat-matrix th, .kat-matrix td{ display:block; }
  .kat-matrix thead{ display:none; }
  .kat-matrix tr{ border:1px solid var(--line-2); border-radius:var(--r-md); overflow:hidden; margin:0 0 12px; }
  .kat-matrix .kat-mx-row{ background:var(--tint); padding:11px 14px; }
  .kat-matrix td.kat-mxprice, .kat-matrix td.kat-mx-off{ display:flex; justify-content:space-between; align-items:baseline;
    gap:14px; border:0; border-top:1px solid var(--line); padding:12px 14px; text-align:right; }
  .kat-matrix td.kat-mxprice::before, .kat-matrix td.kat-mx-off::before{ content:attr(data-col); font-family:var(--f-u);
    color:var(--ink-3); font-weight:600; text-align:left; }
  .kat-matrix tbody tr:nth-child(even) td:not(.kat-mx-row){ background:transparent; }
  .kat-mxwrap{ overflow:visible; }
}
@media (max-width:560px){
  .kat-catgrid, .kat-grid{ grid-template-columns:1fr; }
  .kat-h1{ font-size:34px; }
  .kat-brand-t{ display:none; }
  .kat-wrap{ padding:18px 16px 64px; }
}

/* ---- hover JEN pro myš; na dotyku tap-feedback (:active) ---- */
@media (hover:hover) and (pointer:fine){
  .kat-bar-home:hover{ background:var(--brand-tint); border-color:var(--brand); }
  .kat-cat:hover{ transform:translateY(-3px); box-shadow:var(--sh-lg); }
  .kat-tile:hover{ transform:translateY(-3px); box-shadow:var(--sh-lg); }
  .kat-tile:hover .kat-tile-img{ transform:scale(1.06); }
  .kat-pacc > summary:hover{ background:var(--surface); }
  .kat-crumb:hover{ text-decoration:underline; }
  .kat-sr-row:hover{ background:var(--brand-tint); }
}

/* ---- jemné entrance animace (vypnuté při prefers-reduced-motion) ---- */
@media (prefers-reduced-motion: no-preference){
  .kat-detail, .kat-hometop, .kat-cat-title, .kat-crumbs{ animation:katFade .5s cubic-bezier(.2,.7,.2,1) both; }
  .kat-cat, .kat-tile{ animation:katRise .5s cubic-bezier(.2,.7,.2,1) both; }
  .kat-catgrid .kat-cat:nth-child(1), .kat-grid .kat-tile:nth-child(1){ animation-delay:.02s; }
  .kat-catgrid .kat-cat:nth-child(2), .kat-grid .kat-tile:nth-child(2){ animation-delay:.06s; }
  .kat-catgrid .kat-cat:nth-child(3), .kat-grid .kat-tile:nth-child(3){ animation-delay:.10s; }
  .kat-catgrid .kat-cat:nth-child(4), .kat-grid .kat-tile:nth-child(4){ animation-delay:.14s; }
  .kat-catgrid .kat-cat:nth-child(5), .kat-grid .kat-tile:nth-child(5){ animation-delay:.18s; }
  .kat-catgrid .kat-cat:nth-child(6), .kat-grid .kat-tile:nth-child(6){ animation-delay:.22s; }
  .kat-catgrid .kat-cat:nth-child(n+7), .kat-grid .kat-tile:nth-child(n+7){ animation-delay:.26s; }
}
@keyframes katFade{ from{ opacity:0; } to{ opacity:1; } }
@keyframes katRise{ from{ opacity:0; transform:translateY(12px); } to{ opacity:1; transform:none; } }

/* ===== přepínač motivu + TMAVÝ KATALOG (overlay 168) ===== */
.kat-theme{ display:inline-flex; align-items:center; justify-content:center; width:44px; height:44px; flex:0 0 auto;
  border:1px solid var(--line-2); border-radius:999px; background:var(--card); color:var(--ink-1); cursor:pointer; }
.kat-theme .kat-theme-sun{ display:none; }
.kat-theme .kat-theme-moon{ display:inline; }
[data-theme="dark"] .kat-theme .kat-theme-sun{ display:inline; }
[data-theme="dark"] .kat-theme .kat-theme-moon{ display:none; }

/* tmavá paleta: černé pozadí + béžový text + zlatá (nadpisy/ceny přes --brand-2) + burgundy akcenty */
[data-theme="dark"]{
  --surface:#0d0b0a; --card:#171210; --tint:#1f1815; --tint-2:#261d18;
  --ink-1:#efe6d6; --ink-2:#e3d8c5; --ink-3:#b9aa92; --ink-4:#8c8069; --ink-5:#5f574a;
  --line:rgba(237,229,210,.13); --line-2:rgba(237,229,210,.09); --line-3:rgba(237,229,210,.06);
  --brand:#a8324c; --brand-2:#d9b65a; --brand-tint:rgba(168,50,76,.20);
  --gold:#d9b65a; --gold-tint:rgba(217,182,90,.16);
  --sh-sm:0 1px 2px rgba(0,0,0,.5); --sh-md:0 8px 22px rgba(0,0,0,.55); --sh-lg:0 16px 44px rgba(0,0,0,.6);
}
[data-theme="dark"] body{ background:var(--surface); color:var(--ink-1); }
[data-theme="dark"] .kat-bar{ background:rgba(13,11,10,.85); border-bottom-color:var(--line); }
[data-theme="dark"] .kat-cat{ background:var(--card); }
[data-theme="dark"] .kat-matrix tbody tr:nth-child(even) td:not(.kat-mx-row){ background:rgba(255,255,255,.02); }
[data-theme="dark"] .kat-hero-init{ color:var(--gold); opacity:.55; }
[data-theme="dark"] .kat-hllist li::before{ color:var(--gold); }

/* admin: seznam připomínek (aktivace ceníku) */
.rem-list{ margin:8px 0 0; padding-left:18px; }
.rem-list li{ margin:4px 0; }

/* katalog detail: navigace na sousední produkt (swipe / šipky) */
.kat-nav{ position:fixed; top:50%; transform:translateY(-50%); z-index:60; width:52px; height:52px;
  display:flex; align-items:center; justify-content:center; border-radius:50%;
  background:var(--card); color:var(--brand); border:1px solid var(--line);
  box-shadow:var(--sh-md); text-decoration:none; opacity:.92; }
.kat-nav:hover{ opacity:1; }
.kat-nav--prev{ left:10px; }
.kat-nav--next{ right:10px; }
.kat-pager{ position:fixed; left:50%; bottom:14px; transform:translateX(-50%); z-index:60;
  font-family:var(--f-m); font-size:12px; color:var(--ink-2); background:var(--card);
  border:1px solid var(--line); border-radius:999px; padding:5px 13px; box-shadow:var(--sh-sm); }
@media (max-width:560px){ .kat-nav{ width:44px; height:44px; } }
[data-theme="dark"] .kat-nav{ color:var(--gold); }
/* follow-finger náznak: posuvný obal detailu */
.kat-detail-slide{ transition:transform .26s cubic-bezier(.22,.61,.36,1), opacity .26s ease; will-change:transform; }
.kat-detail-slide.kat-dragging{ transition:none; }
@media (prefers-reduced-motion:reduce){ .kat-detail-slide{ transition:none; } }
.inp-narrow{ width:90px; }
/* historie výplat bonusu (shift) */
.bpay-hist{ margin-top:10px; border-top:1px solid var(--line); padding-top:8px; }
.bpay-h{ font-family:var(--f-m); font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-3,#5b6b7a); margin-bottom:5px; }
.bpay-row{ display:flex; gap:8px; align-items:baseline; justify-content:space-between; font-size:13px; padding:2px 0; }
.bpay-row b{ font-variant-numeric:tabular-nums; }
/* admin Prodejci: ikony akcí + editační řádek */
.iconbtn{ background:none; border:1px solid var(--line); border-radius:7px; cursor:pointer; font-size:15px; line-height:1; padding:5px 8px; color:var(--ink-2,#444); }
.iconbtn:hover{ background:var(--surface); }
.iconbtn-danger{ color:#a3242f; border-color:#e4c4c7; }
.iconbtn-danger:hover{ background:#fbeced; }
.nowrap{ white-space:nowrap; }
.sed-row > td{ background:var(--surface,#faf7f1); }
.sed-form{ padding:6px 2px; }
.sed-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:10px; }
.sed-grid label{ display:flex; flex-direction:column; gap:3px; font-size:12px; color:var(--ink-3,#5b6b7a); }
.sed-grid input, .sed-grid select{ font-size:14px; padding:7px 9px; }
.sed-actions{ margin-top:10px; }
/* emoji jako ikona atributu (fallback místo SVG) */
.attr-emoji{ display:inline-flex; align-items:center; justify-content:center; width:1.15em; height:1.15em; line-height:1; font-size:1.05em; }
/* admin: výběr ikony z knihovny */
.iconpick{ display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; max-height:150px; overflow:auto; padding:8px; border:1px solid var(--line); border-radius:8px; background:var(--surface,#faf7f1); }
.iconpick label{ cursor:pointer; border:1.5px solid transparent; border-radius:8px; padding:6px; display:inline-flex; color:var(--ink-2,#333); }
.iconpick label:hover{ background:#fff; }
.iconpick input{ position:absolute; opacity:0; pointer-events:none; }
.iconpick input:checked + svg{ color:var(--brand,#7A1F2E); }
.iconpick label:has(input:checked){ border-color:var(--brand,#7A1F2E); background:#fff; }
.attr-adm-icon{ display:inline-flex; width:26px; justify-content:center; color:var(--ink-2,#333); }
.sed-iconwrap{ margin-top:10px; }
.sed-iconwrap > .muted{ font-size:12px; }

/* --- brand mark = SVG odznak (overlay 193) ---
   Marky jsou nově <img> s vlastním zaobleným pozadím v SVG; potlač box z původních
   .* pravidel (maroon pozadí by vyplnilo průhledné rohy). Specificita img.* > .* */
img.logo-mark, img.adm-side-mark, img.login-mark, img.kat-brand-mark{
  background: none; border: 0; padding: 0; object-fit: contain;
  display: inline-block; vertical-align: middle;
}
img.kat-brand-mark{ width: 32px; height: 32px; }

/* ===== Admin dashboard (overlay 194) ===== */
.mt-8{ margin-top:8px; }
.dash-period{ display:inline-flex; gap:2px; background:var(--surface); border:1px solid var(--line); border-radius:999px; padding:3px; margin:10px 0 16px; }
.dash-period a{ font-family:var(--f-m); font-size:12px; letter-spacing:.04em; padding:6px 15px; border-radius:999px; color:var(--ink-3); text-decoration:none; }
.dash-period a.on{ background:var(--brand); color:#fff; }
.dash-kpis{ display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:14px; margin-bottom:16px; }
.dash-kpi{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); padding:16px 18px; }
.dash-kpi .k-n{ font-family:var(--f-d); font-size:26px; font-weight:350; color:var(--brand); line-height:1.05; }
.dash-kpi .k-l{ font-family:var(--f-m); font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-3); margin-top:8px; }
.dash-kpi .k-sub{ font-size:11px; color:var(--ink-4); margin-top:4px; }
.dash-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(310px,1fr)); gap:16px; align-items:start; }
.dash-card{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); padding:16px 18px; }
.dash-card h3{ font-family:var(--f-m); font-size:11px; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-3); margin:0 0 12px; font-weight:600; }
.dash-chart{ width:100%; height:auto; display:block; }
.dash-bar{ fill:var(--brand); }
.dash-bar-l{ fill:var(--ink-4); font-family:var(--f-m); font-size:9px; }
.dash-bar-v{ fill:var(--ink-3); font-family:var(--f-m); font-size:8.5px; }
.dash-row{ display:flex; align-items:center; gap:10px; padding:6px 0; }
.dash-row .nm{ flex:0 0 36%; font-size:13px; color:var(--ink-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dash-row .bar{ flex:1 1 auto; min-width:40px; }
.dash-row .v{ flex:0 0 auto; font-family:var(--f-m); font-size:12px; color:var(--ink-2); text-align:right; white-space:nowrap; }
.dash-hbar{ width:100%; height:8px; display:block; }
.dash-hbar-bg{ fill:var(--tint); }
.dash-hbar-fill{ fill:var(--brand); }
.dash-feed{ list-style:none; margin:0; padding:0; }
.dash-feed li{ display:flex; align-items:center; gap:12px; padding:9px 0; border-bottom:1px solid var(--line); }
.dash-feed li:last-child{ border-bottom:0; }
.dash-feed .f-main{ flex:1 1 auto; min-width:0; }
.dash-feed .f-p{ font-size:13px; color:var(--ink-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dash-feed .f-meta{ font-size:11px; color:var(--ink-4); margin-top:1px; }
.dash-feed .f-amt{ flex:0 0 auto; font-family:var(--f-m); font-size:12.5px; color:var(--brand); }
.dash-split{ display:flex; gap:16px; }
.dash-split .s-item{ flex:1; }
.dash-split .s-n{ font-family:var(--f-d); font-size:21px; color:var(--brand); line-height:1.1; }
.dash-split .s-l{ font-size:11px; color:var(--ink-3); font-family:var(--f-m); text-transform:uppercase; letter-spacing:.05em; margin-top:3px; }
.dash-alert{ display:flex; gap:8px; align-items:center; padding:9px 13px; border-radius:8px; background:var(--surface); margin-top:8px; font-size:13px; color:var(--ink-1); text-decoration:none; }
.dash-alert:first-of-type{ margin-top:0; }
.dash-alert.warn{ background:#FBEEEE; color:#7A2230; }
.dash-alert strong{ font-family:var(--f-m); }

/* ===== Admin sidebar: rozbalovací skupiny + hustota (overlay 195) ===== */
.adm-side-link{ padding:8px 18px; }                 /* o něco hustší řádky */
.adm-side-group-l{ padding:13px 18px 4px; }
/* nativní <details> skupina — bez JS */
.adm-side-grp{ }
.adm-side-grp > summary.adm-side-sum{ list-style:none; cursor:pointer; user-select:none; }
.adm-side-grp > summary.adm-side-sum::-webkit-details-marker{ display:none; }
.adm-side-grp > summary.adm-side-sum::marker{ content:""; }
.adm-side-chev{ flex:none; color:#6F6452; transition:transform .15s ease, color .12s; }
.adm-side-grp[open] > summary .adm-side-chev{ transform:rotate(90deg); color:#9A8F78; }
.adm-side-grp > summary:hover .adm-side-chev{ color:#fff; }
/* zvýraznění rodiče, když je uvnitř aktivní stránka */
.adm-side-sum.has-active .adm-side-tx{ color:#fff; }
.adm-side-sum.has-active .adm-side-ic{ color:var(--gold); }
/* pod-položky */
.adm-side-sub{ padding:2px 0 4px; }
.adm-side-sublink{ padding-top:6px; padding-bottom:6px; padding-left:30px; font-size:13.5px; }
.adm-side-sublink .adm-side-ic{ width:16px; height:16px; }
/* svislá linka u dětí pro vizuální sounáležitost */
.adm-side-sub{ position:relative; }
.adm-side-sub::before{ content:""; position:absolute; left:25px; top:2px; bottom:6px; width:1px; background:rgba(240,198,116,.14); }
.adm-side-sublink{ border-left-color:transparent; }
.adm-side-sublink.active{ border-left-color:var(--brand); }



.ov-wrap{ max-width:1320px; padding-top:24px; }

/* page heading row: title + period switch + quick context */
.ov-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:18px; flex-wrap:wrap; margin-bottom:18px; }
.ov-head-l h1{ font-family:var(--f-d); font-weight:350; font-size:34px; letter-spacing:-.02em; margin:0; }
.ov-head-l h1 em{ font-style:italic; color:var(--brand); }
.ov-head-sub{ color:var(--ink-3); font-size:13px; margin-top:2px; }
.ov-head-sub b{ color:var(--ink-2); font-weight:600; }
.ov-period{ display:inline-flex; background:var(--card); border:1px solid var(--line-2); border-radius:999px; padding:4px; box-shadow:var(--sh-sm); }
.ov-period a{ padding:8px 18px; border-radius:999px; font-size:13px; font-weight:700; color:var(--ink-3); text-decoration:none; transition:.12s; }
.ov-period a.on{ background:var(--brand); color:#fff; }
.ov-period a:hover:not(.on){ background:var(--tint); color:var(--ink-1); text-decoration:none; }

/* ---------------- HERO command band (dark) ---------------- */
.ov-hero{ position:relative; overflow:hidden; border-radius:var(--r-xl);
  background:
    radial-gradient(1200px 300px at 85% -40%, rgba(184,137,58,.22), transparent 60%),
    radial-gradient(900px 360px at 8% 130%, rgba(184,137,58,.10), transparent 55%),
    linear-gradient(135deg, var(--brand) 0%, var(--brand-2) 70%, #4a1019 100%);
  color:#fff; box-shadow:var(--sh-lg); margin-bottom:16px; }
.ov-hero::after{ /* subtle gold hairline grid texture */
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.5;
  background-image:linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
                   linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
  background-size:48px 48px; mask-image:linear-gradient(180deg, #000, transparent 80%); }
.ov-hero-grid{ position:relative; display:grid; grid-template-columns:1.5fr 1fr 1fr; gap:0; }
.ov-hero-cell{ padding:26px 28px; border-right:1px solid rgba(255,255,255,.10); }
.ov-hero-cell:last-child{ border-right:0; }
.ov-hero-cell--lead{ display:flex; flex-direction:column; justify-content:center;
  background:linear-gradient(180deg, rgba(0,0,0,.06), transparent); }
.ov-kl{ font-family:var(--f-m); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--gold); margin-bottom:8px; display:flex; align-items:center; gap:8px; }
.ov-kl .dot{ width:6px; height:6px; border-radius:50%; background:var(--gold); box-shadow:0 0 0 3px rgba(184,137,58,.25); }
.ov-hero-num{ font-family:var(--f-d); font-weight:350; letter-spacing:-.02em; line-height:.92; }
.ov-hero-num--giant{ font-size:68px; }
.ov-hero-num--giant .cur{ font-size:30px; color:var(--gold-tint); margin-left:8px; font-weight:400; }
.ov-hero-num--mid{ font-size:40px; }
.ov-hero-num--mid .cur{ font-size:18px; color:var(--gold-tint); margin-left:5px; }
.ov-hero-sub{ margin-top:10px; font-size:13px; color:rgba(255,255,255,.72); display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ov-trend{ display:inline-flex; align-items:center; gap:5px; font-family:var(--f-m); font-weight:700; font-size:12px; padding:3px 9px; border-radius:999px; }
.ov-trend.up{ background:rgba(124,165,90,.22); color:#cfe6b4; }
.ov-trend.down{ background:rgba(168,57,47,.26); color:#f2c2bd; }
.ov-trend.flat{ background:rgba(255,255,255,.12); color:rgba(255,255,255,.8); }
/* mini sparkline area inside lead cell */
.ov-spark{ margin-top:16px; width:100%; height:46px; display:block; }
/* the two right hero cells stack two metrics each */
.ov-hero-mini{ display:flex; flex-direction:column; gap:18px; justify-content:center; height:100%; }
.ov-hero-mini .ov-kl{ margin-bottom:5px; }
.ov-mini-row{ display:flex; align-items:baseline; gap:10px; }
.ov-mini-row .ov-hero-num--mid{ font-size:34px; }

/* warn pill when a hero metric needs attention (e.g. to-collect > 0) */
.ov-flag{ display:inline-flex; align-items:center; gap:6px; font-family:var(--f-m); font-size:11px; font-weight:700;
  padding:3px 9px; border-radius:999px; background:rgba(184,137,58,.2); color:var(--gold-tint); }

/* ---------------- reference strip (catalog counts, quiet) ---------------- */
.ov-refs{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:22px; }
.ov-ref{ display:flex; align-items:center; gap:12px; background:var(--card); border:1px solid var(--line);
  border-radius:var(--r-md); padding:12px 16px; box-shadow:var(--sh-sm); text-decoration:none; color:inherit; transition:.12s; }
.ov-ref:hover{ box-shadow:var(--sh-md); transform:translateY(-1px); border-color:var(--line-3); }
.ov-ref-ic{ width:34px; height:34px; border-radius:9px; background:var(--brand-tint); color:var(--brand);
  display:grid; place-items:center; flex:none; }
.ov-ref-n{ font-family:var(--f-d); font-size:24px; font-weight:400; line-height:1; color:var(--ink-1); }
.ov-ref-l{ font-family:var(--f-m); font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-4); margin-top:3px; }
.ov-ref-go{ margin-left:auto; color:var(--ink-5); }
.ov-ref:hover .ov-ref-go{ color:var(--brand); }

/* ---------------- main work grid ---------------- */
.ov-grid{ display:grid; grid-template-columns:1.5fr 1fr 1fr; gap:16px; align-items:start; }
.ov-col{ display:flex; flex-direction:column; gap:16px; }
.ov-span2{ grid-column:span 2; }

/* generic panel used across the dashboard */
.ov-card{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--sh-sm); overflow:hidden; }
.ov-card-h{ display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:14px 18px; border-bottom:1px solid var(--line); }
.ov-card-h-t{ font-family:var(--f-m); font-size:11px; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-3); font-weight:700;
  display:flex; align-items:center; gap:8px; }
.ov-card-h-t .ic{ color:var(--gold); }
.ov-card-h-a{ font-size:12px; font-weight:700; color:var(--brand); text-decoration:none; }
.ov-card-h-a:hover{ text-decoration:underline; }
.ov-card-meta{ font-family:var(--f-m); font-size:12px; color:var(--ink-4); font-weight:600; }
.ov-card-b{ padding:16px 18px; }
.ov-card-b--flush{ padding:6px 10px; }

/* revenue bar chart (SVG) — gold-tipped burgundy bars */
.ov-chart{ width:100%; height:200px; display:block; }
.ov-chart .bar{ fill:var(--brand); }
.ov-chart .bar.peak{ fill:url(#barGold); }
.ov-chart .axislbl{ font-family:var(--f-m); font-size:10px; fill:var(--ink-4); }
.ov-chart .vallbl{ font-family:var(--f-m); font-size:10px; fill:var(--ink-3); font-weight:700; }
.ov-chart .grid{ stroke:var(--line); stroke-width:1; }

/* leaderboard / top lists with SVG bars */
.ov-rank{ display:flex; flex-direction:column; }
.ov-rrow{ display:grid; grid-template-columns:22px 1fr auto; gap:12px; align-items:center;
  padding:10px 8px; border-radius:var(--r-md); text-decoration:none; color:inherit; }
.ov-rrow:hover{ background:var(--surface); }
.ov-rk{ font-family:var(--f-m); font-size:12px; font-weight:700; color:var(--ink-4); text-align:center; }
.ov-rrow.top1 .ov-rk{ color:var(--gold); }
.ov-rname{ min-width:0; }
.ov-rname-t{ font-size:14px; font-weight:600; color:var(--ink-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ov-rname-s{ font-size:11px; color:var(--ink-4); margin-top:1px; }
.ov-rbar{ height:7px; margin-top:6px; width:100%; display:block; }
.ov-rbar rect.tr{ fill:var(--tint-2); }
.ov-rbar rect.fl{ fill:var(--brand); }
.ov-rrow.top1 .ov-rbar rect.fl{ fill:var(--gold); }
.ov-rval{ font-family:var(--f-m); font-size:13px; font-weight:700; color:var(--ink-1); white-space:nowrap; text-align:right; }
.ov-rval small{ display:block; color:var(--ink-4); font-weight:600; font-size:11px; }

/* last sales feed */
.ov-feed{ display:flex; flex-direction:column; }
.ov-frow{ display:grid; grid-template-columns:1fr auto; gap:10px; padding:11px 8px; border-top:1px solid var(--line); text-decoration:none; color:inherit; align-items:start; }
.ov-frow:first-child{ border-top:0; }
.ov-frow:hover{ background:var(--surface); }
.ov-frow > span:first-child{ display:flex; flex-direction:column; min-width:0; }
.ov-fn{ display:block; font-size:14px; font-weight:600; color:var(--ink-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ov-fm{ display:block; font-size:11px; color:var(--ink-4); margin-top:3px; font-family:var(--f-m); }
.ov-fp{ font-family:var(--f-m); font-size:14px; font-weight:700; color:var(--brand); white-space:nowrap; text-align:right; }

/* payments split (cash vs card) as one SVG stacked bar */
.ov-pay{ display:flex; flex-direction:column; gap:14px; }
.ov-pay-nums{ display:flex; justify-content:space-between; gap:16px; }
.ov-pay-cell .ov-kl{ margin-bottom:4px; }
.ov-pay-v{ font-family:var(--f-d); font-size:26px; font-weight:400; color:var(--ink-1); line-height:1; }
.ov-pay-v small{ font-size:14px; color:var(--ink-3); }
.ov-paybar{ width:100%; height:14px; display:block; }
.ov-paybar .cash{ fill:var(--gold); }
.ov-paybar .card{ fill:var(--brand); }
.ov-pay-leg{ display:flex; gap:18px; font-family:var(--f-m); font-size:11px; color:var(--ink-3); }
.ov-pay-leg i{ width:10px; height:10px; border-radius:3px; display:inline-block; margin-right:6px; vertical-align:middle; }
.ov-pay-leg .l-cash i{ background:var(--gold); }
.ov-pay-leg .l-card i{ background:var(--brand); }

/* alerts — promoted, warm, actionable */
.ov-alert{ display:flex; align-items:center; gap:14px; padding:14px 18px;
  background:linear-gradient(180deg,#fff,var(--warn-tint)); border:1px solid var(--line-3);
  border-left:4px solid var(--warn); border-radius:var(--r-lg); box-shadow:var(--sh-sm); }
.ov-alert-ic{ width:38px; height:38px; border-radius:10px; background:var(--warn); color:#fff; display:grid; place-items:center; flex:none; }
.ov-alert-b{ flex:1; }
.ov-alert-t{ font-weight:700; color:var(--ink-1); font-size:14px; }
.ov-alert-m{ font-size:13px; color:var(--ink-3); margin-top:2px; }
.ov-alert-m b{ font-family:var(--f-m); color:var(--warn); }
.ov-alert.ok{ background:linear-gradient(180deg,#fff,var(--ok-tint)); border-left-color:var(--ok); }
.ov-alert.ok .ov-alert-ic{ background:var(--ok); }
.ov-alert.ok .ov-alert-m b{ color:var(--ok); }

/* responsive: collapse to 2-col then 1-col */
@media (max-width:1040px){
  .ov-hero-grid{ grid-template-columns:1fr 1fr; }
  .ov-hero-cell--lead{ grid-column:span 2; }
  .ov-grid{ grid-template-columns:1fr 1fr; }
  .ov-span2{ grid-column:span 2; }
  .ov-refs{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:720px){
  .ov-hero-grid{ grid-template-columns:1fr; }
  .ov-hero-cell{ border-right:0; border-bottom:1px solid rgba(255,255,255,.10); }
  .ov-hero-cell--lead{ grid-column:auto; }
  .ov-grid{ grid-template-columns:1fr; }
  .ov-span2{ grid-column:auto; }
  .ov-refs{ grid-template-columns:1fr 1fr; }
  .ov-hero-num--giant{ font-size:54px; }
}

/* admin: small additions to remove inline styles (CSP) */
.ov-grid + .ov-grid{ margin-top:16px; }
.ov-kl--ink{ color:var(--ink-4); }
.ov-kl--ink .dot{ background:var(--ink-4); }
.ov-kl--ink .dot.gold{ background:var(--gold); }



.wrap--adm2{ max-width:1320px; padding-top:24px; }

/* page header: title + subtitle + primary action */
.adm2-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:20px; flex-wrap:wrap; margin-bottom:8px; }
.adm2-head h1{ font-family:var(--f-d); font-weight:350; font-size:34px; letter-spacing:-.02em; margin:0; }
.adm2-head h1 em{ font-style:italic; color:var(--brand); }
.adm2-sub{ color:var(--ink-3); font-size:13.5px; margin-top:6px; max-width:62ch; line-height:1.5; }
.adm2-sub b{ color:var(--ink-2); }

/* ---- ADD panel at TOP (sellers) — compact, collapsible ---- */
.adm2-add{ background:var(--card); border:1px solid var(--line-2); border-radius:var(--r-lg); box-shadow:var(--sh-sm); margin:18px 0 22px; overflow:hidden; }
.adm2-add > summary{ list-style:none; cursor:pointer; display:flex; align-items:center; gap:12px; padding:15px 20px; }
.adm2-add > summary::-webkit-details-marker{ display:none; }
.adm2-add-ic{ width:34px; height:34px; border-radius:9px; background:var(--brand); color:#fff; display:grid; place-items:center; flex:none; }
.adm2-add-t{ font-weight:700; font-size:15px; color:var(--ink-1); }
.adm2-add-t small{ display:block; font-weight:500; font-size:12px; color:var(--ink-4); margin-top:1px; }
.adm2-add-chev{ margin-left:auto; color:var(--ink-4); transition:transform .15s; }
.adm2-add[open] .adm2-add-chev{ transform:rotate(180deg); }
.adm2-add-body{ padding:4px 20px 20px; border-top:1px solid var(--line); }
/* horizontal field row — uses the wide desktop space */
.adm2-formrow{ display:grid; grid-template-columns:2fr 1.3fr 1.3fr 1.3fr auto; gap:14px; align-items:end; margin-top:16px; }
.adm2-f label{ display:block; font-family:var(--f-m); font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-4); margin-bottom:6px; }
.adm2-f input, .adm2-f select{ width:100%; height:42px; padding:0 12px; border:1px solid var(--line-2); border-radius:var(--r-md);
  background:var(--surface); font-family:var(--f-u); font-size:14px; color:var(--ink-1); transition:.12s; }
.adm2-f input:focus, .adm2-f select:focus{ outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-tint); background:#fff; }
.adm2-f input::placeholder{ color:var(--ink-5); }
.adm2-f-hint{ font-family:var(--f-m); font-size:10px; color:var(--ink-4); margin-top:5px; }
.adm2-add-actions{ display:flex; align-items:center; gap:10px; }

/* ---- toolbar: count + search + filter chips ---- */
.adm2-toolbar{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:12px; }
.adm2-count{ font-family:var(--f-m); font-size:12px; color:var(--ink-3); font-weight:700; }
.adm2-count b{ color:var(--ink-1); }
.adm2-search{ position:relative; flex:1; min-width:200px; max-width:340px; }
.adm2-search svg{ position:absolute; left:12px; top:50%; transform:translateY(-50%); color:var(--ink-4); pointer-events:none; }
.adm2-search input{ width:100%; height:40px; padding:0 12px 0 38px; border:1px solid var(--line-2); border-radius:999px;
  background:var(--card); font-family:var(--f-u); font-size:13.5px; color:var(--ink-1); }
.adm2-search input:focus{ outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-tint); }
.adm2-chips{ display:inline-flex; gap:6px; flex-wrap:wrap; }
.adm2-chip{ font-family:var(--f-m); font-size:11.5px; font-weight:700; letter-spacing:.02em; padding:7px 13px; border-radius:999px;
  border:1px solid var(--line-2); background:var(--card); color:var(--ink-3); cursor:pointer; transition:.12s; user-select:none; }
.adm2-chip:hover{ border-color:var(--line-3); color:var(--ink-1); }
.adm2-chip.on{ background:var(--brand); border-color:var(--brand); color:#fff; }
.adm2-chip .n{ opacity:.7; margin-left:5px; }

/* ---- enhanced table ---- */
.adm2-tablewrap{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--sh-sm); overflow:hidden; }
.adm2-table{ width:100%; border-collapse:collapse; }
.adm2-table thead th{ font-family:var(--f-m); font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-4);
  text-align:left; font-weight:700; padding:13px 16px; background:var(--tint); border-bottom:1px solid var(--line-2); white-space:nowrap; }
.adm2-table thead th.sortable{ cursor:pointer; }
.adm2-table thead th.sortable:hover{ color:var(--ink-1); }
.adm2-table thead th .ar{ color:var(--brand); margin-left:4px; }
.adm2-table thead th.num, .adm2-table td.num{ text-align:right; }
.adm2-table tbody td{ padding:13px 16px; border-bottom:1px solid var(--line); font-size:14px; color:var(--ink-2); vertical-align:middle; }
.adm2-table tbody tr:last-child td{ border-bottom:0; }
.adm2-table tbody tr:hover{ background:var(--surface); }
.adm2-table tbody tr.dim{ opacity:.62; }
.adm2-table tbody tr.is-archived{ background:repeating-linear-gradient(135deg,transparent,transparent 8px,rgba(154,147,136,.05) 8px,rgba(154,147,136,.05) 16px); }

.adm2-name{ font-weight:700; color:var(--ink-1); }
.adm2-id{ font-family:var(--f-m); font-size:12px; color:var(--ink-4); font-weight:500; margin-left:5px; }
.adm2-rev{ font-family:var(--f-m); font-weight:700; color:var(--ink-1); }
.adm2-rev small{ color:var(--ink-4); font-weight:500; margin-left:3px; }
.adm2-muted{ color:var(--ink-4); }
.adm2-mono{ font-family:var(--f-m); font-size:13px; color:var(--ink-3); }

/* status / state pills */
.adm2-pill{ display:inline-flex; align-items:center; gap:5px; font-family:var(--f-m); font-size:10.5px; font-weight:700; letter-spacing:.04em;
  text-transform:uppercase; padding:4px 9px; border-radius:999px; white-space:nowrap; }
.adm2-pill.active{ background:var(--ok-tint); color:var(--ok); }
.adm2-pill.archived{ background:var(--tint-2); color:var(--ink-3); }
.adm2-pill.inactive{ background:var(--bad-tint); color:var(--bad); }
.adm2-pill.dot::before{ content:""; width:6px; height:6px; border-radius:50%; background:currentColor; display:inline-block; }
.adm2-pill.nosales{ background:var(--tint); color:var(--ink-4); }
.adm2-pill.sales{ background:var(--ok-tint); color:var(--ok); }
/* verified vs not-verified — make "not verified" clearly a risk */
.adm2-vbadge{ display:inline-flex; align-items:center; gap:5px; font-family:var(--f-m); font-size:10.5px; font-weight:700; letter-spacing:.03em; text-transform:uppercase; padding:4px 9px; border-radius:999px; }
.adm2-vbadge.yes{ background:var(--ok-tint); color:var(--ok); }
.adm2-vbadge.no{ background:var(--warn-tint); color:var(--warn); border:1px dashed var(--warn); }

/* revenue mini-bar in table (SVG, data-driven) */
.adm2-bar{ width:90px; height:6px; display:inline-block; vertical-align:middle; margin-left:10px; }
.adm2-bar rect.tr{ fill:var(--tint-2); }
.adm2-bar rect.fl{ fill:var(--brand); }
tr.top1 .adm2-bar rect.fl{ fill:var(--gold); }

/* row actions */
.adm2-actions{ display:flex; align-items:center; gap:6px; justify-content:flex-end; }
.adm2-iconbtn{ width:34px; height:34px; border-radius:9px; border:1px solid var(--line-2); background:var(--card); color:var(--ink-3);
  display:grid; place-items:center; cursor:pointer; transition:.12s; text-decoration:none; }
.adm2-iconbtn:hover{ border-color:var(--line-3); color:var(--ink-1); background:var(--surface); }
.adm2-iconbtn.edit:hover{ border-color:var(--brand); color:var(--brand); background:var(--brand-tint); }
.adm2-iconbtn.danger:hover{ border-color:var(--bad); color:var(--bad); background:var(--bad-tint); }
.adm2-iconbtn[aria-disabled="true"]{ opacity:.4; cursor:not-allowed; }
.adm2-linkbtn{ font-size:13px; font-weight:700; color:var(--brand); text-decoration:none; padding:6px 8px; border-radius:7px; }
.adm2-linkbtn:hover{ background:var(--brand-tint); }
.adm2-linkbtn.warn{ color:var(--warn); }
.adm2-linkbtn.warn:hover{ background:var(--warn-tint); }

/* duplicate hint inline */
.adm2-dup{ display:inline-flex; align-items:center; gap:5px; font-family:var(--f-m); font-size:10.5px; font-weight:700; color:var(--warn);
  background:var(--warn-tint); padding:3px 8px; border-radius:999px; margin-left:8px; }

/* empty state for a filter that matches nothing */
.adm2-empty{ padding:40px 20px; text-align:center; color:var(--ink-4); }
.adm2-empty h3{ font-family:var(--f-d); font-weight:400; font-size:18px; color:var(--ink-2); margin:0 0 4px; }

/* ============ AGENCIES split: table left + sticky edit panel right ============ */
.adm2-split{ display:grid; grid-template-columns:1fr 420px; gap:18px; align-items:start; }
.adm2-split .adm2-tablewrap{ min-width:0; }
.adm2-edit{ position:sticky; top:18px; background:var(--card); border:1px solid var(--line-2); border-radius:var(--r-lg); box-shadow:var(--sh-md); overflow:hidden; }
.adm2-edit-h{ background:linear-gradient(135deg,var(--brand),var(--brand-2)); color:#fff; padding:16px 20px; }
.adm2-edit-h-t{ font-family:var(--f-d); font-weight:400; font-size:19px; display:flex; align-items:center; justify-content:space-between; gap:10px; }
.adm2-edit-h-close{ color:rgba(255,255,255,.8); cursor:pointer; width:28px; height:28px; border-radius:7px; display:grid; place-items:center; }
.adm2-edit-h-close:hover{ background:rgba(255,255,255,.15); color:#fff; }
.adm2-edit-h-sub{ font-size:12px; color:var(--gold-tint); margin-top:3px; font-family:var(--f-m); }
.adm2-edit-b{ padding:18px 20px; max-height:calc(100vh - 130px); overflow-y:auto; }

/* verified banner at top of the edit panel */
.adm2-vbanner{ display:flex; align-items:center; gap:11px; padding:11px 13px; border-radius:var(--r-md); margin-bottom:18px; }
.adm2-vbanner.yes{ background:var(--ok-tint); }
.adm2-vbanner.no{ background:var(--warn-tint); border:1px dashed var(--warn); }
.adm2-vbanner-ic{ width:30px; height:30px; border-radius:8px; display:grid; place-items:center; color:#fff; flex:none; }
.adm2-vbanner.yes .adm2-vbanner-ic{ background:var(--ok); }
.adm2-vbanner.no .adm2-vbanner-ic{ background:var(--warn); }
.adm2-vbanner-t{ font-weight:700; font-size:13.5px; color:var(--ink-1); }
.adm2-vbanner-s{ font-size:11.5px; color:var(--ink-3); margin-top:1px; font-family:var(--f-m); }
.adm2-vbanner label{ margin-left:auto; display:inline-flex; align-items:center; gap:7px; font-size:12px; font-weight:700; color:var(--ink-2); cursor:pointer; }

/* edit form fields (2-col grid) */
.adm2-fgrid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.adm2-fgrid .full{ grid-column:1/-1; }
.adm2-field label{ display:block; font-family:var(--f-m); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-4); margin-bottom:6px; }
.adm2-field input, .adm2-field select, .adm2-field textarea{ width:100%; padding:9px 11px; border:1px solid var(--line-2); border-radius:var(--r-md);
  background:var(--surface); font-family:var(--f-u); font-size:13.5px; color:var(--ink-1); transition:.12s; }
.adm2-field textarea{ resize:vertical; min-height:64px; line-height:1.45; }
.adm2-field input:focus, .adm2-field select:focus, .adm2-field textarea:focus{ outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-tint); background:#fff; }
.adm2-field .hint{ font-size:11px; color:var(--ink-4); margin-top:5px; line-height:1.4; }
/* color field with swatch */
.adm2-color{ display:flex; align-items:center; gap:9px; }
.adm2-color .sw{ width:38px; height:38px; border-radius:9px; border:1px solid var(--line-2); flex:none; }
.adm2-sub-h{ font-family:var(--f-m); font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-3); font-weight:700;
  margin:20px 0 10px; padding-top:14px; border-top:1px solid var(--line); }
.adm2-sub-h:first-child{ margin-top:0; padding-top:0; border-top:0; }
/* checkbox row */
.adm2-check{ display:flex; gap:11px; align-items:flex-start; padding:12px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r-md); margin-top:6px; }
.adm2-check input{ width:18px; height:18px; margin-top:1px; flex:none; accent-color:var(--brand); }
.adm2-check-t{ font-size:13px; font-weight:600; color:var(--ink-1); }
.adm2-check-s{ font-size:11.5px; color:var(--ink-3); margin-top:2px; line-height:1.4; }
/* sticky save bar */
.adm2-savebar{ position:sticky; bottom:0; display:flex; gap:10px; align-items:center; padding:14px 20px; margin:18px -20px -18px;
  background:linear-gradient(180deg,rgba(251,248,241,0),var(--surface) 40%); border-top:1px solid var(--line); }

/* empty edit-panel placeholder */
.adm2-edit-empty{ padding:48px 24px; text-align:center; color:var(--ink-4); }
.adm2-edit-empty-ic{ width:48px; height:48px; border-radius:12px; background:var(--tint); color:var(--ink-4); display:grid; place-items:center; margin:0 auto 14px; }
.adm2-edit-empty h3{ font-family:var(--f-d); font-weight:400; font-size:17px; color:var(--ink-2); margin:0 0 4px; }
.adm2-edit-empty p{ font-size:13px; margin:0; line-height:1.5; }

/* responsive */
@media (max-width:1040px){
  .adm2-split{ grid-template-columns:1fr; }
  .adm2-edit{ position:static; }
  .adm2-formrow{ grid-template-columns:1fr 1fr; }
  .adm2-add-actions{ grid-column:1/-1; }
}
@media (max-width:720px){
  .adm2-formrow{ grid-template-columns:1fr; }
  .adm2-fgrid{ grid-template-columns:1fr; }
  .adm2-table thead{ display:none; }
  .adm2-table tbody td{ display:flex; justify-content:space-between; gap:12px; padding:9px 14px; }
  .adm2-table tbody tr{ display:block; padding:8px 0; border-bottom:2px solid var(--line); }
}

/* active editing row highlight (agencies split) */
.adm2-table tbody tr.is-editing{ background:var(--brand-tint); box-shadow:inset 3px 0 0 var(--brand); }
.adm2-table tbody tr.is-editing:hover{ background:var(--brand-tint); }

/* edit-panel color swatch (mockup: AAI brand = --brand). In production the
   server sets this per-agency; data-driven color is the one sanctioned el.style
   write, or better a CSS custom property set server-side on the element. */
.adm2-color .sw{ background:var(--brand); }

/* ============================================================
   DATA QUALITY AUDIT (overlay 199, prefix .ql-)
   Read-only katalogová kontrola. CSP-safe, staví na tokenech.
   ============================================================ */
.ql-wrap{ max-width:1100px; }
.ql-sum{ display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:12px; margin:18px 0 24px; }
.ql-sumcard{ display:flex; align-items:center; gap:13px; background:var(--card); border:1px solid var(--line); border-radius:var(--r-md); padding:14px 18px; box-shadow:var(--sh-sm); }
.ql-sumcard .n{ font-family:var(--f-d); font-weight:400; font-size:30px; line-height:1; color:var(--ink-1); }
.ql-sumcard.bad .n{ color:var(--bad); }
.ql-sumcard.warn .n{ color:var(--warn); }
.ql-sumcard.ok .n{ color:var(--ok); }
.ql-sumcard .l{ font-family:var(--f-m); font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-4); line-height:1.3; }
.ql-card{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--sh-sm); margin-bottom:14px; overflow:hidden; }
.ql-card-h{ display:flex; align-items:center; gap:11px; padding:13px 18px; border-bottom:1px solid var(--line); }
.ql-card-h .sev{ width:9px; height:9px; border-radius:50%; flex:none; }
.ql-card-h .sev.bad{ background:var(--bad); box-shadow:0 0 0 3px var(--bad-tint); }
.ql-card-h .sev.warn{ background:var(--warn); box-shadow:0 0 0 3px var(--warn-tint); }
.ql-card-h .sev.ok{ background:var(--ok); }
.ql-card-h h3{ flex:1; font-family:var(--f-d); font-weight:500; font-size:16px; margin:0; letter-spacing:-.01em; }
.ql-card-h .cnt{ font-family:var(--f-m); font-weight:700; font-size:13px; color:var(--ink-3); background:var(--tint); padding:2px 10px; border-radius:999px; }
.ql-card-d{ padding:6px 10px; }
.ql-item{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:9px 10px; border-radius:var(--r-md); text-decoration:none; color:inherit; }
.ql-item:hover{ background:var(--surface); }
.ql-item:hover .go{ text-decoration:underline; }
.ql-item .nm{ font-size:13.5px; color:var(--ink-1); }
.ql-item .id{ font-family:var(--f-m); font-size:11px; color:var(--ink-4); margin-left:7px; }
.ql-item .go{ font-family:var(--f-m); font-size:12px; font-weight:700; color:var(--brand); white-space:nowrap; }
.ql-more{ padding:9px 12px; font-family:var(--f-m); font-size:12px; color:var(--ink-4); }
.ql-empty{ padding:18px; color:var(--ok); font-size:14px; font-weight:600; }

/* === AI CTA (tmave vyrazne tlacitko, native <details> dropdown) === */
.ov-head-r{ display:flex; align-items:center; gap:12px; }
.ai-menu{ position:relative; display:inline-block; }
.ai-menu>summary{ list-style:none; cursor:pointer; display:inline-flex; align-items:center; gap:7px;
  background:var(--ink-1); color:#F4E9CF; padding:9px 15px; border-radius:var(--r-md);
  font-family:var(--f-u); font-weight:600; font-size:13.5px; line-height:1;
  border:1px solid #000; box-shadow:var(--sh-md); transition:background .15s, transform .15s; }
.ai-menu>summary::-webkit-details-marker{ display:none; }
.ai-menu>summary::marker{ content:''; }
.ai-menu>summary:hover{ background:#2A2118; transform:translateY(-1px); }
.ai-menu[open]>summary{ background:#2A2118; }
.ai-menu>summary .spk{ color:var(--gold); flex:none; }
.ai-menu-pop{ position:absolute; right:0; top:calc(100% + 6px); z-index:40; min-width:250px;
  background:var(--card); border:1px solid var(--line-2); border-radius:var(--r-md);
  box-shadow:var(--sh-lg); padding:6px; }
.ai-menu-pop a{ display:flex; align-items:center; gap:9px; padding:9px 11px; border-radius:var(--r-sm);
  color:var(--ink-1); font-size:13px; text-decoration:none; }
.ai-menu-pop a:hover{ background:var(--tint); }
.ai-menu-pop a .ic{ color:var(--brand); flex:none; }
.ai-menu-pop a.dis{ opacity:.55; pointer-events:none; }

/* === Whats new (novinky v systemu) === */
.whatsnew{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg);
  box-shadow:var(--sh-sm); overflow:hidden; margin:0 0 20px; }
.whatsnew>.wn-head{ display:flex; align-items:center; justify-content:space-between;
  padding:12px 18px; border-bottom:1px solid var(--line); background:var(--tint); }
.wn-head h2{ font-family:var(--f-d); font-size:16px; margin:0; color:var(--ink-1); }
.wn-body{ padding:6px 18px 12px; }
.wn-pin{ background:var(--gold-tint); border:1px solid #E6D2A2; border-left:3px solid var(--gold);
  border-radius:var(--r-sm); padding:11px 13px; margin:11px 0 6px; }
.wn-pin .wn-t{ font-weight:700; }
.wn-row{ display:flex; gap:14px; padding:9px 0; border-top:1px solid var(--line); }
.wn-row:first-child{ border-top:0; }
.wn-date{ color:var(--ink-4); font-size:11.5px; font-family:var(--f-m); white-space:nowrap;
  min-width:78px; padding-top:1px; }
.wn-t{ font-size:13.5px; color:var(--ink-1); }
.wn-d{ font-size:12.5px; color:var(--ink-3); margin-top:2px; line-height:1.45; }
.wn-tag{ display:inline-block; font-size:10px; text-transform:uppercase; letter-spacing:.04em;
  padding:1px 7px; border-radius:999px; background:var(--brand-tint); color:var(--brand-2);
  font-weight:700; vertical-align:middle; margin-left:3px; }
.wn-tag.major{ background:var(--gold-tint); color:#7A5A1E; }

/* ============================================================
   PTI overlay 207 — REPORTS redesign (.rpt-*), prejmenovano z .rep-
   ============================================================ */



.wrap--rpt{ max-width:1320px; padding-top:24px; }

/* header + filter bar */
.rpt-head{ margin-bottom:16px; }
.rpt-head h1{ font-family:var(--f-d); font-weight:350; font-size:34px; letter-spacing:-.02em; margin:0; }
.rpt-head h1 em{ font-style:italic; color:var(--brand); }
.rpt-head-sub{ color:var(--ink-3); font-size:13px; margin-top:4px; }

.rpt-filters{ display:flex; gap:12px; align-items:end; flex-wrap:wrap; background:var(--card); border:1px solid var(--line-2);
  border-radius:var(--r-lg); padding:14px 16px; box-shadow:var(--sh-sm); margin-bottom:18px; }
.rpt-fl{ display:flex; flex-direction:column; gap:6px; }
.rpt-fl label{ font-family:var(--f-m); font-size:10px; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-4); }
.rpt-fl input, .rpt-fl select{ height:42px; padding:0 12px; border:1px solid var(--line-2); border-radius:var(--r-md);
  background:var(--surface); font-family:var(--f-u); font-size:14px; color:var(--ink-1); min-width:150px; }
.rpt-fl input:focus, .rpt-fl select:focus{ outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-tint); }
.rpt-fl-grow{ flex:1; min-width:170px; }
.rpt-filters .btn-p{ height:42px; }
.rpt-filters .rpt-export{ margin-left:auto; }

/* ---------------- HERO: month headline (dark) ---------------- */
.rpt-hero{ position:relative; overflow:hidden; border-radius:var(--r-xl); color:#fff; box-shadow:var(--sh-lg); margin-bottom:16px;
  background:
    radial-gradient(1100px 320px at 88% -30%, rgba(184,137,58,.24), transparent 60%),
    radial-gradient(800px 300px at 5% 130%, rgba(184,137,58,.10), transparent 55%),
    linear-gradient(135deg, var(--brand) 0%, var(--brand-2) 72%, #4a1019 100%); }
.rpt-hero::after{ content:""; position:absolute; inset:0; pointer-events:none; opacity:.5;
  background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);
  background-size:46px 46px; mask-image:linear-gradient(180deg,#000,transparent 85%); }
.rpt-hero-grid{ position:relative; display:grid; grid-template-columns:1.3fr 1fr 1fr 1.1fr; }
.rpt-hero-cell{ padding:24px 26px; border-right:1px solid rgba(255,255,255,.10); }
.rpt-hero-cell:last-child{ border-right:0; }
.rpt-hero-cell--lead{ display:flex; flex-direction:column; justify-content:center; background:linear-gradient(180deg,rgba(0,0,0,.06),transparent); }
.rpt-kl{ font-family:var(--f-m); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--gold); margin-bottom:8px; display:flex; align-items:center; gap:8px; }
.rpt-kl .dot{ width:6px; height:6px; border-radius:50%; background:var(--gold); box-shadow:0 0 0 3px rgba(184,137,58,.25); }
.rpt-hnum{ font-family:var(--f-d); font-weight:350; letter-spacing:-.02em; line-height:.92; }
.rpt-hnum--giant{ font-size:60px; } .rpt-hnum--giant .cur{ font-size:26px; color:var(--gold-tint); margin-left:7px; }
.rpt-hnum--mid{ font-size:34px; } .rpt-hnum--mid .cur{ font-size:16px; color:var(--gold-tint); margin-left:4px; }
.rpt-hsub{ margin-top:9px; font-size:12.5px; color:rgba(255,255,255,.72); display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.rpt-trend{ display:inline-flex; align-items:center; gap:5px; font-family:var(--f-m); font-weight:700; font-size:11.5px; padding:3px 9px; border-radius:999px; }
.rpt-trend.up{ background:rgba(124,165,90,.22); color:#cfe6b4; }
.rpt-trend.down{ background:rgba(168,57,47,.26); color:#f2c2bd; }
.rpt-hero-mini{ display:flex; flex-direction:column; gap:16px; justify-content:center; height:100%; }
/* donut in hero last cell */
.rpt-hero-donut{ display:flex; align-items:center; gap:16px; height:100%; }
.rpt-donut{ width:118px; height:118px; flex:none; }
.rpt-donut .seg{ fill:none; stroke-width:16; }
.rpt-donut .s-cost{ stroke:rgba(255,255,255,.28); }
.rpt-donut .s-margin{ stroke:var(--gold); }
.rpt-donut .s-bonus{ stroke:#cfe6b4; }
.rpt-donut-c{ font-family:var(--f-d); }
.rpt-donut-leg{ display:flex; flex-direction:column; gap:9px; font-size:12px; }
.rpt-donut-leg .lg{ display:flex; align-items:center; gap:8px; color:rgba(255,255,255,.85); }
.rpt-donut-leg .lg i{ width:10px; height:10px; border-radius:3px; flex:none; }
.rpt-donut-leg .lg b{ font-family:var(--f-m); margin-left:auto; padding-left:14px; }
.rpt-donut-leg .lg.l-cost i{ background:rgba(255,255,255,.4); }
.rpt-donut-leg .lg.l-margin i{ background:var(--gold); }
.rpt-donut-leg .lg.l-bonus i{ background:#cfe6b4; }

/* day strip under hero (today snapshot, quiet) */
.rpt-day{ display:grid; grid-template-columns:auto repeat(4,1fr); gap:0; background:var(--card); border:1px solid var(--line);
  border-radius:var(--r-lg); box-shadow:var(--sh-sm); margin-bottom:22px; overflow:hidden; }
.rpt-day-lbl{ display:flex; align-items:center; gap:10px; padding:16px 20px; background:var(--tint); border-right:1px solid var(--line); }
.rpt-day-lbl .t{ font-family:var(--f-d); font-size:15px; color:var(--ink-1); }
.rpt-day-lbl .d{ font-family:var(--f-m); font-size:11px; color:var(--ink-4); }
.rpt-day-cell{ padding:14px 20px; border-right:1px solid var(--line); }
.rpt-day-cell:last-child{ border-right:0; }
.rpt-day-cell .k{ font-family:var(--f-m); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-4); margin-bottom:5px; }
.rpt-day-cell .v{ font-family:var(--f-d); font-size:24px; color:var(--ink-1); line-height:1; }
.rpt-day-cell .v small{ font-size:13px; color:var(--ink-3); }
.rpt-day-cell .v.gold{ color:var(--gold); }

/* ---------------- panels & grid ---------------- */
.rpt-grid{ display:grid; gap:16px; align-items:start; }
.rpt-grid.g-2-1{ grid-template-columns:1.55fr 1fr; }
.rpt-grid.g-1-1{ grid-template-columns:1fr 1fr; }
.rpt-grid + .rpt-grid{ margin-top:16px; }

.rpt-card{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-lg); box-shadow:var(--sh-sm); overflow:hidden; }
.rpt-card-h{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:15px 18px; border-bottom:1px solid var(--line); }
.rpt-card-h-t{ font-family:var(--f-m); font-size:11px; letter-spacing:.07em; text-transform:uppercase; font-weight:700; color:var(--ink-3); display:flex; align-items:center; gap:8px; }
.rpt-card-h-t .ic{ color:var(--gold); }
.rpt-card-h-meta{ font-family:var(--f-m); font-size:12px; color:var(--ink-4); font-weight:600; }
.rpt-seg{ display:inline-flex; background:var(--tint); border-radius:999px; padding:3px; }
.rpt-seg a{ font-family:var(--f-m); font-size:11px; font-weight:700; padding:5px 11px; border-radius:999px; color:var(--ink-3); text-decoration:none; }
.rpt-seg a.on{ background:var(--brand); color:#fff; }
.rpt-card-b{ padding:18px; }

/* trend chart (daily revenue across month) */
.rpt-trendchart{ width:100%; height:240px; display:block; }
.rpt-trendchart .grid{ stroke:var(--line); stroke-width:1; }
.rpt-trendchart .gridlbl{ font-family:var(--f-m); font-size:9px; fill:var(--ink-4); }
.rpt-trendchart .axislbl{ font-family:var(--f-m); font-size:9px; fill:var(--ink-4); }
.rpt-trendchart .area{ fill:url(#repArea); }
.rpt-trendchart .line{ fill:none; stroke:var(--brand); stroke-width:2.5; stroke-linejoin:round; stroke-linecap:round; }
.rpt-trendchart .pt{ fill:#fff; stroke:var(--brand); stroke-width:2; }
.rpt-trendchart .pt.peak{ fill:var(--gold); stroke:var(--gold); }
.rpt-trendchart .avgline{ stroke:var(--gold); stroke-width:1.5; stroke-dasharray:4 4; }

/* KPI mini-cards row */
.rpt-kpis{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:16px; }
.rpt-kpi{ background:var(--card); border:1px solid var(--line); border-radius:var(--r-md); padding:14px 16px; box-shadow:var(--sh-sm); position:relative; overflow:hidden; }
.rpt-kpi::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:3px; }
.rpt-kpi.k-rev::before{ background:var(--brand); }
.rpt-kpi.k-margin::before{ background:var(--gold); }
.rpt-kpi.k-cost::before{ background:var(--ink-4); }
.rpt-kpi.k-bonus::before{ background:var(--ok); }
.rpt-kpi .k{ font-family:var(--f-m); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-4); margin-bottom:6px; }
.rpt-kpi .v{ font-family:var(--f-d); font-size:26px; color:var(--ink-1); line-height:1; }
.rpt-kpi .v small{ font-size:13px; color:var(--ink-3); }
.rpt-kpi .s{ font-size:11.5px; color:var(--ink-4); margin-top:5px; font-family:var(--f-m); }
.rpt-kpi .s b{ color:var(--ok); }
.rpt-kpi .s b.warn{ color:var(--warn); }

/* agency performance — horizontal bars with margin overlay */
.rpt-agency{ display:flex; flex-direction:column; }
.rpt-arow{ display:grid; grid-template-columns:150px 1fr auto; gap:14px; align-items:center; padding:9px 6px; border-radius:var(--r-md); text-decoration:none; color:inherit; }
.rpt-arow:hover{ background:var(--surface); }
.rpt-aname{ font-size:13.5px; font-weight:600; color:var(--ink-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rpt-aname small{ display:block; font-family:var(--f-m); font-size:10.5px; color:var(--ink-4); font-weight:500; }
.rpt-abar{ height:22px; width:100%; display:block; }
.rpt-abar .rev{ fill:var(--tint-2); }
.rpt-abar .margin{ fill:var(--brand); }
.rpt-arow.top1 .rpt-abar .margin{ fill:var(--gold); }
.rpt-abar .mlabel{ font-family:var(--f-m); font-size:10px; font-weight:700; fill:#fff; }
.rpt-aval{ text-align:right; white-space:nowrap; }
.rpt-aval .r{ display:block; font-family:var(--f-m); font-size:13px; font-weight:700; color:var(--ink-1); }
.rpt-aval .m{ display:block; font-family:var(--f-m); font-size:11px; color:var(--ink-4); margin-top:2px; }
.rpt-aval .m b{ color:var(--ok); }

/* margin-rate gauge ranking (right panel) */
.rpt-rate{ display:flex; flex-direction:column; gap:2px; }
.rpt-raterow{ display:grid; grid-template-columns:1fr auto; gap:10px; align-items:center; padding:8px 4px; }
.rpt-raterow .nm{ font-size:13px; color:var(--ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rpt-ratebar{ grid-column:1/-1; height:6px; display:block; width:100%; margin-top:2px; }
.rpt-ratebar rect.tr{ fill:var(--tint-2); }
.rpt-ratebar rect.fl{ fill:var(--ok); }
.rpt-raterow.best rect.fl{ fill:var(--gold); }
.rpt-raterow.low rect.fl{ fill:var(--warn); }
.rpt-ratev{ font-family:var(--f-m); font-size:13px; font-weight:700; color:var(--ink-1); }

/* seller table with bonus/payout */
.rpt-stable{ width:100%; border-collapse:collapse; }
.rpt-stable thead th{ font-family:var(--f-m); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-4);
  text-align:right; font-weight:700; padding:10px 14px; background:var(--tint); border-bottom:1px solid var(--line-2); }
.rpt-stable thead th:first-child{ text-align:left; }
.rpt-stable td{ padding:11px 14px; border-bottom:1px solid var(--line); text-align:right; font-family:var(--f-m); font-size:13px; color:var(--ink-2); }
.rpt-stable td:first-child{ text-align:left; }
.rpt-stable tbody tr:last-child td{ border-bottom:0; }
.rpt-stable tbody tr:hover{ background:var(--surface); }
.rpt-sname{ font-family:var(--f-u); font-weight:700; color:var(--ink-1); }
.rpt-sname .rk{ font-family:var(--f-m); font-size:11px; color:var(--ink-4); margin-right:8px; }
tr.top1 .rpt-sname .rk{ color:var(--gold); }
.rpt-srev{ color:var(--ink-1); font-weight:700; }
.rpt-sbar{ width:80px; height:6px; display:inline-block; vertical-align:middle; margin-left:8px; }
.rpt-sbar rect.tr{ fill:var(--tint-2); } .rpt-sbar rect.fl{ fill:var(--brand); }
tr.top1 .rpt-sbar rect.fl{ fill:var(--gold); }
/* payout gap pill */
.rpt-gap{ display:inline-flex; align-items:center; gap:4px; font-family:var(--f-m); font-size:10.5px; font-weight:700; padding:2px 7px; border-radius:999px; }
.rpt-gap.ok{ background:var(--ok-tint); color:var(--ok); }
.rpt-gap.pending{ background:var(--warn-tint); color:var(--warn); }

/* insight callouts */
.rpt-insights{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:16px; }
.rpt-insight{ display:flex; gap:12px; padding:15px 16px; border-radius:var(--r-lg); border:1px solid var(--line); background:var(--card); box-shadow:var(--sh-sm); }
.rpt-insight-ic{ width:36px; height:36px; border-radius:10px; display:grid; place-items:center; color:#fff; flex:none; }
.rpt-insight.good .rpt-insight-ic{ background:var(--ok); }
.rpt-insight.watch .rpt-insight-ic{ background:var(--warn); }
.rpt-insight.info .rpt-insight-ic{ background:var(--brand); }
.rpt-insight-t{ display:block; font-weight:700; font-size:13.5px; color:var(--ink-1); }
.rpt-insight-s{ display:block; font-size:12.5px; color:var(--ink-3); margin-top:3px; line-height:1.45; }
.rpt-insight-s b{ font-family:var(--f-m); }
.rpt-insight.good .rpt-insight-s b{ color:var(--ok); }
.rpt-insight.watch .rpt-insight-s b{ color:var(--warn); }

@media (max-width:1040px){
  .rpt-hero-grid{ grid-template-columns:1fr 1fr; }
  .rpt-hero-cell--lead{ grid-column:span 2; }
  .rpt-grid.g-2-1, .rpt-grid.g-1-1{ grid-template-columns:1fr; }
  .rpt-kpis{ grid-template-columns:repeat(2,1fr); }
  .rpt-insights{ grid-template-columns:1fr; }
  .rpt-day{ grid-template-columns:1fr 1fr; }
  .rpt-day-lbl{ grid-column:span 2; border-right:0; border-bottom:1px solid var(--line); }
}
@media (max-width:680px){
  .rpt-hero-grid{ grid-template-columns:1fr; }
  .rpt-hero-cell{ border-right:0; border-bottom:1px solid rgba(255,255,255,.1); }
  .rpt-hnum--giant{ font-size:48px; }
  .rpt-kpis{ grid-template-columns:1fr; }
}

/* reports: utility classes to replace inline styles (CSP) */
.rpt-insights--stack{ grid-template-columns:1fr; margin-top:0; gap:10px; }
.rpt-card-b--flush{ padding:0; }
.rpt-kpis--2{ grid-template-columns:1fr 1fr; margin-bottom:16px; }
.rpt-mb-10{ margin-bottom:10px; }
.rpt-insight > span:last-child{ display:flex; flex-direction:column; min-width:0; }

/* ============================================================
   PTI overlay 208 — AI page redesign (.ai-*) od UX specialisty
   (zadne kolize: .ai-menu/.ai-menu-pop z 202 se zde nevyskytuji)
   ============================================================ */



:root{
  --ai-bg-0:#0e0b07;          /* darkest */
  --ai-bg-1:#171310;          /* sidebar-ish */
  --ai-bg-2:#1f1a14;          /* raised panel */
  --ai-line:rgba(255,255,255,.08);
  --ai-line-2:rgba(255,255,255,.14);
  --ai-green:#7CB342;         /* bright accent green */
  --ai-green-2:#A8D86A;
  --ai-green-deep:#4F6A3D;    /* token --ok */
  --ai-gold:#D9A441;
  --ai-gold-2:#F4E9CF;
  --ai-cyan:#5BC6C0;          /* extra accent */
  --ai-violet:#9B7BD0;        /* extra accent */
  --ai-txt:#F3EEE4;
  --ai-txt-dim:rgba(243,238,228,.62);
  --ai-txt-faint:rgba(243,238,228,.4);
}

/* full-bleed dark stage that breaks out of the parchment admin shell */
.ai-stage{ position:relative; margin:-24px -40px -40px; padding:40px 40px 56px; min-height:100vh;
  background:var(--ai-bg-1); color:var(--ai-txt); overflow:hidden; isolation:isolate; }
.ai-wrap{ max-width:1180px; margin:0 auto; position:relative; z-index:2; }

/* animated gradient mesh background */
.ai-mesh{ position:absolute; inset:0; z-index:0; pointer-events:none; overflow:hidden; }
.ai-mesh span{ position:absolute; border-radius:50%; filter:blur(70px); opacity:.5; mix-blend-mode:screen; }
.ai-mesh .m1{ width:520px; height:520px; left:-120px; top:-140px; background:radial-gradient(circle,#3f5a2a,transparent 70%); animation:aiFloat1 18s ease-in-out infinite; }
.ai-mesh .m2{ width:460px; height:460px; right:-100px; top:-60px; background:radial-gradient(circle,#7a5a1e,transparent 70%); animation:aiFloat2 22s ease-in-out infinite; }
.ai-mesh .m3{ width:420px; height:420px; left:30%; bottom:-160px; background:radial-gradient(circle,#234b48,transparent 70%); animation:aiFloat3 26s ease-in-out infinite; }
.ai-mesh .m4{ width:300px; height:300px; right:18%; bottom:-80px; background:radial-gradient(circle,#3a2c52,transparent 70%); animation:aiFloat1 20s ease-in-out infinite reverse; }
/* fine grid texture on top of mesh */
.ai-grid-tex{ position:absolute; inset:0; z-index:1; pointer-events:none; opacity:.5;
  background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);
  background-size:44px 44px; mask-image:radial-gradient(ellipse 90% 70% at 50% 0%,#000,transparent 75%); }

@keyframes aiFloat1{ 0%,100%{ transform:translate(0,0) scale(1);} 50%{ transform:translate(40px,30px) scale(1.08);} }
@keyframes aiFloat2{ 0%,100%{ transform:translate(0,0) scale(1);} 50%{ transform:translate(-36px,26px) scale(1.1);} }
@keyframes aiFloat3{ 0%,100%{ transform:translate(0,0) scale(1);} 50%{ transform:translate(28px,-30px) scale(1.06);} }

/* ---------- hero header ---------- */
.ai-hero{ display:flex; align-items:flex-start; gap:20px; margin-bottom:30px; }
.ai-orb{ position:relative; width:74px; height:74px; flex:none; }
.ai-orb-core{ position:absolute; inset:14px; border-radius:50%;
  background:radial-gradient(circle at 35% 30%, #fff, var(--ai-gold) 38%, #9a6b1f 75%);
  box-shadow:0 0 24px rgba(217,164,65,.6), inset 0 0 14px rgba(255,255,255,.35);
  animation:aiPulse 3.2s ease-in-out infinite; }
.ai-orb-ring{ position:absolute; inset:0; border-radius:50%; border:1.5px solid var(--ai-line-2); }
.ai-orb-ring.r2{ inset:-7px; border-color:rgba(217,164,65,.25); animation:aiSpin 9s linear infinite; border-top-color:var(--ai-gold); }
.ai-orb-ring.r3{ inset:-14px; border-color:rgba(124,179,66,.18); animation:aiSpin 14s linear infinite reverse; border-bottom-color:var(--ai-green); }
@keyframes aiPulse{ 0%,100%{ transform:scale(1); box-shadow:0 0 24px rgba(217,164,65,.55), inset 0 0 14px rgba(255,255,255,.35);} 50%{ transform:scale(1.06); box-shadow:0 0 36px rgba(217,164,65,.8), inset 0 0 18px rgba(255,255,255,.5);} }
@keyframes aiSpin{ to{ transform:rotate(360deg);} }
.ai-hero-txt h1{ font-family:var(--f-d); font-weight:350; font-size:46px; letter-spacing:-.02em; margin:0; line-height:1;
  background:linear-gradient(100deg,#fff 10%,var(--ai-gold-2) 40%,var(--ai-gold) 60%,#fff 90%);
  background-size:200% auto; -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
  animation:aiShimmer 6s linear infinite; }
@keyframes aiShimmer{ to{ background-position:200% center; } }
.ai-hero-txt h1 .sp{ font-style:italic; }
.ai-hero-sub{ color:var(--ai-txt-dim); font-size:14px; margin-top:8px; max-width:54ch; }
.ai-hero-badge{ display:inline-flex; align-items:center; gap:7px; margin-top:12px; font-family:var(--f-m); font-size:11px; font-weight:700;
  letter-spacing:.05em; text-transform:uppercase; color:var(--ai-green-2); background:rgba(124,179,66,.12);
  border:1px solid rgba(124,179,66,.3); padding:5px 11px; border-radius:999px; }
.ai-hero-badge .pulse{ width:7px; height:7px; border-radius:50%; background:var(--ai-green); box-shadow:0 0 0 0 rgba(124,179,66,.6); animation:aiBlip 2s ease-out infinite; }
@keyframes aiBlip{ 0%{ box-shadow:0 0 0 0 rgba(124,179,66,.6);} 70%{ box-shadow:0 0 0 8px rgba(124,179,66,0);} 100%{ box-shadow:0 0 0 0 rgba(124,179,66,0);} }

/* ---------- panels ---------- */
.ai-grid{ display:grid; grid-template-columns:1.3fr 1fr; gap:18px; align-items:start; }
.ai-panel{ position:relative; background:linear-gradient(180deg,var(--ai-bg-2),var(--ai-bg-1));
  border:1px solid var(--ai-line); border-radius:var(--r-lg); padding:22px; overflow:hidden;
  box-shadow:0 10px 30px rgba(0,0,0,.35); }
/* animated top hairline accent */
.ai-panel::before{ content:""; position:absolute; left:0; right:0; top:0; height:1px;
  background:linear-gradient(90deg,transparent,var(--ai-gold),var(--ai-green),transparent);
  background-size:200% 100%; animation:aiSweep 5s linear infinite; opacity:.7; }
@keyframes aiSweep{ to{ background-position:200% 0; } }
.ai-panel.span2{ grid-column:1/-1; }
.ai-panel-h{ display:flex; align-items:center; gap:10px; margin-bottom:16px; }
.ai-panel-h .ic{ width:34px; height:34px; border-radius:9px; display:grid; place-items:center; flex:none;
  background:rgba(217,164,65,.12); border:1px solid rgba(217,164,65,.28); color:var(--ai-gold); }
.ai-panel-h.green .ic{ background:rgba(124,179,66,.12); border-color:rgba(124,179,66,.3); color:var(--ai-green-2); }
.ai-panel-h.cyan .ic{ background:rgba(91,198,192,.12); border-color:rgba(91,198,192,.3); color:var(--ai-cyan); }
.ai-panel-h h2{ font-family:var(--f-d); font-weight:400; font-size:20px; color:#fff; margin:0; }
.ai-panel-h .sub{ font-size:12px; color:var(--ai-txt-faint); font-family:var(--f-m); }

/* status row */
.ai-status{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.ai-chip-ok{ display:inline-flex; align-items:center; gap:8px; font-family:var(--f-m); font-size:12px; font-weight:700;
  letter-spacing:.05em; text-transform:uppercase; color:#0e0b07; background:linear-gradient(180deg,var(--ai-green-2),var(--ai-green));
  padding:7px 13px; border-radius:999px; box-shadow:0 0 18px rgba(124,179,66,.4); }
.ai-chip-ok .tick{ width:14px; height:14px; }
.ai-model{ font-family:var(--f-m); font-size:15px; color:#fff; }
.ai-model b{ color:var(--ai-gold-2); position:relative; }
.ai-keyline{ margin-top:14px; font-size:13px; color:var(--ai-txt-dim); font-family:var(--f-m); display:flex; align-items:center; gap:8px; }
.ai-keyline code{ background:rgba(255,255,255,.06); border:1px solid var(--ai-line); border-radius:6px; padding:2px 7px; color:var(--ai-gold-2); }
.ai-keyline .lock{ color:var(--ai-green-2); }
/* tiny live latency sparkline */
.ai-latency{ display:flex; align-items:center; gap:10px; margin-top:16px; padding-top:16px; border-top:1px solid var(--ai-line); }
.ai-latency .lbl{ font-family:var(--f-m); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:var(--ai-txt-faint); }
.ai-eq{ display:inline-flex; align-items:flex-end; gap:3px; height:22px; }
.ai-eq i{ width:3px; background:var(--ai-green); border-radius:2px; animation:aiEq 1.1s ease-in-out infinite; }
.ai-eq i:nth-child(1){ animation-delay:0s; } .ai-eq i:nth-child(2){ animation-delay:.12s; }
.ai-eq i:nth-child(3){ animation-delay:.24s; } .ai-eq i:nth-child(4){ animation-delay:.36s; }
.ai-eq i:nth-child(5){ animation-delay:.48s; } .ai-eq i:nth-child(6){ animation-delay:.6s; }
.ai-eq i:nth-child(7){ animation-delay:.72s; }
@keyframes aiEq{ 0%,100%{ height:5px; opacity:.5;} 50%{ height:22px; opacity:1;} }

/* ---------- tool cards ---------- */
.ai-tools{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:14px; }
.ai-tool{ position:relative; display:flex; flex-direction:column; gap:10px; padding:18px; border-radius:var(--r-md);
  background:rgba(255,255,255,.03); border:1px solid var(--ai-line); cursor:pointer; text-decoration:none;
  color:var(--ai-txt); overflow:hidden; transition:transform .18s, border-color .18s, background .18s; }
.ai-tool::after{ content:""; position:absolute; inset:0; border-radius:inherit; opacity:0; transition:opacity .2s;
  background:radial-gradient(300px circle at var(--mx,50%) var(--my,0%), rgba(217,164,65,.12), transparent 60%); }
.ai-tool:hover{ transform:translateY(-4px); border-color:var(--ai-line-2); background:rgba(255,255,255,.05); text-decoration:none; }
.ai-tool:hover::after{ opacity:1; }
.ai-tool-ic{ width:40px; height:40px; border-radius:10px; display:grid; place-items:center; flex:none;
  background:linear-gradient(140deg,rgba(217,164,65,.2),rgba(124,179,66,.14)); border:1px solid var(--ai-line-2); color:var(--ai-gold-2); }
.ai-tool.t-green .ai-tool-ic{ background:linear-gradient(140deg,rgba(124,179,66,.22),rgba(91,198,192,.12)); color:var(--ai-green-2); }
.ai-tool.t-cyan .ai-tool-ic{ background:linear-gradient(140deg,rgba(91,198,192,.22),rgba(155,123,208,.12)); color:var(--ai-cyan); }
.ai-tool-t{ font-weight:700; font-size:14.5px; color:#fff; line-height:1.3; }
.ai-tool-d{ font-size:12px; color:var(--ai-txt-dim); line-height:1.45; }
.ai-tool-go{ margin-top:auto; display:inline-flex; align-items:center; gap:6px; font-family:var(--f-m); font-size:11px; font-weight:700;
  letter-spacing:.04em; text-transform:uppercase; color:var(--ai-gold); }
.ai-tool:hover .ai-tool-go .arr{ transform:translateX(4px); }
.ai-tool-go .arr{ transition:transform .18s; }

/* ---------- test connection ---------- */
.ai-test{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.ai-test-txt{ flex:1; min-width:220px; }
.ai-test-txt p{ color:var(--ai-txt-dim); font-size:13.5px; margin:0; }
.ai-btn{ display:inline-flex; align-items:center; gap:9px; font-family:var(--f-u); font-weight:700; font-size:14px;
  padding:12px 22px; border-radius:var(--r-md); border:0; cursor:pointer; color:#0e0b07;
  background:linear-gradient(180deg,var(--ai-gold-2),var(--ai-gold)); box-shadow:0 0 22px rgba(217,164,65,.35); transition:transform .15s, box-shadow .2s; }
.ai-btn:hover{ transform:translateY(-2px); box-shadow:0 0 30px rgba(217,164,65,.55); }
.ai-btn .spark{ width:16px; height:16px; }
.ai-btn-green{ color:#0e0b07; background:linear-gradient(180deg,var(--ai-green-2),var(--ai-green)); box-shadow:0 0 22px rgba(124,179,66,.35); }
.ai-btn-green:hover{ box-shadow:0 0 30px rgba(124,179,66,.55); }
.ai-btn-ghost{ background:transparent; color:var(--ai-txt); border:1px solid var(--ai-line-2); box-shadow:none; }
.ai-btn-ghost:hover{ background:rgba(255,255,255,.05); box-shadow:none; }
/* result line that "types in" */
.ai-test-result{ margin-top:16px; padding-top:16px; border-top:1px solid var(--ai-line); font-family:var(--f-m); font-size:13px; color:var(--ai-green-2); display:flex; align-items:center; gap:8px; }
.ai-typing{ display:inline-flex; gap:4px; }
.ai-typing i{ width:6px; height:6px; border-radius:50%; background:var(--ai-gold); animation:aiType 1.2s ease-in-out infinite; }
.ai-typing i:nth-child(2){ animation-delay:.18s; } .ai-typing i:nth-child(3){ animation-delay:.36s; }
@keyframes aiType{ 0%,60%,100%{ transform:translateY(0); opacity:.4;} 30%{ transform:translateY(-5px); opacity:1;} }

/* ---------- quick prompt ---------- */
.ai-prompt-wrap{ position:relative; }
.ai-prompt{ width:100%; min-height:130px; resize:vertical; padding:16px 18px; border-radius:var(--r-md);
  background:rgba(0,0,0,.28); border:1px solid var(--ai-line-2); color:var(--ai-txt); font:inherit; font-size:15px; line-height:1.5; transition:border-color .18s, box-shadow .18s; }
.ai-prompt::placeholder{ color:var(--ai-txt-faint); }
.ai-prompt:focus{ outline:none; border-color:var(--ai-gold); box-shadow:0 0 0 3px rgba(217,164,65,.18), 0 0 30px rgba(217,164,65,.12) inset; }
.ai-prompt-bar{ display:flex; align-items:center; gap:12px; margin-top:14px; }
.ai-prompt-hint{ font-family:var(--f-m); font-size:11px; color:var(--ai-txt-faint); margin-left:auto; }
.ai-prompt-hint kbd{ background:rgba(255,255,255,.07); border:1px solid var(--ai-line); border-radius:5px; padding:2px 6px; color:var(--ai-txt-dim); font-family:var(--f-m); }

/* suggested prompt chips */
.ai-chips{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px; }
.ai-prchip{ font-size:12.5px; color:var(--ai-txt-dim); background:rgba(255,255,255,.04); border:1px solid var(--ai-line);
  border-radius:999px; padding:7px 13px; cursor:pointer; transition:.15s; }
.ai-prchip:hover{ color:#fff; border-color:var(--ai-gold); background:rgba(217,164,65,.1); }

/* usage stat tiles (new proposed) */
.ai-stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.ai-stat{ background:rgba(255,255,255,.03); border:1px solid var(--ai-line); border-radius:var(--r-md); padding:15px 16px; }
.ai-stat .k{ font-family:var(--f-m); font-size:10px; letter-spacing:.06em; text-transform:uppercase; color:var(--ai-txt-faint); margin-bottom:6px; }
.ai-stat .v{ font-family:var(--f-d); font-size:28px; color:#fff; line-height:1; }
.ai-stat .v.gold{ color:var(--ai-gold-2); } .ai-stat .v.green{ color:var(--ai-green-2); }
.ai-stat .s{ font-size:11px; color:var(--ai-txt-dim); margin-top:5px; font-family:var(--f-m); }

@media (max-width:1040px){
  .ai-stage{ margin:-24px -20px -40px; padding:32px 20px 48px; }
  .ai-grid{ grid-template-columns:1fr; }
  .ai-tools{ grid-template-columns:1fr; }
  .ai-stats{ grid-template-columns:1fr; }
  .ai-hero-txt h1{ font-size:38px; }
}

/* honor reduced-motion: kill all the animation, keep the look */
@media (prefers-reduced-motion: reduce){
  .ai-mesh span, .ai-orb-core, .ai-orb-ring, .ai-hero-txt h1, .ai-panel::before,
  .ai-eq i, .ai-typing i, .ai-hero-badge .pulse{ animation:none !important; }
  .ai-hero-txt h1{ -webkit-text-fill-color:var(--ai-gold-2); }
}

/* AI page — admin-shell breakout + not-configured states (overlay 208) */
.wrap--admin .ai-stage{ margin:-28px -28px -48px 0; }
.ai-chip-bad{ display:inline-flex; align-items:center; gap:7px; padding:6px 13px; border-radius:999px;
  font-weight:700; font-size:13px; background:rgba(168,57,47,.18); color:#ED8B82; border:1px solid rgba(168,57,47,.45); }
.ai-orb.is-off{ filter:grayscale(.85); opacity:.55; }
.ai-tool.is-disabled{ opacity:.5; pointer-events:none; }
.ai-tools{ grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); }

/* ============================================================
   PTI overlay 211 - AI "magic" sparkle na CTA a tlacitkach
   Jemna, vkusna zivost na AI vstupnich bodech v adminu.
   Ciste CSS; pohyb jen pri prefers-reduced-motion: no-preference.
   ============================================================ */
.ai-menu>summary{ position:relative; overflow:hidden; }
.btn-ai{ position:relative; overflow:hidden; }
.btn-ai .spk{ color:var(--gold); flex:none; vertical-align:-2px; margin-right:5px; }
.ai-menu-pop a .ic{ transition:transform .16s ease; }
.ai-menu-pop a:hover .ic{ transform:scale(1.14) rotate(-6deg); }

@media (prefers-reduced-motion: no-preference){
  @keyframes aiSpkTwinkle{ 0%,100%{ transform:scale(1) rotate(0); opacity:.82; } 45%{ transform:scale(1.22) rotate(10deg); opacity:1; } }
  @keyframes aiSheen{ 0%{ transform:translateX(-150%) skewX(-18deg); } 100%{ transform:translateX(190%) skewX(-18deg); } }
  @keyframes aiCtaGlow{ 0%,100%{ box-shadow:var(--sh-md), 0 0 0 0 rgba(184,137,58,0); } 50%{ box-shadow:var(--sh-md), 0 0 18px 1px rgba(184,137,58,.34); } }
  @keyframes aiItemIn{ from{ opacity:0; transform:translateY(-5px); } to{ opacity:1; transform:none; } }

  .ai-menu>summary{ animation:aiCtaGlow 3.4s ease-in-out infinite; }
  .ai-menu>summary .spk{ animation:aiSpkTwinkle 2.4s ease-in-out infinite; transform-origin:center; }
  .ai-menu>summary::before{ content:''; position:absolute; top:0; bottom:0; left:0; width:46%; pointer-events:none;
    background:linear-gradient(100deg, transparent, rgba(244,233,207,.30), transparent);
    animation:aiSheen 5s ease-in-out infinite; animation-delay:1.4s; }
  .ai-menu>summary:hover{ animation-duration:1.8s; }
  .ai-menu>summary:hover .spk{ animation-duration:1.05s; }
  .ai-menu>summary:hover::before{ animation-duration:2.1s; }

  .ai-menu[open] .ai-menu-pop a{ animation:aiItemIn .3s ease both; }
  .ai-menu[open] .ai-menu-pop a:nth-child(2){ animation-delay:.06s; }
  .ai-menu[open] .ai-menu-pop a:nth-child(3){ animation-delay:.12s; }

  .btn-ai .spk{ animation:aiSpkTwinkle 2.6s ease-in-out infinite; transform-origin:center; }
  .btn-ai::before{ content:''; position:absolute; top:0; bottom:0; left:0; width:46%; pointer-events:none;
    background:linear-gradient(100deg, transparent, rgba(184,137,58,.16), transparent);
    animation:aiSheen 6s ease-in-out infinite; animation-delay:2s; }
  .btn-ai:hover{ box-shadow:0 0 14px 0 rgba(184,137,58,.30); }
  .btn-ai:hover .spk{ animation-duration:1.1s; }
}

/* ============================================================
   PTI overlay 211 — vice "kouzla" na AI prvcich napric adminem
   (zlata AI ikona v sidebaru, idle glow na .btn-ai)
   Ciste CSS; pohyb jen pri prefers-reduced-motion: no-preference.
   ============================================================ */
.adm-side-link[href="/admin/ai.php"] .adm-side-ic{ stroke:var(--gold); }
.adm-side-link[href="/admin/ai.php"].active .adm-side-ic{ stroke:var(--gold); }

@media (prefers-reduced-motion: no-preference){
  @keyframes aiNavGlow{ 0%,100%{ filter:drop-shadow(0 0 0 rgba(217,164,65,0)); transform:scale(1); }
    50%{ filter:drop-shadow(0 0 4px rgba(217,164,65,.7)); transform:scale(1.1); } }
  @keyframes aiBtnBreathe{ 0%,100%{ box-shadow:0 0 0 0 rgba(184,137,58,0); } 50%{ box-shadow:0 0 11px 0 rgba(184,137,58,.28); } }

  .adm-side-link[href="/admin/ai.php"] .adm-side-ic{ animation:aiNavGlow 3.2s ease-in-out infinite; transform-origin:center; }
  .adm-side-link[href="/admin/ai.php"]:hover .adm-side-ic{ animation-duration:1.4s; }

  .btn-ai:not(:disabled){ animation:aiBtnBreathe 3.8s ease-in-out infinite; }
  .btn-ai:not(:disabled):hover{ animation-duration:1.5s; }
}

/* ============================================================
   PTI overlay 212 — animovane potvrzeni uspechu (.flash-ok)
   Kreslici se fajfka + jiskricky u "vytvoreni". Zustava videt,
   aby uzivatel nemel pocit, ze akce neprosla (zadne duplicity).
   Ciste CSS; pohyb jen pri prefers-reduced-motion: no-preference.
   ============================================================ */
.flash-ok{ display:flex; align-items:center; gap:13px; padding:13px 18px; margin:0 0 16px;
  border-radius:var(--r-md); background:var(--ok-tint); border:1px solid rgba(79,106,61,.35);
  color:var(--ink-2); font-weight:500; position:relative; overflow:visible; box-shadow:var(--sh-sm); }
.flash-ok .flash-tx{ flex:1; min-width:0; }
.flash-ok .flash-tx b{ color:var(--ink-1); }
.flash-ic{ flex:none; width:30px; height:30px; display:block; }
.flash-ic svg{ width:30px; height:30px; display:block; overflow:visible; }
.flash-ic .fc{ fill:none; stroke:var(--ok); stroke-width:2.5; opacity:.5; }
.flash-ic .fk{ fill:none; stroke:var(--ok); stroke-width:4; stroke-linecap:round; stroke-linejoin:round; }
.flash-spark{ position:absolute; left:31px; top:50%; width:0; height:0; pointer-events:none; }
.flash-spark i{ position:absolute; width:6px; height:6px; margin:-3px; border-radius:50%; opacity:0; }
.flash-spark i:nth-child(1){ --fly:translate(-22px,-20px); background:var(--gold); }
.flash-spark i:nth-child(2){ --fly:translate(0,-28px);    background:var(--ok); }
.flash-spark i:nth-child(3){ --fly:translate(22px,-20px); background:var(--gold); }
.flash-spark i:nth-child(4){ --fly:translate(27px,9px);   background:var(--ok); }
.flash-spark i:nth-child(5){ --fly:translate(-27px,9px);  background:var(--ok); }
.flash-spark i:nth-child(6){ --fly:translate(2px,25px);   background:var(--gold); }

@media (prefers-reduced-motion: no-preference){
  @keyframes flashIn{ from{ opacity:0; transform:translateY(-8px) scale(.97); } to{ opacity:1; transform:none; } }
  @keyframes flashStroke{ to{ stroke-dashoffset:0; } }
  @keyframes flashGlow{ 0%,100%{ box-shadow:var(--sh-sm); } 35%{ box-shadow:var(--sh-sm), 0 0 16px 1px rgba(79,106,61,.42); } }
  @keyframes flashSpark{ 0%{ opacity:1; transform:translate(0,0) scale(.3); } 70%{ opacity:1; } 100%{ opacity:0; transform:var(--fly) scale(1); } }

  .flash-pop{ animation:flashIn .45s cubic-bezier(.2,.9,.3,1.3) both, flashGlow 1.7s ease .2s 1; }
  .flash-pop .fc{ stroke-dasharray:145; stroke-dashoffset:145; animation:flashStroke .5s ease .08s forwards; }
  .flash-pop .fk{ stroke-dasharray:42; stroke-dashoffset:42; animation:flashStroke .32s ease .45s forwards; }
  .flash-celebrate .flash-spark i{ animation:flashSpark .85s ease-out .4s both; }
}

/* Prodejni sekce: ozivit fajfku po dokonceni prodeje (success.php) — cele CSS, bez zmeny PHP */
.success-check{ position:relative; }
@media (prefers-reduced-motion: no-preference){
  @keyframes succPop{ 0%{ transform:scale(0) rotate(-25deg); } 60%{ transform:scale(1.18) rotate(6deg); } 100%{ transform:scale(1) rotate(0); } }
  @keyframes succRing{ 0%{ transform:scale(.62); opacity:.5; } 100%{ transform:scale(2.1); opacity:0; } }
  @keyframes succGlow{ 0%,100%{ box-shadow:0 0 0 0 rgba(79,106,61,0); } 45%{ box-shadow:0 0 0 7px rgba(79,106,61,.16); } }
  .success-check{ animation:succPop .55s cubic-bezier(.2,.9,.3,1.5) both, succGlow 2.4s ease .5s 2; }
  .success-check::after{ content:''; position:absolute; inset:0; border-radius:50%; border:2px solid var(--ok);
    animation:succRing 1.1s ease-out .25s 2; pointer-events:none; }
}

/* ============================================================
   PTI overlay 213 — payment: vyber platby presunut do Summary panelu
   Segmentovy prepinac (default Card), echo na tlacitku — VSE pure CSS.
   Radia jsou primi potomci .pay-side PRED .paysum-method i .pay-confirm,
   takze ~ dosahne na segment i echo (zadny JS, CSP ciste).
   ============================================================ */
.pay-side > input[name="payment_method"]{ position:absolute; opacity:0; width:0; height:0; pointer-events:none; }
.paysum-method{ margin-top:16px; }
.paysum-method-l{ display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.paysum-method-l .t{ font-family:var(--f-m); font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-3); font-weight:700; }
.paysum-method-l .hint{ font-size:11px; color:var(--ink-4); }
.paysum-seg{ display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.paysum-seg label{ display:flex; align-items:center; justify-content:center; gap:9px; height:54px; border-radius:var(--r-md);
  border:1.5px solid var(--line-2); background:var(--surface); cursor:pointer; font-weight:700; font-size:15px; color:var(--ink-2);
  transition:.14s; user-select:none; }
.paysum-seg label .ic{ color:var(--ink-4); transition:.14s; display:inline-flex; }
.paysum-seg label:hover{ border-color:var(--line-3); background:#fff; }
#pm-card:checked ~ .paysum-method label[for="pm-card"],
#pm-cash:checked ~ .paysum-method label[for="pm-cash"]{ border-color:var(--brand); background:var(--brand); color:#fff; box-shadow:0 4px 12px rgba(122,31,46,.22); }
#pm-card:checked ~ .paysum-method label[for="pm-card"] .ic,
#pm-cash:checked ~ .paysum-method label[for="pm-cash"] .ic{ color:#fff; }
#pm-card:focus-visible ~ .paysum-method label[for="pm-card"],
#pm-cash:focus-visible ~ .paysum-method label[for="pm-cash"]{ box-shadow:0 0 0 3px var(--brand-tint); }
.paysum-method-note{ font-size:11.5px; color:var(--ink-4); margin-top:8px; line-height:1.4; }
.paysum-method-note b{ color:var(--ink-3); font-weight:600; }
.paysum-echo{ font-family:var(--f-m); font-size:13px; font-weight:700; opacity:.9; margin-left:6px; }
.paysum-echo .pe-cash{ display:none; }
#pm-cash:checked ~ .pay-confirm .paysum-echo .pe-card{ display:none; }
#pm-cash:checked ~ .pay-confirm .paysum-echo .pe-cash{ display:inline; }
.pay-moved-note{ color:var(--ink-4); }

/* ============================================================
   PTI overlay 214 — AI generovani ikon pro atributy (custom: knihovna)
   Custom/gen ikony v palete dedi .iconpick checked-styl (input+svg sousedi).
   ============================================================ */
.sr-submit{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); border:0; }
.icon-gen{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:12px 0 2px; }
.icon-gen input[name="icon_prompt"]{ flex:1 1 240px; min-width:160px; }
.icon-gen-ok{ font-size:12px; color:var(--ok,#4F6A3D); font-weight:600; }
.iconpick label.ipick-gen, .iconpick label.ipick-custom{ position:relative; }
.iconpick label.ipick-gen::after{ content:""; position:absolute; top:1px; right:1px; width:6px; height:6px; border-radius:50%; background:var(--gold,#B8893A); }
.iconpick label.ipick-custom::after{ content:""; position:absolute; top:1px; right:1px; width:6px; height:6px; border-radius:50%; background:var(--line-3,#cbb5b9); }

/* ============================================================
   PTI overlay 215 — fix: "Manage" tlacitko ve sprave adminu
   .rowmenu-btn je 32x32 box pro "•••" (products.php). V admins.php
   nese cele slovo (Spravovat/Manage), ktere pretekalo. Tahle varianta
   necha sirku narust podle textu; base (hover/[open] burgundy) zustava.
   ============================================================ */
.rowmenu-btn--text{ width:auto; min-width:0; padding:0 14px; letter-spacing:normal; font-weight:600; font-size:13px; white-space:nowrap; }

/* ============================================================
   PTI overlay 216 — fix: rozbalovaci menu "Manage" se u spodnich
   radku orezavalo. .table ma overflow:hidden (kvuli rohum), coz
   veznilo .rowmenu-pop. Tahle tabulka (admins) ma overflow:visible,
   aby menu mohlo pretect dolu; rohy dorovnany rozsahem na bunky,
   aby nevznikl artefakt. Ostatni .table tabulky se nemeni.
   ============================================================ */
.table--menus{ overflow: visible; }
.table--menus thead th:first-child{ border-top-left-radius: var(--r-lg); }
.table--menus thead th:last-child{ border-top-right-radius: var(--r-lg); }
.table--menus tbody tr:last-child td:first-child{ border-bottom-left-radius: var(--r-lg); }
.table--menus tbody tr:last-child td:last-child{ border-bottom-right-radius: var(--r-lg); }
