*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*/

/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box;
  /* 1 */
  border-width: 0;
  /* 2 */
  border-style: solid;
  /* 2 */
  border-color: #e5e7eb;
  /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
  -moz-tab-size: 4;
  /* 3 */
  -o-tab-size: 4;
     tab-size: 4;
  /* 3 */
  font-family: "IBM Plex Sans", -apple-system, "Segoe UI", Roboto, sans-serif;
  /* 4 */
  font-feature-settings: normal;
  /* 5 */
  font-variation-settings: normal;
  /* 6 */
  -webkit-tap-highlight-color: transparent;
  /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0;
  /* 1 */
  line-height: inherit;
  /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0;
  /* 1 */
  color: inherit;
  /* 2 */
  border-top-width: 1px;
  /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  /* 1 */
  font-feature-settings: normal;
  /* 2 */
  font-variation-settings: normal;
  /* 3 */
  font-size: 1em;
  /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0;
  /* 1 */
  border-color: inherit;
  /* 2 */
  border-collapse: collapse;
  /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
  /* 1 */
  font-feature-settings: inherit;
  /* 1 */
  font-variation-settings: inherit;
  /* 1 */
  font-size: 100%;
  /* 1 */
  font-weight: inherit;
  /* 1 */
  line-height: inherit;
  /* 1 */
  letter-spacing: inherit;
  /* 1 */
  color: inherit;
  /* 1 */
  margin: 0;
  /* 2 */
  padding: 0;
  /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button;
  /* 1 */
  background-color: transparent;
  /* 2 */
  background-image: none;
  /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/

dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1;
  /* 1 */
  color: #9ca3af;
  /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1;
  /* 1 */
  color: #9ca3af;
  /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/

:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block;
  /* 1 */
  vertical-align: middle;
  /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */

[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}

:root {
  --bg: #F3F5F7;
  --surface: #FFFFFF;
  --surface-2: #F8F9FB;
  --surface-3: #EEF1F4;
  --ink: #1B2430;
  --ink-2: #3D4854;
  --muted: #6B7683;
  --line: #DFE4EA;
  --line-2: #C7CFD8;
  --brand: #6B2D5C;
  --brand-dark: #55234A;
  --brand-soft: #F3E8F0;
  --brand-line: #D6B4CB;
  --zel: #2E7D4F;
  --zel-soft: #E2F1E7;
  --zel-line: #A5D2B6;
  --mod: #2F6BC5;
  --mod-soft: #E4ECF9;
  --mod-line: #A8C2EA;
  --ucit: #5B6B7C;
  --ucit-soft: #E9EDF1;
  --ok: #2E7D4F;
  --ok-soft: #E2F1E7;
  --warn: #8F6210;
  --warn-soft: #FBF0D9;
  --warn-line: #E6C97C;
  --bad: #B23A3A;
  --bad-soft: #F9E4E4;
  --bad-line: #E6A9A9;
  --star: #D69E2E;
  --r: 6px;
  --r-card: 10px;
  --shadow-pop: 0 10px 28px rgba(27, 36, 48, .16), 0 1px 3px rgba(27, 36, 48, .08);
  --hatch: repeating-linear-gradient(135deg, transparent 0 6px, rgba(27, 36, 48, .05) 6px 7px);
  /* Aliasy pro starší šablony – jedna paleta, žádné druhé barvy. */
  --barva-text: var(--ink);
  --barva-tlumena: var(--muted);
  --barva-podklad: var(--bg);
  --barva-panel: var(--surface);
  --barva-ram: var(--line);
  --barva-hlavni: var(--brand);
  --barva-hlavni-tmava: var(--brand-dark);
  --barva-hlavni-svetla: var(--brand-soft);
  --barva-hlavni-100: #EAD9E5;
  --barva-ok: var(--ok);
  --barva-ok-podklad: var(--ok-soft);
  --barva-varovani: var(--warn);
  --barva-varovani-podklad: var(--warn-soft);
  --barva-chyba: var(--bad);
  --barva-chyba-podklad: var(--bad-soft);
  --barva-tip: var(--mod);
  --barva-tip-podklad: var(--mod-soft);
  --radius: var(--r-card);
  --radius-mensi: var(--r);
  --stin: none;
  --stin-vysoky: var(--shadow-pop);
}

html {
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  font-family: "IBM Plex Sans", -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: 15px;
  line-height: 1.45;
  color: var(--ink);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
}

button, input, select, textarea {
  font: inherit;
  color: inherit;
}

button {
  cursor: pointer;
}

a {
  color: var(--brand);
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

:focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
  border-radius: 4px;
}

p {
  margin: revert;
}

ul, ol {
  list-style: revert;
  margin: revert;
  padding: revert;
}

h1, h2, h3 {
  margin: 0;
  font-weight: 600;
  letter-spacing: -.01em;
  color: var(--ink);
}

h1 {
  font-size: 24px;
  line-height: 1.2;
}

h2 {
  font-size: 17px;
  margin: 22px 0 10px;
}

h3 {
  font-size: 15px;
  margin: 14px 0 6px;
}

h2:first-child, h3:first-child {
  margin-top: 0;
}

[hidden] {
  display: none !important;
}

/* ---------- pomocné ---------- */

.num {
  font-variant-numeric: tabular-nums;
}

.muted {
  color: var(--muted);
}

.small {
  font-size: 13px;
}

.male {
  font-size: 12.5px;
  color: var(--muted);
}

.frm-c {
  display: contents;
}

/* formulář, který nemá ovlivnit layout rodiče */

.vlozeny-formular {
  display: inline;
  margin: 0;
}

.skryte {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.obal {
  max-width: 1320px;
  margin: 0 auto;
  padding: 0 24px;
}

/* ---------- app bar ---------- */

.app {
  position: sticky;
  top: 0;
  z-index: 30;
  background: var(--surface);
  border-bottom: 1px solid var(--line);
}

.app-in {
  display: flex;
  align-items: center;
  gap: 22px;
  height: 56px;
}

.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  font-weight: 600;
  font-size: 16px;
  color: var(--ink);
  text-decoration: none;
  white-space: nowrap;
}

.brand:hover {
  text-decoration: none;
}

.brand i {
  width: 22px;
  height: 22px;
  border-radius: 6px;
  background: var(--brand);
  display: inline-grid;
  place-items: center;
  flex: none;
}

.brand i::after {
  content: "";
  width: 10px;
  height: 10px;
  border-radius: 50% 50% 50% 0;
  background: #fff;
  transform: rotate(-45deg);
}

.brand small {
  color: var(--muted);
  font-weight: 400;
  font-size: 13px;
  margin-left: 2px;
}

.nav {
  display: flex;
  align-items: center;
  gap: 2px;
  height: 100%;
}

.nav > a, .nav > details > summary {
  position: relative;
  height: 56px;
  padding: 0 12px;
  font-weight: 500;
  font-size: 15px;
  color: var(--ink-2);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  list-style: none;
  cursor: pointer;
  white-space: nowrap;
  text-decoration: none;
}

.nav > details > summary::-webkit-details-marker {
  display: none;
}

.nav > a:hover, .nav > details > summary:hover {
  color: var(--ink);
  text-decoration: none;
}

.nav > a.on, .nav > details.on > summary {
  color: var(--ink);
}

.nav > a.on::after, .nav > details.on > summary::after {
  content: "";
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: -1px;
  height: 2px;
  background: var(--brand);
}

.nav details {
  position: relative;
  height: 100%;
}

.nav summary svg {
  width: 12px;
  height: 12px;
}

.dd {
  position: absolute;
  top: 56px;
  left: 0;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  box-shadow: var(--shadow-pop);
  padding: 6px;
  min-width: 240px;
  z-index: 40;
  animation: dd-najeti .12s ease;
}

