/* Jiří Motejl · design system v1. Source of truth for web and document renderers.
   Fonts and legacy text wordmark: logo.css. Internal rules: docs/brand-design-system.md. */
:root {
  color-scheme: light;
  --bg: #f1f0ec;
  --card: #ffffff;
  --panel: #f5f5f3;
  --ink: #16161a;
  --muted: #6b6b74;
  --rule: #e4e4e8;
  --control-border: #85858e;
  --success: #1d5c40;
  --warning: #805500;
  --danger: #b42318;
  --portrait-bg: #0c0c0e;
  --accent: var(--ink);
  --bar: var(--ink);
  --stamp: var(--success);
  --font-body: "Bricolage", system-ui, sans-serif;
  --text-caption: 12px;
  --text-small: 14px;
  --text-body: 16px;
  --text-lead: 18px;
  --text-heading: 26px;
  --text-title: 34px;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 40px;
  --space-8: 48px;
  --radius-control: 10px;
  --radius-panel: 12px;
  --radius-card: 16px;
  --control-height: 44px;
  --motion-feedback: 120ms;
  --shadow: 0 1px 2px rgb(0 0 0 / .04), 0 8px 24px rgb(0 0 0 / .06);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --bg: #0c0c0e; --card: #17171a; --panel: #1f1f23;
    --ink: #f4f4f2; --muted: #9a9aa3; --rule: #2a2a2f; --control-border: #74747e;
    --success: #5fb389; --warning: #e4bb68; --danger: #ffb4ab;
    --shadow: 0 1px 2px rgb(0 0 0 / .3), 0 8px 24px rgb(0 0 0 / .3);
  }
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #0c0c0e; --card: #17171a; --panel: #1f1f23;
  --ink: #f4f4f2; --muted: #9a9aa3; --rule: #2a2a2f; --control-border: #74747e;
  --success: #5fb389; --warning: #e4bb68; --danger: #ffb4ab;
  --shadow: 0 1px 2px rgb(0 0 0 / .3), 0 8px 24px rgb(0 0 0 / .3);
}
/* Varianta s nižším kontrastem pro pracovní aplikace, na které se člověk dívá dlouho (appka mtjl_).
   Měkčí inkoust, teplejší papír a tlumené akcenty: --accent pro primární akci, výběr a hlavní řadu grafu,
   --series-2/3 pro další řady. Odstíny se míchají z akcentu (--accent-soft, --accent-mid). Web a dokumenty ji nepoužívají. */
