/* =========================================================================
 * app.css — שפת-העיצוב של המערכת (T028). נטען **אחרון**, אחרי main.css.
 * =========================================================================
 *
 * הבעלים, אחרי סבבי-תיקון נקודתיים (T022–T027): «תצא קצת יותר מהמקובעות שלך!!!
 * תשפר משמעותית את העיצוב לפי ההגדרות של הסקיל!!! אתה עושה את זה בטיפין טיפין —
 * יכול להיות שזה פשוט יצריך ארכיטקטורה חדשה לחלוטין».
 *
 * 🔑 **ההחלטה הארכיטקטונית:** main.css הוא 3,100 שורות של תיקונים שהצטברו מסבב
 * לסבב, וכל עיצוב חדש היה עוד שכבה מעליהם — «המערכת הישנה עם טלאים». הקובץ הזה
 * הוא **היסוד** במקום: הסקיל phone-first-design (הטעם של הבעלים ממערכת ניהול-
 * הפרויקטים) מתורגם לערכי-שורש ולרכיבי-בסיס, וכל מסך — גם כזה שאיש לא נגע בו —
 * יורש אותם.
 *
 *   1. **ערכי-שורש** — הפלטה, הרווחים והרדיוסים של הסקיל מחליפים את ערכי-השורש של
 *      main.css. כל מה שכבר נשען על `var(--color-*)` משתנה מעצמו.
 *   2. **בסיס** — שדות, כפתורים, קלפים, תגים וטבלאות: ברירת-המחדל של המערכת.
 *   3. **מעטפת** — סרגל-עליון בצבע-המותג עם שם-המסך; בטלפון: סרגל-לשוניות תחתון
 *      (בית · לקוחות · רכישות · קבורות · עוד) במקום תפריט מוסתר.
 *
 * ⚠️ **מה במכוון לא כאן:** ערכים קשיחים בתוך `style=""` של מסכים ישנים (#2563eb
 * וכד') — אותם מנקה השכתוב פר-מסך (T026/T027). והמסכים העצמאיים (פורטל-לקוחות,
 * פלטפורמה, דפים ציבוריים) — יש להם layout משלהם.
 * ========================================================================= */

/* ===== 1. ערכי-שורש (הסקיל: tokens.css) ===== */
:root {
    --color-bg:           #f4f5f7;
    --color-surface:      #ffffff;
    --color-text:         #16192b;
    --color-text-muted:   #5d6475;
    --color-border:       #e3e6eb;
    --color-primary:      #1f3566;   /* תפריט-הצד: גוון כהה של המותג */
    --color-primary-text: #ffffff;
    --color-accent:       #2d4a8a;   /* המותג */
    --color-accent-hover: #24407a;
    --color-success:      #1e7b3a;
    --color-danger:       #b3261e;
    --color-warning:      #e19a00;

    --brand-soft: #e9eef8;
    --space-xs: 4px; --space-sm: 8px; --space-md: 12px; --space-lg: 16px; --space-xl: 24px;
    --radius-sm: 10px; --radius-md: 10px; --radius-lg: 12px;
    --shadow-sm: 0 1px 2px rgba(16, 24, 40, .06);
    --shadow-md: 0 1px 2px rgba(16, 24, 40, .06);
    --tap: 40px;
    --header-height: 56px;
    --bottom-nav: 60px;
    --font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Rubik", Arial, sans-serif;

    /* גווני-האייקונים של T026 — המותג במקום הכחול הישן */
    --kv-t-blue-bg: #e9eef8; --kv-t-blue: #2d4a8a;
}
[data-theme="dark"] {
    --color-bg:           #111318;
    --color-surface:      #1b1e26;
    --color-text:         #e8eaf0;
    --color-text-muted:   #9aa1b2;
    --color-border:       #2c303b;
    --color-primary:      #0d1324;
    --color-primary-text: #e8eaf0;
    --color-accent:       #7f9fe0;
    --color-accent-hover: #9db5ea;
    --color-success:      #6fcf97;
    --color-danger:       #f2a49d;
    --brand-soft: #232c42;
    --shadow-sm: none; --shadow-md: none;
    --kv-t-blue-bg: #232c42; --kv-t-blue: #9db5ea;
}