@keyframes dd-najeti {
  from {
    opacity: 0;
    transform: translateY(-3px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

.dd.dd-right {
  left: auto;
  right: 0;
}

.dd a, .dd button {
  display: flex;
  width: 100%;
  text-align: left;
  padding: 8px 12px;
  border-radius: var(--r);
  font-size: 14.5px;
  gap: 8px;
  align-items: center;
  color: var(--ink);
  text-decoration: none;
  background: none;
  border: 0;
  white-space: nowrap;
}

.dd a:hover, .dd button:hover {
  background: var(--surface-3);
  text-decoration: none;
}

.dd a.on {
  background: var(--brand-soft);
  color: var(--brand);
}

.dd .dd-h {
  font-size: 12px;
  color: var(--muted);
  padding: 8px 12px 4px;
  border-top: 1px solid var(--line);
  margin-top: 4px;
}

.dd .lock {
  margin-left: auto;
  font-size: 11px;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: 4px;
  padding: 0 5px;
}

.dd .danger {
  color: var(--bad);
}

.who {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: 14px;
  color: var(--ink-2);
}

.who .av {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--surface-3);
  display: grid;
  place-items: center;
  font-size: 12px;
  font-weight: 600;
  color: var(--ink-2);
  flex: none;
}

.who a, .who button.lnk {
  color: var(--muted);
  text-decoration: none;
  background: none;
  border: 0;
  padding: 0;
  font-size: 14px;
}

.who a:hover, .who button.lnk:hover {
  color: var(--ink);
  text-decoration: underline;
}

.who details {
  position: relative;
}

.who summary {
  list-style: none;
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
}

.who summary::-webkit-details-marker {
  display: none;
}

.who .dd {
  top: 40px;
}

main.obsah {
  padding: 22px 24px 80px;
}

main.obsah-rodic {
  max-width: 640px;
}

.paticka {
  padding: 0 24px 32px;
  color: var(--muted);
  font-size: 13px;
  max-width: 1320px;
  margin: 0 auto;
}

.paticka a {
  color: var(--muted);
  text-decoration: underline;
}

@media (max-width: 1000px) {
  .who .who-name, .who > a {
    display: none;
  }

  .nav > a, .nav > details > summary {
    padding: 0 9px;
    font-size: 14px;
  }
}

@media (max-width: 760px) {
  .app-in {
    height: auto;
    flex-wrap: wrap;
    padding: 8px 0;
    gap: 8px 16px;
  }

  .nav {
    order: 3;
    width: 100%;
    overflow-x: auto;
    height: 44px;
  }

  .nav > a, .nav > details > summary {
    height: 44px;
  }

  .dd {
    top: 44px;
  }

  .app {
    position: static;
  }

  main.obsah {
    padding: 16px 14px 60px;
  }
}

/* ---------- hlavička stránky ---------- */

.ph {
  display: flex;
  align-items: flex-start;
  gap: 20px;
  flex-wrap: wrap;
  margin-bottom: 18px;
}

.ph .ttl {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.ph .ttl .ctx, .podnadpis {
  color: var(--muted);
  font-size: 14px;
  margin: 0;
}

.podnadpis {
  margin: 6px 0 18px;
}

.ph .acts {
  margin-left: auto;
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

.denni-hlavicka {
  display: flex;
  align-items: flex-start;
  gap: 20px;
  flex-wrap: wrap;
  margin-bottom: 18px;
}

.denni-hlavicka .podnadpis {
  margin-bottom: 0;
}

.denni-navigace {
  margin-left: auto;
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

/* ---------- ovládací prvky ---------- */

.btn, .tlacitko {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 36px;
  padding: 0 14px;
  border-radius: var(--r);
  font-weight: 500;
  font-size: 14.5px;
  background: var(--ink);
  color: #fff;
  border: 1px solid var(--ink);
  white-space: nowrap;
  text-decoration: none;
  cursor: pointer;
  line-height: 1;
  transition: background .12s ease, border-color .12s ease;
}

.btn:hover, .tlacitko:hover {
  background: #2A3644;
  text-decoration: none;
  color: #fff;
}

.btn:disabled, .tlacitko:disabled {
  background: var(--surface-3);
  border-color: var(--surface-3);
  color: var(--muted);
  cursor: not-allowed;
}

.btn.sec, .tlacitko-tiche {
  background: var(--surface);
  color: var(--ink);
  border-color: var(--line-2);
}

.btn.sec:hover, .tlacitko-tiche:hover {
  background: var(--surface-2);
  color: var(--ink);
}

.btn.sec:disabled {
  background: var(--surface-2);
  color: var(--muted);
  border-color: var(--line);
}

.btn.ghost {
  background: transparent;
  border-color: transparent;
  color: var(--ink-2);
}

.btn.ghost:hover {
  background: var(--surface-3);
  color: var(--ink);
}

.btn.sm, .tlacitko-male {
  height: 30px;
  padding: 0 10px;
  font-size: 13.5px;
}

.btn svg {
  width: 16px;
  height: 16px;
  flex: none;
}

.btn.danger, .tlacitko-smazat {
  color: var(--bad);
}

.tlacitko-smazat {
  background: var(--surface);
  border-color: var(--bad-line);
}

.tlacitko-smazat:hover {
  background: var(--bad-soft);
  color: var(--bad);
}

.seg {
  display: inline-flex;
  background: var(--surface);
  border: 1px solid var(--line-2);
  border-radius: var(--r);
  padding: 2px;
  gap: 2px;
}

.seg > a, .seg > button, .seg > form > button {
  height: 30px;
  padding: 0 12px;
  border-radius: 4px;
  font-size: 14px;
  font-weight: 500;
  color: var(--ink-2);
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  background: none;
  border: 0;
  white-space: nowrap;
}

.seg > a:hover, .seg > button:hover, .seg > form > button:hover {
  color: var(--ink);
  text-decoration: none;
}

.seg > .on, .seg > form > .on {
  background: var(--ink);
  color: #fff;
}

.seg > .on:hover, .seg > form > .on:hover {
  color: #fff;
}

.seg.soft > .on, .seg.soft > form > .on {
  background: var(--surface-3);
  color: var(--ink);
}

.seg.soft > .on:hover, .seg.soft > form > .on:hover {
  color: var(--ink);
}

.field {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 36px;
  padding: 0 10px;
  border: 1px solid var(--line-2);
  border-radius: var(--r);
  background: var(--surface);
  font-size: 14px;
  margin: 0;
  font-weight: 400;
  color: var(--ink);
}

.field input, .field select {
  border: 0 !important;
  outline: 0;
  background: transparent;
  min-width: 0;
  width: 170px;
  font-size: 14px;
  padding: 0 !important;
  height: auto !important;
  box-shadow: none !important;
}

.field input:focus {
  box-shadow: none !important;
}

.field:focus-within {
  border-color: var(--ink-2);
}

.field svg {
  width: 16px;
  height: 16px;
  color: var(--muted);
  flex: none;
}

.field .lbl {
  color: var(--muted);
  font-size: 12.5px;
  white-space: nowrap;
}

.pager {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--line-2);
  border-radius: var(--r);
  background: var(--surface);
  height: 36px;
}

.pager > a, .pager > button {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  color: var(--ink-2);
  text-decoration: none;
  background: none;
  border: 0;
  border-radius: 4px;
}

.pager > a:hover, .pager > button:hover {
  background: var(--surface-3);
  text-decoration: none;
}

.pager .lbl {
  padding: 0 10px;
  font-weight: 500;
  font-size: 14.5px;
  border-left: 1px solid var(--line);
  border-right: 1px solid var(--line);
  height: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  color: var(--ink);
}

.pager .lbl b {
  font-weight: 600;
}

.pager .lbl .muted {
  font-weight: 400;
}

.pager .lbl .chip {
  margin-left: 2px;
}

.pager svg {
  width: 16px;
  height: 16px;
}

.pager {
  max-width: 100%;
}

@media (max-width: 600px) {
  .pager .lbl {
    white-space: normal;
    line-height: 1.2;
    padding: 2px 8px;
    min-width: 0;
  }

  .pager .lbl .chip {
    display: none;
  }
}

.chip, .stitek {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 24px;
  padding: 0 9px;
  border-radius: 999px;
  font-size: 12.5px;
  font-weight: 500;
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--ink-2);
  white-space: nowrap;
  line-height: 1;
}

.chip.zel {
  background: var(--zel-soft);
  border-color: var(--zel-line);
  color: var(--zel);
}

.chip.\!zel {
  background: var(--zel-soft) !important;
  border-color: var(--zel-line) !important;
  color: var(--zel) !important;
}

.chip.mod {
  background: var(--mod-soft);
  border-color: var(--mod-line);
  color: var(--mod);
}

.chip.warn, .stitek-varovani {
  background: var(--warn-soft);
  border-color: var(--warn-line);
  color: var(--warn);
}

.chip.ok, .stitek-ok {
  background: var(--ok-soft);
  border-color: var(--zel-line);
  color: var(--ok);
}

.chip.\!ok {
  background: var(--ok-soft) !important;
  border-color: var(--zel-line) !important;
  color: var(--ok) !important;
}

.chip.bad, .stitek-chyba {
  background: var(--bad-soft);
  border-color: var(--bad-line);
  color: var(--bad);
}

.chip.brand {
  background: var(--brand-soft);
  border-color: var(--brand-line);
  color: var(--brand);
}

.stitek-tip {
  background: var(--mod-soft);
  border-color: var(--mod-line);
  color: var(--mod);
}

.stitek-tichy {
  background: var(--surface-3);
  border-color: var(--surface-3);
  color: var(--muted);
}

.chip.on {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
}

a.chip:hover {
  text-decoration: none;
  border-color: var(--line-2);
}

.chip i {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: currentColor;
}

.chip svg {
  width: 12px;
  height: 12px;
}

.tag {
  display: inline-flex;
  align-items: center;
  height: 18px;
  padding: 0 6px;
  border-radius: 4px;
  font-size: 11.5px;
  font-weight: 500;
  color: var(--muted);
  background: var(--surface-3);
  white-space: nowrap;
}

.tag.dov {
  color: var(--mod);
  background: var(--mod-soft);
}

.tag.vla {
  color: var(--zel);
  background: var(--zel-soft);
}

.al {
  font-size: 12px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.al b {
  font-weight: 500;
  color: var(--ink-2);
}

/* ---------- karty a rozvržení ---------- */

.card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r-card);
}

.card .ch {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
  flex-wrap: wrap;
}

.card .ch h2 {
  font-size: 15.5px;
  margin: 0;
}

.card .ch h2 .kat {
  font-weight: 400;
  font-size: 12.5px;
  color: var(--muted);
  margin-left: 4px;
}

.card .ch h2 .\!kat {
  font-weight: 400 !important;
  font-size: 12.5px !important;
  color: var(--muted) !important;
  margin-left: 4px !important;
}

.card .ch .acts {
  margin-left: auto;
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: wrap;
}

/* sbalitelný postranní panel – implicitně zavřený, hlavička je klikací */

details.panel-sb > summary.ch {
  list-style: none;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

details.panel-sb > summary.ch::-webkit-details-marker {
  display: none;
}

details.panel-sb:not([open]) > summary.ch {
  border-bottom: 0;
}

details.panel-sb > summary.ch:hover h2 {
  color: var(--brand);
}

.sb-arrow {
  margin-left: auto;
  width: 8px;
  height: 8px;
  border-right: 1.5px solid var(--muted);
  border-bottom: 1.5px solid var(--muted);
  transform: rotate(45deg);
  transition: transform .15s;
  flex: 0 0 auto;
}

details.panel-sb[open] > summary.ch .sb-arrow {
  transform: rotate(-135deg);
}

.card .cb {
  padding: 14px 16px;
}

.card .cb.tight {
  padding: 0 16px;
}

.card .cb > :first-child {
  margin-top: 0;
}

.card .cb > :last-child {
  margin-bottom: 0;
}

.two {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: 18px;
  align-items: start;
}

.two.wide {
  grid-template-columns: minmax(0, 1fr) 300px;
}

@media (max-width: 980px) {
  .two, .two.wide {
    grid-template-columns: 1fr;
  }
}

.stack {
  display: grid;
  gap: 14px;
}

.stack.tight {
  gap: 8px;
}

.note {
  border-radius: var(--r);
  padding: 10px 12px;
  font-size: 14px;
  display: flex;
  gap: 10px;
  align-items: flex-start;
}

.note.warn {
  background: var(--warn-soft);
  color: var(--warn);
}

.note.ok {
  background: var(--ok-soft);
  color: var(--ok);
}

.note.\!ok {
  background: var(--ok-soft) !important;
  color: var(--ok) !important;
}

.note.info {
  background: var(--surface-3);
  color: var(--ink-2);
}

.note.bad {
  background: var(--bad-soft);
  color: var(--bad);
}

.note svg {
  width: 16px;
  height: 16px;
  flex: none;
  margin-top: 2px;
}

.note a {
  color: inherit;
  text-decoration: underline;
}

/* Hlášky plavou dole uprostřed, aby neodsunovaly obsah pod sebou. */

.hlasky {
  position: fixed;
  left: 50%;
  bottom: 24px;
  transform: translateX(-50%);
  z-index: 70;
  display: grid;
  gap: 8px;
  width: min(640px, calc(100vw - 32px));
  pointer-events: none;
}

.hlasky .note {
  pointer-events: auto;
  cursor: pointer;
  box-shadow: var(--shadow-pop);
  border: 1px solid rgba(27, 36, 48, .08);
  animation: hlaska-najeti .18s ease;
}

.hlasky .note.hide {
  opacity: 0;
  transform: translateY(8px);
  transition: .2s;
}

@keyframes hlaska-najeti {
  from {
    opacity: 0;
    transform: translateY(10px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

.hlasky:empty {
  display: none;
}

.help {
  font-size: 13px;
  color: var(--muted);
  margin-top: 8px;
}

.kv {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 4px 12px;
  font-size: 13.5px;
  margin: 0;
}

.kv dt {
  color: var(--muted);
}

.kv dd {
  margin: 0;
}

.legend {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  font-size: 13px;
  color: var(--muted);
  align-items: center;
}

.legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.legend .sw {
  width: 16px;
  height: 16px;
  border-radius: 4px;
  border: 1px solid var(--line-2);
  background: var(--surface);
}

.legend .sw.on {
  background: var(--zel-soft);
  border-color: var(--zel-line);
}

.legend .sw.off {
  border-style: dashed;
}

.legend .sw.late {
  background: var(--warn-soft);
  border-color: var(--warn-line);
}

.legend .sw.past {
  background: var(--surface-3);
  border-color: var(--surface-3);
}

.legend .sw.closed {
  background: var(--hatch), var(--surface-3);
}

/* ---------- tabulky ---------- */

.tbl {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}

.tbl th {
  text-align: left;
  font-weight: 500;
  color: var(--muted);
  font-size: 12.5px;
  padding: 8px 10px;
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
  text-transform: none;
  letter-spacing: 0;
}

.tbl td {
  padding: 9px 10px;
  border-bottom: 1px solid var(--line);
  vertical-align: middle;
}

.tbl tr:last-child td {
  border-bottom: 0;
}

.tbl td.r, .tbl th.r {
  text-align: right;
}

.tbl td.\!r, .tbl th.\!r {
  text-align: right !important;
}

.tbl .dim td {
  color: var(--muted);
}

.tbl tbody tr:hover {
  background: transparent;
}

/* ---------- Dnes v kuchyni ---------- */

.stats {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  background: var(--surface);
  overflow: hidden;
}

.stat {
  padding: 12px 16px;
  border-right: 1px solid var(--line);
}

.stat:last-child {
  border-right: 0;
}

.stat .v {
  font-size: 26px;
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -.02em;
}

.stat .v small {
  font-size: 13px;
  font-weight: 400;
  color: var(--muted);
  margin-left: 2px;
}

.stat .l {
  font-size: 12.5px;
  color: var(--muted);
  margin-top: 3px;
}

.stat .l.s {
  color: var(--ink-2);
}

.stat .l.\!s {
  color: var(--ink-2) !important;
}

.stat.zel .v {
  color: var(--zel);
}

.stat.\!zel .v {
  color: var(--zel) !important;
}

.stat.mod .v {
  color: var(--mod);
}

.stat.warn .v {
  color: var(--warn);
}

.stat.brand .v {
  color: var(--brand);
}

@media (max-width: 980px) {
  .stats {
    grid-template-columns: repeat(3, 1fr);
  }

  .stat:nth-child(3n) {
    border-right: 0;
  }

  .stat {
    border-bottom: 1px solid var(--line);
  }
}

.menu-t td:first-child {
  color: var(--muted);
  width: 120px;
}

.menu-t .dish {
  font-weight: 500;
}

.menu-t .rx {
  margin-top: 8px;
}

.rx summary {
  cursor: pointer;
  color: var(--brand);
  font-size: 13px;
  list-style: none;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.rx summary::-webkit-details-marker {
  display: none;
}

.rx summary::before {
  content: "";
  width: 6px;
  height: 6px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg);
  transition: .15s;
}

.rx[open] summary::before {
  transform: rotate(45deg);
}

.rx .tbl {
  margin-top: 8px;
  font-size: 13px;
  background: var(--surface-2);
  border-radius: var(--r);
}

.rx .tbl td, .rx .tbl th {
  padding: 6px 10px;
}

.rx p {
  font-size: 13px;
  color: var(--ink-2);
  margin: 8px 0 4px;
}

.rrow {
  padding: 10px 0;
}

.rrow + .rrow {
  border-top: 1px solid var(--line);
}

.rrow .rn {
  font-weight: 500;
  margin-bottom: 6px;
  display: flex;
  gap: 8px;
  align-items: baseline;
  flex-wrap: wrap;
}

.rate {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  align-items: center;
  margin: 0;
}

.stars {
  display: inline-flex;
  gap: 2px;
}

.stars button {
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  color: var(--line-2);
  border-radius: 4px;
  background: none;
  border: 0;
  padding: 0;
}

.stars button.on {
  color: var(--star);
}

.stars button:hover {
  background: var(--surface-3);
}

.stars:hover button {
  color: var(--line-2);
}

.stars button:hover, .stars button:has(~ button:hover) {
  color: var(--star);
}

.stars svg {
  width: 18px;
  height: 18px;
}

.eat .seg > form > button, .eat .seg > button {
  height: 26px;
  padding: 0 9px;
  font-size: 12.5px;
}

@media (max-width: 560px) {
  .rate {
    gap: 4px;
  }
}

.steps {
  display: grid;
  gap: 0;
}

.step {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 12px;
  padding: 12px 0;
  position: relative;
}

.step + .step {
  border-top: 1px solid var(--line);
}

.step .n {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: 1.5px solid var(--line-2);
  display: grid;
  place-items: center;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--muted);
  background: var(--surface);
}

.step .\!n {
  width: 26px !important;
  height: 26px !important;
  border-radius: 50% !important;
  border: 1.5px solid var(--line-2) !important;
  display: grid !important;
  place-items: center !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  color: var(--muted) !important;
  background: var(--surface) !important;
}

.step .n svg {
  width: 14px;
  height: 14px;
}

.step .\!n svg {
  width: 14px !important;
  height: 14px !important;
}

.step.done .n {
  background: var(--ok);
  border-color: var(--ok);
  color: #fff;
}

.step.done .\!n {
  background: var(--ok) !important;
  border-color: var(--ok) !important;
  color: #fff !important;
}

.step.warn .n {
  background: var(--warn);
  border-color: var(--warn);
  color: #fff;
}

.step.warn .\!n {
  background: var(--warn) !important;
  border-color: var(--warn) !important;
  color: #fff !important;
}

.step.now .n {
  border-color: var(--ink);
  color: var(--ink);
}

.step.now .\!n {
  border-color: var(--ink) !important;
  color: var(--ink) !important;
}

.step h3 {
  font-size: 14.5px;
  margin: 0;
}

.step .meta {
  font-size: 13px;
  color: var(--muted);
  margin-top: 2px;
}

.step .frm {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-top: 10px;
}

.step .frm .field {
  height: 34px;
  width: 100%;
  min-width: 0;
}

.step .frm .field .lbl {
  overflow: hidden;
  text-overflow: ellipsis;
}

.step .frm .field input {
  width: 4.5rem;
  flex: none;
}

.step .frm .full {
  grid-column: 1 / -1;
}

/* ---------- Odhlášky ---------- */

.att {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-size: 14px;
}

.att th {
  font-weight: 500;
  color: var(--muted);
  font-size: 12.5px;
  padding: 8px 10px;
  text-align: left;
  border-bottom: 1px solid var(--line);
  background: var(--surface);
  position: sticky;
  top: 56px;
  z-index: 2;
  text-transform: none;
  letter-spacing: 0;
}

.att th.today {
  color: var(--ink);
}

.att th .d {
  display: block;
  font-weight: 600;
  font-size: 13px;
  color: var(--ink-2);
}

.att th .\!d {
  display: block !important;
  font-weight: 600 !important;
  font-size: 13px !important;
  color: var(--ink-2) !important;
}

.att th.today .d {
  color: var(--ink);
}

.att th.today .\!d {
  color: var(--ink) !important;
}

.att th .d .dnes {
  color: var(--brand);
}

.att th .\!d .dnes {
  color: var(--brand) !important;
}

.att th .dl {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11.5px;
  color: var(--warn);
}

.att th .dl svg {
  width: 12px;
  height: 12px;
}

.att th .dn {
  font-size: 11.5px;
  color: var(--muted);
  font-weight: 400;
}

.att td {
  padding: 6px 10px;
  border-bottom: 1px solid var(--line);
  vertical-align: middle;
}

.att tr:last-child td {
  border-bottom: 0;
}

.att .nm {
  font-weight: 500;
  white-space: nowrap;
}

.att .nm .sub {
  font-weight: 400;
  color: var(--muted);
  font-size: 12px;
  margin-left: 6px;
  white-space: normal;
}

.att td.today {
  background: var(--surface-2);
}

.att td.past {
  color: var(--muted);
}

.att .tot td {
  color: var(--muted);
  font-size: 12.5px;
  background: var(--surface-2);
  border-top: 1px solid var(--line);
}

.att .tot b {
  color: var(--ink);
  font-weight: 600;
}

.att tbody tr:hover {
  background: transparent;
}

/* Lepivé záhlaví funguje jen bez overflow obalu – ten se zapíná až na úzkých displejích. */

.att-wrap {
  overflow: visible;
}

@media (max-width: 900px) {
  .att-wrap {
    overflow-x: auto;
  }

  .att th {
    position: static;
  }
}

.mc-wrap {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  position: relative;
}

.mc-wrap form {
  display: contents;
}

.mc {
  width: 28px;
  height: 28px;
  border-radius: 5px;
  border: 1px solid var(--line-2);
  background: var(--surface);
  font-size: 12.5px;
  font-weight: 600;
  color: var(--muted);
  display: grid;
  place-items: center;
  position: relative;
  padding: 0;
  line-height: 1;
}

.mc.on {
  background: var(--zel-soft);
  border-color: var(--zel-line);
  color: var(--zel);
}

.mod-t .mc.on {
  background: var(--mod-soft);
  border-color: var(--mod-line);
  color: var(--mod);
}

.mc.off {
  border-style: dashed;
  color: var(--line-2);
}

.mc.off::after {
  content: "";
  position: absolute;
  left: 6px;
  right: 6px;
  top: 50%;
  height: 1.5px;
  background: var(--line-2);
}

.mc.late {
  background: var(--warn-soft);
  border-color: var(--warn-line);
  color: var(--warn);
}

.mc.late::before {
  content: "";
  position: absolute;
  top: -3px;
  right: -3px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--warn);
  border: 1.5px solid var(--surface);
}

.mc.past {
  background: var(--surface-3);
  border-color: var(--surface-3);
  color: var(--muted);
}

.mc.pastoff {
  background: transparent;
  border-color: var(--surface-3);
  color: var(--line-2);
}

.mc.box {
  background: var(--brand-soft);
  border-color: var(--brand-line);
  color: var(--brand);
}

.mc.na {
  border-color: transparent;
  background: transparent;
  color: var(--line-2);
  cursor: default;
}

.mc.na.add {
  cursor: pointer;
  font-weight: 500;
}

.mc.na.add:hover {
  border-color: var(--line-2);
  color: var(--ink-2);
  background: var(--surface);
}

.mc.extra::before {
  content: "";
  position: absolute;
  top: -3px;
  right: -3px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--brand);
  border: 1.5px solid var(--surface);
}

.mc:not(.na):hover {
  border-color: var(--ink-2);
}

.day-x {
  width: 22px;
  height: 28px;
  display: grid;
  place-items: center;
  color: var(--muted);
  border-radius: 4px;
  opacity: 0;
  transition: opacity .12s;
  background: none;
  border: 0;
  padding: 0;
}

.day-x svg {
  width: 13px;
  height: 13px;
}

tr:hover .day-x, .mc-wrap:focus-within .day-x, .day-x:focus-visible {
  opacity: 1;
}

.day-x:hover {
  background: var(--bad-soft);
  color: var(--bad);
}

.day-x.in:hover {
  background: var(--ok-soft);
  color: var(--ok);
}

@media (hover: none) {
  .day-x {
    opacity: 1;
  }
}

.grp-h {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
}

.grp-h h2 {
  font-size: 15.5px;
  margin: 0;
}

.grp-h .cnt {
  color: var(--muted);
  font-size: 13.5px;
}

.grp-h i {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  flex: none;
}

/* Bez overflow:hidden – jinak by se lepivé záhlaví lepilo ke kartě místo k oknu a zakrylo první řádky. */

.att-card .att tr:last-child td:first-child {
  border-bottom-left-radius: var(--r-card);
}

.att-card .att tr:last-child td:last-child {
  border-bottom-right-radius: var(--r-card);
}

/* ---------- Kostra ---------- */

.kgrid {
  display: grid;
  grid-template-columns: 72px repeat(5, 1fr);
  gap: 8px;
  align-items: stretch;
}

.kgrid .wl {
  font-size: 12.5px;
  color: var(--muted);
  align-self: center;
  font-weight: 500;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.kgrid .wl a {
  font-size: 12px;
  font-weight: 400;
}

.kgrid .hd {
  font-size: 12.5px;
  color: var(--muted);
  font-weight: 500;
  padding: 0 2px 2px;
}

.kd {
  position: relative;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px 10px 9px;
  min-height: 70px;
  cursor: pointer;
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: 6px;
  transition: border-color .12s, box-shadow .12s;
  width: 100%;
  color: var(--ink);
  text-decoration: none;
}

.kd:hover {
  border-color: var(--line-2);
  text-decoration: none;
}

.kd .kd-date {
  font-size: 12.5px;
  color: var(--muted);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 4px;
}

.kd .kd-date .pn {
  font-size: 11px;
  color: var(--line-2);
}

.kd .kd-date .lk {
  font-size: 11px;
  color: var(--muted);
}

.kd .ka {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 500;
  font-size: 14px;
  padding: 4px 8px 4px 8px;
  border-left: 3px solid var(--k);
  background: var(--ks);
  border-radius: 0 4px 4px 0;
  color: var(--ink);
  line-height: 1.25;
}

.kd .ka.sv {
  font-size: 12.5px;
  font-weight: 500;
  padding: 2px 8px;
}

.kd .ka.warn {
  outline: 1.5px solid var(--warn);
  background: var(--warn-soft);
}

.kd.mismatch {
  box-shadow: inset 0 0 0 1px var(--warn);
}

.kd .ka .kx {
  margin-left: auto;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  color: var(--muted);
  font-size: 12px;
  line-height: 1;
  background: none;
  border: 0;
  padding: 0;
}

.kd .ka .kx:hover {
  background: var(--bad);
  color: #fff;
}

.kd.empty {
  border-style: dashed;
  background: transparent;
}

.kd.empty .kd-empty {
  font-size: 13px;
  color: var(--muted);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.kd.empty .kd-empty::before {
  content: "+";
  font-weight: 600;
}

.kd.closed {
  background: var(--hatch), var(--surface-3);
  border-color: var(--surface-3);
}

.kd.closed .kd-note {
  font-size: 12.5px;
  color: var(--muted);
}

.kd.out {
  background: transparent;
  border-color: transparent;
  cursor: default;
}

.kd.out .kd-date {
  color: var(--line-2);
}

.kd.out .kd-note {
  font-size: 12px;
  color: var(--line-2);
}

.kd.over {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--brand-soft);
}

.kd.pop-anchor {
  border-color: var(--ink);
  box-shadow: 0 0 0 3px var(--surface-3);
}

.kd.today {
  box-shadow: inset 0 0 0 1px var(--brand);
  border-color: var(--brand);
}

.kd.warnd::after {
  content: "";
  position: absolute;
  top: 8px;
  right: 10px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--warn);
}

.kd.dragging {
  opacity: .4;
}

.klocked .kd {
  cursor: default;
}

.klocked .kd.empty {
  border-style: solid;
}

.sw {
  width: 12px;
  height: 12px;
  border-radius: 3px;
  background: var(--k);
  flex: none;
  display: inline-block;
}

.ledger {
  display: grid;
  gap: 2px;
}

.lg {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 6px 10px;
  align-items: center;
  padding: 9px 10px;
  border-radius: var(--r);
  cursor: grab;
  border: 1px solid transparent;
}

.lg[draggable="false"] {
  cursor: default;
}

.lg:hover {
  background: var(--surface-2);
  border-color: var(--line);
}

.lg:active {
  cursor: grabbing;
}

.lg .lg-n {
  font-weight: 500;
  font-size: 14px;
  display: flex;
  align-items: baseline;
  gap: 6px;
  flex-wrap: wrap;
}

.lg .lg-n small {
  color: var(--muted);
  font-weight: 400;
  font-size: 12px;
}

.lg .lg-c {
  font-size: 13px;
  color: var(--muted);
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.lg .lg-c b {
  color: var(--ink);
  font-weight: 600;
}

.lg.ok .lg-c b {
  color: var(--ok);
}

.lg.\!ok .lg-c b {
  color: var(--ok) !important;
}

.lg.over .lg-c b {
  color: var(--bad);
}

.lg.under .lg-c b {
  color: var(--warn);
}

.lg .dots {
  grid-column: 2 / 4;
  display: flex;
  gap: 3px;
  align-items: center;
}

.dot {
  width: 100%;
  max-width: 22px;
  height: 9px;
  border-radius: 2px;
  background: var(--surface-3);
  flex: 1;
}

.dot.f {
  background: var(--k);
}

.dot.\!f {
  background: var(--k) !important;
}

.dot.o {
  background: var(--bad);
}

.dots .tick {
  width: 1.5px;
  height: 15px;
  background: var(--ink-2);
  flex: none;
  border-radius: 1px;
}

.kstatus {
  padding: 12px 14px;
  border-radius: var(--r-card);
  font-size: 14px;
  display: flex;
  gap: 10px;
  align-items: flex-start;
}

.kstatus b {
  display: block;
  font-weight: 600;
  margin-bottom: 2px;
}

.kstatus.wip {
  background: var(--surface-3);
  color: var(--ink-2);
}

.kstatus.ready {
  background: var(--ok-soft);
  color: var(--ok);
}

.kstatus.done {
  background: var(--brand-soft);
  color: var(--brand);
}

.kstatus svg {
  width: 18px;
  height: 18px;
  flex: none;
  margin-top: 1px;
}

.kstatus .btn {
  margin-top: 10px;
}

.wlist {
  display: grid;
  gap: 6px;
  font-size: 13.5px;
}

.wlist ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 6px;
}

.wlist li {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  color: var(--ink-2);
}

.wlist li::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--warn);
  flex: none;
  margin-top: 7px;
}

.wlist li.bad::before {
  background: var(--bad);
}

.wlist li.ok::before {
  background: var(--ok);
}

.wlist li.\!ok::before {
  background: var(--ok) !important;
}

.wlist li.tip::before {
  background: var(--mod);
}

.wlist li .src {
  display: block;
  font-size: 12px;
  color: var(--muted);
}

/* ---------- popover ---------- */

.\!pop {
  position: absolute !important;
  z-index: 50 !important;
  background: var(--surface) !important;
  border: 1px solid var(--line) !important;
  border-radius: var(--r-card) !important;
  box-shadow: var(--shadow-pop) !important;
  padding: 10px !important;
  width: 330px !important;
  max-width: calc(100vw - 24px) !important;
}

.pop {
  position: absolute;
  z-index: 50;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  box-shadow: var(--shadow-pop);
  padding: 10px;
  width: 330px;
  max-width: calc(100vw - 24px);
}

.\!pop.wide {
  width: 480px !important;
}

.pop.wide {
  width: 480px;
}

/* Centrovaná varianta (výběr pokrmu): vždy uprostřed obrazovky, neuskakuje podle buňky;
       výška omezená viewportem, roluje jen seznam. */

.\!pop.center {
  position: fixed !important;
  left: 50% !important;
  top: 50% !important;
  transform: translate(-50%, -50%) !important;
  max-height: calc(100vh - 32px) !important;
  display: flex !important;
  flex-direction: column !important;
  z-index: 60 !important;
}

.pop.center {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  max-height: calc(100vh - 32px);
  display: flex;
  flex-direction: column;
  z-index: 60;
}

.\!pop.center.wide {
  width: 560px !important;
}

.pop.center.wide {
  width: 560px;
}

.\!pop.center .pop-h, .\!pop.center .srch, .\!pop.center .cats, .\!pop.center .pop-foot {
  flex: none !important;
}

.pop.center .pop-h, .pop.center .srch, .pop.center .cats, .pop.center .pop-foot {
  flex: none;
}

.\!pop.center .pop-h, .\!pop.center .srch, .\!pop.center .cats, .\!pop.center .pop-foot {
  flex: none !important;
}

.\!pop.center .list {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  max-height: none !important;
}

.pop.center .list {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
}

.\!pop .pop-h {
  padding: 4px 6px 10px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 1px !important;
  position: relative !important;
}

.pop .pop-h {
  padding: 4px 6px 10px;
  display: flex;
  flex-direction: column;
  gap: 1px;
  position: relative;
}

.\!pop .pop-h b {
  font-weight: 600 !important;
  font-size: 14.5px !important;
  padding-right: 28px !important;
}

.pop .pop-h b {
  font-weight: 600;
  font-size: 14.5px;
  padding-right: 28px;
}

.\!pop .pop-h span {
  font-size: 12.5px !important;
  color: var(--muted) !important;
}

.pop .pop-h span {
  font-size: 12.5px;
  color: var(--muted);
}

.\!pop .pop-x {
  position: absolute !important;
  top: 2px !important;
  right: 2px !important;
  width: 26px !important;
  height: 26px !important;
  display: grid !important;
  place-items: center !important;
  color: var(--muted) !important;
  border-radius: 4px !important;
  text-decoration: none !important;
}

.pop .pop-x {
  position: absolute;
  top: 2px;
  right: 2px;
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  color: var(--muted);
  border-radius: 4px;
  text-decoration: none;
}

.\!pop .pop-x:hover {
  background: var(--surface-3) !important;
  color: var(--ink) !important;
}

.pop .pop-x:hover {
  background: var(--surface-3);
  color: var(--ink);
}

.\!pop .pop-x svg {
  width: 14px !important;
  height: 14px !important;
}

.pop .pop-x svg {
  width: 14px;
  height: 14px;
}

.\!pop form {
  margin: 0 !important;
}

.pop form {
  margin: 0;
}

.pa {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 10px;
  align-items: center;
  width: 100%;
  text-align: left;
  padding: 8px 8px;
  border-radius: var(--r);
  font-size: 14px;
  background: none;
  border: 0;
  color: var(--ink);
}

.pa:hover {
  background: var(--surface-3);
}

.pa.cur {
  background: var(--surface-2);
  outline: 1px solid var(--line-2);
}

.pa.\!cur {
  background: var(--surface-2) !important;
  outline: 1px solid var(--line-2) !important;
}

.pa .pa-c {
  font-size: 12.5px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.pa.ok .pa-c {
  color: var(--ok);
}

.pa.\!ok .pa-c {
  color: var(--ok) !important;
}

.pa.over .pa-c {
  color: var(--bad);
}

.pa.under .pa-c {
  color: var(--warn);
}

.pa .pa-n {
  min-width: 0;
}

.pa .pa-n small {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 400;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.\!pop .pop-foot {
  display: flex !important;
  gap: 6px !important;
  border-top: 1px solid var(--line) !important;
  margin-top: 6px !important;
  padding-top: 8px !important;
  flex-wrap: wrap !important;
}

.pop .pop-foot {
  display: flex;
  gap: 6px;
  border-top: 1px solid var(--line);
  margin-top: 6px;
  padding-top: 8px;
  flex-wrap: wrap;
}

.\!pop .pop-foot .btn {
  flex: 1 !important;
  justify-content: center !important;
}

.pop .pop-foot .btn {
  flex: 1;
  justify-content: center;
}

.\!pop .srch {
  margin: 0 0 8px !important;
}

.pop .srch {
  margin: 0 0 8px;
}

.\!pop .srch .field {
  width: 100% !important;
}

.pop .srch .field {
  width: 100%;
}

.\!pop .srch .field input {
  width: 100% !important;
}

.pop .srch .field input {
  width: 100%;
}

.\!pop .sect {
  font-size: 12px !important;
  color: var(--muted) !important;
  padding: 8px 8px 4px !important;
}

.pop .sect {
  font-size: 12px;
  color: var(--muted);
  padding: 8px 8px 4px;
}

.\!pop .list {
  max-height: min(420px, 55vh) !important;
  overflow: auto !important;
}

.pop .list {
  max-height: min(420px, 55vh);
  overflow: auto;
}

.\!pop details summary {
  list-style: none !important;
  cursor: pointer !important;
  font-size: 13px !important;
  color: var(--brand) !important;
  padding: 8px !important;
}

.pop details summary {
  list-style: none;
  cursor: pointer;
  font-size: 13px;
  color: var(--brand);
  padding: 8px;
}

.\!pop details summary::-webkit-details-marker {
  display: none !important;
}

.pop details summary::-webkit-details-marker {
  display: none;
}

.\!pop .cats {
  display: flex !important;
  gap: 4px !important;
  flex-wrap: wrap !important;
  padding: 0 0 8px !important;
}

.pop .cats {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  padding: 0 0 8px;
}

.pi {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 2px 10px;
  width: 100%;
  text-align: left;
  padding: 8px;
  border-radius: var(--r);
  align-items: center;
  background: none;
  border: 0;
  color: var(--ink);
}

.pi:hover {
  background: var(--surface-3);
}

.pi.cur {
  background: var(--surface-2);
  outline: 1px solid var(--line-2);
}

.pi.\!cur {
  background: var(--surface-2) !important;
  outline: 1px solid var(--line-2) !important;
}

.pi.konflikt {
  background: var(--bad-soft);
}

.pi .n {
  font-size: 14px;
  font-weight: 500;
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: wrap;
}

.pi .\!n {
  font-size: 14px !important;
  font-weight: 500 !important;
  display: flex !important;
  gap: 6px !important;
  align-items: center !important;
  flex-wrap: wrap !important;
}

.pi .m {
  font-size: 12px;
  color: var(--muted);
  grid-column: 1 / -1;
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

.pi .m .obliba-hvezdy {
  font-size: 11px;
}

.pi .w {
  grid-column: 1 / -1;
  font-size: 12px;
  color: var(--warn);
}

.pi .w.bad {
  color: var(--bad);
}

.pi .w.ok {
  color: var(--muted);
}

.pi .w.\!ok {
  color: var(--muted) !important;
}

.pi .sw {
  width: 10px;
  height: 10px;
}

.pi .go {
  font-size: 12.5px;
  color: var(--brand);
  white-space: nowrap;
}

.pop-backdrop {
  position: fixed;
  inset: 0;
  z-index: 55;
  background: rgba(28, 22, 32, .28);
}

/* ---------- Jídelníček (tabule) ---------- */

.board {
  display: grid;
  grid-template-columns: 128px repeat(5, minmax(0, 1fr));
  gap: 6px;
}

.board .rl {
  font-size: 12.5px;
  color: var(--muted);
  font-weight: 500;
  align-self: center;
  padding-right: 4px;
  line-height: 1.25;
}

.board .dh {
  padding: 6px 8px 8px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.board .dh b {
  font-weight: 600;
  font-size: 13.5px;
  display: block;
}

.board .dh b .dnes {
  color: var(--brand);
  font-weight: 500;
  font-size: 12px;
  margin-left: 4px;
}

.board .dh .ka {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 500;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--ks);
  color: var(--k);
  width: -moz-max-content;
  width: max-content;
  max-width: 100%;
}

.board .dh .ka .sw {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--k);
}

.board .dh .ka span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.board .dh .ka.warn {
  outline: 1.5px solid var(--warn);
  background: var(--warn-soft);
  color: var(--ink);
}

.board .dh .ka.warn .sw {
  background: var(--warn);
}

.ka-bang {
  display: inline-grid;
  place-items: center;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--warn);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  flex: 0 0 auto;
  line-height: 1;
}

.board .dh .ka-note {
  font-size: 11px;
  color: var(--warn);
  line-height: 1.3;
}

.board .dh.closed b, .board .dh.blocked b {
  color: var(--muted);
}

.board .dh .ptag {
  font-size: 11.5px;
  color: var(--muted);
}

.board .dh .dact {
  display: flex;
  gap: 8px;
  font-size: 11.5px;
  align-items: center;
  flex-wrap: wrap;
}

.board .dh .dact a, .board .dh .dact button {
  font-size: 11.5px;
  color: var(--muted);
  background: none;
  border: 0;
  padding: 0;
  text-decoration: underline;
}

.board .dh .dact a:hover, .board .dh .dact button:hover {
  color: var(--ink);
}

.board .dh .dact .chip {
  height: 18px;
  font-size: 11px;
  padding: 0 6px;
}

.cell {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.slot {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px 10px;
  min-height: 56px;
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: 4px;
  width: 100%;
  font-size: 13.5px;
  line-height: 1.3;
  cursor: pointer;
  position: relative;
  color: var(--ink);
  text-decoration: none;
}

.slot:hover {
  border-color: var(--line-2);
  text-decoration: none;
}

.slot .n {
  font-weight: 500;
  padding-right: 18px;
  overflow-wrap: anywhere;
}

.slot .\!n {
  font-weight: 500 !important;
  padding-right: 18px !important;
  overflow-wrap: anywhere !important;
}

.slot .m {
  display: flex;
  gap: 6px;
  align-items: center;
  font-size: 11.5px;
  color: var(--muted);
  margin-top: auto;
  flex-wrap: wrap;
}

.slot-w {
  position: relative;
  display: flex;
}

.slot-w .x {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 20px;
  height: 20px;
  border-radius: 4px;
  display: grid;
  place-items: center;
  color: var(--muted);
  background: none;
  border: 0;
  padding: 0;
  font-size: 14px;
  line-height: 1;
}

.slot-w .x:hover {
  background: var(--bad-soft);
  color: var(--bad);
}

.slot-w .x-form {
  display: contents;
}

/* Kulaté „i“ rychlé kontroly receptury vpravo dole, na řádku s alergeny – nepřidává další řádek. */

.slot-w .i {
  position: absolute;
  right: 6px;
  bottom: 7px;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  color: var(--muted);
  background: var(--surface);
  border: 1.5px solid var(--muted);
  padding: 0;
  font: 700 9.5px/1 Georgia, "Times New Roman", serif;
  font-style: italic;
  opacity: .6;
  cursor: pointer;
}

.slot-w:hover .i, .slot-w .i:focus-visible {
  opacity: 1;
}

.slot-w .i:hover {
  color: var(--ink);
  border-color: var(--ink);
}

.slot-w .slot .m {
  padding-right: 20px;
}

/* Modální detail receptury */

dialog.recept-dlg {
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  box-shadow: var(--shadow-pop);
  padding: 0;
  width: min(720px, calc(100vw - 24px));
  max-height: calc(100vh - 40px);
  background: var(--surface);
  color: var(--ink);
}

dialog.recept-dlg::backdrop {
  background: rgba(20, 24, 30, .45);
}

.rd {
  padding: 16px 18px 14px;
  font-size: 13.5px;
}

.rd h3 {
  margin: 0 0 6px;
  font-size: 17px;
}

.rd h4 {
  margin: 14px 0 6px;
  font-size: 13px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .02em;
}

.rd-h {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}

.rd-h > div {
  flex: 1;
  min-width: 0;
}

.rd-h .pop-x {
  flex: none;
}

.rd-body {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  margin-top: 10px;
  flex-wrap: wrap;
}

.rd-foto {
  width: 160px;
  height: 120px;
  -o-object-fit: cover;
     object-fit: cover;
  border-radius: 8px;
  border: 1px solid var(--line);
}

.rd-skladba {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.rd-tab {
  width: 100%;
  font-size: 13px;
}

.rd-tab th, .rd-tab td {
  padding: 4px 6px;
}

.rd-tab tfoot td {
  font-weight: 600;
  border-top: 1px solid var(--line);
}

.rd-postup {
  white-space: pre-line;
  margin: 0;
}

.rd-foot {
  margin: 12px 0 0;
}

/* Věková varianta pokrmu v modálu – volba všem / jen do 3 let / jen od 3 let */

.rd-provek {
  margin-top: 12px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--surface-2);
}

.rd-provek-volby {
  display: inline-flex;
}

.rd-provek-volby > button {
  font-size: 12.5px;
  padding: 4px 10px;
}

.slot .tag.provek {
  background: var(--warn-soft);
  color: var(--warn);
  border-color: var(--warn-line);
}

.slot.empty {
  border-style: dashed;
  background: transparent;
  color: var(--muted);
  justify-content: center;
  align-items: center;
  flex-direction: row;
  gap: 6px;
  font-size: 13px;
}

.slot.empty::before {
  content: "+";
  font-weight: 600;
}

.slot.more {
  min-height: 30px;
  padding: 4px 8px;
  font-size: 12px;
}

.slot.closed {
  background: var(--hatch), var(--surface-3);
  border-color: var(--surface-3);
  cursor: default;
}

.slot.mismatch {
  border-color: var(--warn-line);
  background: var(--warn-soft);
}

.slot.pop-anchor {
  border-color: var(--ink);
  box-shadow: 0 0 0 3px var(--surface-3);
}

.slot.blocked {
  background: var(--hatch), var(--surface-3);
  border-color: var(--surface-3);
  cursor: default;
  color: var(--muted);
  font-size: 12px;
  justify-content: center;
  align-items: center;
  text-align: center;
}

.board-wrap {
  overflow-x: auto;
}

.board-wrap .board {
  min-width: 720px;
}

.normlist {
  display: grid;
  gap: 10px;
}

.nm {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 2px 10px;
  align-items: baseline;
  font-size: 13.5px;
}

.nm .pct {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  font-size: 13px;
}

.nm .bar {
  grid-column: 1 / -1;
  height: 6px;
  border-radius: 3px;
  background: var(--surface-3);
  position: relative;
  overflow: visible;
}

.nm .bar i {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  border-radius: 3px;
  background: var(--ink-2);
  max-width: 100%;
}

.nm .bar.lim::after {
  content: "";
  position: absolute;
  top: -3px;
  bottom: -3px;
  width: 1.5px;
  background: var(--line-2);
  left: 66.6%;
}

.nm.low .pct {
  color: var(--warn);
}

.nm.low .bar i {
  background: var(--warn);
}

.nm.high .pct {
  color: var(--bad);
}

.nm.high .bar i {
  background: var(--bad);
}

.nm.ok .pct {
  color: var(--ok);
}

.nm.\!ok .pct {
  color: var(--ok) !important;
}

.nm.ok .bar i {
  background: var(--ok);
}

.nm.\!ok .bar i {
  background: var(--ok) !important;
}

.nm.tip .pct {
  color: var(--mod);
}

.nm.tip .bar i {
  background: var(--mod);
}

.nm .st {
  grid-column: 1 / -1;
  font-size: 12px;
  color: var(--muted);
}

.nm .\!st {
  grid-column: 1 / -1 !important;
  font-size: 12px !important;
  color: var(--muted) !important;
}

/* spotřební koš v bočním panelu: značky dolní a horní meze na liště, měřítko 0–150 % */

.nm .bar .mk {
  position: absolute;
  top: -3px;
  bottom: -3px;
  width: 1.5px;
  background: var(--ink-2);
  opacity: .55;
}

.nm.high .bar i {
  background: var(--bad);
}

.kos-prepinac {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}

.kos-prepinac .seg > button {
  height: 26px;
  padding: 0 10px;
  font-size: 12.5px;
}

.kos-obdobi[hidden] {
  display: none;
}

.kos-souhrn {
  font-size: 12.5px;
  color: var(--muted);
  margin: 0 0 10px;
}

.toolbar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
  margin-bottom: 14px;
}

.toolbar .sp {
  width: 1px;
  height: 24px;
  background: var(--line);
  margin: 0 4px;
}

.toolbar form {
  margin: 0;
  display: contents;
}

.skl {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 4px 2px;
}

.skladba-radek {
  display: flex;
  align-items: center;
  gap: 3px;
}

.skladba-jidlo {
  font-size: 10.5px;
  color: var(--muted);
  width: 18px;
}

.skladba-tecka {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  font-size: 9.5px;
  font-weight: 700;
  background: var(--surface-3);
  color: var(--muted);
}

.skladba-tecka.je-ok {
  background: var(--ok-soft);
  color: var(--ok);
}

.skladba-tecka.je-chybi {
  background: var(--warn);
  color: #fff;
}

.skladba-tecka.je-konflikt {
  background: var(--bad);
  color: #fff;
}

/* Orientační nutriční součet dne pod skladbou */

/* Dva nízké rámečky pod sebou přes celou buňku: „do 3  875 kcal“ / „od 3  1254 kcal“; živiny a hlášky až v tooltipu. */

.nut {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 3px 2px;
}

.nut-radek {
  display: flex;
  align-items: center;
  gap: 3px;
  width: 100%;
  box-sizing: border-box;
  font-size: 10.5px;
  line-height: 1;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: 5px;
  padding: 3px 6px;
  background: var(--surface);
  cursor: help;
}

.nut-radek b {
  font-size: 11.5px;
  color: var(--ink-2);
  font-variant-numeric: tabular-nums;
  margin-left: auto;
}

.nut-kat {
  font-size: 10px;
}

.nut-j {
  font-size: 9.5px;
}

.nut-pct {
  font-size: 10px;
  font-variant-numeric: tabular-nums;
  margin-left: 4px;
  color: var(--ink-2);
}

.nut-radek.mimo .nut-pct {
  color: var(--bad);
  font-weight: 600;
}

.nut-znak {
  display: inline-grid;
  place-items: center;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  font-size: 9px;
  font-weight: 700;
  background: var(--warn);
  color: #fff;
  margin-left: 2px;
}

.nut-radek.mimo {
  background: var(--bad-soft);
  color: var(--bad);
  border-color: var(--bad-line);
}

.nut-radek.mimo b {
  color: var(--bad);
}

.nut-radek.mimo .nut-znak {
  background: var(--bad);
}

.nut-radek.ok b {
  color: var(--ok);
}

.nut-radek.\!ok b {
  color: var(--ok) !important;
}

.nut-tab td, .nut-tab th {
  padding: 4px 6px;
}

.nut-detail summary {
  cursor: pointer;
}

/* ---------- období / týdny ---------- */

.wstrip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 6px;
  margin-bottom: 16px;
}

.ws {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 9px 12px;
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: 1px;
  color: var(--ink);
  text-decoration: none;
}

.ws:hover {
  border-color: var(--line-2);
  text-decoration: none;
}

.ws b {
  font-weight: 600;
  font-size: 13.5px;
}

.ws span {
  font-size: 12.5px;
  color: var(--muted);
}

.ws .st {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 5px;
  font-size: 12px;
  color: var(--ink-2);
}

.ws .\!st {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  margin-top: 5px !important;
  font-size: 12px !important;
  color: var(--ink-2) !important;
}

.ws .st i {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--line-2);
}

