/* Pokladna Dobré knihy - vzhled A (docs/plany/nova-pokladna/obrazovky-a/zdroj/style-a.md, „Závazná pravidla").
   Inline styly desek převedené na třídy; fáze 3-5 styl rozšiřují. */

/* Písma v aplikaci (R14, licence OFL) - variabilní, jeden soubor na podmnožinu pokrývá všechny řezy */
@font-face { font-family: 'Nunito'; font-style: normal; font-weight: 200 1000; font-display: swap;
	src: url(../fonts/nunito-latin-ext.woff2) format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Nunito'; font-style: normal; font-weight: 200 1000; font-display: swap;
	src: url(../fonts/nunito-latin.woff2) format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Nunito Sans'; font-style: normal; font-weight: 200 1000; font-display: swap;
	src: url(../fonts/nunito-sans-latin-ext.woff2) format('woff2');
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Nunito Sans'; font-style: normal; font-weight: 200 1000; font-display: swap;
	src: url(../fonts/nunito-sans-latin.woff2) format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

:root {
	--bg: #F4F5F3; --card: #FFFFFF; --line: #E3E5E1; --row: #ECEEEA; --head: #F8F9F7;
	--text: #1F2A24; --muted: #3C4842; --label: #55615A; --field: #D5D9D3;
	--primary: #B8520B; --focus: #E8731A; --accent-dark: #8A3D08; --glow: rgba(232,115,26,.22);
	--warm: #FFF1E3; --warm-line: #F3C79E;
	--blue: #1D4F7A; --blue-light: #E4EEF8; --blue-line: #B9D0E6;
	--green: #2E7D32; --green-text: #2E6B1F; --green-light: #EAF4E4; --green-line: #BFDDB0;
	--red: #B3261E; --red-line: #E9B4AF; --red-light: #FBEDEC; --red-solid: #C62828;
	--warn: #8A5A00; --warn-light: #FFF6DB; --warn-line: #F0D58C;
	/* fáze 4 krok 24: tyrkysová je vyhrazená JEN režimu Festival (A-Prodej-Festival) - oranžová je primární barva
	   a skupina Výprodej, takže by se s ní režim pletl (poznámka kontrol :134; style-a.md uvádí oranžovou) */
	--festival: #0B6E69; --festival-light: #E0F4F2; --festival-line: #9FD8D2;
	--off-bg: #ECEEEA; --off-text: #8A948E;
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; }
body { background: var(--bg); color: var(--text); font: 400 16px/1.4 'Nunito Sans', sans-serif; display: flex; flex-direction: column; min-height: 100vh; }
a { color: var(--primary); }
a:hover { color: var(--accent-dark); }
button, input, select { font-family: inherit; }
button { cursor: pointer; }
h1, .title { font: 800 30px/1.2 'Nunito', sans-serif; margin: 0; }
.num, .amount { font-family: 'Nunito', sans-serif; font-weight: 800; }
.muted { color: var(--label); }

/* Štítky kláves - skryté, vidět jen při držení Alt (klavesy.md zásada 2, krok 08) */
kbd { display: none; align-items: center; justify-content: center; min-width: 26px; height: 26px; padding: 0 6px;
	border: 1px solid #C9CEC7; border-bottom-width: 3px; border-radius: 6px; background: #FFFFFF; color: var(--muted);
	font: 800 13px 'Nunito Sans', sans-serif; white-space: nowrap; }
body.keys-visible kbd { display: inline-flex; }
.btn-primary kbd, .btn-blue kbd { background: rgba(255,255,255,.18); border-color: rgba(255,255,255,.35); color: #FFFFFF; }
[disabled] kbd, [aria-disabled="true"] kbd { background: var(--bg); color: var(--off-text); }

/* Hlavička 76 px (A-Ramec) */
.header { height: 76px; flex: none; background: var(--card); border-bottom: 1px solid var(--line); display: flex; align-items: center;
	gap: 20px; padding: 0 24px; white-space: nowrap; }
.header .logo { height: 46px; width: auto; display: block; }
.nav-tabs { display: flex; gap: 2px; height: 100%; align-items: stretch; }
.tab { border: none; background: none; padding: 0 14px; border-bottom: 4px solid transparent; display: flex; flex-direction: column;
	align-items: center; justify-content: center; gap: 3px; font-size: 18px; font-weight: 700; color: var(--muted); text-decoration: none; line-height: 1.2; }
.tab:hover { color: var(--text); }
.tab.is-active { border-bottom-color: var(--focus); color: var(--primary); font-weight: 800; }
.tab[aria-disabled="true"] { color: var(--off-text); cursor: default; }
.header-right { margin-left: auto; display: flex; align-items: center; gap: 14px; height: 100%; }
.header-link { height: 100%; border: none; background: none; padding: 0 6px; display: flex; flex-direction: column; align-items: center;
	justify-content: center; gap: 3px; font-size: 16px; font-weight: 800; color: var(--primary); text-decoration: none; }
.user-menu { position: relative; }
.user-menu > summary { list-style: none; height: 44px; border: 2px solid var(--field); border-radius: 12px; background: var(--card);
	font-size: 15px; font-weight: 700; padding: 0 12px; display: flex; align-items: center; gap: 8px; cursor: pointer; }
.user-menu > summary::-webkit-details-marker { display: none; }
.user-menu-items { position: absolute; right: 0; top: 50px; z-index: 20; min-width: 260px; background: var(--card); border: 1px solid var(--line);
	border-radius: 12px; box-shadow: 0 12px 30px rgba(0,0,0,.12); padding: 6px; display: flex; flex-direction: column; }
.user-menu-items a { padding: 10px 12px; border-radius: 8px; font-weight: 700; color: var(--text); text-decoration: none; }
.user-menu-items a:hover { background: var(--bg); }

/* Obsah */
.main { flex: 1; min-height: 0; padding: 16px 28px 24px; display: flex; flex-direction: column; gap: 16px; }
.card { background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 18px 22px; }
.section-label { font-size: 13px; font-weight: 800; color: var(--label); text-transform: uppercase; letter-spacing: 0.04em; }
.section-label.accent { color: var(--primary); }

/* Pole */
.field-label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; font-weight: 700; color: var(--label); }
.field { height: 48px; border: 2px solid var(--field); border-radius: 12px; padding: 0 14px; font-size: 20px; color: var(--text); background: var(--card); width: 100%; }
.field:focus { outline: none; border-color: var(--focus); box-shadow: 0 0 0 3px var(--glow); }
.field.has-error { border-color: var(--red); }

/* Tlačítka */
.btn { height: 48px; padding: 0 12px 0 14px; border-radius: 12px; border: 2px solid var(--field); background: var(--card); font-size: 16px;
	font-weight: 800; color: var(--text); display: inline-flex; align-items: center; justify-content: center; gap: 10px; text-decoration: none; white-space: nowrap; }
.btn:hover { border-color: #C9CEC7; color: var(--text); }
.btn.is-default { border-width: 3px; border-color: var(--muted); }
.btn-primary { height: 58px; border: none; border-radius: 14px; background: var(--primary); color: #FFFFFF; font-size: 18px; }
.btn-primary:hover { background: var(--accent-dark); color: #FFFFFF; }
.btn-primary.is-default { border: 3px solid var(--accent-dark); }
.btn-blue { border: none; border-radius: 14px; background: var(--blue); color: #FFFFFF; }
.btn-risk { border-color: var(--red-line); color: var(--red); }
.btn-danger { border: none; background: var(--red-solid); color: #FFFFFF; }
.btn[disabled], .btn[aria-disabled="true"] { background: var(--off-bg); border-color: var(--off-bg); color: var(--off-text); cursor: default; }
/* 🔴 Ozbrojené potvrzení: první Enter nad tlačítkem, které hýbe penězi, nic neodešle a jen vyzve
   k druhému (klavesy.js, K3-1 a K3-2). Mění se barva, velikost i text - pokladní se dívá na
   terminál, ne na obrazovku, takže výzva musí být vidět periferně. Text nese samotné tlačítko
   (span .vyzva-potvrzeni), aby zůstal čitelný i bez načteného stylu. */
.btn.je-ozbrojeno { flex-direction: column; gap: 2px; height: auto; min-height: 58px; padding: 8px 18px;
	background: var(--red-solid); border-color: var(--red-solid); color: #FFFFFF; box-shadow: 0 0 0 6px var(--warn-line); }
.btn.je-ozbrojeno kbd { display: none; }
.vyzva-potvrzeni { font-size: 15px; font-weight: 800; line-height: 1.2; }
/* 🔴 Zahozený stisk (Enter, který navázal na předchozí vstup): pokladní musí vidět, že se nestalo NIC,
   jinak mačká znovu a neví proč (klavesy.js, K5-4). Barva je varovná, ne červená jako ozbrojené
   potvrzení - nic to neozbrojuje a nesmí se to s výzvou splést. */
.hlaska-zahozeno { margin: 12px 0 0; font-size: 15px; font-weight: 800; line-height: 1.2; color: var(--warn); }
/* Zablokovaná akce pozdější fáze (R9): titulek s poznámkou, nic nespustí */
.later { position: relative; }
.later-note { font-size: 13px; font-weight: 700; color: var(--off-text); }

/* Tabulka (hlavička verzálkami) */
.list { width: 100%; border-collapse: collapse; background: var(--card); }
.list th { background: var(--head); font-size: 13px; font-weight: 800; color: var(--label); text-transform: uppercase; letter-spacing: 0.04em;
	text-align: left; padding: 10px 12px; white-space: nowrap; }
.list td { border-top: 1px solid var(--row); padding: 10px 12px; vertical-align: middle; }
.list .right { text-align: right; }
.list tr.is-closed td { color: var(--off-text); }
.list-wrap { background: var(--card); border: 1px solid var(--line); border-radius: 16px; overflow: hidden; }
[data-row] { color: inherit; font-weight: 800; }
[data-row]:focus { outline: none; }
.list tr:has([data-row]) { position: relative; }
/* klik kamkoli do řádku otevře detail (A-Vydej-Seznam). 🔴 jen odkaz v buňce seznamu: `data-row` nese i řádek košíku a výběr
   karet (fáze 4, krok 30) - roztažený pseudo-prvek by tam překryl celou obrazovku; formuláře řádku (Tisk znovu, ▲ ▼) nad ním */
.list td > a[data-row]::after { content: ''; position: absolute; inset: 0; }
.list tr:has([data-row]) form { position: relative; z-index: 1; }
/* fáze 5b U14 (R34): i odkazy a tlačítka akcí v řádku (Posunout termín, Stornovat) nad vrstvou odkazu řádku - jinak klik myší
   otevřel detail (klávesy fungovaly). Odkaz řádku sám (`a[data-row]`) zůstává pod, jeho ::after je vrstva */
.list tr:has([data-row]) td > :is(a, button):not([data-row]) { position: relative; z-index: 1; }
tr:has([data-row].is-selected) td, tr:has([data-row]:focus) td { background: var(--warm); }
tr:has([data-row].is-selected) td:first-child, tr:has([data-row]:focus) td:first-child { box-shadow: inset 4px 0 0 var(--focus); }

/* Pruh regálu, čipy */
/* hlavička detailu jako informační karta (1. 11. 2026): nahoře číslo, stav a akce, dole teplý pruh regálu s popisky údajů
   (popisek jako hlavička tabulky položek) */
.order-card { padding: 0; overflow: hidden; }
.order-card .order-head { padding: 16px 22px 14px; }
.shelf { background: var(--warm); border-top: 1px solid var(--warm-line); padding: 10px 22px 12px; display: flex; align-items: center;
	gap: 36px; white-space: nowrap; }
.shelf > svg { flex: none; color: var(--accent-dark); }
.info { display: flex; flex-direction: column; gap: 2px; }
.info-label { font-size: 12px; font-weight: 800; color: var(--label); text-transform: uppercase; letter-spacing: .04em; line-height: 1.2; }
.info-value { font-size: 17px; line-height: 30px; }
.shelf strong.code { font: 800 26px/30px 'Nunito', sans-serif; color: var(--accent-dark); }
.shelf .link-btn { font-size: 15px; }
.info-termin { margin-left: auto; align-items: flex-end; }   /* termín vpravo spolu s Posunout termín */
.info-termin .info-value { display: flex; align-items: center; gap: 14px; }
.chip { display: inline-block; border-radius: 999px; padding: 4px 12px; font-size: 15px; font-weight: 800; background: var(--blue-light); color: var(--blue); }
.chip-green { background: var(--green-light); color: var(--green-text); }
.chip-red { background: var(--red-light); color: var(--red); }
.chip-grey { background: var(--off-bg); color: var(--muted); }

/* Hlášky (A-Ramec): plná pod polem a kompaktní v kartě */
.msg { min-height: 56px; border-radius: 12px; padding: 8px 18px; display: flex; align-items: center; gap: 12px; font-size: 17px; font-weight: 700;
	border: 1px solid; overflow: hidden; }
.msg svg { flex: none; }
.msg.compact { min-height: 40px; padding: 8px 14px; gap: 10px; font-size: 15px; }
/* fáze 5b U12 (R32): zelená hláška zůstává do dalšího načtení stránky (flash platí jeden požadavek) */
.msg-success { background: var(--green-light); border-color: var(--green-line); color: var(--green-text); }
.msg-warning { background: var(--warn-light); border-color: var(--warn-line); color: var(--warn); }
.msg-error { background: var(--red-light); border-color: var(--red-line); color: var(--red); }
.msg-info { background: var(--blue-light); border-color: var(--blue-line); color: var(--blue); }
.msg-neutral { background: var(--off-bg); border-color: var(--off-bg); color: var(--muted); }

/* Dialog se závojem (fáze 3) a nápověda kláves (krok 08) */
.veil { position: fixed; inset: 0; background: rgba(31,42,36,.45); display: flex; align-items: center; justify-content: center; z-index: 50; }
.veil[hidden] { display: none; }
.dialog { background: var(--card); border-radius: 20px; box-shadow: 0 24px 60px rgba(0,0,0,.25); width: min(860px, calc(100vw - 48px));
	max-height: calc(100vh - 48px); overflow: auto; padding: 22px 26px; }
.dialog h2 { font: 800 26px/1.2 'Nunito', sans-serif; margin: 0 0 12px; }

/* Přihlášení (A-Prihlaseni) */
body.sign { align-items: center; justify-content: center; padding: 24px; }
.sign-card { width: 420px; max-width: 100%; background: var(--card); border: 1px solid var(--line); border-radius: 16px;
	box-shadow: 0 12px 30px rgba(31,42,36,.08); padding: 32px 36px 36px; display: flex; flex-direction: column; gap: 18px; }
.sign-head { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.sign-head .logo { height: 46px; width: auto; }
.sign-form { display: flex; flex-direction: column; gap: 18px; }
.sign-check { display: flex; align-items: center; gap: 12px; font-size: 16px; font-weight: 700; cursor: pointer; }
.sign-check input { width: 22px; height: 22px; accent-color: var(--primary); margin: 0; }
.sign-submit { height: 52px; width: 100%; font-size: 20px; }

/* Nápověda kláves (krok 08) - štítky v nápovědě jsou vidět vždy */
.help kbd { display: inline-flex; }
.help-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.help-cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.help-cols dl { margin: 0; display: flex; flex-direction: column; gap: 8px; }
.help-cols dt { margin-top: 6px; }
.help-cols dd { margin: 0; font-size: 15px; line-height: 1.6; }

/* Výdej - hledací řádek, prázdná obrazovka, seznam (krok 12) */
.search-row { display: flex; gap: 12px; align-items: flex-end; white-space: nowrap; }
/* Výdej: hledání a Příjem / Výdej jako bílá lišta přes celou šířku pod hlavičkou - ovládání, které k objednávce nepatří;
   objednávka začíná až pod ní na šedém pozadí (1. 11. 2026). S hláškou nad lištou se lišta jen nepřilepí k hlavičce. */
.main > form[data-search] { margin: 0 -28px; padding: 14px 28px 16px; background: var(--card); border-top: 1px solid var(--line);
	border-bottom: 1px solid var(--line); box-shadow: 0 4px 10px rgba(31, 42, 36, .04); }
.main > form[data-search]:first-child { margin-top: -16px; border-top: none; }
.main > form[data-search] + script + * { margin-top: 20px; }   /* za lištou je skript `_hledani.latte`, mezera patří obsahu za ním */
.search-row .w-number { width: 220px; flex: none; }
.search-row .w-pin { width: 110px; flex: none; }
.search-row .w-name { width: 190px; flex: none; }
/* fáze 5b U13 (R33): align-items - Nezaplacené prodejky bez rámečku svisle na střed s Příjmem a Výdejem */
.search-actions { margin-left: auto; display: flex; gap: 10px; align-items: center; }
.search-actions .btn-ghost { border-color: transparent; background: transparent; }
.empty-state { flex: 1; min-height: 220px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; text-align: center; }
.empty-icon { width: 88px; height: 88px; border-radius: 999px; background: var(--warm); color: var(--primary); display: flex; align-items: center; justify-content: center; }
.empty-main { max-width: 660px; font-size: 20px; font-weight: 700; line-height: 1.35; }
/* fáze 5 krok 19: prázdný stav Po termínu je dobrá zpráva - zeleně (R2, A-PoTerminu-Prazdny) */
.empty-main.is-ok { color: var(--green-text); }
.list-title { font: 800 20px/1.3 'Nunito', sans-serif; margin: 4px 0 0; }
.small { font-size: 13px; }
.note-missing { color: var(--primary); font-weight: 800; }
.note-print, .note-print:hover { color: var(--muted); text-decoration: none; vertical-align: middle; position: relative; z-index: 1; } /* odkaz na detail nad překryvem řádku, ať funguje title i klik */
.field::placeholder { font-size: 15px; font-weight: 600; color: var(--off-text); }

/* Výdej - detail (krok 13) */
.order-head { display: flex; flex-direction: column; gap: 6px; white-space: nowrap; }
.order-title { display: flex; align-items: center; gap: 14px; }
.order-title > .chip:last-child { margin-left: auto; }   /* stav objednávky vpravo nad odkazy hlavičky (1. 11. 2026), festival zůstává u čísla */
.title-order { font: 800 26px/1.2 'Nunito', sans-serif; overflow: hidden; text-overflow: ellipsis; }
/* číslo objednávky = odkaz do administrace (1. 11. 2026): barva nadpisu, ikona „otevřít jinde" v barvě odkazů */
.title-order .title-admin { color: inherit; text-decoration: none; vertical-align: bottom; }
.title-order .title-admin:hover { text-decoration: underline; }
.title-order .title-admin::before { width: .75em; height: .75em; background: var(--primary); }
.order-sub { display: flex; align-items: center; gap: 16px; font-size: 15px; }
.order-links { margin-left: auto; display: flex; align-items: center; gap: 22px; font-size: 15px; font-weight: 700; }
/* 1. 11. 2026: mezery dělá jen gap - obecné `.link-btn + .link-btn` (14 px) tu dávalo Stornu dvojitou mezeru. Storno
   oddělené svislou čarou jako riziková akce */
.order-links > .link-btn + .link-btn { margin-left: 0; }
.order-links > :is(.link-risk, .later:has(.link-risk)) { padding-left: 22px; border-left: 1px solid var(--line); }
.order-links a { display: inline-flex; align-items: center; gap: 6px; }
.link-btn { border: none; background: none; padding: 0; font: inherit; font-weight: 800; color: var(--primary); text-decoration: underline;
	display: inline-flex; align-items: center; gap: 6px; }
.link-btn[disabled] { color: var(--off-text); cursor: default; }
.link-risk { color: var(--red); }     /* Storno v hlavičce objednávky (1. 11. 2026); vypnuté zůstane šedé */
/* detail objednávky i prodejky: platba v levém sloupci, položky vpravo (1. 11. 2026 sjednoceno - panel vpravo dole má jen
   Prodej, kde prodejka vzniká) */
.detail-grid { display: grid; grid-template-columns: 410px minmax(0, 1fr); gap: 24px; align-items: start; }
/* detail: větší rozestupy mezi hlavičkou, regálem, pruhy a mřížkou (1. 11. 2026), jinde .main zůstává 16px */
.main:has(> .detail-grid) { gap: 24px; }
.pay-panel { display: flex; flex-direction: column; gap: 10px; }
.pay-total { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.pay-label { font-size: 17px; font-weight: 700; color: var(--label); }
.pay-amount { font-size: 52px; line-height: 1; }
.pay-status { font-size: 17px; font-weight: 800; }
.pay-breakdown { display: flex; flex-direction: column; font-size: 14px; color: var(--label); line-height: 1.35; }
.pay-reserved { color: var(--off-text); }
.pay-buttons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; border-top: 1px solid var(--row); padding-top: 10px; }
.pay-buttons .btn { height: 54px; padding: 0 8px; gap: 8px; font-size: 17px; white-space: normal; line-height: 1.15; text-align: center; }   /* „Hotově bez předání" na dva řádky */
/* platební tlačítka bez plných barev (1. 11. 2026): tónovaný podklad, rámeček a barevný text; vypnuté zůstávají šedé */
.pay-buttons :is(.btn-primary, .btn-blue):not([disabled]) { background: var(--blue-light); border: 2px solid var(--blue-line); color: var(--blue); }
.pay-buttons :is(.btn-primary, .btn-blue):not([disabled]):hover { background: #D6E6F5; border-color: var(--blue); color: var(--blue); }
.items { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.items-table td { font-size: 15px; }
.code-cell { font-size: 14px; font-weight: 700; color: var(--muted); }
.loc { font-weight: 700; white-space: nowrap; }
.loc-missing { color: var(--red); }
.stock-ok { color: var(--green); font-weight: 800; }
.stock-missing { color: var(--red); font-weight: 800; }
.item-actions { display: flex; gap: 10px; }
.item-actions .btn { height: 44px; }

/* Přidat produkt (fáze 3b krok 07): panel pod tabulkou, našeptávač a dialog výběru karty */
.pridat-panel { display: flex; flex-direction: column; gap: 10px; }
.pridat-form { display: flex; gap: 10px; align-items: flex-end; }
.pridat-pole { flex: 1; }
.naseptavac { list-style: none; margin: 0; padding: 4px; border: 1px solid var(--line); border-radius: 12px; background: var(--card);
	display: flex; flex-direction: column; gap: 2px; max-height: 420px; overflow: auto; }
.naseptavac[hidden] { display: none; }
.naseptavac-radek { padding: 8px 12px; border-radius: 8px; font-size: 15px; cursor: pointer; }
.naseptavac-radek:hover, .naseptavac-radek.is-selected { background: var(--warm); box-shadow: inset 4px 0 0 var(--focus); }
.dialog-vyber { width: min(640px, calc(100vw - 48px)); }
.vyber-seznam { display: flex; flex-direction: column; gap: 6px; max-height: 60vh; overflow: auto; }
.vyber-tlacitko { width: 100%; height: auto; min-height: 64px; padding: 8px 14px; display: grid;
	grid-template-columns: 1fr auto; gap: 2px 12px; text-align: left; white-space: normal; font-size: 16px; }
.vyber-tlacitko:focus { outline: none; box-shadow: 0 0 0 3px var(--glow); border-color: var(--focus); }
.vyber-nazev { display: flex; flex-direction: column; gap: 2px; }
.vyber-cena { justify-self: end; font-weight: 800; }
.vyber-regaly { font-size: 14px; font-weight: 700; color: var(--green-text); }
.btn-primary .vyber-regaly, .btn-primary .muted { color: #FFFFFF; }
.vyber-akce { justify-self: end; font-size: 14px; }
.vyber-akce-dole { display: flex; justify-content: flex-end; margin-top: 12px; }

/* Režim úprav (fáze 3b krok 09): pole počtů, přeškrtnutý odebraný řádek, panel regálu, ztlumená platba */
.upravy { display: flex; flex-direction: column; gap: 10px; }
.pocet { display: inline-flex; gap: 6px; align-items: center; }
.pocet-pole { width: 76px; height: 44px; font-size: 18px; text-align: right; }
.pocet-minus { height: 44px; width: 44px; padding: 0; font-size: 22px; }
.odebrat { display: none; color: var(--red); font-weight: 800; font-size: 13px; }
.je-odebrany td:not(:nth-child(4)) { text-decoration: line-through; color: var(--off-text); }
.je-odebrany .odebrat { display: block; }
.upravy-regal { flex-direction: column; align-items: stretch; }
.upravy-souhrn { margin: 0; font-weight: 800; }
.upravy-akce { display: flex; gap: 10px; }
.pay-panel.is-muted .pay-total { opacity: .55; }
/* Pruh po stornu (fáze 3b krok 10) - bez animace .msg-success: pokyn k penězům nesmí po 5 s zmizet */
.storno-pruh { flex-direction: column; align-items: flex-start; gap: 4px; background: var(--green-light);
	border-color: var(--green-line); color: var(--green-text); }
.storno-pruh strong { color: var(--red); }
.other-state { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; background: var(--off-bg); border-color: var(--off-bg); color: var(--muted); }
.other-reason { margin: 0; font-size: 17px; font-weight: 700; color: var(--text); }

/* Pokladna a trezor (krok 15) */
.cash-souhrn { display: flex; align-items: center; gap: 12px 32px; flex-wrap: wrap; }
.cash-pocet { display: flex; align-items: baseline; gap: 10px; }
.cash-amount { font-size: 28px; font-weight: 800; line-height: 1.1; }
.mirror-line { margin: 0 0 0 auto; font-size: 15px; }
.cash-actions-mezera { width: 14px; }
.cash-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.cash-actions .btn { height: 48px; }
.plus { color: var(--green); }
.minus { color: var(--red); }
.right { text-align: right; }

/* Chybové stránky (krok 16) */
.error-card { align-items: center; text-align: center; }
.error-card p { margin: 0; font-size: 17px; }
.error-card .btn { width: 100%; }
.error-icon { background: var(--red-light); color: var(--red); }

/* Dialog výsledku peněžní akce (fáze 3a, krok 05) - obrazovka A-Platba-Chyba */
.dialog-chyba { width: min(560px, calc(100vw - 48px)); position: relative; overflow: hidden; padding-top: 22px; }
.chyba-pruh { position: absolute; inset: 0 0 auto; height: 6px; background: var(--off-bg); }
.pruh-cervena .chyba-pruh { background: var(--red); }
.pruh-oranzova .chyba-pruh { background: var(--warn); }
.pruh-seda .chyba-pruh { background: var(--off-text); }
.chyba-text { display: flex; flex-direction: column; gap: 10px; margin: 0 0 18px; }
.chyba-text p { margin: 0; font-size: 17px; line-height: 1.5; }
/* 🔴 první řádek je o jistotě: podle něj pokladní bere nebo nebere peníze (R19, specifikace) */
.chyba-jistota { font-weight: 800; font-size: 19px; }
.jistota-zapsano { color: var(--green-text); }
.jistota-nezapsano { color: var(--red); }
.jistota-neznama { color: var(--muted); }
.chyba-akce { display: flex; gap: 10px; flex-wrap: wrap; }
.chyba-akce .btn { min-width: 160px; justify-content: center; }
/* výchozí tlačítko má tlustý rámeček, ať je vidět, co udělá Enter */
.chyba-akce .btn-primary { box-shadow: 0 0 0 3px var(--glow); }

/* Platba hotově (fáze 3a, krok 11) - obrazovka A-Platba-Hotove */
.pay-cash { display: flex; flex-direction: column; gap: 10px; margin: 4px 0 12px; }
.pay-cash[hidden] { display: none; }
.pay-accepted { display: flex; flex-direction: column; gap: 4px; font-size: 15px; font-weight: 700; color: var(--label); }
.amount-field { font-size: 26px; font-weight: 800; height: 56px; }
.amount-field.has-error { border-color: var(--red); background: var(--red-light); }
.pay-change { font-size: 24px; font-weight: 800; color: var(--green-text); }
.pay-quick { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.pay-quick .btn { height: 40px; min-width: 0; padding: 0 6px; justify-content: center; }
.pay-error { margin: 0; color: var(--red); font-weight: 700; font-size: 16px; }
.pay-error[hidden] { display: none; }
.pay-suplik { margin: 0; color: var(--muted); font-size: 15px; }
.pay-suplik:empty { display: none; }     /* text jen u chyby šuplíku (1. 11. 2026) */
.pay-note { margin: 4px 0 10px; padding: 10px 12px; border-radius: 12px; font-size: 16px; }
.pay-note.is-warning { background: var(--warn-light); border: 1px solid var(--warn-line); color: var(--warn); }
.btn-lg { height: 56px; font-size: 18px; font-weight: 800; }

/* Panel po zaplacení (fáze 3a, krok 12) - obrazovka A-Platba-Hotovo */
.done-panel { border-left: 6px solid var(--green); background: var(--green-light); display: flex; flex-direction: column; gap: 6px; }
.done-head { display: flex; align-items: center; gap: 10px; font-size: 20px; font-weight: 800; color: var(--green-text); }
.done-pay { font-size: 18px; font-weight: 700; }
/* 🔴 64 px (specifikace): podle téhle částky pokladní odpočítává hotovost zákazníkovi */
.done-change { font-size: 64px; line-height: 1.05; font-weight: 800; color: var(--green-text); }
.done-print { min-height: 26px; }
.chip-orange { background: var(--warn-light); color: var(--warn); }
.done-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 4px; }

/* Objednávka uhrazená předem (fáze 3a, krok 14) - obrazovka A-Vydej-Uhrazeno */
.pay-paid { font-size: 48px; line-height: 1.1; font-weight: 800; color: var(--green-text); }
.pay-paid-note { font-size: 16px; color: var(--muted); margin-bottom: 10px; }
.pay-handover { margin: 4px 0 12px; }
.btn-xl { height: 54px; font-size: 18px; font-weight: 800; width: 100%; justify-content: center; }
.btn-green { background: var(--green); border-color: var(--green); color: #fff; }

/* Dialog platby kartou (fáze 3a, krok 13) - obrazovka A-Platba-Karta */
.dialog-karta { max-width: 520px; text-align: center; }
.karta-vyzva { margin: 4px 0 0; font-size: 18px; font-weight: 700; }
.karta-castka { font-size: 64px; line-height: 1.05; font-weight: 800; margin: 4px 0; }
.karta-akce { display: flex; gap: 10px; justify-content: center; align-items: center; margin-top: 12px; }
.chyba-potvrzeni { display: contents; }

/* Pruh nedokončených akcí (fáze 3a, krok 18) */
.nedokoncene { border-left: 6px solid var(--warn); background: var(--warn-light); }
.nedokoncene-head { display: flex; align-items: center; gap: 8px; font-size: 16px; color: var(--warn); }
.nedokoncene-list { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.nedokoncene-list li { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: space-between; }
.nedokoncene-popis { font-size: 15px; }
.nedokoncene-akce { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.nedokoncene-akce .btn { height: 36px; font-size: 14px; }

/* Přeplatek a dialog vratky (fáze 3a, krok 15) */
.pay-refund { grid-template-columns: 1fr; }   /* přeplatek: vratka a Předat pod sebou přes celou šířku (1. 11. 2026) */
.dialog-vratka { max-width: 600px; }
.vratka-castka { font-size: 64px; line-height: 1.05; font-weight: 800; margin: 4px 0; text-align: center; }
.vratka-pole { display: flex; flex-direction: column; gap: 4px; font-size: 15px; font-weight: 700; color: var(--label); margin-bottom: 10px; }
.vratka-info { margin: 0 0 10px; color: var(--muted); }
.vratka-akce { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }

/* Vydaná a stornovaná objednávka (fáze 3a, krok 16) */
.pay-closed-note { font-size: 16px; margin: 6px 0 10px; }
.pay-refunds { display: flex; flex-direction: column; gap: 4px; font-size: 14px; color: var(--muted); margin-top: 8px; }

/* Čip a dialog tiskové stanice (fáze 3a, krok 17) */
.header-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; font-size: 14px; font-weight: 700; text-decoration: none; }
.header-chip.is-online { background: var(--green-light); color: var(--green-text); }
.header-chip.is-offline { background: var(--warn-light); color: var(--warn); }
.header-chip.is-prodejna { background: var(--green-light); color: var(--green-text); }
.header-chip.is-festival { background: var(--festival); color: #FFFFFF; font-weight: 800; letter-spacing: .5px; }
.festival-pruh { min-height: 40px; display: flex; align-items: center; gap: 12px; padding: 8px 16px; margin-bottom: 12px;
	border: 1px solid var(--festival-line); border-radius: 8px; background: var(--festival-light); color: var(--festival); font-weight: 700; }
.header-chip .dot { width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.dialog-tisk { max-width: 560px; }

/* Zvoneček nedokončených akcí v hlavičce a jeho dialog (18. 10. 2026) */
.header-bell { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px;
	border-radius: 12px; color: var(--off-text); text-decoration: none; }
.header-bell:hover { background: var(--bg); }
.header-bell.is-active { color: var(--warn); }
.bell-count { position: absolute; top: 0; right: -4px; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 999px;
	background: var(--primary); color: #FFFFFF; font-size: 12px; font-weight: 800; line-height: 22px; text-align: center; }
.dialog-akce { width: min(1440px, calc(100vw - 48px)); }
.dialog-akce .list td { font-size: 15px; white-space: nowrap; }
.dialog-akce .list td:last-child { white-space: normal; }
.dialog-akce .nedokoncene-akce { justify-content: flex-end; }
.dialog-akce .nedokoncene-akce .btn { height: 34px; padding: 0 10px; font-size: 13px; }

/* Stránkování tabulek (vzor @strankovani.latte) */
.strankovani { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.strankovani .btn { height: 36px; min-width: 36px; padding: 0 10px; font-size: 14px; }
.strankovani .btn.is-current { border-color: var(--focus); color: var(--primary); }
.strankovani-mezera { color: var(--label); padding: 0 2px; }
.strankovani-info { color: var(--label); font-size: 14px; margin-left: 8px; }
.tisk-stav { font-weight: 700; margin: 0 0 8px; }
.tisk-stav.is-online { color: var(--green-text); }
.tisk-stav.is-offline { color: var(--warn); }
.tisk-ulohy { list-style: none; margin: 0 0 10px; padding: 0; display: flex; flex-direction: column; gap: 6px; font-size: 14px; }
.tisk-ulohy li { display: flex; gap: 8px; align-items: center; justify-content: space-between; }
.tisk-ulohy .btn { height: 32px; font-size: 13px; }
.tisk-akce { display: flex; justify-content: flex-end; }

/* Dialog storna (fáze 3b krok 11) */
.dialog-storno { width: min(640px, calc(100vw - 48px)); }
.storno-varovani { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; }
.storno-varovani p { margin: 0; }
.storno-form { display: flex; flex-direction: column; gap: 10px; }
.storno-akce { display: flex; justify-content: flex-end; gap: 10px; }
/* Volby e-mailu ve stornu Po termínu (A-PoTerminu-Storno): přepínač vlevo, název a popis pod sebou */
.storno-volby { border: none; padding: 0; margin: 0 0 12px; }
.storno-volby legend { padding: 0; margin-bottom: 6px; }
.storno-volba { display: flex; align-items: center; gap: 14px; min-height: 56px; padding: 6px 14px; border: 2px solid var(--field);
	border-radius: 12px; background: var(--card); cursor: pointer; }
.storno-volba input { width: 22px; height: 22px; flex: none; margin: 0; accent-color: var(--primary); }
.storno-volba > span { display: flex; flex-direction: column; gap: 1px; }
.storno-volba strong { font-size: 17px; font-weight: 800; }
.storno-volba:has(:checked) { border-color: var(--focus); background: #FFF8F1; }
.storno-volba:has(:disabled) { border-color: var(--off-bg); background: var(--off-bg); cursor: default; }

/* Dialog dárkového poukazu (fáze 3b krok 14) */
.dialog-poukaz { width: min(640px, calc(100vw - 48px)); }
.poukaz-karta { flex-direction: column; align-items: flex-start; gap: 4px; background: var(--green-light); border-color: var(--green-line); color: var(--green-text); }
.poukaz-duvod { margin: 0; color: var(--red); font-weight: 800; }
.poukaz-overit { display: flex; flex-direction: column; gap: 8px; }
.poukaz-akce { display: flex; justify-content: flex-end; gap: 10px; margin-top: 10px; }

/* Fáze 3c - dialog Příjem / Výdej (A-Pokladna-PrijemVydej) a Přidat platbu (A-Platba-Rucni); šířka podle style-a */
.dialog-pohyb { width: min(640px, calc(100vw - 48px)); }
.pohyb-sub { margin: -6px 0 12px; }
.pohyb-typ { display: flex; gap: 22px; margin-bottom: 12px; font-size: 17px; font-weight: 700; }
.pohyb-typ label { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; }
.pohyb-typ input { width: 20px; height: 20px; accent-color: var(--primary); margin: 0; }
.pohyb-objednavka { margin: 0 0 6px; font-size: 17px; }
.pohyb-pozor { margin: 0 0 10px; font-size: 14px; font-weight: 700; color: var(--primary); }
.dialog-pohyb:has(input[name="typ"][value="in"]:checked) [data-jen-vydej] { display: none; }
.pole-chyba { margin: -6px 0 10px; font-size: 14px; font-weight: 700; color: var(--red); }
.msg-akce { margin-left: auto; height: 40px; }

/* Fáze 3c - zrcadlo a přesun do trezoru (tabulka nominálů), výsledek zrcadla */
.zrcadlo-head { display: flex; flex-direction: column; gap: 2px; }
.zrcadlo-form { display: flex; flex-direction: column; gap: 14px; }
.nominaly-bloky { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.nominaly-blok { display: flex; flex-direction: column; gap: 6px; }
.nominal-radek { display: grid; grid-template-columns: 110px 80px minmax(0, 1fr); gap: 10px; align-items: center; }
.nominal { font-size: 18px; font-weight: 800; text-align: right; }
.nominal-pole { height: 44px; font-size: 20px; text-align: right; padding: 0 10px; }
.nominal-mezisoucet { font-size: 15px; }
.nominal-radek .pole-chyba { grid-column: 2 / -1; margin: 0; }
.zrcadlo-souhrn { display: flex; align-items: baseline; justify-content: flex-end; gap: 14px; }
.zrcadlo-soucet { font-size: 36px; }
.zrcadlo-vysledek { display: flex; flex-direction: column; gap: 10px; border-left: 6px solid var(--muted); }
.zrcadlo-vysledek.is-sedi { border-left-color: var(--green); }
.zrcadlo-vysledek.is-chybi { border-left-color: var(--red); }
.zrcadlo-vysledek.is-prebyva { border-left-color: var(--green); }
.zrcadlo-hodnoty { display: flex; gap: 28px; flex-wrap: wrap; }
.zrcadlo-hodnoty > div { display: flex; flex-direction: column; gap: 2px; }
.zrcadlo-narovnani { display: flex; flex-direction: column; gap: 8px; max-width: 640px; }
.zrcadlo-stav { font-size: 17px; font-weight: 700; }
.trezor-smer { display: flex; gap: 10px; margin-top: 6px; }
.trezor-souhrn { display: flex; gap: 28px; justify-content: flex-end; flex-wrap: wrap; }
.trezor-souhrn > div { display: flex; flex-direction: column; gap: 2px; align-items: flex-end; }

/* fáze 4 krok 12: záložka Prodej - pole EAN 460 px (A-Prodej-Prazdny), košík a patička s celkem */
.prodej-row .w-ean { width: 460px; }
.kosik-regal { font-size: 17px; }
/* patička košíku jako platební panel Výdeje (1. 11. 2026): vpravo dole, zvednutá; prvky přeskládá mřížka bez změny HTML */
.kosik { display: flex; flex-direction: column; }
.kosik-paticka { align-self: flex-end; width: min(460px, 100%); margin-top: 18px; position: sticky; bottom: 16px; z-index: 5;
	background: var(--card); border: 1px solid var(--line); border-radius: 16px; padding: 18px 22px; box-shadow: 0 14px 36px rgba(31, 42, 36, .16);
	display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "pocet castka" "vytvorit vytvorit" "vyprazdnit ."; align-items: center; gap: 12px 14px; }
.kosik-paticka > span { grid-area: pocet; color: var(--label); font-weight: 700; }
.kosik-paticka > .kosik-celkem { grid-area: castka; text-align: right; }
.kosik-paticka > form { grid-area: vytvorit; }
.kosik-paticka > form .btn { width: 100%; }
.kosik-paticka > a.btn { grid-area: vyprazdnit; justify-self: start; height: 38px; font-size: 14px; }   /* vedlejší akce menší než Vytvořit */
.kosik-celkem { font-size: 40px; line-height: 1; }

/* fáze 4 krok 13: tlačítka řádku košíku (− počet +, ×) - formuláře v buňce tabulky */
.inline-form { display: inline-flex; align-items: center; gap: 6px; margin: 0; }
.btn-small { min-width: 28px; height: 28px; padding: 0 6px; font-size: 15px; }
.kosik-pocet .kosik-ks { min-width: 2ch; text-align: center; font-weight: 700; }

/* mřížka rychlých tlačítek oddělená od košíku čarou (1. 11. 2026) */
.kosik ~ .tlacitka { margin-top: 14px; padding-top: 16px; border-top: 2px solid var(--line); }
.prodej-nenalezeno { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.prodej-nenalezeno p { margin: 0; }
.prodej-lista { justify-content: flex-end; }
.kosik-tabulka td { padding-top: 8px; padding-bottom: 8px; }
.kosik-produkt { display: flex; flex-direction: column; gap: 2px; }
.nahled-bez { background: var(--bg-muted, #F1F3F5); border-radius: 6px; }
/* fáze 5b U2: obrázek u položky detailu (64 × 96, R24) */
.polozka-produkt { display: flex; align-items: center; gap: 12px; }
.polozka-obrazek { width: 64px; height: 96px; object-fit: contain; flex: none; }

/* fáze 4 krok 15: řádek, kterému po jisté chybě chybí kus (A-Prodej-Chyba), a košík během zakládání prodejky */
.kosik-tabulka tr.is-error td { background: var(--red-light); }
.kosik-tabulka tr.is-error strong { color: var(--red); }
.kosik.is-locked { opacity: .55; pointer-events: none; }

/* fáze 4 krok 16: prodejka ve Výdeji - umístění tučně, štítek Festivalu (tyrkysová je vyhrazená režimu, A-Prodej-Festival) */
.items-prodejka .loc { font-size: 17px; font-weight: 800; }
.chip-festival { background: #D7F5F2; color: #0B6E66; }
.prodejka-pruh { flex-wrap: wrap; gap: 4px 16px; }

/* fáze 4 krok 20: rychlá tlačítka (A-Tlacitka-Stavy, style-a.md „Dlaždice", „Barvy skupin", „Stavy dlaždic") */
.tlacitka { display: flex; flex-direction: column; gap: 6px; }
.tlacitka-mrizka { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px 8px; }   /* 3 na řádek (1. 11. 2026) */
.dlazdice-form { margin: 0; min-width: 0; }
.dlazdice { width: 100%; height: 56px; min-width: 0; box-sizing: border-box; border: 1px solid var(--field); border-radius: 10px;
	background: var(--card); box-shadow: inset 6px 0 0 var(--skupina, var(--field)); color: var(--text); display: flex;
	flex-direction: column; justify-content: center; gap: 3px; padding: 0 10px 0 14px; text-align: left; font: inherit;
	cursor: pointer; text-decoration: none; }
.dlazdice:focus-visible { outline: 3px solid var(--glow); border-color: var(--focus); }
.dlazdice-radek { display: flex; align-items: center; gap: 8px; min-width: 0; }
.dlazdice-nazev { font-size: 14px; font-weight: 800; line-height: 1.15; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dlazdice-spodek { justify-content: space-between; line-height: 18px; white-space: nowrap; }
.dlazdice-cena { font-size: 14px; font-weight: 700; color: var(--muted); }
.dlazdice-zasoba { font-size: 12px; font-weight: 700; color: var(--label); }
.skupina-obaly { --skupina: #2E7D32; }
.skupina-vyprodej { --skupina: #E8731A; }
.skupina-poukazy { --skupina: #1D4F7A; }
.skupina-ostatni { --skupina: #7B4FA6; }
.dlazdice.is-malo .dlazdice-zasoba { background: #FFD84D; color: var(--text); border-radius: 5px; padding: 0 5px; }
.dlazdice.is-vyprodano, .dlazdice.is-mimoFestival { color: var(--off-text);
	background: repeating-linear-gradient(135deg, var(--card) 0 6px, var(--row) 6px 9px); }
.dlazdice.is-vyprodano .dlazdice-cena, .dlazdice.is-mimoFestival .dlazdice-cena { text-decoration: line-through; color: var(--off-text); }
.dlazdice.is-prazdne { border: 2px dashed #C9CEC7; box-shadow: none; background: transparent; color: var(--label); }
.tlacitka.is-ztlumeno .tlacitka-mrizka { opacity: .4; }
.tlacitka.is-ztlumeno .dlazdice { cursor: default; }
/* krok 21: kompaktní mřížka ve Výdeji (36 px, jeden řádek) */
.tlacitka.is-kompaktni .dlazdice { height: 36px; flex-direction: row; align-items: center; justify-content: space-between; gap: 8px; }
.tlacitka.is-kompaktni .dlazdice-spodek { gap: 8px; }
/* fáze 5b U6: v detailu je mřížka v pravém sloupci pod Přidat produkt - nesmí ho roztáhnout (okno 1366 px) */
.items .tlacitka { min-width: 0; }
/* změřeno 31. 10. 2026: při 150 px přetékala zásoba dlaždice (1400 px), 250 px se vejde. Od 1. 11. 2026 pevně 3 na řádek
   i na širokém okně (sloupec při 1366 px má ~280 px na dlaždici). Obsah dlaždice nikdy nevyleze ven (overflow) */
.items .dlazdice { overflow: hidden; }

/* fáze 4 krok 22: Nastavení - Rychlá tlačítka (A-Tlacitka-Sprava) */
.nastaveni { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 24px; }
.nastaveni-menu { display: flex; flex-direction: column; gap: 4px; }
.nastaveni-menu a { padding: 10px 14px; border-radius: 10px; color: var(--muted); font-weight: 800; text-decoration: none; }
.nastaveni-menu a.is-active { background: var(--warm); color: var(--primary); }
.nastaveni-nadpis { font: 800 26px/1.2 'Nunito', sans-serif; margin: 0 0 4px; }
.nastaveni-akce { display: flex; gap: 6px; align-items: center; }
.nastaveni-akce form { margin: 0; }
.nastaveni-akce .btn { height: 40px; }
.skupina-pruh { display: inline-block; width: 6px; height: 18px; border-radius: 3px; background: var(--skupina); margin-right: 8px; vertical-align: middle; }

/* fáze 4 krok 23: úprava tlačítka (A-Tlacitka-Upravit) */
.tlacitko-nahled { display: flex; flex-direction: column; gap: 4px; margin: 12px 0; }
.tlacitko-form { display: flex; flex-direction: column; gap: 12px; max-width: 640px; }
.tlacitko-skupiny { border: none; padding: 0; margin: 0; display: flex; gap: 16px; flex-wrap: wrap; }
.tlacitko-akce { display: flex; gap: 10px; align-items: center; }

/* fáze 4 krok 26: karta Nenalezeno v režimu Festival a text režimu v řádku pole EAN (barvy --festival* z kroku 24) */
.nenalezeno-festival { background: var(--festival-light); border-color: var(--festival-line); color: var(--festival); }

/* fáze 5 krok 21: dialog Posunout termín (A-PoTerminu-Posunout) */
.dialog-termin { width: min(600px, 100%); display: flex; flex-direction: column; gap: 12px; }
/* fáze 5b U8: hlavička bez dvojích okrajů (h2 margin + gap), volby pod sebou, popis vlevo a datum vpravo */
.dialog-termin h2, .dialog-termin p { margin: 0; }
.termin-volby { display: flex; flex-direction: column; gap: 6px; }
.termin-volba { display: flex; justify-content: space-between; width: 100%; }
.termin-email { display: flex; align-items: center; gap: 8px; }
.akce-radku { white-space: nowrap; }
.link-btn + .link-btn { margin-left: 14px; }     /* s ikonou by dva odkazy vedle sebe splývaly (1. 11. 2026) */

/*
 * Ikony akcí na tlačítkách (1. 11. 2026, sada Lucide jako ikony hlavičky). Kreslí je CSS podle atributů, které tlačítka už mají:
 * klávesová zkratka má v pokladně pevný význam (klavesy.md - Alt+I příjem, Alt+S storno, Alt+T tisk …), potvrzení (Alt+Enter,
 * dvojí Enter) má fajfku a odkaz do administrace (target=_blank) ikonu „otevřít jinde“. HTML tlačítek se zkratkou se nemění - testy
 * hlídají jejich přesné značky. Ikonu kreslí ::before barvou textu (i bílé na barevném tlačítku, šedé na vypnutém).
 * Akce bez zkratky nese ikonu výslovně (`data-ikona="tisk"` jako poslední atribut). Zpět, Zavřít a stránkování ikonu nemají.
 * ponytail: ikona podle zkratky závisí na pevném významu písmen v klavesy.md - nové písmeno = nové pravidlo tady.
 * Ikona = SVG Lucide (viewBox 24, stroke 2.2) jako data URI v --ikona, nová ikona = další pravidlo stejného tvaru.
 */
:is(.btn, .link-btn, .order-links a)::before { flex: none; width: 1.15em; height: 1.15em; background: currentColor;
	-webkit-mask: var(--ikona) center / contain no-repeat; mask: var(--ikona) center / contain no-repeat; }
.btn.je-ozbrojeno::before { display: none; }   /* ozbrojené potvrzení je sloupec s výzvou - ikona by stála nad textem */
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyI"]::before,
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyL"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="prijem"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M8 12h8M12 8v8'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyV"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="vydej"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M8 12h8'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyZ"]:not([data-chyba-akce])::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="zrcadlo"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='16' height='20' x='4' y='2' rx='2'/%3E%3Cpath d='M8 6h8M16 14v4M16 10h.01M12 10h.01M8 10h.01M12 14h.01M8 14h.01M12 18h.01M8 18h.01'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyQ"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="do-trezoru"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyW"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="z-trezoru"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='11' x='3' y='11' rx='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 9.9-1'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyS"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="storno"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m4.9 4.9 14.2 14.2'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyU"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="upravit"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497zM15 5l4 4'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyA"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="pridat"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyR"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="rozdelit"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 3h5v5M8 3H3v5M12 22v-8.3a4 4 0 0 0-1.172-2.872L3 3M15 9l6-6'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyT"]::before,
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyY"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="tisk"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6'/%3E%3Crect x='6' y='14' width='12' height='8' rx='1'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyJ"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="termin"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2v4M16 2v4M3 10h18'/%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyP"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="poukaz"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='8' width='18' height='4' rx='1'/%3E%3Cpath d='M12 8v13M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyH"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="hotove"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='12' x='2' y='6' rx='2'/%3E%3Ccircle cx='12' cy='12' r='2'/%3E%3Cpath d='M6 12h.01M18 12h.01'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyK"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="kartou"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='14' x='2' y='5' rx='2'/%3E%3Cpath d='M2 10h20'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyB"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="nezaplacene"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1ZM16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8M12 17.5v-11'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyX"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="vyprazdnit"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2M10 11v6M14 11v6'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+KeyO"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="otevrit"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-hotkey="Alt+Enter"]::before,
:is(.btn, .link-btn, .order-links a)[data-dvojity-enter]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="potvrdit"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[href*="do=zkontrolovat"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="zkontrolovat"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[data-ikona="regal"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73zM12 22V12M3.3 7l7.703 4.734a2 2 0 0 0 1.994 0L20.7 7M7.5 4.27l9 5.15'/%3E%3C/svg%3E"); }
:is(.btn, .link-btn, .order-links a)[target="_blank"]::before,
:is(.btn, .link-btn, .order-links a)[data-ikona="administrace"]::before { content: ''; --ikona: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6M10 14 21 3M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E"); }