/* ===== 2. בסיס ===== */
html { -webkit-text-size-adjust: 100%; }
body {
    font: 15px/1.45 var(--font-family);
    background: var(--color-bg);
    color: var(--color-text);
}
h1 { font-size: 1.3rem; font-weight: 700; }
h2 { font-size: 1.15rem; font-weight: 700; }
h3 { font-size: 1rem; font-weight: 600; }
:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }
a { color: var(--color-accent); }

/* שדות: 40px, 16px (iOS לא מגדיל), רדיוס 10, קו 1px */
.app-main :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="color"]):not([type="range"]), select, textarea) {
    min-height: var(--tap);
    font-size: 16px;
    border: 1px solid var(--color-border);
    border-radius: 10px;
    background-color: var(--color-surface);
    color: var(--color-text);
    max-width: 100%;
}
.app-main textarea { padding-top: 8px; padding-bottom: 8px; }
.app-main :is(input, select, textarea):focus {
    outline: 0;
    border-color: var(--color-accent);
    box-shadow: 0 0 0 2px var(--brand-soft);
}
.app-main :is(input[type="checkbox"], input[type="radio"]) { accent-color: var(--color-accent); }

/* כפתורים */
.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    min-height: var(--tap); padding: 0 14px;
    border-radius: 10px; font-weight: 500; white-space: nowrap;
}
.btn-primary { background: var(--color-accent); border-color: var(--color-accent); color: #fff; }
.btn-primary:hover { background: var(--color-accent-hover); color: #fff; }
.btn-ghost, .btn-secondary { background: var(--color-surface); border: 1px solid var(--color-border); color: var(--color-text); }
.btn-ghost:hover, .btn-secondary:hover { background: var(--color-bg); }

/* קלף = מסגרת 1px, רדיוס 10, בלי צל (הסקיל: «לא כרטיסים צפים עם צל») */
.card {
    border-radius: 10px;
    border: 1px solid var(--color-border);
    box-shadow: none;
    padding: 12px 16px;
}
.card + .card { margin-top: 12px; }
.card h2, .card h3 { margin-top: 0; }

/* תג = כדורית קטנה */
.pill { border-radius: 99px; font-size: .75rem; font-weight: 600; padding: 2px 8px; line-height: 1.5; }

/* טבלה במחשב: כותרת שקטה, קווים דקים, שורה 44px */
.app-main table th { font-size: .82rem; font-weight: 600; color: var(--color-text-muted); }
.app-main table td, .app-main table th { border-color: var(--color-border); }

/* מצב בכותרת-עמוד (h2 + כפתור + מונה) — כמו kv-s-head */
.app-main > .kv-page-head h2, .app-main > div:first-child > h2 { font-size: 1.3rem; }

/* ===== 3. מעטפת ===== */

/* סרגל-עליון בצבע-המותג (הסקיל: .top) */
.app-header {
    background: var(--color-accent);
    color: #fff;
    border-bottom: 0;
    box-shadow: none;
    gap: 8px;
    padding-inline: 12px;
}
.app-header h1 { color: #fff; font-size: 1.05rem; font-weight: 600; }
.app-header .header-search input {
    background: rgba(255, 255, 255, .14) !important;
    border: 1px solid rgba(255, 255, 255, .22) !important;
    color: #fff !important;
    border-radius: 10px !important;
    min-height: 38px;
}
.app-header .header-search input::placeholder { color: rgba(255, 255, 255, .75); }
.app-header .header-search input:focus { background: #fff !important; color: var(--color-text) !important; }
.app-header .header-search input:focus::placeholder { color: var(--color-text-muted); }
.app-header .kv-hdr-ib,
.app-header [data-action="toggle-sidebar"],
.app-header #kvTableModeToggle,
.app-header .kv-hdr-search-btn {
    color: #fff !important;
    background: transparent !important;
    border: 0 !important;
    width: 40px; height: 40px; min-width: 40px;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: 10px;
}
.app-header .kv-hdr-ib:hover,
.app-header [data-action="toggle-sidebar"]:hover,
.app-header #kvTableModeToggle:hover { background: rgba(255, 255, 255, .12) !important; }
.app-header .header-company { background: rgba(255, 255, 255, .14) !important; color: #fff !important; border-color: rgba(255, 255, 255, .25) !important; }
.app-header #health-pill { background: rgba(255, 255, 255, .14); color: #fff; }
.kv-top-title { display: none; }

/* תפריט-הצד במחשב — גוון-המותג הכהה */
.app-sidebar { background: var(--color-primary); }
.app-sidebar nav li a.active { border-inline-start-color: #fff; background: rgba(255, 255, 255, .12); }

/* תוכן */
.app-main { padding: 16px 24px; }
.app-footer { font-size: .78rem; padding: 16px; }

/* ---------- טלפון ---------- */
@media (max-width: 768px) {
    /* הסרגל העליון: שם-המסך + פעולות. החיפוש נפתח מאייקון (שורה מתחת לסרגל),
       ושם-המערכת/הדייר יורדים — הם בתפריט «עוד». */
    .app-header > h1,
    .app-header .header-company,
    .app-header #health-pill { display: none !important; }
    .kv-top-title {
        display: block; flex: 1; min-width: 0;
        font-size: 1.05rem; font-weight: 600; color: #fff;
        white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    }
    .app-header .header-search {
        display: none !important;
        position: fixed !important; inset-inline: 0; top: calc(var(--header-height) + env(safe-area-inset-top));
        margin: 0 !important; max-width: none !important; padding: 8px 12px;
        background: var(--color-accent); z-index: 30;
    }
    body.kv-search-open .app-header .header-search { display: block !important; }
    body.kv-search-open .app-header .header-search input { background: #fff !important; color: var(--color-text) !important; }
    .app-header .header-actions { gap: 0 !important; margin-inline-start: 0; }
    /* ☰ עובר לסרגל התחתון («עוד») */
    .app-header [data-action="toggle-sidebar"] { display: none !important; }

    .app-main { padding: 12px 12px calc(var(--bottom-nav) + 16px + env(safe-area-inset-bottom)); }
    .app-footer { display: none; }

    /* המגירה נפתחת מעל הסרגל התחתון */
    .app-sidebar {
        height: calc(100dvh - var(--header-height) - env(safe-area-inset-top) - var(--bottom-nav) - env(safe-area-inset-bottom)) !important;
    }
}

/* סרגל-לשוניות תחתון (טלפון בלבד) */
.kv-bottom-nav { display: none; }
@media (max-width: 768px) {
    .kv-bottom-nav {
        display: grid; grid-template-columns: repeat(5, minmax(0, 1fr));
        position: fixed; inset-inline: 0; bottom: 0; z-index: 25;
        height: calc(var(--bottom-nav) + env(safe-area-inset-bottom));
        padding-bottom: env(safe-area-inset-bottom);
        background: var(--color-surface);
        border-top: 1px solid var(--color-border);
    }
    .kv-bottom-nav a, .kv-bottom-nav button {
        display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
        min-width: 0; padding: 4px 2px;
        background: none; border: 0; cursor: pointer; text-decoration: none;
        color: var(--color-text-muted); font: inherit; font-size: .72rem; font-weight: 500;
    }
    .kv-bottom-nav span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
    .kv-bottom-nav [aria-current="page"] { color: var(--color-accent); font-weight: 700; }
    .kv-bottom-nav [aria-current="page"] svg { stroke-width: 2.4; }
}

@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } }

/* כפתור-החיפוש בסרגל — טלפון בלבד; במחשב שדה-החיפוש גלוי תמיד */
.kv-hdr-search-btn { display: none !important; }
@media (max-width: 768px) { .app-header .kv-hdr-search-btn { display: inline-flex !important; } }

/* כפתור-המגירה בסרגל-העליון: רק בטלפון (במחשב תפריט-הצד גלוי תמיד). ובטלפון — «עוד» בסרגל התחתון. */
@media (min-width: 769px) { .app-header [data-action="toggle-sidebar"] { display: none !important; } }
/* כותרת-עמוד שזהה לשם שבסרגל-העליון — לא פעמיים (טלפון) */
@media (max-width: 768px) { .kv-dup-title { display: none !important; } }
/* T030: ראש-מסך שכל תוכנו היה הכותרת (שהוסתרה) — לא להשאיר אריח-אייקון בודד. נשאר אם יש בו פעולות או מונה. */
@media (max-width: 768px) {
    .kv-s-head:has(> .kv-dup-title):not(:has(.kv-s-actions, .kv-s-badge, button, a)) { display: none; }
}
/* T030: הודעת-אזהרה (ענבר) — לצד kv-s-flash (הצלחה) ו-kv-s-flash--err */
.kv-s-flash--warn { background: #fef3c7; color: #78350f; border-color: #fcd34d; }
[data-theme="dark"] .kv-s-flash--warn { background: #3a2a06; color: #fde68a; border-color: #92400e; }
/* חץ-חזרה בסרגל-העליון (טלפון) — מחליף את קישור-החזרה שבתוך העמוד */
.kv-top-back { display: none; }
@media (max-width: 768px) {
    .app-header .kv-top-back {
        display: inline-flex; align-items: center; justify-content: center; flex: none;
        width: 40px; height: 40px; margin-inline-start: -8px; border-radius: 10px; color: #fff;
    }
    .app-header .kv-top-back:active { background: rgba(255, 255, 255, .12); }
    .kv-set-back.kv-back-moved { display: none !important; }
}

/* 🔴 שם-מסך ארוך («חלקה 7 — בני ברק המורחבת») הרחיב את עמודת-הרשת של המעטפת מעבר
   למסך: `1fr` הוא minmax(auto,1fr), ו-auto = רוחב-התוכן המינימלי. ⇒ minmax(0,1fr),
   והסרגל חותך את השם ב-… במקום לדחוף את כל המסך הצידה (נמדד: 34px גלישה). */
@media (max-width: 768px) {
    .app-shell { grid-template-columns: minmax(0, 1fr) !important; }
    .app-header, .app-main { min-width: 0; }
    .app-header { overflow: hidden; }
    /* 🔴 T069 — ה-overflow:hidden שלמעלה חתך את תפריט-הפעמון (#notifDropdown), שתלוי
       מתחת לסרגל ב-position:absolute: הלחיצה «פתחה» אותו (display:block) והוא נשאר בלתי-נראה —
       הבעלים: «נראה כאילו הוא נפתח מאחורי המסך». fixed אינו נחתך ע"י overflow של אב (לסרגל אין
       transform/filter/contain) — אותו דפוס כמו .header-search למעלה. */
    #notifDropdown {
        position: fixed !important;
        top: calc(var(--header-height) + env(safe-area-inset-top) + 6px) !important;
        inset-inline: 8px !important;
        width: auto !important; max-width: none !important;
        margin-top: 0 !important;
        z-index: 1000 !important;
    }
    #notifDropdown #notifList { max-height: calc(100vh - var(--header-height) - var(--bottom-nav, 64px) - 140px) !important; }
}

/* ==========================================================================
   T032 — שורת-רשימה לפי תפקיד (טבלה שהמסך הצהיר בה th[data-kv-phone]).
   מצילום-הבעלים: «הפרט הכי שולי מופיע בהכי ענק — מספר התיק בכותרת; העיקר הוא שם
   האדם, מיקום הקבר עם כל ההיררכיה, ותאריך הפטירה». שלוש שורות, בלי מרווח מיותר:
     1. השם (מודגש) + תג-מצב בקצה
     2. מיקום-הקבר המלא — עד שתי שורות, לא נחתך באמצע ההיררכיה
     3. תאריכים עם תווית קצרה · מס׳-התיק (קטן) · עוד פרטים כל עוד יש מקום
   הסימונים (data-kv-role / data-kv-pre / order) — מ-kvMarkRowRoles ב-table-controls.js.
   ========================================================================== */
@media (max-width: 600px) {
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] tr {
        display: flex !important; flex-wrap: wrap; align-items: baseline;
        padding: 8px 12px !important; min-height: 0; white-space: normal;
    }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] tr:has(td[data-kv-select]) { padding-inline-end: 44px !important; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td:not([data-kv-select]) {
        display: block !important; position: static !important; transform: none !important;
        padding: 0 !important; margin: 0 !important; flex: none; min-width: 0;
        font-size: .8rem !important; font-weight: 400; color: var(--color-text-muted); line-height: 1.45;
        white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis;
    }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td::before { content: none !important; }
    /* 1 — השם */
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="title"] {
        order: 0 !important; flex: 1 1 0; min-width: 30%; font-size: 1rem !important; font-weight: 600; color: var(--color-text); line-height: 1.35;
    }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="title"] a { color: inherit; text-decoration: none; font-weight: inherit !important; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="title"] > div {
        display: inline; margin-inline-start: 6px; font-size: .78rem; font-weight: 400; color: var(--color-text-muted);
    }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="status"] {
        order: 1 !important; margin-inline-start: 8px !important; overflow: visible !important;
    }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="status"] .pill { font-size: .72rem; padding: 0 6px; }
    /* 2 — המיקום המלא, עד שתי שורות. שבירת-שורה (tr::before) לפניו — כדי שגם מיקום מכמה עמודות לא יעלה לשורת-השם */
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] tr::before { content: ""; order: 2; flex: 0 0 100%; height: 0; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="place"] {
        order: 3 !important; flex: 0 0 100%; font-size: .78rem !important; color: var(--color-text);
        white-space: normal !important; display: -webkit-box !important; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
    }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="place"] a { color: inherit; text-decoration: none; }
    /* T044 — שם/מיקום מכמה עמודות (חלקות · גושים · אחוזות): החלקים זה לצד זה, נשברים בין חלקים ולא באמצעם.
       החלק האחרון של השם תופס את היתרה, כך שתג-המצב נשאר בקצה כמו בשם של עמודה אחת. */
    /* ⚠️ min-width לשם: בסיס 0 «נכנס» לצד שבירת-השורה (tr::before, 100%) — השם קיבל רוחב 0 ונעלם. */
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-part] { flex: 0 1 auto; max-width: 100%; min-width: 0; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="title"][data-kv-part="last"] { flex: 1 1 0; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="place"][data-kv-part] {
        display: block !important; white-space: nowrap !important; -webkit-line-clamp: none;
    }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="title"][data-kv-pre]::before { color: var(--color-text-muted); font-weight: 400 !important; font-size: .85em; }
    /* 3 — תאריכים · מס׳-תיק · עוד; שבירה לשורה חדשה לפני הפריט הראשון */
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] tr::after { content: ""; order: 9; flex: 0 0 100%; height: 0; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-pre]::before {
        content: attr(data-kv-pre) !important; position: static !important; width: auto !important; color: var(--color-text-muted); font-weight: 400 !important; margin: 0 !important;
    }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td:is([data-kv-role="date"], [data-kv-role="ref"], [data-kv-role="meta"]) > div { display: none; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="date"] { color: var(--color-text); }
    /* השעה — בדף-הרשומה; בשורה היא דחפה את מס׳-התיק לשורה רביעית */
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="date"] > small { display: none; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-pre][data-kv-sep] { margin-inline-start: 6px !important; }
    /* תאריך קצר («12.10.26»): הטקסט המקורי מוסתר והקיצור מוצג; התווית (::before) שומרת על גודלה */
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-short] { font-size: 0 !important; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-short] > * { display: none !important; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-short]::before { font-size: .8rem; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-short]::after { content: attr(data-kv-short); font-size: .8rem; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="ref"] { font-size: .75rem !important; }
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="ref"] a { color: inherit; font-weight: 400 !important; }
    /* ⚠️ לא להסתיר כאן «תא בלי תפקיד»: הסקריפט מנקה את הסימונים ואז שואל getComputedStyle כדי לזהות
       עמודה שהמשתמש הסתיר — הסתרה כזו הייתה נראית לו «מוסתר ע"י המשתמש», וכל השורה נעלמה. */
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td:is([data-kv-role="hide"], [data-kv-empty], [data-kv-more]) { display: none !important; }
}