.ws .\!st i {
  width: 7px !important;
  height: 7px !important;
  border-radius: 50% !important;
  background: var(--line-2) !important;
}

.ws .st.ok i {
  background: var(--ok);
}

.ws .\!st.ok i {
  background: var(--ok) !important;
}

.ws .st.\!ok i {
  background: var(--ok) !important;
}

.ws .st.part i {
  background: var(--ink-2);
}

.ws .\!st.part i {
  background: var(--ink-2) !important;
}

.ws .st.warn i {
  background: var(--warn);
}

.ws .\!st.warn i {
  background: var(--warn) !important;
}

.ws.on {
  border-color: var(--ink);
  box-shadow: 0 0 0 2px var(--surface-3);
}

.blockcard .cb {
  padding: 44px 24px 40px;
  text-align: center;
  display: grid;
  justify-items: center;
  gap: 10px;
}

.blockcard .bicon {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--warn-soft);
  color: var(--warn);
  display: grid;
  place-items: center;
  margin-bottom: 4px;
}

.blockcard .bicon svg {
  width: 22px;
  height: 22px;
}

.blockcard h2 {
  font-size: 19px;
  margin: 0;
}

.blockcard p {
  max-width: 52ch;
  color: var(--ink-2);
  margin: 0;
}

/* ---------- Rodič ---------- */

