/* =====================================================
   Reditas — design systém
   -----------------------------------------------------
   Vychází z webu reditas.cz: černobílá paleta, patkové písmo Baskervville
   v nadpisech, Manrope v textu, ostré rohy, tenké linky a černé plochy
   s bílým textem (hlavička, hero, patička). Tlačítka jsou verzálkami
   s prostrkáním, po najetí se barvy obrátí — stejně jako na webu.

   Barva se v aplikaci používá JEN jako signál (stav případu, platba po
   termínu, plomba na LV). Všechno ostatní je v odstínech šedi, aby signál
   nebylo nutné hledat.

   Fonty jsou hostované lokálně — CSP blokuje externí zdroje.
   Názvy tříd drží konvenci linie Penvera → Finance, moduly převzaté odtud
   se proto nemusely upravovat.
   ===================================================== */

@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 300 800; font-display: swap;
    src: url('../fonts/manrope-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Manrope'; font-style: normal; font-weight: 300 800; font-display: swap;
    src: url('../fonts/manrope-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Baskervville'; font-style: normal; font-weight: 400 700; font-display: swap;
    src: url('../fonts/baskervville-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Baskervville'; font-style: normal; font-weight: 400 700; font-display: swap;
    src: url('../fonts/baskervville-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Baskervville'; font-style: italic; font-weight: 400 700; font-display: swap;
    src: url('../fonts/baskervville-italic-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Baskervville'; font-style: italic; font-weight: 400 700; font-display: swap;
    src: url('../fonts/baskervville-italic-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400 700; font-display: swap;
    src: url('../fonts/jetbrains-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'JetBrains Mono'; font-style: normal; font-weight: 400 700; font-display: swap;
    src: url('../fonts/jetbrains-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

:root {
    --bg: #f4f4f4;            /* --gray-light webu */
    --surface: #ffffff;
    --surface-2: #fafafa;
    --border: #e6e6e6;
    --border-soft: #eeeeee;
    --border-input: #d9d9d9;
    --line: #f0f0f0;

    --ink: #111111;           /* --text-color webu */
    --ink-2: #333333;         /* --gray-dark webu */
    --ink-3: #4d4d4d;
    --muted: #707070;
    --muted-2: #8a8a8a;
    --gray: #b3b3b3;
    --black: #000000;

    /* Primární akce = černá (jako tlačítka webu). */
    --primary: #000000;
    --primary-dark: #000000;
    --primary-bg: #f0f0f0;
    --primary-bd: #111111;

    /* Signální barvy — ztlumené, aby vedle černé působily klidně. */
    --blue: #2d4a73;   --blue-bg: #ebeff5;   --blue-bd: #cfd9e6;
    --green: #2e6a4c;  --green-bg: #e9f2ec;  --green-bd: #c9dfd1;
    --red: #9a3a2e;    --red-bg: #f7eae7;    --red-bd: #e8cbc5;  --red-dark: #7a2a20;
    --amber: #876419;  --amber-bg: #f7f0de;  --amber-bd: #e7d8ae; --amber-strong: #b08526;
    --mute-bg: #f2f2f2;

    --row-hover: #fafafa;
    --head-bg: #fafafa;

    --serif: 'Baskervville', 'Times New Roman', Georgia, serif;
    --sans: 'Manrope', system-ui, -apple-system, 'Segoe UI', sans-serif;
    --mono: 'JetBrains Mono', ui-monospace, monospace;

    --radius: 2px;
    --radius-sm: 2px;
    --shadow-hover: 0 10px 30px rgba(0, 0, 0, .06);   /* .product-card:hover webu */
    --shadow-lg: 0 16px 40px rgba(0, 0, 0, .14);
    --ring: 0 0 0 2px #000;
    --appbar-h: 64px;
}

* { box-sizing: border-box; }
/* PAST: atribut `hidden` má nejnižší prioritu — `.form-group { display:flex }` ho přebije. */
[hidden] { display: none !important; }
html, body { margin: 0; padding: 0; }
body {
    background: var(--bg); color: var(--ink);
    font-family: var(--sans); font-size: 14px; line-height: 1.55; font-weight: 400;
    -webkit-font-smoothing: antialiased;
}
a { color: var(--ink); text-decoration: underline; text-decoration-color: #c4c4c4; text-underline-offset: 3px; transition: color .2s, text-decoration-color .2s; }
a:hover { color: #000; text-decoration-color: #000; }
h1, h2, h3, h4 { margin: 0; font-family: var(--serif); font-weight: 400; color: #000; letter-spacing: 0; line-height: 1.2; }
p { margin: 0 0 12px; }
input, select, button, textarea { font-family: inherit; font-size: inherit; }
.icon { flex: 0 0 auto; }
.num { font-family: var(--mono); font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.serif { font-family: var(--serif); }

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: #ececec; }
::-webkit-scrollbar-thumb { background: #bdbdbd; }

@keyframes riseIn  { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes fadeDown{ from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
@keyframes growW   { from { transform: scaleX(0); } to { transform: scaleX(1); } }

/* ============ Layout ============ */
.app { display: flex; flex-direction: column; min-height: 100vh; }
.content { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.page { width: 100%; max-width: 1440px; margin: 0 auto; padding: 30px 28px 80px; animation: riseIn 240ms ease both; }
.page-wide { max-width: none; }

/* ---- Černá horní lišta (hlavička webu, jen obrácená) ---- */
.appbar {
    position: sticky; top: 0; z-index: 40;
    display: flex; align-items: center; gap: 24px;
    height: var(--appbar-h); padding: 0 28px;
    background: #000; color: #fff;
}
.ab-brand { display: flex; align-items: center; text-decoration: none; }
.ab-brand img { height: 30px; width: auto; display: block; }
.ab-search { flex: 1; max-width: 420px; position: relative; display: flex; align-items: center; margin-left: 12px; }
.ab-search .icon { position: absolute; left: 12px; color: #8c8c8c; pointer-events: none; }
.ab-search input {
    width: 100%; padding: 9px 12px 9px 36px; border-radius: 0;
    border: 1px solid #333; background: #111; color: #fff; font-size: 13.5px;
}
.ab-search input::placeholder { color: #8c8c8c; }
.ab-search input:focus { outline: none; border-color: #fff; background: #000; }
.ab-right { margin-left: auto; display: flex; align-items: center; gap: 16px; }
.ab-alert {
    display: inline-flex; align-items: center; gap: 7px; white-space: nowrap;
    border: 1px solid #5c4a1c; color: #e8cf8f; padding: 5px 11px; font-size: 12.5px; font-weight: 600; text-decoration: none;
}
.ab-alert:hover { border-color: #e8cf8f; color: #fff; }
.ab-role { font-size: 10.5px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: #9a9a9a; white-space: nowrap; }
.ab-user { display: inline-flex; align-items: center; gap: 10px; color: #fff; text-decoration: none; font-size: 13.5px; font-weight: 600; }
.ab-user:hover { color: #fff; }
.ab-avatar {
    width: 32px; height: 32px; border-radius: 50%; border: 1px solid rgba(255,255,255,.45);
    display: grid; place-items: center; font-size: 11.5px; font-weight: 700; letter-spacing: .5px;
    transition: background .3s, color .3s;
}
.ab-user:hover .ab-avatar { background: #fff; color: #000; }
.ab-logout { color: #9a9a9a; display: inline-flex; padding: 6px; }
.ab-logout:hover { color: #fff; }

/* ---- Bílý pruh s agendou — verzálky jako navigace webu ---- */
.mainnav {
    position: sticky; top: var(--appbar-h); z-index: 39;
    display: flex; align-items: center; gap: 4px; flex-wrap: wrap;
    padding: 0 20px; background: rgba(255,255,255,.98); border-bottom: 1px solid var(--border);
}
.nav-item {
    display: inline-flex; align-items: center; gap: 8px; white-space: nowrap;
    padding: 16px 12px 14px; border: 0; border-bottom: 2px solid transparent; background: none;
    font-size: 12px; font-weight: 600; letter-spacing: 1.2px; text-transform: uppercase;
    color: var(--ink-3); text-decoration: none; cursor: pointer; transition: color .2s, border-color .2s;
}
.nav-item:hover { color: #000; border-bottom-color: #c4c4c4; }
.nav-item.is-active { color: #000; border-bottom-color: #000; }
.nav-badge {
    font-family: var(--mono); font-size: 10.5px; font-weight: 700; letter-spacing: 0;
    padding: 1px 6px; background: var(--mute-bg); color: var(--muted);
}
.nav-badge.is-alert { background: var(--red); color: #fff; }
.nav-badge.is-unread { background: #000; color: #fff; }
.nav-spacer { flex: 1; }
.nav-help {
    display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; text-decoration: none;
    padding: 7px 12px; border: 1px solid var(--border-input);
    font-size: 11px; font-weight: 600; letter-spacing: 1.2px; text-transform: uppercase; color: var(--ink-2);
    transition: all .3s;
}
.nav-help:hover, .nav-help.is-active { background: #000; border-color: #000; color: #fff; }
.nav-group { position: relative; }
.nav-group > summary { list-style: none; }
.nav-group > summary::-webkit-details-marker { display: none; }
.nav-caret { font-size: 8px; color: var(--muted); transition: transform .16s; }
.nav-group[open] .nav-caret { transform: rotate(180deg); }
.nav-menu {
    position: absolute; top: 100%; left: 0; z-index: 50; min-width: 220px; padding: 6px;
    display: flex; flex-direction: column; background: #fff; border: 1px solid #000;
    box-shadow: var(--shadow-lg); animation: fadeDown .16s ease both;
}
.nav-menu a { display: flex; align-items: center; gap: 10px; padding: 10px 12px; font-size: 13px; font-weight: 600; color: var(--ink-2); text-decoration: none; }
.nav-menu a:hover, .nav-menu a.is-active { background: #000; color: #fff; }
#pushToggle { font-size: 11px; color: var(--muted); }

/* ============ Hlavička stránky ============ */
.page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-bottom: 26px; }
.page-eyebrow { font-size: 11px; font-weight: 600; letter-spacing: 2.5px; text-transform: uppercase; color: var(--muted); margin: 0 0 8px; }
.page-title { font-size: 34px; line-height: 1.1; }
.page-sub { font-size: 13.5px; color: var(--muted); margin: 8px 0 0; font-weight: 300; }
.page-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.back-link { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; letter-spacing: 1px; text-transform: uppercase; color: var(--muted); text-decoration: none; margin-bottom: 10px; }
.back-link:hover { color: #000; }

.grid { display: grid; gap: 18px; }
.grid-2 { display: grid; gap: 18px; grid-template-columns: minmax(0, 1.9fr) minmax(0, 1fr); align-items: start; }
.grid-2-even { display: grid; gap: 18px; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
.grid-3 { display: grid; gap: 18px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-4 { display: grid; gap: 18px; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.grid-side { display: grid; gap: 18px; grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); align-items: start; }
.col-main, .col-side, .stack { display: flex; flex-direction: column; gap: 18px; min-width: 0; }

/* ============ Karty (product-card webu) ============ */
.card { background: #fff; border: 1px solid var(--border); border-radius: var(--radius); transition: border-color .3s, box-shadow .3s; }
.card-head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
    padding: 16px 22px; border-bottom: 1px solid var(--border-soft);
}
.card-title { font-family: var(--serif); font-size: 20px; font-weight: 400; color: #000; }
.card-note, .card-sub { font-size: 12.5px; color: var(--muted); font-weight: 400; }
.card-body { padding: 20px 22px; }
.card-body.is-flush { padding: 0; }
.card.is-danger { border-color: var(--red-bd); }
.card.is-dark { background: #000; color: #fff; border-color: #000; }
.card.is-dark .card-title { color: #fff; }
.card-link { display: block; color: inherit; text-decoration: none; }
.card-link:hover { border-color: #000; box-shadow: var(--shadow-hover); color: inherit; }

/* ---- Dlaždice s čísly (sekce „numbers" webu) ---- */
.stat-row { display: grid; gap: 14px; margin-bottom: 22px; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.stat {
    background: #fff; border: 1px solid var(--border); padding: 18px 20px;
    display: flex; flex-direction: column; gap: 6px; text-decoration: none; color: inherit;
    transition: border-color .3s, box-shadow .3s;
}
a.stat:hover { border-color: #000; box-shadow: var(--shadow-hover); color: inherit; }
.stat-label { font-size: 10.5px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: var(--muted); }
.stat-value { font-family: var(--serif); font-size: 32px; line-height: 1.1; color: #000; }
.stat-value small { font-family: var(--sans); font-size: 13px; color: var(--muted); margin-left: 4px; }
.stat-sub, .stat-note { font-size: 12.5px; color: var(--muted-2); }
.stat.is-red, .stat.is-alert { border-color: var(--red-bd); background: #fffafa; }
.stat.is-red .stat-value, .stat.is-alert .stat-value, .stat.is-red .stat-label, .stat.is-alert .stat-label { color: var(--red); }
.stat.is-amber { border-color: var(--amber-bd); background: #fffdf7; }
.stat.is-amber .stat-value, .stat.is-amber .stat-label { color: var(--amber); }
.stat.is-green .stat-value, .stat.is-green .stat-label { color: var(--green); }
.stat.is-dark { background: #000; border-color: #000; }
.stat.is-dark .stat-value { color: #fff; }
.stat.is-dark .stat-label, .stat.is-dark .stat-sub { color: #bdbdbd; }

/* ---- Hero: černá plocha s patkovým číslem ---- */
.hero {
    position: relative; overflow: hidden; background: #000; color: #fff;
    padding: 34px 36px; margin-bottom: 22px;
    display: flex; align-items: flex-end; justify-content: space-between; gap: 28px; flex-wrap: wrap;
}
.hero::after {
    content: ''; position: absolute; right: -60px; top: -60px; width: 340px; height: 340px;
    background: url('../img/logo-mark-white.png') center / contain no-repeat; opacity: .06; pointer-events: none;
}
.hero-in { position: relative; display: flex; flex-direction: column; gap: 8px; min-width: 0; z-index: 1; }
.hero-eyebrow { font-size: 11px; font-weight: 600; letter-spacing: 3px; text-transform: uppercase; color: #a6a6a6; }
.hero-value { font-family: var(--serif); font-size: 52px; line-height: 1; }
.hero-value small { font-family: var(--sans); font-size: 16px; color: #a6a6a6; margin-left: 8px; }
.hero-sub { font-size: 13.5px; color: #bdbdbd; font-weight: 300; }
.hero-actions { position: relative; z-index: 1; display: flex; gap: 10px; flex-wrap: wrap; }
.hero .btn { background: transparent; border-color: rgba(255,255,255,.6); color: #fff; }
.hero .btn:hover { background: #fff; color: #000; border-color: #fff; }
.hero .btn-primary { background: #fff; color: #000; border-color: #fff; }
.hero .btn-primary:hover { background: transparent; color: #fff; }

/* ---- Pilulky ---- */
.chip {
    display: inline-block; padding: 3px 9px; border: 1px solid transparent;
    font-size: 11.5px; font-weight: 600; white-space: nowrap; line-height: 1.4; letter-spacing: .2px;
}
.chip-green { background: var(--green-bg); color: var(--green); border-color: var(--green-bd); }
.chip-red   { background: var(--red-bg);   color: var(--red);   border-color: var(--red-bd); }
.chip-amber { background: var(--amber-bg); color: var(--amber); border-color: var(--amber-bd); }
.chip-blue  { background: var(--blue-bg);  color: var(--blue);  border-color: var(--blue-bd); }
.chip-mute, .chip-gray { background: var(--mute-bg); color: var(--muted); border-color: #e4e4e4; }
.chip-ink   { background: #000; color: #fff; border-color: #000; }

/* ---- Nápověda u polí ---- */
.fhelp {
    display: inline-grid; place-items: center; vertical-align: baseline;
    width: 14px; height: 14px; margin-left: 5px; border-radius: 50%;
    border: 1px solid #cfcfcf; color: #a3a3a3; font-size: 9.5px; font-weight: 700; line-height: 1;
    cursor: help; position: relative; user-select: none; text-transform: none; letter-spacing: 0;
}
.form-group:hover > .form-label > .fhelp, .form-group:focus-within > .form-label > .fhelp,
th:hover > .fhelp, label:hover > .fhelp { color: #000; border-color: #000; }
.fhelp:hover, .fhelp:focus-visible { background: #000; border-color: #000; color: #fff; outline: none; }
.fhelp-pop {
    position: fixed; top: 0; left: 0; z-index: 200; width: max-content; max-width: 330px;
    background: #000; color: #eaeaea; padding: 11px 14px; font-size: 12.5px; line-height: 1.55;
    font-weight: 400; text-align: left; white-space: normal; text-transform: none; letter-spacing: 0;
    box-shadow: var(--shadow-lg); opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .13s;
}
.fhelp-pop.is-open { opacity: 1; visibility: visible; }
.fhelp-extra { display: block; margin-top: 6px; padding-top: 6px; border-top: 1px solid #333; font-size: 11.5px; color: #a6a6a6; }

/* ============ Tlačítka (.btn webu) ============ */
.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    padding: 11px 22px; border: 1px solid #000; border-radius: 0;
    background: #fff; color: #000; text-decoration: none; white-space: nowrap; cursor: pointer;
    font-size: 11.5px; font-weight: 600; letter-spacing: 1.6px; text-transform: uppercase; line-height: 1.3;
    transition: all .3s ease;
}
.btn:hover { background: #000; color: #fff; }
.btn-primary { background: #000; color: #fff; }
.btn-primary:hover { background: transparent; color: #000; }
.btn-dark { background: #000; color: #fff; }
.btn-dark:hover { background: #333; color: #fff; }
.btn-danger { color: var(--red); border-color: var(--red); background: #fff; }
.btn-danger:hover { background: var(--red); color: #fff; }
.btn-danger-solid { background: var(--red); color: #fff; border-color: var(--red); }
.btn-danger-solid:hover { background: var(--red-dark); border-color: var(--red-dark); color: #fff; }
.btn-ghost { border-color: transparent; background: transparent; color: var(--ink-3); }
.btn-ghost:hover { background: var(--mute-bg); color: #000; border-color: transparent; }
.btn-sm { padding: 7px 13px; font-size: 10.5px; letter-spacing: 1.2px; }
.btn-icon { padding: 7px; }
.btn-block { width: 100%; }
.btn-lg { padding: 15px 40px; font-size: 12px; letter-spacing: 2px; }
.btn:disabled, .btn.is-disabled { background: #ccc; border-color: #ccc; color: #fff; cursor: not-allowed; }

/* ---- Filtry a záložky ---- */
.toolbar, .filterbar { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; margin-bottom: 18px; }
.filterbar .form-control { max-width: 260px; }
.filter-chip {
    padding: 8px 15px; border: 1px solid var(--border-input); background: #fff; color: var(--ink-3);
    font-size: 11.5px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; text-decoration: none; cursor: pointer;
    transition: all .25s;
}
.filter-chip:hover { border-color: #000; color: #000; }
.filter-chip.is-active { background: #000; border-color: #000; color: #fff; }
.filter-chip .num { margin-left: 5px; opacity: .7; }
.tabs { display: flex; gap: 2px; flex-wrap: wrap; margin-bottom: 20px; border-bottom: 1px solid var(--border); }
.tab {
    padding: 12px 16px 11px; font-size: 12px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase;
    color: var(--muted); text-decoration: none; border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.tab:hover { color: #000; }
.tab.is-active { color: #000; border-bottom-color: #000; }
.tab .num { margin-left: 6px; font-size: 11px; color: var(--muted-2); }
.tabs-grouped { display: flex; flex-wrap: wrap; gap: 8px 26px; align-items: flex-end; }
.tabs-group { display: flex; flex-wrap: wrap; align-items: center; gap: 2px; }
.tabs-label { display: block; width: 100%; font-size: 10px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: var(--muted-2); }
.switcher { display: inline-flex; }
.switcher .btn + .btn { margin-left: -1px; }
.switcher .btn.is-active { background: #000; color: #fff; }

/* ============ Tabulky ============ */
.table { width: 100%; border-collapse: collapse; }
.table th {
    text-align: left; padding: 12px 18px; font-size: 10.5px; font-weight: 600;
    letter-spacing: 1.6px; color: var(--muted); text-transform: uppercase;
    border-bottom: 1px solid var(--border); background: var(--head-bg); white-space: nowrap;
}
.table td { padding: 14px 18px; border-bottom: 1px solid var(--line); font-size: 13.5px; vertical-align: middle; }
.table tbody tr:last-child td { border-bottom: none; }
.table tbody tr { transition: background .12s; }
.table tbody tr:hover { background: var(--row-hover); }
.table .t-right, .t-right { text-align: right; }
.table .t-strong, .t-strong { font-weight: 700; color: var(--ink); }
.t-sub, .table .t-sub { display: block; font-size: 11.5px; color: var(--muted); font-weight: 400; margin-top: 2px; }
.table a { text-decoration: none; }
.table a.t-strong:hover, .table a:hover { text-decoration: underline; }
.table tr.is-late td { background: var(--red-bg); }
.table tr.is-warn td { background: var(--amber-bg); }
.table tr.is-highlight td { background: var(--mute-bg); font-weight: 600; }
.table tfoot td { font-weight: 700; border-top: 1px solid var(--border); background: var(--head-bg); }
.table-wrap { overflow-x: auto; }
.row-actions { display: flex; gap: 5px; justify-content: flex-end; }
.empty { padding: 44px 20px; text-align: center; color: var(--muted); font-size: 13.5px; }
.empty strong { display: block; color: #000; font-family: var(--serif); font-size: 20px; font-weight: 400; margin-bottom: 6px; }
.t-empty { color: var(--muted); font-size: 13px; margin: 0; }

/* ---- Klíč–hodnota ---- */
.kv { display: flex; flex-direction: column; margin: 0; }
.kv-row { display: flex; gap: 14px; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 13.5px; }
.kv-row:last-child { border-bottom: none; }
.kv-row dt { flex: 0 0 42%; color: var(--muted); margin: 0; }
.kv-row dd { flex: 1; margin: 0; font-weight: 600; color: var(--ink); word-break: break-word; }
.deflist { display: grid; grid-template-columns: minmax(0, auto) minmax(0, 1fr); gap: 8px 14px; margin: 0; }
.deflist dt { font-size: 12px; color: var(--muted); }
.deflist dd { margin: 0; font-size: 13px; color: var(--ink); text-align: right; font-weight: 600; }

/* ---- Pruhy ---- */
.bar { height: 6px; background: var(--mute-bg); overflow: hidden; }
.bar-fill { display: block; height: 100%; background: #000; min-width: 2px; transform-origin: left; animation: growW .6s cubic-bezier(.22,1,.36,1) both; }
.bar-fill.is-green { background: var(--green); } .bar-fill.is-red { background: var(--red); } .bar-fill.is-amber { background: var(--amber-strong); } .bar-fill.is-blue { background: var(--blue); }
.bars { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.bar-row { display: grid; grid-template-columns: minmax(150px, 220px) minmax(0, 1fr) minmax(90px, auto); gap: 12px; align-items: center; }
.bar-label { font-size: 12.5px; color: var(--ink-2); font-weight: 600; }
.bar-track { background: var(--mute-bg); height: 10px; overflow: hidden; }
.bar-value { font-size: 13px; font-weight: 700; text-align: right; }

/* ---- Seznam termínů ---- */
.dl-row { display: flex; align-items: center; gap: 14px; padding: 13px 22px; border-bottom: 1px solid var(--line); color: inherit; text-decoration: none; }
.dl-row:last-child { border-bottom: none; }
.dl-row:hover { background: var(--row-hover); color: inherit; }
.dl-when { flex: 0 0 100px; }
.dl-rel { font-size: 12px; font-weight: 700; }
.dl-date { font-size: 11.5px; color: var(--muted); }
.dl-main { flex: 1; min-width: 0; }
.dl-title { font-size: 13.5px; font-weight: 700; color: var(--ink); }
.dl-sub { font-size: 12px; color: var(--muted); margin-top: 2px; }
.dl-amount { font-size: 13.5px; font-weight: 700; white-space: nowrap; }

/* ---- Časová osa ---- */
.timeline { display: flex; flex-direction: column; list-style: none; margin: 0; padding: 0; }
.tl-item { display: flex; gap: 14px; padding-bottom: 18px; position: relative; }
.tl-item:not(:last-child)::before { content: ''; position: absolute; left: 5px; top: 16px; bottom: 0; width: 1px; background: var(--border); }
.tl-dot { width: 11px; height: 11px; border-radius: 50%; flex: 0 0 auto; margin-top: 5px; background: var(--gray); }
.tl-dot.is-green { background: var(--green); } .tl-dot.is-red { background: var(--red); } .tl-dot.is-amber { background: var(--amber-strong); }
.tl-dot.is-blue { background: var(--blue); } .tl-dot.is-ink { background: #000; }
.tl-body { flex: 1; min-width: 0; }
.tl-title { font-size: 13.5px; font-weight: 700; }
.tl-date { font-family: var(--mono); font-size: 11px; color: var(--muted); }
.tl-note { font-size: 12.5px; color: var(--ink-3); margin-top: 2px; }

/* ---- Přílohy ---- */
.filelist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.filelist li { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 2px 10px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.filelist li:last-child { border-bottom: none; }
.filelist li > a { display: flex; align-items: center; gap: 8px; font-size: 13px; min-width: 0; word-break: break-word; }
.filelist li .t-sub { grid-column: 1; }
.filelist li form, .filelist li .row-actions { grid-row: 1 / span 2; grid-column: 2; }
.file-row { display: flex; align-items: center; gap: 11px; padding: 10px 12px; border: 1px solid var(--border-soft); background: #fff; }
.file-row + .file-row { margin-top: 6px; }
.file-name { flex: 1; font-weight: 600; font-size: 13px; min-width: 0; word-break: break-word; }
.file-meta { font-size: 11.5px; color: var(--muted); white-space: nowrap; }
.note-box { margin: 14px 0 0; padding: 12px 15px; background: var(--mute-bg); font-size: 13px; color: var(--ink-2); border-left: 3px solid #000; }

/* ============ Formuláře (.contact-form webu) ============ */
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 18px; max-width: 1000px; }
.form-grid.is-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.form-group { display: flex; flex-direction: column; gap: 6px; }
.form-group.is-wide { grid-column: 1 / -1; }
.form-label { font-size: 10.5px; font-weight: 600; letter-spacing: 1.5px; text-transform: uppercase; color: var(--ink-3); }
.form-label .req { color: var(--red); }
.form-control {
    width: 100%; padding: 11px 13px; border-radius: 0; border: 1px solid var(--border-input);
    background: #fff; color: var(--ink); transition: border-color .2s;
}
.form-control:focus { outline: none; border-color: #000; }
.form-control[readonly], .form-control:disabled { background: var(--mute-bg); color: var(--muted); }
textarea.form-control { min-height: 96px; resize: vertical; line-height: 1.5; }
select.form-control { appearance: none; padding-right: 32px;
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23111' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 12px center; }
.form-hint { font-size: 11.5px; color: var(--muted); }
.form-check, .check { display: flex; align-items: flex-start; gap: 9px; font-size: 13.5px; cursor: pointer; }
.form-check input, .check input { margin-top: 3px; accent-color: #000; }
.check-grid { display: grid; gap: 10px; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }
.form-actions { display: flex; gap: 10px; justify-content: flex-end; flex-wrap: wrap; margin-top: 6px; }
.fieldset-title {
    grid-column: 1 / -1; font-family: var(--serif); font-size: 19px; color: #000;
    padding-top: 14px; margin-top: 4px; border-top: 1px solid var(--border-soft);
}
.fieldset-title:first-child { border-top: none; padding-top: 0; margin-top: 0; }
.inline-form { display: flex; gap: 9px; flex-wrap: wrap; align-items: center; }
.inline-form .form-control { max-width: 260px; width: auto; }
input[type=checkbox], input[type=radio] { accent-color: #000; }

.switch { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; font-size: 13.5px; }
.switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.switch-track { width: 38px; height: 20px; border-radius: 999px; background: #cfcfcf; position: relative; transition: background .16s; flex: 0 0 auto; }
.switch-track::after { content: ''; position: absolute; top: 3px; left: 3px; width: 14px; height: 14px; border-radius: 50%; background: #fff; transition: transform .16s; }
.switch input:checked + .switch-track { background: #000; }
.switch input:checked + .switch-track::after { transform: translateX(18px); }

/* ---- Editor šablon ---- */
.editor-bar { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; padding: 6px 8px; background: var(--mute-bg); border: 1px solid var(--border-input); border-bottom: none; }
.editor-btn { min-width: 28px; height: 26px; padding: 0 7px; border: 1px solid transparent; background: transparent; color: var(--ink-2); font-size: 12.5px; cursor: pointer; }
.editor-btn:hover { background: #fff; border-color: var(--border-input); }
.editor-btn.is-active { background: #000; border-color: #000; color: #fff; }
.editor-btn-right { margin-left: auto; }
.editor-sep { width: 1px; height: 18px; background: var(--border-input); margin: 0 4px; }
.editor-wysiwyg { min-height: 300px; max-height: 60vh; overflow-y: auto; padding: 14px 16px; background: #fff; border: 1px solid var(--border-input); font-size: 14px; line-height: 1.65; }
.editor-wysiwyg:focus { outline: none; border-color: #000; }
.editor-source { min-height: 300px; font-family: var(--mono); font-size: 12.5px; }
.var-list { display: flex; flex-wrap: wrap; gap: 6px; }
.var-chip { font-family: var(--mono); font-size: 11.5px; padding: 4px 9px; cursor: pointer; background: var(--mute-bg); color: #000; border: 1px solid transparent; }
.var-chip:hover { border-color: #000; }
.mail-preview, .tpl-preview { width: 100%; height: 460px; border: 1px solid var(--border-soft); background: #f4f4f4; display: block; }

/* ---- Rozbalovací detail, stránkování ---- */
.row-more > summary { list-style: none; cursor: pointer; color: var(--muted); font-size: 11.5px; font-weight: 600; }
.row-more > summary::-webkit-details-marker { display: none; }
.row-more > summary::before { content: '▸ '; }
.row-more[open] > summary::before { content: '▾ '; }
.row-detail { margin-top: 7px; padding: 9px 11px; background: var(--mute-bg); font-size: 11.5px; color: var(--ink-3); display: grid; gap: 3px; }
.row-detail b { color: var(--muted); margin-right: 5px; }
.pager { display: flex; gap: 6px; align-items: center; justify-content: center; padding: 14px; flex-wrap: wrap; }
.pager-info { font-size: 12.5px; color: var(--muted); margin-right: 8px; }

/* ---- Hlášky ---- */
.alert { padding: 14px 18px; font-size: 13.5px; line-height: 1.55; margin-bottom: 18px; border: 1px solid; border-left-width: 3px; background: #fff; }
.alert-success { border-color: var(--green-bd); border-left-color: var(--green); color: #234c3b; background: var(--green-bg); }
.alert-error   { border-color: var(--red-bd);   border-left-color: var(--red);   color: #6b2a20; background: var(--red-bg); }
.alert-info    { border-color: var(--border);   border-left-color: #000;         color: var(--ink-2); }
.alert-warning { border-color: var(--amber-bd); border-left-color: var(--amber-strong); color: #5c4716; background: var(--amber-bg); }
.alert ul { margin: 6px 0 0; padding-left: 18px; }
.warn-card { background: var(--red-bg); border: 1px solid var(--red-bd); padding: 18px 20px; display: flex; flex-direction: column; gap: 8px; }
.warn-label { font-size: 10.5px; font-weight: 700; letter-spacing: 2px; color: var(--red); text-transform: uppercase; }
.warn-text { font-size: 13px; color: #6b2a20; line-height: 1.5; }

.text-muted { color: var(--muted); } .text-red { color: var(--red); } .text-green { color: var(--green); } .text-amber { color: var(--amber-strong); }
.mt-0 { margin-top: 0; } .mb-0 { margin-bottom: 0; }
.codes { list-style: none; margin: 4px 0 18px; padding: 14px 16px; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px 18px; background: var(--mute-bg); font-family: var(--mono); font-size: 15px; letter-spacing: .06em; }

/* ============ Přihlášení (hero webu vlevo, formulář vpravo) ============ */
.auth { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 540px); min-height: 100vh; }
.auth-brand {
    position: relative; overflow: hidden; background: #000; color: #fff; padding: 48px 56px;
    display: flex; flex-direction: column; justify-content: space-between; gap: 40px;
}
.auth-brand::after {
    content: ''; position: absolute; right: -120px; bottom: -120px; width: 560px; height: 560px;
    background: url('../img/logo-mark-white.png') center / contain no-repeat; opacity: .05; pointer-events: none;
}
.auth-logo img { height: 44px; width: auto; display: block; }
.auth-claim { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 24px; max-width: 600px; }
.auth-claim h1 { font-size: 60px; line-height: 1.08; color: #fff; }
.auth-lead { font-size: 16px; color: #d0d0d0; font-weight: 300; max-width: 30em; margin: 0; }
.auth-points { display: flex; flex-direction: column; gap: 12px; padding-top: 24px; border-top: 1px solid rgba(255,255,255,.18); }
.auth-point { display: flex; align-items: center; gap: 14px; font-size: 13px; color: #bdbdbd; letter-spacing: 1px; text-transform: uppercase; }
.auth-point::before { content: ''; width: 18px; height: 1px; background: #fff; flex: 0 0 auto; }
.auth-foot { position: relative; z-index: 1; font-size: 12px; color: #8c8c8c; }
.auth-form-side { display: flex; align-items: center; justify-content: center; padding: 48px 40px; background: #fff; min-width: 0; }
.auth-card { width: 100%; max-width: 380px; }
.auth-card .eyebrow { font-size: 11px; font-weight: 600; letter-spacing: 3px; color: var(--muted); margin: 0 0 10px; text-transform: uppercase; }
.auth-card h2 { font-size: 40px; margin-bottom: 8px; }
.auth-card .sub { font-size: 14px; color: var(--muted); margin: 0 0 28px; font-weight: 300; }
.auth-card .form-group { margin-bottom: 18px; }
.auth-card .form-control { padding: 14px 15px; }
.auth-links { margin-top: 20px; font-size: 13px; text-align: center; color: var(--muted); }
.auth-note { margin-top: 22px; display: flex; align-items: center; gap: 9px; font-size: 12px; color: var(--muted); }
.auth-note::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: #000; flex: 0 0 auto; }
.auth-demo { margin-top: 18px; padding: 10px 14px; border: 1px dashed var(--border-input); font-size: 12.5px; color: var(--muted); }

.notfound { min-height: 100vh; display: flex; align-items: center; justify-content: center; text-align: center; padding: 2rem; background: #fff; }
.notfound-logo { margin: 0 auto 26px; display: block; }
.notfound-code { font-family: var(--serif); font-size: 96px; line-height: 1; color: #000; }
.notfound h1 { font-size: 30px; margin: 10px 0; }
.notfound p { color: var(--muted); margin-bottom: 26px; font-weight: 300; }

/* =====================================================
   Případ — karta se stavem, složkami a vláknem vpravo
   ===================================================== */

/* Hlavička karty: číslo případu patkovým písmem, stav, klíčová čísla */
.case-head { background: #000; color: #fff; padding: 26px 30px; margin-bottom: 0; display: flex; gap: 24px; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; position: relative; overflow: hidden; }
.case-head::after { content: ''; position: absolute; right: -40px; top: -50px; width: 260px; height: 260px; background: url('../img/logo-mark-white.png') center / contain no-repeat; opacity: .06; pointer-events: none; }
.case-head .page-eyebrow { color: #a6a6a6; }
.case-number { font-family: var(--serif); font-size: 40px; line-height: 1; color: #fff; }
.case-title { font-size: 15px; color: #d6d6d6; margin-top: 8px; font-weight: 300; }
.case-figures { display: flex; gap: 34px; flex-wrap: wrap; position: relative; z-index: 1; }
.case-figure { display: flex; flex-direction: column; gap: 3px; }
.case-figure span { font-size: 10px; letter-spacing: 2px; text-transform: uppercase; color: #9a9a9a; }
.case-figure b { font-family: var(--serif); font-weight: 400; font-size: 24px; color: #fff; white-space: nowrap; }
.case-figure b.is-warn { color: #f1c86a; }

/* Ukazatel stavů: úrovně jako záložky, stavy jako číslovaná osa */
.stepper-wrap { background: #fff; border: 1px solid var(--border); border-top: 0; margin-bottom: 22px; }
.levels { display: flex; border-bottom: 1px solid var(--border-soft); overflow-x: auto; }
.level {
    flex: 1; min-width: 150px; padding: 12px 18px; font-size: 11px; font-weight: 600; letter-spacing: 1.6px;
    text-transform: uppercase; color: var(--muted-2); border-right: 1px solid var(--border-soft); position: relative;
}
.level:last-child { border-right: 0; }
.level.is-done { color: var(--ink-3); }
.level.is-current { color: #000; background: var(--surface-2); }
.level.is-current::after { content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: #000; }
.level.is-rejected { color: var(--red); }
.stepper { display: flex; list-style: none; margin: 0; padding: 18px 18px 16px; gap: 0; overflow-x: auto; }
.step { flex: 1; min-width: 86px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; position: relative; padding: 0 4px; }
.step::before { content: ''; position: absolute; top: 13px; left: -50%; right: 50%; height: 1px; background: var(--border); z-index: 0; }
.step:first-child::before { display: none; }
.step-dot {
    width: 27px; height: 27px; border-radius: 50%; border: 1px solid var(--border-input); background: #fff;
    display: grid; place-items: center; font-family: var(--mono); font-size: 11px; color: var(--muted); position: relative; z-index: 1;
}
.step-label { font-size: 11px; line-height: 1.3; color: var(--muted); max-width: 120px; }
.step.is-done .step-dot { background: #000; border-color: #000; color: #fff; }
.step.is-done::before, .step.is-current::before { background: #000; }
.step.is-current .step-dot { background: #fff; border: 2px solid #000; color: #000; font-weight: 700; box-shadow: 0 0 0 4px rgba(0,0,0,.08); }
.step.is-current .step-label { color: #000; font-weight: 700; }
.stage-hint { padding: 14px 22px; border-top: 1px solid var(--border-soft); font-size: 13px; color: var(--ink-3); display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.stage-hint b { color: #000; }
.stage-auto { font-size: 12px; color: var(--muted); }

/* Akce přechodu mezi stavy */
.moves { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-start; padding: 16px 22px; border-top: 1px solid var(--border-soft); background: var(--surface-2); }
.moves form { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.moves .form-control { width: auto; min-width: 220px; padding: 8px 11px; }
.move-problems { flex-basis: 100%; margin: 0; padding: 12px 16px; background: var(--amber-bg); border: 1px solid var(--amber-bd); font-size: 12.5px; color: #5c4716; }
.move-problems ul { margin: 4px 0 0; padding-left: 18px; }

/* Rozvržení: obsah vlevo, vlákno vpravo (zadání: „vpravo chatovací vlákno") */
.case-layout { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: 22px; align-items: start; }
.case-main { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.case-aside { position: sticky; top: calc(var(--appbar-h) + 60px); }

/* ---- Vlákno ---- */
.chat { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--border); height: calc(100vh - var(--appbar-h) - 90px); min-height: 460px; }
.chat-head { padding: 14px 18px; border-bottom: 1px solid var(--border-soft); display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.chat-head .card-title { font-size: 18px; }
.chat-list { flex: 1; overflow-y: auto; padding: 16px 16px 6px; display: flex; flex-direction: column; gap: 12px; background: var(--surface-2); }
.msg { max-width: 90%; display: flex; flex-direction: column; gap: 3px; }
.msg-meta { font-size: 10.5px; color: var(--muted); display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.msg-meta b { color: var(--ink-2); font-weight: 700; }
.msg-body { background: #fff; border: 1px solid var(--border); padding: 9px 12px; font-size: 13.5px; line-height: 1.5; white-space: pre-wrap; word-break: break-word; }
.msg.is-mine { align-self: flex-end; align-items: flex-end; }
.msg.is-mine .msg-body { background: #000; color: #fff; border-color: #000; }
.msg.is-mine .msg-body a { color: #fff; }
.msg.is-system { align-self: center; max-width: 100%; align-items: center; text-align: center; }
.msg.is-system .msg-body { background: transparent; border: 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); padding: 5px 10px; font-size: 12px; color: var(--muted); white-space: normal; }
.msg-vis { font-size: 9.5px; letter-spacing: 1px; text-transform: uppercase; padding: 1px 5px; border: 1px solid currentColor; }
.msg-vis.is-pravni { color: var(--blue); } .msg-vis.is-interni { color: var(--red); }
.msg-file { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; margin-top: 4px; }
.chat-form { border-top: 1px solid var(--border-soft); padding: 12px; display: flex; flex-direction: column; gap: 8px; }
.chat-form textarea { min-height: 64px; max-height: 200px; resize: vertical; }
.chat-form-row { display: flex; gap: 8px; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.chat-form-row select { width: auto; padding: 7px 30px 7px 10px; font-size: 12px; }
.chat-empty { margin: auto; color: var(--muted); font-size: 13px; text-align: center; padding: 20px; }

/* ---- Dokumentové složky ---- */
.folders { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 0; border-top: 1px solid var(--border-soft); }
.folder { border-right: 1px solid var(--border-soft); border-bottom: 1px solid var(--border-soft); padding: 16px 18px; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.folder-head { display: flex; align-items: center; gap: 8px; justify-content: space-between; }
.folder-name { display: flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 700; letter-spacing: 1.4px; text-transform: uppercase; color: #000; }
.folder-count { font-family: var(--mono); font-size: 11px; color: var(--muted); }
.folder-lock { font-size: 10.5px; color: var(--muted); display: inline-flex; gap: 4px; align-items: center; }
.folder .filelist li { padding: 7px 0; }
.folder .filelist li > a { font-size: 12.5px; }
.folder-empty { font-size: 12px; color: var(--muted-2); }
.upload-box { border: 1px dashed var(--border-input); padding: 16px 18px; display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); align-items: end; background: var(--surface-2); }
.upload-box .form-actions { margin: 0; justify-content: flex-start; }
.ver { font-family: var(--mono); font-size: 10px; padding: 0 4px; border: 1px solid var(--border-input); color: var(--muted); margin-left: 4px; }

/* ---- Kontrolní seznam ---- */
.checklist { list-style: none; margin: 0; padding: 0; }
.checklist li { display: flex; align-items: center; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--line); font-size: 13.5px; }
.checklist li:last-child { border-bottom: 0; }
.check-mark { width: 20px; height: 20px; border: 1px solid var(--border-input); display: grid; place-items: center; flex: 0 0 auto; color: #fff; }
.checklist li.is-done .check-mark { background: #000; border-color: #000; }
.checklist li.is-done .check-text { color: var(--ink-3); }
.check-text { flex: 1; }
.check-value { font-size: 12.5px; color: var(--muted); }

/* ---- Platby po měsících ---- */
.pay-months { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 6px; }
.pay-month { border: 1px solid var(--border); padding: 8px 9px; display: flex; flex-direction: column; gap: 2px; background: #fff; font-size: 11px; }
.pay-month b { font-family: var(--mono); font-size: 11.5px; color: #000; }
.pay-month .num { font-size: 11px; color: var(--muted); }
.pay-month.is-zaplaceno { border-color: var(--green-bd); background: var(--green-bg); }
.pay-month.is-zaplaceno .pay-state { color: var(--green); }
.pay-month.is-pozde, .pay-month.is-castecne { border-color: var(--amber-bd); background: var(--amber-bg); }
.pay-month.is-pozde .pay-state, .pay-month.is-castecne .pay-state { color: var(--amber); }
.pay-month.is-nezaplaceno { border-color: var(--red-bd); background: var(--red-bg); }
.pay-month.is-nezaplaceno .pay-state { color: var(--red); }
.pay-month.is-budouci { opacity: .6; }
.pay-state { font-weight: 700; letter-spacing: .5px; text-transform: uppercase; font-size: 9.5px; }
.pay-fwd { font-size: 9.5px; color: var(--muted); }
.pay-fwd.is-ok { color: var(--green); }
/* Přehled plateb napříč případy */
.pay-grid td.pay-cell { padding: 0; text-align: center; }
.pay-dot { display: inline-block; min-width: 42px; padding: 5px 4px; font-family: var(--mono); font-size: 10.5px; }
.pay-dot.is-zaplaceno { background: var(--green-bg); color: var(--green); }
.pay-dot.is-pozde, .pay-dot.is-castecne { background: var(--amber-bg); color: var(--amber); font-weight: 700; }
.pay-dot.is-nezaplaceno { background: var(--red-bg); color: var(--red); font-weight: 700; }
.pay-dot.is-ceka { background: var(--mute-bg); color: var(--muted); }
.pay-dot.is-budouci, .pay-dot.is-none { color: var(--gray); }

/* ---- Nástěnka: přehled stavů (pipeline) ---- */
.pipeline { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 0; border-top: 1px solid var(--border-soft); }
.pipe { padding: 14px 14px 12px; border-right: 1px solid var(--border-soft); border-bottom: 1px solid var(--border-soft); text-decoration: none; color: inherit; display: flex; flex-direction: column; gap: 6px; transition: background .2s; }
.pipe:hover { background: #000; color: #fff; }
.pipe:hover .pipe-label, .pipe:hover .pipe-n { color: #fff; }
.pipe-n { font-family: var(--serif); font-size: 30px; line-height: 1; color: #000; }
.pipe-n.is-zero { color: #d0d0d0; }
.pipe-label { font-size: 11px; line-height: 1.3; color: var(--muted); }
.pipe-num { font-family: var(--mono); font-size: 10px; color: var(--muted-2); }

/* ---- Fotogalerie nemovitosti ---- */
.gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.gallery a { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--mute-bg); border: 1px solid var(--border); }
.gallery img { width: 100%; height: 100%; object-fit: cover; display: block; filter: grayscale(20%); transition: filter .3s, transform .3s; }
.gallery a:hover img { filter: none; transform: scale(1.03); }

/* ---- Hodnoty zajištění ---- */
.ltv { display: flex; align-items: center; gap: 12px; }
.ltv .bar { flex: 1; height: 8px; position: relative; overflow: visible; }
.ltv-limit { position: absolute; top: -4px; bottom: -4px; width: 1px; background: var(--red); }

/* ---- Našeptávač adres RÚIAN (assets/js/ruian.js) ---- */
.ruian-wrap { position: relative; }
.ruian-list { position: absolute; z-index: 40; left: 0; right: 0; top: calc(100% + 2px); margin: 0; padding: 4px; list-style: none; max-height: 320px; overflow-y: auto; background: #fff; border: 1px solid #000; box-shadow: var(--shadow-lg); }
.ruian-opt { padding: 8px 10px; cursor: pointer; font-size: 13.5px; line-height: 1.35; }
.ruian-opt:hover, .ruian-opt.is-active { background: #000; color: #fff; }
.ruian-opt:hover .ruian-sub, .ruian-opt.is-active .ruian-sub { color: #bdbdbd; }
.ruian-sub { display: block; font-size: 11.5px; color: var(--muted); }
.ares-result { font-size: 12px; color: var(--muted); }

/* ---- Nápověda (příručka) ---- */
.manual { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 28px; align-items: start; }
.manual-toc { position: sticky; top: calc(var(--appbar-h) + 70px); display: flex; flex-direction: column; border-left: 1px solid var(--border); }
.manual-toc a { padding: 6px 14px; font-size: 13px; text-decoration: none; color: var(--ink-3); border-left: 2px solid transparent; margin-left: -1px; }
.manual-toc a:hover { color: #000; border-left-color: #000; }
.manual-body { background: #fff; border: 1px solid var(--border); padding: 34px 40px; max-width: 900px; }
.manual-body h2 { font-size: 28px; margin: 34px 0 12px; padding-top: 20px; border-top: 1px solid var(--border-soft); }
.manual-body h2:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.manual-body h3 { font-size: 19px; margin: 20px 0 8px; }
.manual-body p, .manual-body li { font-size: 14px; line-height: 1.7; color: var(--ink-2); font-weight: 400; }
.manual-body ul, .manual-body ol { padding-left: 22px; margin: 0 0 12px; }
.manual-body table { margin: 10px 0 18px; }

/* =====================================================
   Odezva a přístupnost
   ===================================================== */
.btn:focus-visible, .filter-chip:focus-visible, .tab:focus-visible, .nav-item:focus-visible, .nav-help:focus-visible,
.nav-group > summary:focus-visible, .nav-menu a:focus-visible, .card-link:focus-visible, a:focus-visible, .pipe:focus-visible {
    outline: 2px solid #000; outline-offset: 2px;
}
.appbar a:focus-visible, .appbar .btn:focus-visible { outline-color: #fff; }
.form-control:focus-visible { outline: none; box-shadow: var(--ring); }

/* ============ Responzivita ============ */
@media (max-width: 1280px) {
    .case-layout { grid-template-columns: minmax(0, 1fr) 340px; }
}
@media (max-width: 1100px) {
    .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .grid-side, .grid-2, .grid-2-even { grid-template-columns: minmax(0, 1fr); }
    .ab-role { display: none; }
    .ab-search { max-width: 260px; }
    .case-layout { grid-template-columns: minmax(0, 1fr); }
    .case-aside { position: static; }
    .chat { height: 560px; }
    .manual { grid-template-columns: minmax(0, 1fr); }
    .manual-toc { position: static; }
}
@media (max-width: 860px) {
    .auth { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; }
    .auth-brand { padding: 22px 24px; gap: 0; }
    .auth-claim, .auth-foot { display: none; }
    .auth-form-side { padding: 34px 20px; }
    .form-grid.is-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 780px) {
    .appbar { height: auto; padding: 12px 16px; gap: 12px; flex-wrap: wrap; position: static; }
    .ab-search { order: 3; max-width: none; flex-basis: 100%; margin-left: 0; }
    .ab-user-name { display: none; }
    .mainnav { position: static; padding: 0 8px; gap: 0; overflow-x: auto; flex-wrap: nowrap; }
    .nav-item { padding: 13px 10px 11px; font-size: 11px; }
    .nav-help span { display: none; }
    .page { padding: 20px 16px 44px; }
    .page-title { font-size: 28px; }
    .hero { padding: 24px; } .hero-value { font-size: 38px; }
    .case-head { padding: 22px; } .case-number { font-size: 32px; } .case-figures { gap: 20px; }
    .grid-2, .grid-3, .grid-4, .form-grid, .form-grid.is-3 { grid-template-columns: minmax(0, 1fr); }
    .page-head { align-items: flex-start; }
    .page-actions { width: 100%; }
    .page-actions .btn { flex: 1; }
    .manual-body { padding: 22px 18px; }
    /* Tabulky se mění na karty */
    .rtable thead { display: none; }
    .rtable, .rtable tbody, .rtable tr, .rtable td { display: block; width: 100%; }
    .rtable tr { border: 1px solid var(--border); margin: 0 10px 10px; padding: 4px 0; background: #fff; width: auto; }
    .rtable td { border: none; padding: 7px 14px; display: flex; align-items: center; justify-content: space-between; gap: 14px; text-align: right; }
    .rtable td::before { content: attr(data-label); font-size: 10px; font-weight: 600; letter-spacing: 1.4px; text-transform: uppercase; color: var(--muted); text-align: left; flex: 0 0 auto; }
    .rtable td.rt-block { flex-direction: column; align-items: flex-start; text-align: left; gap: 3px; }
    .rtable td.rt-actions { justify-content: flex-end; }
    .rtable td.rt-actions::before { display: none; }
    .dl-row { flex-wrap: wrap; }
    .dl-when { flex-basis: 100%; display: flex; gap: 8px; align-items: baseline; }
    .bar-row { grid-template-columns: minmax(0, 1fr); gap: 4px; }
    .deflist dd { text-align: left; }
}
@media print {
    .appbar, .mainnav, .page-actions, .toolbar, .row-actions, .moves, .case-aside, .form-actions, .no-print { display: none !important; }
    body { background: #fff; }
    .page { padding: 0; max-width: none; }
    .card { break-inside: avoid; }
    .case-layout { grid-template-columns: 1fr; }
    .case-head, .hero { background: #fff; color: #000; border: 1px solid #000; }
    .case-number, .case-figure b { color: #000; }
}
/* =====================================================
   Plasticita a odezva (přidáno 25. 9. 2026 na přání uživatele)
   -----------------------------------------------------
   Identita zůstává černobílá, jen dostává hloubku: plochy mají jemný svislý
   přechod a světelnou hranu nahoře, stíny jsou vrstvené (blízký ostrý + daleký
   měkký), interaktivní prvky se po najetí myší zvednou a stín se prodlouží.
   Tahle vrstva jen PŘEPISUJE vzhled výše — struktura a třídy se nemění.
   ===================================================== */
:root {
    --lift: cubic-bezier(.2, .8, .2, 1);
    --hi: inset 0 1px 0 rgba(255, 255, 255, .95);
    --sh-1: 0 1px 2px rgba(0, 0, 0, .05), 0 4px 12px -6px rgba(0, 0, 0, .10);
    --sh-2: 0 2px 4px rgba(0, 0, 0, .05), 0 18px 36px -18px rgba(0, 0, 0, .28);
    --sh-3: 0 4px 10px rgba(0, 0, 0, .06), 0 28px 52px -22px rgba(0, 0, 0, .38);
    --sh-dark: 0 2px 6px rgba(0, 0, 0, .35), 0 24px 48px -20px rgba(0, 0, 0, .65);
    --grad-card: linear-gradient(180deg, #ffffff 0%, #fbfbfb 100%);
    --grad-tile: linear-gradient(180deg, #ffffff 0%, #f6f6f6 100%);
    --grad-black: linear-gradient(180deg, #2a2a2a 0%, #0a0a0a 55%, #000 100%);
}
body { background: radial-gradient(1200px 600px at 50% -200px, #ffffff 0%, var(--bg) 70%) fixed, var(--bg); }

/* ---- Horní lišty: černá s leskem, bílá jako skleněná deska ---- */
.appbar { background: var(--grad-black); box-shadow: inset 0 -1px 0 rgba(255,255,255,.06), 0 6px 18px -8px rgba(0,0,0,.6); }
.mainnav { box-shadow: 0 10px 24px -18px rgba(0,0,0,.35); backdrop-filter: saturate(1.2) blur(6px); }
.ab-search input { box-shadow: inset 0 2px 4px rgba(0,0,0,.6), 0 1px 0 rgba(255,255,255,.06); transition: border-color .2s, box-shadow .2s, background .2s; }
.ab-search input:focus { box-shadow: inset 0 2px 4px rgba(0,0,0,.6), 0 0 0 3px rgba(255,255,255,.14); }
.ab-avatar { background: linear-gradient(180deg, #3a3a3a, #111); box-shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 2px 6px rgba(0,0,0,.6); transition: transform .25s var(--lift), background .3s, color .3s; }
.ab-user:hover .ab-avatar { transform: translateY(-1px) scale(1.06); }
.ab-alert { border-radius: 2px; background: linear-gradient(180deg, rgba(232,207,143,.14), rgba(232,207,143,.04)); transition: all .25s var(--lift); }
.ab-alert:hover { transform: translateY(-1px); box-shadow: 0 6px 16px -6px rgba(232,207,143,.5); }
.ab-logout { transition: color .2s, transform .25s var(--lift); }
.ab-logout:hover { transform: translateX(2px); }

/* Navigace: podtržení vyrůstá od středu */
.nav-item { position: relative; border-bottom-color: transparent !important; }
.nav-item::after {
    content: ''; position: absolute; left: 12px; right: 12px; bottom: -1px; height: 2px; background: #000;
    transform: scaleX(0); transform-origin: center; transition: transform .3s var(--lift);
}
.nav-item:hover::after { transform: scaleX(.6); background: #9a9a9a; }
.nav-item.is-active::after { transform: scaleX(1); background: #000; }
.nav-badge { box-shadow: var(--hi), 0 1px 2px rgba(0,0,0,.08); }
.nav-badge.is-alert, .nav-badge.is-unread { box-shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 2px 6px -1px rgba(0,0,0,.35); }
.nav-menu { box-shadow: var(--sh-3); animation: fadeDown .18s var(--lift) both; }
.nav-help { background: var(--grad-tile); box-shadow: var(--hi), var(--sh-1); }
.nav-help:hover { background: var(--grad-black); transform: translateY(-1px); box-shadow: var(--sh-2); }

/* ---- Karty a dlaždice: světelná hrana, vrstvený stín, zvednutí ---- */
.card { background: var(--grad-card); border-color: #e9e9e9; box-shadow: var(--hi), var(--sh-1); transition: box-shadow .35s var(--lift), transform .35s var(--lift), border-color .3s; }
.card:hover { box-shadow: var(--hi), var(--sh-2); border-color: #dcdcdc; }
.card-head { background: linear-gradient(180deg, #ffffff, #fafafa); }
.card-link:hover, a.card:hover { transform: translateY(-3px); box-shadow: var(--hi), var(--sh-3); border-color: #000; }
.card.is-danger { box-shadow: var(--hi), 0 1px 2px rgba(154,58,46,.08), 0 18px 36px -22px rgba(154,58,46,.45); }

.stat { background: var(--grad-tile); border-color: #e7e7e7; box-shadow: var(--hi), var(--sh-1); position: relative; overflow: hidden;
        transition: transform .35s var(--lift), box-shadow .35s var(--lift), border-color .3s; }
.stat::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: #000; transform: scaleY(0); transform-origin: bottom; transition: transform .35s var(--lift); }
a.stat:hover { transform: translateY(-4px); box-shadow: var(--hi), var(--sh-3); border-color: #cfcfcf; }
a.stat:hover::before { transform: scaleY(1); }
.stat.is-red::before, .stat.is-alert::before { background: var(--red); }
.stat.is-amber::before { background: var(--amber-strong); }
.stat.is-green::before { background: var(--green); }
.stat.is-dark { background: var(--grad-black); box-shadow: var(--sh-dark); border-color: #000; }
.stat.is-dark::before { background: #fff; }
.stat-value { text-shadow: 0 1px 0 #fff; }
.stat.is-dark .stat-value { text-shadow: 0 2px 10px rgba(0,0,0,.6); }

/* ---- Tmavé plochy: hero a hlavička případu ---- */
.hero, .case-head {
    background: radial-gradient(900px 300px at 85% -40%, rgba(255,255,255,.10), transparent 60%),
                linear-gradient(160deg, #1d1d1d 0%, #050505 60%, #000 100%);
    box-shadow: var(--sh-dark), inset 0 1px 0 rgba(255,255,255,.08);
}
.hero-value, .case-number { text-shadow: 0 2px 16px rgba(0,0,0,.7); }
.case-figure { padding: 8px 12px; margin: -8px -12px; transition: background .25s, transform .3s var(--lift); }
.case-figure:hover { background: rgba(255,255,255,.06); transform: translateY(-2px); }

/* ---- Tlačítka: černý přechod s leskem, stisk se zamáčkne ---- */
.btn { position: relative; overflow: hidden; background: var(--grad-tile); box-shadow: var(--hi), 0 1px 2px rgba(0,0,0,.08), 0 6px 14px -10px rgba(0,0,0,.45);
       transition: background .3s, color .3s, border-color .3s, transform .25s var(--lift), box-shadow .3s var(--lift); }
.btn::after {
    content: ''; position: absolute; top: 0; bottom: 0; left: -60%; width: 40%; pointer-events: none;
    background: linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent); transform: skewX(-20deg); transition: left .6s var(--lift);
}
.btn:hover { transform: translateY(-2px); box-shadow: 0 2px 4px rgba(0,0,0,.12), 0 14px 26px -12px rgba(0,0,0,.55); background: var(--grad-black); }
.btn:hover::after { left: 130%; }
.btn:active:not(:disabled) { transform: translateY(0); box-shadow: inset 0 2px 5px rgba(0,0,0,.35); transition-duration: .05s; }
.btn-primary { background: var(--grad-black); border-color: #000; box-shadow: inset 0 1px 0 rgba(255,255,255,.18), 0 2px 4px rgba(0,0,0,.2), 0 10px 22px -12px rgba(0,0,0,.7); }
.btn-primary:hover { background: #fff; color: #000; }
.btn-primary:hover::after { background: linear-gradient(100deg, transparent, rgba(0,0,0,.08), transparent); }
.btn-danger { background: linear-gradient(180deg, #fff, #fbf3f1); }
.btn-danger:hover { background: linear-gradient(180deg, #b0493b, var(--red-dark)); color: #fff; border-color: var(--red-dark); }
.btn-ghost { box-shadow: none; background: transparent; }
.btn-ghost:hover { background: var(--grad-tile); color: #000; box-shadow: var(--hi), var(--sh-1); transform: translateY(-1px); }
.btn-ghost::after { display: none; }
.btn:disabled, .btn.is-disabled { box-shadow: none; transform: none !important; background: #d6d6d6; }
.btn:disabled::after { display: none; }
.hero .btn, .case-head .btn { box-shadow: 0 8px 18px -10px rgba(0,0,0,.8); }

/* ---- Filtry a záložky ---- */
.filter-chip { background: var(--grad-tile); box-shadow: var(--hi), 0 1px 2px rgba(0,0,0,.05); transition: all .25s var(--lift); }
.filter-chip:hover { transform: translateY(-2px); box-shadow: var(--hi), var(--sh-2); }
.filter-chip.is-active { background: var(--grad-black); box-shadow: inset 0 1px 0 rgba(255,255,255,.18), 0 8px 18px -10px rgba(0,0,0,.7); }
.tab { position: relative; transition: color .2s, background .2s; }
.tab:hover { background: linear-gradient(180deg, transparent, rgba(0,0,0,.035)); }
.chip { box-shadow: inset 0 1px 0 rgba(255,255,255,.7), 0 1px 1px rgba(0,0,0,.04); transition: transform .2s var(--lift); }
tr:hover .chip, .dl-row:hover .chip { transform: translateY(-1px); }

/* ---- Tabulky a řádky: zvýraznění s černou hranou vlevo ---- */
.table th { background: linear-gradient(180deg, #fcfcfc, #f4f4f4); box-shadow: inset 0 -1px 0 #e6e6e6; }
.table tbody tr { position: relative; transition: background .18s, box-shadow .25s var(--lift); }
.table tbody tr:hover { background: linear-gradient(90deg, #f6f6f6, #fff 60%); box-shadow: inset 3px 0 0 #000; }
.table tbody tr.is-late:hover { box-shadow: inset 3px 0 0 var(--red); }
.table tbody tr.is-warn:hover { box-shadow: inset 3px 0 0 var(--amber-strong); }
.dl-row { position: relative; transition: background .2s, padding-left .25s var(--lift), box-shadow .25s; }
.dl-row:hover { background: linear-gradient(90deg, #f6f6f6, #fff 70%); padding-left: 28px; box-shadow: inset 3px 0 0 #000; }
.filelist li { transition: background .2s, padding-left .25s var(--lift); }
.filelist li:hover { background: linear-gradient(90deg, #f7f7f7, transparent); padding-left: 6px; }

/* ---- Formuláře: pole jsou zapuštěná, při zaměření světelný prstenec ---- */
.form-control { background: linear-gradient(180deg, #fbfbfb, #fff 40%); box-shadow: inset 0 1px 3px rgba(0,0,0,.08); transition: border-color .2s, box-shadow .25s var(--lift), background .2s; }
.form-control:hover { border-color: #bdbdbd; }
.form-control:focus { background: #fff; box-shadow: inset 0 1px 2px rgba(0,0,0,.05), 0 0 0 3px rgba(0,0,0,.08), 0 8px 18px -12px rgba(0,0,0,.35); }
.upload-box { background: linear-gradient(180deg, #fafafa, #f3f3f3); box-shadow: inset 0 2px 6px rgba(0,0,0,.05); transition: border-color .25s, background .25s; }
.upload-box:hover { border-color: #9a9a9a; background: linear-gradient(180deg, #fcfcfc, #f5f5f5); }
.switch-track { box-shadow: inset 0 1px 3px rgba(0,0,0,.25); }
.switch-track::after { box-shadow: 0 1px 3px rgba(0,0,0,.35); }
.check-mark { box-shadow: inset 0 1px 2px rgba(0,0,0,.1); }
.checklist li.is-done .check-mark { background: var(--grad-black); box-shadow: 0 2px 6px -2px rgba(0,0,0,.6); }

/* ---- Případ: stavy, složky, vlákno, platby ---- */
.stepper-wrap { box-shadow: var(--hi), var(--sh-2); background: var(--grad-card); }
.level.is-current { background: linear-gradient(180deg, #fff, #f4f4f4); }
.step-dot { box-shadow: var(--hi), 0 2px 4px rgba(0,0,0,.08); transition: transform .3s var(--lift), box-shadow .3s; }
.step:hover .step-dot { transform: translateY(-2px) scale(1.08); box-shadow: 0 6px 14px -6px rgba(0,0,0,.45); }
.step.is-done .step-dot { background: var(--grad-black); box-shadow: 0 3px 8px -3px rgba(0,0,0,.7); }
.step.is-current .step-dot { box-shadow: 0 0 0 5px rgba(0,0,0,.07), 0 8px 18px -8px rgba(0,0,0,.6); }
.moves { background: linear-gradient(180deg, #f7f7f7, #efefef); box-shadow: inset 0 2px 6px rgba(0,0,0,.05); }
.folder { transition: background .25s, box-shadow .3s var(--lift); }
.folder:hover { background: linear-gradient(180deg, #fff, #f8f8f8); box-shadow: inset 0 0 0 1px #d6d6d6, 0 12px 26px -18px rgba(0,0,0,.4); }
.chat { box-shadow: var(--hi), var(--sh-2); }
.chat-list { background: linear-gradient(180deg, #f3f3f3, #fafafa); box-shadow: inset 0 3px 8px -4px rgba(0,0,0,.12); }
.msg-body { box-shadow: 0 1px 2px rgba(0,0,0,.05), 0 6px 14px -10px rgba(0,0,0,.25); transition: transform .2s var(--lift); }
.msg:hover .msg-body { transform: translateY(-1px); }
.msg.is-mine .msg-body { background: var(--grad-black); box-shadow: 0 2px 4px rgba(0,0,0,.2), 0 10px 20px -12px rgba(0,0,0,.7); }
.msg.is-system .msg-body { box-shadow: none; }
.pay-month { box-shadow: var(--hi), 0 1px 2px rgba(0,0,0,.05); transition: transform .25s var(--lift), box-shadow .25s; }
.pay-month:hover { transform: translateY(-3px); box-shadow: var(--hi), var(--sh-2); }
.pay-dot { transition: transform .2s var(--lift); }
.pay-grid td.pay-cell:hover .pay-dot { transform: scale(1.12); }

/* ---- Nástěnka: dlaždice stavů se zvednou a zčernají ---- */
.pipe { position: relative; background: var(--grad-card); transition: background .3s, transform .3s var(--lift), box-shadow .3s var(--lift), color .3s; }
.pipe:hover { background: var(--grad-black); transform: translateY(-3px); z-index: 1; box-shadow: var(--sh-dark); }
.pipe-n { transition: transform .3s var(--lift); }
.pipe:hover .pipe-n { transform: scale(1.12); color: #fff; }

/* ---- Nemovitosti, galerie ---- */
.gallery a { box-shadow: var(--sh-1); transition: transform .3s var(--lift), box-shadow .3s; }
.gallery a:hover { transform: translateY(-4px); box-shadow: var(--sh-3); }
.ltv .bar, .bar, .bar-track { box-shadow: inset 0 1px 2px rgba(0,0,0,.15); }
.bar-fill { box-shadow: inset 0 1px 0 rgba(255,255,255,.3); }

/* ---- Přihlášení: formulář jako deska ---- */
.auth-card { padding: 34px 32px; background: var(--grad-card); box-shadow: var(--hi), var(--sh-3); border: 1px solid #ececec; }
.auth-brand { background: radial-gradient(900px 500px at 20% 10%, rgba(255,255,255,.08), transparent 60%), linear-gradient(160deg, #1a1a1a, #000 70%); }
.auth-point { transition: color .25s, transform .3s var(--lift); }
.auth-point:hover { color: #fff; transform: translateX(4px); }
.alert { box-shadow: var(--hi), var(--sh-1); }
.fhelp-pop { box-shadow: var(--sh-3); }
.ruian-list { box-shadow: var(--sh-3); }
.ruian-opt { transition: background .15s, padding-left .2s var(--lift); }
.ruian-opt:hover, .ruian-opt.is-active { padding-left: 14px; }

@media (hover: none) {
    /* Na dotyku se nic „nezvedá" — zvednutí by zůstalo viset po klepnutí. */
    .card:hover, a.stat:hover, .btn:hover, .filter-chip:hover, .pipe:hover, .pay-month:hover, .gallery a:hover { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}