:root[data-contrast="soft"]:not([data-theme="dark"]) {
  --bg: #eeede8; --card: #f8f7f3; --panel: #efeee9;
  --ink: #36363d; --muted: #6f6f76; --rule: #e3e2dc; --control-border: #b1b0aa;
  --success: #2f6a4e; --warning: #86621a; --danger: #a4453b;
  --accent: #3f6e78; --accent-ink: #f8f7f3; --series-2: #b0805a; --series-3: #7f8e60;
}
@media (prefers-color-scheme: dark) {
  :root[data-contrast="soft"]:not([data-theme="light"]) {
    --bg: #1a1b1f; --card: #222328; --panel: #2a2b30;
    --ink: #d2d2cd; --muted: #94949b; --rule: #313238; --control-border: #55565d;
    --success: #7cba97; --warning: #d8b26c; --danger: #e6a198;
    --accent: #82afb6; --accent-ink: #1a1b1f; --series-2: #cf9f7a; --series-3: #a6b48a;
  }
}
:root[data-contrast="soft"][data-theme="dark"] {
  --bg: #1a1b1f; --card: #222328; --panel: #2a2b30;
  --ink: #d2d2cd; --muted: #94949b; --rule: #313238; --control-border: #55565d;
  --success: #7cba97; --warning: #d8b26c; --danger: #e6a198;
  --accent: #82afb6; --accent-ink: #1a1b1f; --series-2: #cf9f7a; --series-3: #a6b48a;
}
:root[data-contrast="soft"] {
  --accent-soft: color-mix(in srgb, var(--accent) 13%, var(--card));
  --accent-mid: color-mix(in srgb, var(--accent) 45%, var(--card));
  --bar: color-mix(in srgb, var(--accent) 78%, var(--card));
}
:root[data-contrast="soft"] :is(.jm-button--primary, .tb.primary, .btn:not(.ghost)) { background: var(--accent); color: var(--accent-ink); border-color: var(--accent); }
:root[data-contrast="soft"] :is(.theme-toggle, .jm-button, .tb, .btn):hover { border-color: var(--accent); }
:root[data-contrast="soft"] :is(.theme-toggle, .jm-button, .tb, .btn, .jm-input):focus-visible { outline-color: var(--accent); }
.brand { display: inline-flex; align-items: center; flex: none; }
.brand img { display: block; height: 40px; width: auto; }
.brand:focus-visible { outline: 2px solid var(--ink); outline-offset: 6px; border-radius: 4px; }
.logo-dark { display: none !important; }
:root[data-theme="dark"] .logo-light { display: none !important; }
:root[data-theme="dark"] .logo-dark { display: block !important; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .logo-light { display: none !important; }
  :root:not([data-theme="light"]) .logo-dark { display: block !important; }
}
.theme-toggle, .jm-button, .tb, .btn {
  appearance: none; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: var(--control-height); padding: 10px 14px; border: 1px solid var(--control-border);
  border-radius: var(--radius-control); background: var(--card); color: var(--ink);
  font: inherit; font-size: 15px; font-weight: 600; line-height: 1.4; text-decoration: none; cursor: pointer;
  transition: border-color var(--motion-feedback), background-color var(--motion-feedback);
}
.theme-toggle, .tb.icon { width: 44px; height: 44px; padding: 0; flex: none; }
.jm-button--primary, .tb.primary, .btn:not(.ghost) { background: var(--ink); color: var(--card); border-color: var(--ink); }
.jm-button--ghost, .btn.ghost { background: transparent; color: var(--ink); }
:is(.theme-toggle, .jm-button, .tb, .btn):hover { border-color: var(--ink); }
:is(.theme-toggle, .jm-button, .tb, .btn):focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
:is(.theme-toggle, .jm-button, .tb, .btn):disabled { opacity: .45; cursor: not-allowed; }
:is(.jm-button, .tb)[aria-busy="true"] { cursor: progress; }
.tb svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.jm-card { background: var(--card); border: 1px solid var(--rule); border-radius: var(--radius-card); padding: var(--space-7); }
.jm-field { display: grid; gap: 8px; font-size: var(--text-small); }
.jm-input { width: 100%; min-height: 44px; padding: 12px 14px; border: 1px solid var(--control-border);
  border-radius: var(--radius-control); background: var(--card); color: var(--ink); font: inherit; font-size: 16px; }
.jm-input:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.jm-input[aria-invalid="true"] { border-color: var(--danger); }
.jm-help { color: var(--muted); font-size: var(--text-small); }
.jm-error { color: var(--danger); font-size: var(--text-small); font-weight: 600; }
.jm-status { display: inline-flex; align-items: center; gap: 6px; font-size: var(--text-small); font-weight: 600; }
.jm-status--success { color: var(--success); }
.jm-status--warning { color: var(--warning); }
.jm-status--danger { color: var(--danger); }
.jm-table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.jm-table th { color: var(--muted); font-size: 12px; font-weight: 600; text-align: left; }
.jm-table th, .jm-table td { padding: 12px 0; border-bottom: 1px solid var(--rule); }
.jm-table .num { text-align: right; white-space: nowrap; padding-left: 16px; }
@media (max-width: 640px) { .jm-card { padding: 24px 18px; } }
@media (prefers-reduced-motion: reduce) { :is(.theme-toggle, .jm-button, .tb, .btn) { transition: none; } }
@media print {
  :root, :root[data-theme] { color-scheme: light; --bg: #fff; --card: #fff; --panel: #f5f5f3;
    --ink: #16161a; --muted: #6b6b74; --rule: #e4e4e8; --control-border: #85858e;
    --success: #1d5c40; --warning: #805500; --danger: #b42318; --shadow: none; }
  :root[data-theme] .logo-light, :root:not([data-theme]) .logo-light { display: block !important; }
  :root[data-theme] .logo-dark, :root:not([data-theme]) .logo-dark { display: none !important; }
  .theme-toggle { display: none !important; }
}