.mbody {
  display: grid;
  gap: 12px;
}

.mbody h1 {
  font-size: 22px;
  margin: 4px 2px 2px;
}

.kid-h {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  width: 100%;
}

.kid-h b {
  font-size: 16px;
  font-weight: 600;
}

.kid-h .rate {
  margin-left: auto;
  font-size: 13px;
  color: var(--muted);
  display: inline;
}

.days-m {
  display: grid;
  gap: 6px;
}

.dm {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 6px 10px;
  align-items: center;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-2);
}

.dm .d {
  font-weight: 500;
  font-size: 14px;
}

.dm .\!d {
  font-weight: 500 !important;
  font-size: 14px !important;
}

.dm .d small {
  display: block;
  font-weight: 400;
  color: var(--muted);
  font-size: 12px;
}

.dm .\!d small {
  display: block !important;
  font-weight: 400 !important;
  color: var(--muted) !important;
  font-size: 12px !important;
}

.dm .ms {
  display: flex;
  gap: 4px;
}

.dm .ms form {
  display: contents;
}

/* display/color znovu: obecné .ms span (milníky) by u uzavřeného dne přebilo mřížku a písmeno by ujelo do rohu */

.dm .ms .mc {
  display: grid;
  place-items: center;
  width: 34px;
  height: 32px;
  font-size: 12.5px;
}