/* ==========================================================================
   T035 — סרגל «מסונן לפי»: מה סונן, באיזו עמודה, והסרה בנגיעה.
   שבב = «עמודה: מה» (נגיעה עורכת) + ✕ (מסיר). «נקה הכל» כשיש יותר מאחד.
   ========================================================================== */
.kv-active-filters {
    display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
    margin: 0 0 8px; padding: 8px 10px;
    background: color-mix(in srgb, var(--color-accent) 7%, var(--color-surface));
    border: 1px solid color-mix(in srgb, var(--color-accent) 25%, var(--color-border));
    border-radius: 10px;
}
.kv-active-filters[hidden] { display: none; }
.kv-af-title { font-size: .8rem; font-weight: 600; color: var(--color-accent); margin-inline-end: 2px; }
.kv-af-chip {
    display: inline-flex; align-items: stretch; max-width: 100%; min-width: 0;
    background: var(--color-surface); border: 1px solid var(--color-accent); border-radius: 999px; overflow: hidden;
}
.kv-af-edit {
    display: inline-flex; align-items: center; gap: 4px; min-width: 0; min-height: 32px;
    padding: 0 4px 0 0; padding-inline: 12px 4px; border: 0; background: transparent; font: inherit; font-size: .85rem;
    color: var(--color-text); cursor: pointer; white-space: nowrap;
}
.kv-af-edit:disabled { cursor: default; }
.kv-af-field { color: var(--color-text-muted); flex: none; }
.kv-af-what { font-weight: 600; overflow: hidden; text-overflow: ellipsis; min-width: 0; max-width: 60vw; }
.kv-af-x {
    display: inline-flex; align-items: center; justify-content: center; flex: none;
    width: 36px; min-height: 32px; border: 0; background: transparent; color: var(--color-accent); cursor: pointer;
}
.kv-af-x:hover, .kv-af-x:focus-visible { background: color-mix(in srgb, var(--color-accent) 12%, transparent); }
.kv-af-clear {
    min-height: 32px; padding: 0 10px; margin-inline-start: auto; border: 0; background: transparent;
    font: inherit; font-size: .85rem; font-weight: 600; color: var(--kv-t-red, #b91c1c); cursor: pointer;
}

/* ==========================================================================
   T036 — סינון-תאריך: תקופות-מהירות (שבבים) + אופני-סינון (רשת לחיצה, לא select).
   ========================================================================== */
.kv-df-quick { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; }
.kv-df-preset {
    min-height: 32px; padding: 0 12px; border: 1px solid var(--color-border); border-radius: 999px;
    background: var(--color-surface); color: var(--color-text); font: inherit; font-size: .85rem; cursor: pointer;
}
.kv-df-preset:hover, .kv-df-preset:focus-visible { border-color: var(--color-accent); color: var(--color-accent); }
.kv-df-modes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin: 0 0 8px; }
.kv-df-mode {
    min-height: 36px; padding: 0 6px; border: 1px solid var(--color-border); border-radius: 10px;
    background: var(--color-surface); color: var(--color-text); font: inherit; font-size: .85rem; cursor: pointer;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.kv-df-mode.is-on { background: var(--color-accent); border-color: var(--color-accent); color: #fff; font-weight: 600; }
.kv-df-dual { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.kv-df-lbl { display: flex; flex-direction: column; gap: 2px; font-size: .78rem; color: var(--color-text-muted); min-width: 0; }
.kv-df-dual:has(> .kv-df-lbl[style*="none"]) { grid-template-columns: minmax(0, 1fr); }

/* ==========================================================================
   T038 — מיקום-קבר (GraveLocation::html): כל רמה עם שמה, נשבר בין רמות ולא נחתך.
   «שלא יתפוס לי מסך — מצומצם אבל ברור»: גופן קטן, שם-הרמה אפור, הערך בולט; לכל היותר 2 שורות.
   ========================================================================== */
.kv-loc { display: inline; white-space: normal; font-size: .82rem; line-height: 1.5; color: var(--color-text); overflow-wrap: anywhere; }
.kv-loc-seg { white-space: nowrap; }
.kv-loc-k { color: var(--color-text-muted); font-size: .92em; }
.kv-loc-v { font-weight: 600; }
.kv-loc-sep { color: var(--color-text-muted); margin: 0 4px; }
.kv-loc--empty { color: var(--color-text-muted); }
/* בתוך שורת-רשימה (kv-s-item-meta הוא שורה אחת עם «…») — המיקום נשבר, לא נחתך */
.kv-s-item-meta:has(> .kv-loc) { white-space: normal; flex-wrap: wrap; overflow: visible; }
.kv-s-item-meta > .kv-loc { overflow: visible; text-overflow: clip; flex: 1 1 100%; }
a.kv-loc-seg { color: inherit; text-decoration: none; border-radius: 4px; }
a.kv-loc-seg .kv-loc-v { color: var(--color-accent); }
a.kv-loc-seg:hover .kv-loc-v, a.kv-loc-seg:focus-visible .kv-loc-v { text-decoration: underline; }
/* ברשימה (שורת-המיקום של T032) — הגודל של השורה, לא של הרכיב */
td[data-kv-role="place"] .kv-loc { font-size: inherit; }

/* ==========================================================================
   T039 — תחתית-הרשימות: שורת-ניווט אחת (⏮ ‹ «עמוד N מתוך M» › ⏭) ומתחתיה שורת-מידע קטנה.
   ========================================================================== */
.kv-pag { display: flex; flex-direction: column; align-items: center; gap: 6px; margin: 12px 0 4px; }
.kv-pag-nav { display: flex; align-items: center; justify-content: center; gap: 4px; flex-wrap: nowrap; max-width: 100%; }
.kv-pag-btn, .kv-pag-num {
    display: inline-flex; align-items: center; justify-content: center; flex: none;
    min-width: var(--tap, 40px); height: var(--tap, 40px); padding: 0 6px; border-radius: 10px;
    border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text);
    text-decoration: none; font-size: .9rem; font-variant-numeric: tabular-nums;
}
.kv-pag-btn:hover, .kv-pag-num:hover { border-color: var(--color-accent); color: var(--color-accent); }
.kv-pag-btn.is-off { opacity: .35; pointer-events: none; }
.kv-pag-num.is-on { background: var(--color-accent); border-color: var(--color-accent); color: #fff; font-weight: 600; }
.kv-pag-nums { display: inline-flex; align-items: center; gap: 4px; margin: 0 4px; }
.kv-pag-gap { color: var(--color-text-muted); padding: 0 2px; }
.kv-pag-jump { display: inline-flex; align-items: center; gap: 6px; margin: 0 6px; font-size: .9rem; color: var(--color-text-muted); white-space: nowrap; }
.kv-pag-jump input {
    width: 3.6em; height: var(--tap, 40px); padding: 0 4px; text-align: center; font: inherit; font-size: 1rem; font-weight: 600;
    color: var(--color-text); background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 10px;
    -moz-appearance: textfield;
}
.kv-pag-jump input::-webkit-outer-spin-button, .kv-pag-jump input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.kv-pag-meta { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-size: .8rem; color: var(--color-text-muted); }
.kv-pag-meta select {
    height: 28px; padding: 0 4px; font: inherit; font-size: .8rem; color: var(--color-text);
    background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 8px;
}
/* במחשב: מספרי-העמודים מספיקים, ושדה-הקפיצה נשאר לרשימות ארוכות. בטלפון: בלי מספרים — 11 כפתורים לא נכנסים. */
@media (max-width: 600px) {
    .kv-pag-nums { display: none; }
}
@media (min-width: 601px) {
    .kv-pag-jump label { display: none; }
    .kv-pag-jump { margin-inline-start: 10px; order: 10; }
}

/* ==========================================================================
   T040 — בלי «קפיצה» בטעינה. מצילום-הבעלים: «כשאני מנווט לעמוד אחר — תחילה ככה זה מוצג ואז מיד
   הרשומה מסתדרת». ה-HTML מצויר לפני ש-table-controls.js (בסוף ה-body) מסמן את התפקידים, ולרגע
   השורות מופיעות בתבנית הכללית (מס׳-תיק בכותרת, הכול בשורה אחת). ⇐ בטלפון, טבלה שהצהירה על
   תפקידים מוסתרת עד שהסקריפט מסמן אותה (data-kv-roles); כרשת-ביטחון — מתגלה מעצמה אחרי 2 שניות,
   כדי שתקלה בסקריפט לעולם לא תשאיר רשימה ריקה. visibility ולא display — המקום שמור, אין קפיצת-גלילה.
   ========================================================================== */
@keyframes kv-roles-reveal { to { visibility: visible; } }
@media (max-width: 600px) {
    body:not(.kv-tables-as-table) table.kv-cards-on-phone:has(th[data-kv-phone]):not([data-kv-roles]) tbody {
        visibility: hidden;
        animation: kv-roles-reveal 0s linear 2s forwards;
    }
}

/* ==========================================================================
   T042 — כפתור «שמירה» מאחורי הסרגל התחתון. מדיווח-הבעלים: «העליתי קובץ ליצירת לקוח — אבל אין לי
   כפתור לשמור». היה: `.app-main:has(.kv-set-back) { padding: 12px }` (main.css) ספציפי יותר מריפוד-
   הסרגל-התחתון, ולכן **בכל דף עם חץ-חזרה** (טפסים, דפי-רשומה, הגדרות) המרווח בתחתית נעלם, והרכיב
   האחרון — כאן כפתור-השמירה — ישב בדיוק מתחת לסרגל (נמדד: ראש-הכפתור = ראש-הסרגל = 784px).
   ========================================================================== */
@media (max-width: 768px) {
    .app-main, .app-main:has(.kv-set-back) {
        padding-bottom: calc(var(--bottom-nav) + 16px + env(safe-area-inset-bottom)) !important;
    }
    /* והפעולה העיקרית נגישה מכל מקום בטופס ארוך: שורת-השמירה **קבועה** מעל הסרגל התחתון.
       ⚠️ fixed ולא sticky: ‎.app-main מוגדר overflow:auto אך אינו גולל (הגוף גולל), ו-sticky נצמד
       לגולל-הקרוב — כלומר לעולם לא «נדבק». נמדד בדפדפן.
       ⚠️ רק כשיש בדף **שורת-שמירה אחת** (bottom_nav.php מסמן kv-s-save--fixed): בדפים עם שמירה לכל קטע
       (הגדרות, דף-קבר) שורות קבועות היו נערמות זו על זו. */
    .kv-s-save.kv-s-save--fixed {
        position: fixed; inset-inline: 0; bottom: calc(var(--bottom-nav) + env(safe-area-inset-bottom)); z-index: 40;
        margin: 0; padding: 8px 12px;
        background: var(--color-surface); border-top: 1px solid var(--color-border);
        box-shadow: 0 -2px 8px rgba(0, 0, 0, .06);
    }
    /* מקום לשורה הקבועה, כדי שלא תסתיר את השדה האחרון */
    .app-main:has(.kv-s-save--fixed), .app-main:has(.kv-set-back):has(.kv-s-save--fixed) {
        padding-bottom: calc(var(--bottom-nav) + 80px + env(safe-area-inset-bottom)) !important;
    }
}

/* ==========================================================================
   T045 — מעבר ישיר למפה מרשימת בתי-עלמין / גושים / חלקות.
   כפתור-אייקון קטן; בטלפון הוא בתפקיד «status» — בקצה שורת-השם, שטח-נגיעה 32px.
   ========================================================================== */
.kv-map-ib {
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px; border-radius: 8px;
    background: var(--kv-t-violet-bg); color: var(--kv-t-violet); text-decoration: none;
}
.kv-map-ib:hover { filter: brightness(.95); text-decoration: none; }
.kv-map-ib:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }
@media (max-width: 600px) {
    body:not(.kv-tables-as-table) table.kv-cards-on-phone[data-kv-roles] td[data-kv-role="status"] .kv-map-ib { width: 30px; height: 30px; }
}

/* ==========================================================================
   T046 — ערכה כהה: ניגודיות.
   • כפתור-ראשי: המותג בכהה הוא תכלת (#7f9fe0), ולבן עליו ≈2.6:1 — מתחת לסף-הקריאות.
     גוון-מותג עמוק עם לבן ≈6.4:1 — כמו .btn-primary הישן בכהה (main.css), כדי ששני סוגי
     הכפתור-הראשי ייראו אותו דבר. חל בכל המערכת, לא רק בכניסה.
   • אזור-המותג במסכי-הכניסה: אותו תכלת ככותרת עם טקסט לבן — בכהה הוא גוון-מותג עמוק.
   ========================================================================== */
[data-theme="dark"] .kv-s-btn--primary { background: #3b5ba5; border-color: #3b5ba5; color: #fff; }
[data-theme="dark"] .kv-s-btn--primary:hover { background: #4767b3; border-color: #4767b3; color: #fff; }
[data-theme="dark"] .kv-auth-hero { background: #1f3566; }
[data-theme="dark"] .kv-auth .error { background: rgba(242, 164, 157, .16); color: #f2a49d; }