.dm .x {
  grid-column: 1 / -1;
  font-size: 12.5px;
  color: var(--brand);
  text-align: left;
  padding: 2px 0;
  background: none;
  border: 0;
}

.dm .x:hover {
  text-decoration: underline;
}

.dm.locked {
  background: var(--hatch), var(--surface-2);
}

.dm.locked .mc {
  cursor: default;
}

.dm .lockn {
  grid-column: 1 / -1;
  font-size: 12px;
  color: var(--muted);
}

.cal .h {
  color: var(--muted);
  font-size: 11.5px;
  padding-bottom: 2px;
}

.cal .c {
  height: 34px;
  border-radius: 6px;
  display: grid;
  place-items: center;
  border: 1px solid var(--line);
  background: var(--surface);
  position: relative;
  font-variant-numeric: tabular-nums;
}

.cal .c.past {
  background: var(--surface-3);
  border-color: var(--surface-3);
  color: var(--ink-2);
}

.cal .c.today {
  border-color: var(--ink);
  font-weight: 600;
}

.cal .c.off {
  border-style: dashed;
  color: var(--muted);
}

.cal .c.late {
  background: var(--warn-soft);
  border-color: var(--warn-line);
  color: var(--warn);
}

.cal .c.box {
  background: var(--brand-soft);
  border-color: var(--brand-line);
  color: var(--brand);
}

.cal .c.closed {
  background: var(--hatch), var(--surface-3);
  border-color: var(--surface-3);
  color: var(--muted);
}

.cal .c.none {
  border-color: transparent;
  background: transparent;
}

.sum {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
}

.sum div {
  background: var(--surface-2);
  border-radius: 8px;
  padding: 10px;
}

.sum .v {
  font-size: 18px;
  font-weight: 600;
  letter-spacing: -.02em;
}

.sum .v.ok {
  color: var(--ok);
}

.sum .v.\!ok {
  color: var(--ok) !important;
}

.sum .v.bad {
  color: var(--bad);
}

.sum .l {
  font-size: 12px;
  color: var(--muted);
}

@media (max-width: 480px) {
  .sum {
    grid-template-columns: 1fr;
  }
}

.mrow {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
  margin-top: 14px;
}

.mrow h3 {
  margin: 0;
}

/* ---------- master-detail, drawer, formuláře v kartách ---------- */

.md {
  display: grid;
  grid-template-columns: 340px minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}

@media (max-width: 980px) {
  .md {
    grid-template-columns: 1fr;
  }
}

.list {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.li {
  display: flex;
  flex-direction: column;
  gap: 3px;
  text-align: left;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  width: 100%;
  color: var(--ink);
  text-decoration: none;
}

.li:last-child {
  border-bottom: 0;
}

.li:hover {
  background: var(--surface-2);
  text-decoration: none;
}

.li.on {
  background: var(--brand-soft);
  box-shadow: inset 3px 0 0 var(--brand);
}

.li b {
  font-weight: 600;
  font-size: 14.5px;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.li .kidsl {
  font-size: 13px;
  color: var(--muted);
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.li .kidsl i, .kdot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  display: inline-block;
  margin-right: 4px;
  vertical-align: 1px;
}

.li.ended {
  opacity: .6;
}

.drawer {
  position: fixed;
  top: 56px;
  right: 0;
  bottom: 0;
  width: 520px;
  max-width: 100vw;
  background: var(--surface);
  border-left: 1px solid var(--line);
  box-shadow: -12px 0 32px rgba(27, 36, 48, .12);
  z-index: 35;
  overflow: auto;
  transform: translateX(100%);
  transition: transform .18s;
}

.drawer.open {
  transform: none;
}

.drawer .dh2 {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--line);
  position: sticky;
  top: 0;
  background: var(--surface);
  z-index: 1;
}

.drawer .dh2 h2 {
  font-size: 17px;
  margin: 0;
}

.drawer .dh2 .sub {
  font-size: 13px;
  color: var(--muted);
  margin-top: 2px;
}

.drawer .dh2 .x {
  margin-left: auto;
  width: 30px;
  height: 30px;
  border-radius: 6px;
  display: grid;
  place-items: center;
  color: var(--muted);
  flex: none;
  background: none;
  border: 0;
}

.drawer .dh2 .x:hover {
  background: var(--surface-3);
}

.drawer .dh2 .x svg {
  width: 16px;
  height: 16px;
}

.drawer .db {
  padding: 16px 20px 28px;
  display: grid;
  gap: 18px;
}

.drawer h3, .sect-h {
  font-size: 14px;
  color: var(--muted);
  font-weight: 500;
  margin: 0 0 8px;
}

@media (max-width: 760px) {
  .drawer {
    top: 0;
  }
}

.frm2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.frm2 .full {
  grid-column: 1 / -1;
}

.frm2.c3 {
  grid-template-columns: 1fr 1fr 1fr;
}

@media (max-width: 600px) {
  .frm2, .frm2.c3 {
    grid-template-columns: 1fr;
  }
}

.fld {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.fld label {
  font-size: 12.5px;
  color: var(--muted);
  margin: 0;
  font-weight: 400;
}

.fld input, .fld select, .fld textarea {
  height: 36px;
  border: 1px solid var(--line-2);
  border-radius: var(--r);
  padding: 0 10px;
  font-size: 14px;
  background: var(--surface);
  width: 100%;
}

.fld textarea {
  height: auto;
  padding: 8px 10px;
  min-height: 60px;
  resize: vertical;
}

.fld input:disabled, .fld input[readonly] {
  background: var(--surface-2);
  color: var(--muted);
}

.fld .ro {
  height: 36px;
  display: flex;
  align-items: center;
  font-size: 14px;
  color: var(--ink-2);
}

.act-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}

.tbl tbody tr.click td {
  cursor: pointer;
}

.tbl tbody tr.click:hover td {
  background: var(--surface-2);
}

.tbl tbody tr.sel td {
  background: var(--brand-soft);
}

.tbl tr.ban td {
  color: var(--muted);
  background: var(--hatch);
}

.tbl tr.\!ban td {
  color: var(--muted) !important;
  background: var(--hatch) !important;
}

.tbl tr.ban td:first-child .nm {
  text-decoration: line-through;
}

.tbl tr.\!ban td:first-child .nm {
  text-decoration: line-through !important;
}

.tbl td.pozn {
  max-width: 320px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.money {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.money.plus {
  color: var(--ok);
}

.money.minus {
  color: var(--bad);
}

.led td .doc {
  display: block;
  font-size: 12px;
  color: var(--muted);
}

.led tr.info td {
  color: var(--muted);
}

.led tr.corr td {
  background: var(--warn-soft);
}

.led tr.fail td {
  background: var(--bad-soft);
}

.mstep {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-bottom: 16px;
}

@media (max-width: 980px) {
  .mstep {
    grid-template-columns: 1fr 1fr;
  }
}

.ms {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 10px 12px;
  display: grid;
  grid-template-columns: 26px 1fr;
  gap: 10px;
  align-items: start;
}

.ms .n {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 1.5px solid var(--line-2);
  display: grid;
  place-items: center;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  background: var(--surface);
}

.ms .\!n {
  width: 24px !important;
  height: 24px !important;
  border-radius: 50% !important;
  border: 1.5px solid var(--line-2) !important;
  display: grid !important;
  place-items: center !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  color: var(--muted) !important;
  background: var(--surface) !important;
}

.ms .n svg {
  width: 13px;
  height: 13px;
}

.ms .\!n svg {
  width: 13px !important;
  height: 13px !important;
}

.ms.done .n {
  background: var(--ok);
  border-color: var(--ok);
  color: #fff;
}

.ms.done .\!n {
  background: var(--ok) !important;
  border-color: var(--ok) !important;
  color: #fff !important;
}

.ms.now .n {
  border-color: var(--ink);
  color: var(--ink);
}

.ms.now .\!n {
  border-color: var(--ink) !important;
  color: var(--ink) !important;
}

.ms b {
  display: block;
  font-size: 13.5px;
  font-weight: 600;
}

.ms span {
  font-size: 12.5px;
  color: var(--muted);
  display: block;
}

.ms .btn, .ms form {
  margin-top: 8px;
}

.ms form {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  align-items: center;
}

.ms form .field {
  height: 30px;
}

.ms form .field input {
  width: 120px;
  font-size: 13px;
}

.dayt td {
  padding: 5px 10px;
}

.mk {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 13px;
  white-space: nowrap;
}

.mk svg {
  width: 12px;
  height: 12px;
}

.mk.ok {
  color: var(--ink);
}

.mk.\!ok {
  color: var(--ink) !important;
}

.mk.off {
  color: var(--muted);
}

.mk.late {
  color: var(--warn);
}

.mk.na {
  color: var(--line-2);
}

.mk.box {
  color: var(--brand);
}

button.mk {
  background: none;
  border: 1px solid transparent;
  border-radius: 4px;
  padding: 2px 6px;
  margin: -2px -6px;
  cursor: pointer;
  font: inherit;
  font-size: 13px;
  line-height: 1.2;
}

button.mk:hover, button.mk:focus-visible {
  border-color: var(--line-2);
  background: var(--surface);
}

button.mk.na:hover {
  color: var(--ink-2);
}

.mk.extra::after {
  content: "jednorázově";
  font-size: 10.5px;
  color: var(--brand);
  margin-left: 3px;
}

.dayt tr.closed td {
  color: var(--muted);
  background: var(--hatch);
}

.rowact {
  opacity: 0;
  transition: opacity .12s;
}

tr:hover .rowact, tr:focus-within .rowact {
  opacity: 1;
}

@media (hover: none) {
  .rowact {
    opacity: 1;
  }
}

.chk {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 6px;
  font-size: 14px;
  border-radius: var(--r);
  color: var(--ink);
  font-weight: 400;
  margin: 0;
}

.chk:hover {
  background: var(--surface-3);
}

.chk input {
  width: 16px;
  height: 16px;
  accent-color: var(--ink);
  flex: none;
  margin: 0;
}

.chk .r {
  margin-left: auto;
  font-size: 12.5px;
  color: var(--muted);
  white-space: nowrap;
}

.chk .\!r {
  margin-left: auto !important;
  font-size: 12.5px !important;
  color: var(--muted) !important;
  white-space: nowrap !important;
}

.back {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--brand);
  font-size: 14px;
  margin-bottom: 8px;
  text-decoration: none;
}

.back svg {
  width: 14px;
  height: 14px;
}

.two.eq {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

@media (max-width: 1100px) {
  .two.eq {
    grid-template-columns: 1fr;
  }
}

.kidcard {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px 14px;
  display: grid;
  gap: 10px;
}

.kidcard.ended {
  background: var(--surface-2);
}

.kidcard .kh {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.kidcard .kh b {
  font-size: 15px;
  font-weight: 600;
}

.kidcard .kh .r {
  margin-left: auto;
  display: flex;
  gap: 6px;
}

.kidcard .kh .\!r {
  margin-left: auto !important;
  display: flex !important;
  gap: 6px !important;
}

.codebox {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  background: var(--surface-2);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px 14px;
}

.codebox code {
  font-family: "IBM Plex Mono", ui-monospace, monospace;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: .04em;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 4px 10px;
}

.codebox .r {
  margin-left: auto;
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.codebox .\!r {
  margin-left: auto !important;
  display: flex !important;
  gap: 6px !important;
  flex-wrap: wrap !important;
}

.sel-cell {
  border: 1px solid var(--line-2);
  border-radius: var(--r);
  height: 36px;
  padding: 0 10px;
  font-size: 14px;
  background: var(--surface);
  width: auto;
}

/* přepínače P/O/S jako zaškrtávátka ve tvaru čtverečků */

.mct {
  display: inline-flex;
  gap: 3px;
  height: 36px;
  align-items: center;
}

.mct label {
  margin: 0;
  cursor: pointer;
  position: relative;
}

.mct label input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.mct .mc {
  width: 34px;
  height: 34px;
}

.mct label:has(input:checked) .mc {
  background: var(--zel-soft);
  border-color: var(--zel-line);
  border-style: solid;
  color: var(--zel);
}

.mct label:has(input:checked) .mc::after {
  display: none;
}

.mct label:has(input:focus-visible) .mc {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
}

/* ---------- sklad ---------- */

.subtabs {
  display: flex;
  gap: 2px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 18px;
  overflow-x: auto;
}

.subtabs a {
  position: relative;
  height: 40px;
  padding: 0 14px;
  font-weight: 500;
  font-size: 14.5px;
  color: var(--ink-2);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  text-decoration: none;
  white-space: nowrap;
}

.subtabs a:hover {
  color: var(--ink);
  text-decoration: none;
}

.subtabs a.on {
  color: var(--ink);
}

.subtabs a.on::after {
  content: "";
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: -1px;
  height: 2px;
  background: var(--brand);
}

.subtabs .bdg {
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 9px;
  background: var(--surface-3);
  color: var(--ink-2);
  font-size: 11.5px;
  display: inline-grid;
  place-items: center;
  font-weight: 600;
}

.subtabs .bdg.bad {
  background: var(--bad);
  color: #fff;
}

.subtabs .bdg.warn {
  background: var(--warn);
  color: #fff;
}

.qty {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.qty.neg {
  color: var(--bad);
  font-weight: 600;
}

.qin {
  width: 110px !important;
  height: 32px !important;
  border: 1px solid var(--line-2);
  border-radius: var(--r);
  padding: 0 8px;
  font-size: 14px;
  text-align: right;
  font-variant-numeric: tabular-nums;
  background: var(--surface);
}

.qin:focus {
  outline: 2px solid var(--brand);
  outline-offset: 0;
  border-color: var(--brand);
}

.qin.changed {
  border-color: var(--warn-line);
  background: var(--warn-soft);
}

.qin.neg {
  border-color: var(--bad-line);
  background: var(--bad-soft);
  color: var(--bad);
}

.drawer .qin {
  width: 84px !important;
}

.tbl td .u {
  color: var(--muted);
  font-size: 12.5px;
  margin-left: 4px;
}

.typ {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 7px;
  border-radius: 4px;
  font-size: 11.5px;
  font-weight: 500;
  white-space: nowrap;
}

.typ.prijemka {
  background: var(--ok-soft);
  color: var(--ok);
}

.typ.vydejka {
  background: var(--mod-soft);
  color: var(--mod);
}

.typ.odpis {
  background: var(--bad-soft);
  color: var(--bad);
}

.typ.inventura {
  background: var(--brand-soft);
  color: var(--brand);
}

.typ.storno, .typ.korekce {
  background: var(--warn-soft);
  color: var(--warn);
}

 .typ.\!korekce {
  background: var(--warn-soft) !important;
  color: var(--warn) !important;
}

.flowbar {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  font-size: 13px;
  color: var(--muted);
  margin: -6px 0 14px;
}

.flowbar span {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 2px 10px;
  color: var(--ink-2);
}

.flowbar i {
  width: 14px;
  height: 1px;
  background: var(--line-2);
  display: inline-block;
}

.tbl tr.done td {
  color: var(--muted);
}

.strike {
  text-decoration: line-through;
}

/* ---------- toast ---------- */

.toast {
  position: fixed;
  left: 50%;
  bottom: 24px;
  transform: translateX(-50%) translateY(12px);
  background: var(--ink);
  color: #fff;
  padding: 10px 16px;
  border-radius: 8px;
  font-size: 14px;
  opacity: 0;
  pointer-events: none;
  transition: .18s;
  z-index: 60;
  box-shadow: var(--shadow-pop);
}

.toast.show {
  opacity: 1;
  transform: translateX(-50%);
}

/* ============================================================
       Legacy třídy – přemapované na nový design systém
       ============================================================ */

.panel {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  padding: 16px;
  margin-bottom: 14px;
}

.panel > h2:first-child, .panel > h3:first-child {
  margin-top: 0;
}

.panel-hlavicka {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}

.panel-hlavicka h2, .panel-hlavicka h3 {
  margin: 0;
  font-size: 15.5px;
}

.mrizka {
  display: grid;
  gap: 14px;
}

.mrizka-2 {
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
}

.mrizka-3 {
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

/* formuláře */

label {
  display: block;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--muted);
  margin-bottom: 4px;
}

input:not([type]), input[type=text], input[type=password], input[type=date], input[type=number],
    input[type=email], input[type=time], input[type=file], input[type=search], input[type=tel], select, textarea {
  width: 100%;
  height: 36px;
  padding: 0 10px;
  border: 1px solid var(--line-2);
  border-radius: var(--r);
  font-family: inherit;
  font-size: 14px;
  background: var(--surface);
  color: inherit;
  transition: border-color .12s ease, box-shadow .12s ease;
}

textarea {
  height: auto;
  padding: 8px 10px;
  line-height: 1.45;
}

input[type=file] {
  padding: 6px 10px;
}

input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--ink-2);
  box-shadow: 0 0 0 3px var(--surface-3);
}

.pole {
  margin-bottom: 12px;
}

.radek-poli {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: flex-end;
}

.radek-poli > * {
  flex: 1 1 150px;
}

.radek-poli form {
  margin: 0;
}

.zaskrtavaci {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 14px;
  font-weight: 400;
  color: var(--ink);
  margin-bottom: 6px;
}

.zaskrtavaci input {
  width: auto;
  height: auto;
  accent-color: var(--brand);
}

input[type=checkbox], input[type=radio] {
  accent-color: var(--brand);
  width: auto;
  height: auto;
}

/* tabulky */

.tabulka-obal {
  overflow-x: auto;
}

table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

th {
  text-align: left;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--muted);
  padding: 8px 10px;
  border-bottom: 1px solid var(--line);
}

td {
  padding: 8px 10px;
  border-bottom: 1px solid var(--line);
  vertical-align: top;
}

tr:last-child td {
  border-bottom: none;
}

.cislo {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* hlášky */

.hlaska {
  display: flow-root;
  padding: 10px 12px;
  border-radius: var(--r);
  margin-bottom: 14px;
  font-size: 14px;
}

.hlaska a {
  color: inherit;
  text-decoration: underline;
}

.hlaska-chyba {
  background: var(--bad-soft);
  color: var(--bad);
}

.hlaska-info {
  background: var(--surface-3);
  color: var(--ink-2);
}

.hlaska-varovani {
  background: var(--warn-soft);
  color: var(--warn);
}

.prazdno {
  color: var(--muted);
  font-size: 14px;
  padding: 8px 0;
  margin: 0;
}

.odkaz-tichy {
  border: none;
  background: none;
  cursor: pointer;
  color: var(--muted);
  font-size: 12.5px;
  text-decoration: underline;
  padding: 0;
  font-family: inherit;
}

.odkaz-tichy:hover {
  color: var(--ink);
}

/* souhrny (Ekonomika, Vyúčtování…) */

.souhrn {
  display: flex;
  gap: 0;
  flex-wrap: wrap;
  margin: 10px 0;
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  overflow: hidden;
  background: var(--surface);
}

.souhrn div {
  flex: 1 1 120px;
  min-width: 108px;
  padding: 12px 16px;
  border-right: 1px solid var(--line);
}

.souhrn div:last-child {
  border-right: 0;
}

.souhrn div span {
  display: block;
  font-size: 12.5px;
  color: var(--muted);
  margin-top: 3px;
  order: 2;
}

.souhrn div {
  display: flex;
  flex-direction: column;
}

.souhrn div strong {
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -.02em;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
  order: 1;
}

.souhrn-velky div strong {
  font-size: 26px;
}

.souhrn div.je-hlavni strong {
  color: var(--brand);
}

.souhrn div.je-zaporne strong {
  color: var(--bad);
}

.panel-alergie {
  border-left: 3px solid var(--warn);
}

.panel-alergie h2 {
  color: var(--warn);
  font-size: 15.5px;
  margin-top: 0;
}

.seznam-alergii, .seznam-nakupu {
  margin: 0;
  padding-left: 18px;
}

.seznam-alergii li, .seznam-nakupu li {
  margin-bottom: 4px;
  font-size: 14px;
}

/* semafor norem (karty) */

.pruh.je-varovani span {
  background: var(--warn);
}

.rada {
  display: flex;
  gap: 9px;
  padding: 9px 12px;
  border-radius: var(--r);
  margin-bottom: 7px;
  font-size: 14px;
}

.navrh {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  margin-bottom: 7px;
  background: var(--surface);
}

.navrh:hover {
  border-color: var(--line-2);
}

.navrh-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 14px;
  margin-top: 3px;
  font-size: 12.5px;
  color: var(--muted);
}

.navrh-meta > span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.obliba-hvezdy {
  display: inline-flex;
  color: var(--star);
  line-height: 1;
}

.obliba-hvezdy .je-prazdna {
  color: var(--line-2);
}

/* veřejný jídelníček */

.\!den {
  border: 1px solid var(--line) !important;
  border-radius: var(--r-card) !important;
  background: var(--surface) !important;
  margin-bottom: 12px !important;
  overflow: hidden !important;
}

.den {
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  background: var(--surface);
  margin-bottom: 12px;
  overflow: hidden;
}

.den-hlavicka {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--line);
  flex-wrap: wrap;
  background: var(--surface-2);
}

.den-datum {
  font-weight: 600;
  text-transform: capitalize;
}

.den-telo {
  padding: 10px 16px;
}

.\!jidlo {
  padding: 7px 0 !important;
  border-bottom: 1px solid var(--line) !important;
}

.jidlo {
  padding: 7px 0;
  border-bottom: 1px solid var(--line);
}

.\!jidlo:last-child {
  border-bottom: none !important;
}

.jidlo:last-child {
  border-bottom: none;
}

.jidlo-nazev {
  font-size: 12px;
  font-weight: 500;
  color: var(--muted);
}

.pokrm {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
  padding: 2px 0;
}

/* kalendář (legacy) */

.kalendar-den.mimo {
  opacity: .35;
}

.kalendar-den.odebrano {
  background: var(--surface-3);
  border-color: var(--surface-3);
}

/* hodnocení (legacy) */

/* plánovací tabule (legacy třídy – Receptury a další je nepoužívají, zůstávají pro jistotu) */

.semafor-nadpis {
  font-size: 12px;
  font-weight: 500;
  color: var(--muted);
  margin: 12px 0 4px;
}

.semafor-radek {
  display: flex;
  align-items: baseline;
  gap: 7px;
  padding: 3px 0;
  font-size: 13px;
}

.semafor-tecka {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  flex: 0 0 auto;
  align-self: center;
  background: var(--line-2);
}

.semafor-radek.je-splneno .semafor-tecka {
  background: var(--ok);
}

.semafor-radek.je-varovani .semafor-tecka {
  background: var(--warn);
}

.semafor-radek.je-blokace .semafor-tecka {
  background: var(--bad);
}

.semafor-radek.je-tip .semafor-tecka {
  background: var(--mod);
}

.semafor-nazev {
  flex: 1;
  min-width: 0;
}

.semafor-radek.je-blokace .semafor-nazev {
  color: var(--bad);
  font-weight: 500;
}

.semafor-radek.je-varovani .semafor-nazev {
  color: var(--warn);
}

.semafor-stav {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  color: var(--muted);
}

.semafor-rada {
  font-size: 12px;
  color: var(--muted);
  margin: 0 0 4px 16px;
}

/* katalog receptur */

.filtr-panel {
  padding: 14px 16px;
}

.filtr-hledani input {
  max-width: 340px;
  margin-bottom: 8px;
}

.filtr-radek {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 6px;
}

.filtr-popisek {
  font-size: 12px;
  font-weight: 500;
  color: var(--muted);
  flex: 0 0 auto;
  width: 78px;
}

.filtr-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 28px;
  padding: 0 11px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: var(--surface);
  text-decoration: none;
  color: var(--ink-2);
  font-size: 13px;
  white-space: nowrap;
}

.filtr-chip:hover {
  border-color: var(--line-2);
  color: var(--ink);
  text-decoration: none;
}

.filtr-chip.je-aktivni {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
  font-weight: 500;
}

.recepty-mrizka {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 14px;
}

.recept-karta {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: var(--ink);
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  overflow: hidden;
  transition: border-color .12s ease;
}

.recept-karta:hover {
  border-color: var(--line-2);
  text-decoration: none;
}

.recept-foto {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 4 / 3;
  background: var(--surface-3);
  overflow: hidden;
}

.recept-foto img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  display: block;
}

.recept-foto-nahrada {
  font-size: 44px;
  opacity: .45;
}

.recept-foto-stitek {
  position: absolute;
  top: 7px;
  right: 7px;
  padding: 2px 9px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .92);
  font-size: 11px;
  font-weight: 500;
  color: var(--ink-2);
  border: 1px solid var(--line);
}

.recept-telo {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 10px 12px 12px;
}

.recept-nazev {
  font-weight: 500;
  font-size: 14px;
  line-height: 1.3;
}

.recept-stitky {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}

.recept-foto-detail {
  aspect-ratio: 4 / 3;
  border-radius: 8px;
  border: 1px solid var(--line);
}

.recept-detail-mrizka {
  display: grid;
  grid-template-columns: 260px 1fr;
  gap: 16px;
  align-items: start;
}

@media (max-width: 720px) {
  .recept-detail-mrizka {
    grid-template-columns: 1fr;
  }
}

.tabulka-suroviny {
  table-layout: fixed;
  min-width: 760px;
}

.tabulka-suroviny th, .tabulka-suroviny td {
  padding: 6px 8px;
  vertical-align: middle;
}

.tabulka-suroviny th {
  line-height: 1.25;
}

.hlavicka-jednotka {
  display: block;
  font-weight: 400;
  font-size: 11px;
}

.sloupec-gram {
  width: 112px;
}

.sloupec-netto {
  width: 132px;
}

.sloupec-akce {
  width: 46px;
  text-align: center;
}

.tabulka-suroviny input {
  height: 32px;
  padding: 0 7px;
  font-size: 13.5px;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.bunka-surovina {
  line-height: 1.3;
}

.bunka-surovina input {
  text-align: left;
  font-variant-numeric: normal;
}

.surovina-nazev {
  display: block;
  font-weight: 500;
  overflow-wrap: anywhere;
}

.radek-pridani td {
  border-bottom: none;
  border-top: 1px solid var(--line);
  padding-top: 10px;
}

.tlacitko-kos {
  border: none;
  background: none;
  cursor: pointer;
  color: var(--muted);
  font-size: 15px;
  line-height: 1;
  padding: 5px 7px;
  border-radius: 4px;
}

.tlacitko-kos:hover {
  color: var(--bad);
  background: var(--bad-soft);
}

.akce-gramaze {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 10px;
}

/* modální okno */

.vyber-pozadi {
  position: fixed;
  inset: 0;
  z-index: 100;
  background: rgba(27, 36, 48, .45);
  animation: pozadi-najeti .15s ease;
  overflow-y: auto;
}

@keyframes pozadi-najeti {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

.vyber-zavrit-plocha {
  position: absolute;
  inset: 0;
}

.vyber-okno {
  position: relative;
  max-width: 640px;
  margin: 5vh auto;
  max-height: 88vh;
  overflow-y: auto;
  background: var(--surface);
  border-radius: var(--r-card);
  box-shadow: var(--shadow-pop);
  padding: 18px 20px;
  border: 1px solid var(--line);
}

.vyber-okno-siroke {
  max-width: min(1120px, 94vw);
}

.vyber-hlavicka {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}

.vyber-hlavicka h2 {
  margin: 0;
  font-size: 17px;
}

/* kotvy – chipy (Receptury, panel výběru) */

.rezim.je-aktivni {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
}

.kotva-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  height: 22px;
  padding: 0 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 500;
  text-decoration: none;
  max-width: 100%;
  color: var(--kotva-barva, var(--muted));
  background: color-mix(in srgb, var(--kotva-barva, #6B7683) 12%, #fff);
}

.kotva-chip .kotva-text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* pestrost */

.pestrost-dlazdice.je-prazdna {
  opacity: .55;
}

.pestrost-pocet .male {
  font-weight: 400;
}

.pestrost-opakovani {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

/* vstup pro rodiče, přihlášení */

.vstup {
  max-width: 470px;
  margin: 20px auto 60px;
}

.vstup-logo {
  display: block;
  width: 100%;
  max-width: 240px;
  height: auto;
  margin: 0 auto 18px;
}

/* Bez loga: název zařízení se značkou aplikace. */

.vstup-nazev {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-size: 22px;
  font-weight: 600;
  margin: 10px 0 22px;
  text-align: center;
}

.vstup-znak {
  width: 30px;
  height: 30px;
  border-radius: 8px;
  background: var(--brand);
  display: inline-grid;
  place-items: center;
  flex: none;
}

.vstup-znak::after {
  content: "";
  width: 14px;
  height: 14px;
  border-radius: 50% 50% 50% 0;
  background: #fff;
  transform: rotate(-45deg);
}

.vstup-panel {
  padding: 28px 26px;
}

.vstup-panel h1 {
  font-size: 24px;
  text-align: center;
}

.vstup-popis {
  color: var(--muted);
  font-size: 14px;
  text-align: center;
  margin: 8px 0 22px;
}

.vstup-panel label {
  text-align: center;
  font-size: 14px;
  font-weight: 500;
  color: var(--ink);
}

input.vstup-kod {
  height: 48px;
  padding: 0 14px;
  font-size: 20px;
  font-weight: 600;
  text-align: center;
  letter-spacing: .09em;
  text-transform: uppercase;
}

input.vstup-kod::-moz-placeholder {
  font-weight: 400;
  letter-spacing: .05em;
  text-transform: none;
  opacity: .5;
}

input.vstup-kod::placeholder {
  font-weight: 400;
  letter-spacing: .05em;
  text-transform: none;
  opacity: .5;
}

.vstup-tlacitko {
  display: flex;
  width: 100%;
  height: 44px;
  font-size: 15.5px;
}

.vstup-poznamka {
  margin: 18px 0 0;
  text-align: center;
}

.static {
  position: static;
}

.block {
  display: block;
}

.flex {
  display: flex;
}

.table {
  display: table;
}

.hidden {
  display: none;
}

.flex-none {
  flex: none;
}

.transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.resize {
  resize: both;
}

.flex-wrap {
  flex-wrap: wrap;
}

.items-center {
  align-items: center;
}

.justify-end {
  justify-content: flex-end;
}

.gap-2 {
  gap: 0.5rem;
}

.whitespace-nowrap {
  white-space: nowrap;
}

.text-right {
  text-align: right;
}

.opacity-60 {
  opacity: 0.6;
}

.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

/* ============================================================
   Jídelna Kolomazníček – design systém podle návrhu v2
   (docs/jidelna-navrh-v2-2.html). Klidná pracovní aplikace:
   IBM Plex Sans, bílé karty na šedém podkladu, švestková značka,
   zelená a modrá skupina, konzistentní stavy přihlášeno / odhlášeno
   včas / po uzávěrce / zavřeno. Barvy kotev jsou vlastní barvy typů
   obědů, nikdy se nepletou se stavovými barvami.
   Legacy třídy (panel, tlacitko, stitek, hlaska…) zůstávají, aby se
   přestylovaly i stránky, které návrh zatím nezpracoval.
   ============================================================ */

@media (max-width: 1080px) {
  .tabule-obal {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 720px) {
  .vyber-okno {
    margin: 0;
    max-height: 100vh;
    border-radius: 0;
  }

  .kgrid {
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  }

  .kgrid .hd, .kgrid .kd.out {
    display: none;
  }

  .kgrid .wl {
    grid-column: 1 / -1;
  }
}

@media (prefers-reduced-motion: reduce) {
  * {
    transition: none !important;
    animation: none !important;
  }
}
