/* ============================================================
   EGRITOS COLOR PALETTE – Single Source of Truth
   Αλλάξτε εδώ για να αλλάξουν τα χρώματα παντού
   (Bootstrap, Telerik kendo-theme-bootstrap, custom styles)
   ============================================================ */
:root {
    /* --- Primary brand colors --- */
    --eg-primary:        #1e3548;
    --eg-primary-hover:  #335c7d;
    --eg-secondary:      #3d6d94;

    /* --- Semantic state colors --- */
    --eg-success:        #2d7577;
    --eg-success-hover:  #235a5c;
    --eg-info:           #b4b7b7;
    --eg-info-hover:     #777777;
    --eg-warning:        #ff9f43;
    --eg-danger:         #ea5455;

    /* --- Neutral / utility colors --- */
    --eg-orange:         #fd7e14;
    --eg-disabled:       #e8e8e8;
    --eg-gray:           rgba(75, 70, 92, 0.6);
    --eg-gray-light:     #dbdade;
    --eg-light:          #dfdfe3;
    --eg-white:          #ffffff;
    --eg-dark:           #4b4b4b;

    /* --- Bootstrap overrides – defined here, re-applied with higher specificity below --- */

    /* --- Shorthand aliases (χρησιμοποιούνται ήδη σε egritos.css) --- */
    --primary:           var(--eg-primary);
    --secondary:         var(--eg-secondary);
    --success:           var(--eg-success);
    --success-hover:     var(--eg-success-hover);
    --info:              var(--eg-info);
    --info-hover:        var(--eg-info-hover);
    --warning:           var(--eg-warning);
    --danger:            var(--eg-danger);
    --orange:            var(--eg-orange);
    --disabled:          var(--eg-disabled);
    --gray:              var(--eg-gray);
    --gray-light:        var(--eg-gray-light);
    --light:             var(--eg-light);
    --white:             var(--eg-white);
    --dark:              var(--eg-dark);
}

/* Bootstrap vars override.
   ΠΡΟΣΟΧΗ στη specificity: ο vendor δηλώνει τα --bs-* σε `:root, [data-bs-theme="light"]`
   (0,1,0) — ΙΣΟ με `html` (0,1,0) και στο ΙΔΙΟ element. Ο template-customizer φορτώνει
   το core-dark.css δυναμικά (insert) ΜΕΤΑ το app.min.css, οπότε σε dark mode ο vendor
   κέρδιζε το tie-break της σειράς και το --bs-primary έμενε μωβ (#7367f0).
   Το `html:root` (0,2,0) κερδίζει ανεξάρτητα από τη σειρά φόρτωσης. */
html:root {
    --bs-primary:        var(--eg-primary);
    --bs-primary-hover:  var(--eg-primary-hover);
    --bs-secondary:      var(--eg-secondary);
    --bs-success:        var(--eg-success);
    --bs-info:           var(--eg-info);
    --bs-warning:        var(--eg-warning);
    --bs-danger:         var(--eg-danger);
    --bs-light:          var(--eg-light);
    --bs-dark:           var(--eg-dark);
    --bs-border-color:   var(--eg-gray-light);
    --bs-primary-rgb:    var(--eg-primary-rgb);
    /* Ο vendor ορίζει --bs-link-color: #7367f0 (μωβ) — δεν είναι brand χρώμα μας.
       Χωρίς αυτό, κάθε <a> (π.χ. στήλη Σειρά/ΑΑ των λιστών) έβγαινε μωβ. */
    --bs-link-color:           var(--egfin-link);
    --bs-link-hover-color:     var(--eg-primary-hover);
    --bs-link-color-rgb:       var(--egfin-link-rgb);
    font-size: 16px;
}

body {
    font-family: 'Ubuntu', sans-serif;
    /* --egfin-ink αντί #000000: το !important έσπαγε το dark mode (μαύρο σε σκούρο). */
    color: var(--egfin-ink) !important;
}

.status-icon-legend{
    font-size: 17px;
    padding-right: 5px; 
}

/* Telerick Override Start */
.dropdown-item .k-menu-link {
    box-shadow: none !important;
}

/* Grid Command Column Centering */
.k-grid .k-command-cell {
    text-align: center !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 4px;
}

.k-grid .k-command-cell .k-button {
    margin: 0;
}

.k-tabstrip > .k-tabstrip-content {
    color: var(--egfin-ink);
    font-size: 1.2em;
}

.k-tabstrip-items .k-link {
    color: var(--egfin-ink);
    font-size: 1em;
} 

.k-tabstrip-top > .k-tabstrip-items-wrapper .k-tabstrip-item {
    margin: 0 2px;
    border-bottom: 2px solid var(--primary);
    font-weight: 500;
}

.k-pager-numbers .k-link, .k-pager-nav.k-link, .k-pager-refresh {
    color: var(--primary) !important;
}

    .k-pager-numbers .k-link.k-state-selected, .k-pager-numbers .k-link.k-selected {
        border-color: var(--primary) !important;
        color: #ffffff !important;
        background-color: var(--primary) !important;
    }

.k-pager-nav, .k-pager-refresh {
    color: var(--info);
}

    .k-pager-numbers .k-link:hover, .k-pager-numbers .k-link.k-state-hover,
    .k-pager-nav.k-link:hover, .k-pager-refresh:hover, .k-state-hover.k-pager-nav.k-link,
    .k-state-hover.k-pager-refresh, .k-hover.k-pager-nav.k-link, .k-hover.k-pager-refresh {
        color: #ffffff !important;
        background-color: var(--primary) !important;
    }

.k-tabstrip-top > .k-tabstrip-items {
    border-bottom: 1px solid var(--gray-light);
}

    .k-tabstrip-top > .k-tabstrip-items .k-tabstrip-item {
        margin-bottom: 0 !important;
    }
/*.k-item .k-active >.kitem.k-active {*/
/*    color: white;*/
/*}*/
.k-tabstrip-items .k-tabstrip-item {
    color: #656565;
    background-color: var(--light);
    border-right: 1px solid var(--gray-light);
}

    .k-tabstrip-items .k-tabstrip-item:last-of-type {
        border-right: 0 none;
    }

    .k-tabstrip-content.k-active, .k-tabstrip > .k-tabstrip-content.k-active  {
        border: 0 none !important;
        padding: 0;
        box-shadow: 0 0.25rem 1.125rem rgba(75, 70, 92, 0.1);
    }
    
    .k-tabstrip-items .k-tabstrip-item.k-active, .k-tabstrip-items .k-tabstrip-item:hover,
    .k-list-item.k-selected, .k-selected.k-list-optionlabel,
    .k-tabstrip-items-wrapper .k-tabstrip-item.k-active {
        background-color: var(--bs-primary);
        color: #ffffff !important;
    }

        .k-list-item.k-selected:hover, .k-selected.k-list-optionlabel:hover, .k-list-item.k-selected.k-hover, .k-selected.k-hover.k-list-optionlabel {
            background-color: var(--bs-secondary);
            color: #ffffff !important;
        }

        .k-tabstrip-items .k-tabstrip-item.k-active .k-link,
        .k-tabstrip-items .k-tabstrip-item:hover .k-link {
            color: var(--light) !important;
        }

.k-button {
    font-weight: 400;
    font-size: 1rem;
    padding: 0.375rem 0.75rem;
    line-height: 1.5;
}

    .k-button.btn-sm {
        padding: 0.25rem 0.5rem;
        font-size: 0.875rem;
        line-height: 1.5;
        border-radius: 0.2rem;
    }

.k-input-button {
    background-color: var(--info);
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    color: #ffffff;
    height: 100%;
    width: 40px;
}

    .k-input-button:hover, .k-input-button:focus, .k-input-button:active {
        background-color: var(--info-hover);
        color: #ffffff;
    }

.k-datepicker .k-dateinput, .k-dropdown-wrap .k-input /*, .k-multiselect .k-multiselect-wrap .k-input*/ {
    width: calc(100% - 40px);
}

.k-datepicker {
    display: flex;
    justify-content: space-between;
}

    .k-datepicker .k-dateinput,
    .k-datepicker .k-dateinput .k-dateinput-wrap,
    .k-picker-wrap,
    .k-dropdown-wrap,
    .k-dateinput-wrap,
    .k-numeric-wrap,
    .k-combobox .k-dropdown-wrap,
    .k-datepicker .k-picker-wrap,
    .k-input-inner {
        height: auto;
    }

.k-numerictextbox,
.k-textbox,
.k-dateinput,
.k-datepicker,
.k-textarea,
.k-datepicker,
.k-combobox,
.k-multiselect,
.k-dropdownlist,
.k-dropdown {
    padding: 0;
}

.k-input-inner {
    padding: 0.375rem 0.75rem;
}

.k-multiselect.form-control, .k-multiselect-wrap {
    padding: 0px;
    height: auto;
    min-height: calc(1.5em + 0.75rem + 2px);
}

.k-multiselect {
    position: relative;
}

    .k-multiselect .k-clear-value {
        position: absolute;
        top: 3px;
        right: 0;
        z-index: 1000;
    }

.k-dateinput .k-input, .k-dropdown-wrap .k-input, .k-numerictextbox.form-control .k-input {
    border: 0 none;
}

.k-datepicker .k-select, .k-dropdown-wrap .k-select {
    width: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--primary);
    color: #ffffff;
}

.k-grid-header .k-header {
    vertical-align: middle;
    font-weight: 700;
}

.k-grid-toolbar {
    justify-content: flex-end;
}

/* === Grid header/cell truncation (list-redesign) === */
/* Επικεφαλίδες στηλών: μία γραμμή με ellipsis — αντικαθιστά το white-space:initial που επέτρεπε αναδίπλωση */
.k-column-title {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Κελιά: μία γραμμή με ellipsis για όλα τα .k-grid (global default) +
   generic minimum ύψος κελιού/γραμμής 50px (το height σε table-cell λειτουργεί ως minimum). */
.k-grid td,
.k-grid .k-table-td {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    padding-top: 3px;      /* compact γραμμές — το ύψος ορίζεται από περιεχόμενο + μικρό padding */
    padding-bottom: 3px;
    vertical-align: middle;
    min-width: 50px;       /* generic minimum πλάτος κελιού */
}
/* Generic minimum πλάτος και στις κεφαλίδες (ώστε header/body να μένουν ευθυγραμμισμένα) */
.k-grid .k-header,
.k-grid .k-table-th {
    min-width: 50px;
}

/* Ellipsis για άμεσα τέκνα-κείμενο κελιών (template-rendered spans/anchors).
   ΣΗΜΕΙΩΣΗ: ΔΕΝ στοχεύουμε wrapper <div> — το nowrap κληρονομείται ήδη από το td
   (οπότε δεν αναδιπλώνεται κείμενο) και το td κάνει το clip· έτσι δεν σπάμε
   layout divs (.d-flex / flex-column / flex-wrap σε action-button & stacked cells). */
.k-grid tbody td > span:not(.spinner-border):not([class*="k-"]):not(.badge),
.k-grid tbody td > a {
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: middle;
}

/* Opt-out: interactive controls & action wrappers δεν κόβονται ποτέ */
.k-grid tbody td > .egfin-row-actions,
.k-grid tbody td > .ico-btn,
.k-grid tbody td > .k-button,
.k-grid tbody td > .k-input,
.k-grid tbody td > .k-picker,
.k-grid tbody td > .k-combobox,
.k-grid tbody td > .k-numerictextbox,
.k-grid tbody td > button {
    overflow: visible;
    text-overflow: clip;
    max-width: none;
    white-space: normal;
}

/* Opt-out class: εφαρμόζεται σε GridColumn Class="eg-cell-wrap" για στήλες με σκόπιμο multi-line περιεχόμενο */
.k-grid td.eg-cell-wrap,
.k-grid .k-table-td.eg-cell-wrap {
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
}

.k-grid td.eg-cell-wrap > span:not(.spinner-border):not([class*="k-"]):not(.badge),
.k-grid td.eg-cell-wrap > a,
.k-grid td.eg-cell-wrap > div:not([class*="k-"]) {
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    max-width: none;
    display: block;
}
/* Sticky grid header — μένει σταθερό όσο σκρολάρει ο χρήστης (όλα τα .k-grid) */
.k-grid .k-grid-header {
    position: sticky;
    top: 0;
    z-index: 3;
}
.k-grid .k-grid-header .k-header {
    /* opaque ώστε να μη φαίνονται οι γραμμές από κάτω — το token είναι
       opaque hex και στα δύο themes (light #f8f9fa / dark #1e2530). */
    background: var(--kendo-color-surface, #f2f5f8);
}
/* === /Grid header/cell truncation === */

/* === Quick filters bar (list-redesign) — συμπαγές inline layout === */
/* Κενό ανάμεσα στο filters block (legacy φόρμα ή quick bar) και ό,τι ακολουθεί (chips/grid) */
.eg-dynamic-filters {
    margin-bottom: 0.6rem;
}
/* CSS Grid: οι στήλες γεμίζουν ΟΛΟ το πλάτος (auto-fit + 1fr)· ο αριθμός ανά γραμμή
   εξαρτάται από το πλάτος της οθόνης (minmax 190px). Καμία κενή δεξιά στήλη. */
.eg-quick-bar {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 8px;
    align-items: stretch;
}
/* Κάθε cell flex-column με περιεχόμενο στο κάτω μέρος → controls & κουμπιά ευθυγραμμισμένα,
   ανεξάρτητα από το ύψος του label. */
.eg-quick-bar .eg-quick-filter {
    min-width: 0;
    margin-bottom: 0;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
}
/* Stacked label πάνω από κάθε quick filter — σταθερό pixel ύψος (ταυτίζεται ΑΚΡΙΒΩΣ
   με το action spacer ώστε τα controls & τα κουμπιά να ευθυγραμμίζονται). */
.eg-quick-bar .eg-quick-filter > label {
    font-size: 11px;
    font-weight: 600;
    height: 16px;
    line-height: 16px;
    color: #5a6672;
    margin-bottom: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
}
/* Uniform control height (36px) σε ΟΛΑ τα φίλτρα: quick bar + "Περισσότερα" panel + legacy */
.eg-dynamic-filters .k-picker,
.eg-dynamic-filters .k-multiselect,
.eg-dynamic-filters .k-combobox,
.eg-dynamic-filters .k-numerictextbox,
.eg-dynamic-filters .k-input,
.eg-dynamic-filters input.form-control {
    height: 36px !important;
    min-height: 36px;
}
/* Compact summary multiselect (quick bar): κουμπί «Label: N» + dropdown με checkboxes
   (αντικαθιστά το clipped multiselect που ήταν δύσχρηστο με πολλές τιμές) */
.eg-quick-bar .eg-ms-summary {
    width: 100%;
}
.eg-quick-bar .eg-ms-summary > button {
    height: 36px;
    font-size: 12.5px;
    color: var(--eg-dark, #4b4b4b);
}
.eg-ms-summary-menu {
    max-height: 280px;
    overflow-y: auto;
    min-width: 220px;
    z-index: 1060;
}
.eg-ms-summary-menu .dropdown-item:hover {
    background: #f3f6f9;
}
.eg-ms-summary-menu input[type=checkbox] {
    accent-color: var(--eg-secondary, #3d6d94);
}
/* Action buttons (Περισσότερα / Αναζήτηση): ΙΔΙΑ δομή με τα input cells — ένα
   αόρατο <label> spacer (ίδια metrics με τα labels) από πάνω + κουμπί 36px από κάτω.
   Έτσι το κουμπί κάθεται ΑΚΡΙΒΩΣ στη ζώνη των controls, ανεξάρτητα από align-items. */
.eg-quick-bar .eg-quick-action {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-end;
}
.eg-quick-bar .eg-quick-action .btn {
    height: 36px;
    white-space: nowrap;
}
/* === /Quick filters bar === */

/* === «Περισσότερα φίλτρα» panel — compact: stacked labels + πυκνό grid === */
/* Μικρό, συμπαγές label πάνω από κάθε φίλτρο */
.eg-more-grid .form-group > label {
    font-size: 11px;
    font-weight: 600;
    color: #5a6672;
    margin-bottom: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
}
/* === /«Περισσότερα φίλτρα» panel === */

/* === Υπόμνημα popover (list-redesign) — σωστά paddings & gaps μεταξύ badges === */
.eg-legend-popover {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 7px 8px;          /* row-gap column-gap — να μην κολλάνε τα badges */
    line-height: 1.5;
}
.eg-legend-popover > .badge {
    margin: 0 !important;   /* το gap του flex αναλαμβάνει το spacing */
}
/* sub-rows (π.χ. "Σημάνσεις"/"Δημιουργία") πιάνουν δική τους γραμμή */
.eg-legend-popover > div {
    flex: 1 0 100%;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 7px 8px;
    margin: 2px 0 0 0 !important;
}
.eg-legend-popover .text-muted strong {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: .03em;
}
/* === /Υπόμνημα popover === */

/* === List actions bar — «Περισσότερα φίλτρα» & «Υπόμνημα» ίδιο ύψος (list-redesign) === */
/* Το «Περισσότερα φίλτρα» έχει inline .badge child που το κάνει ελαφρώς ψηλότερο από το
   «Υπόμνημα». Κλειδώνουμε ίδιο ύψος και στα δύο κουμπιά της μπάρας. */
.eg-listactions-bar > .btn,
.eg-listactions-bar > span > .btn {
    height: 31px;
    display: inline-flex;
    align-items: center;
    line-height: 1;
}
.eg-listactions-bar > .btn .badge {
    line-height: 1;
}
/* === /List actions bar === */

/* === Ένδειξη εξαγωγής σε Excel ===
   Μη-μπλοκαριστικό chip δίπλα στο πλήθος εγγραφών. Η εξαγωγή τρέχει παράλληλα, οπότε ΔΕΝ
   χρησιμοποιούμε overlay/loader που θα κλείδωνε την οθόνη: ο χρήστης μπορεί να συνεχίσει
   να φιλτράρει και να δουλεύει όσο ετοιμάζεται το αρχείο. */
.eg-export-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 3px 10px 3px 8px;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--eg-primary);                /* --eg-primary */
    background: #e9edf1;
    border: 1px solid #b2bfcb;
    white-space: nowrap;
    animation: eg-export-chip-in 160ms ease-out;
}

/* Το εικονίδιο πάλλεται απαλά — δείχνει «τρέχει» χωρίς τον θόρυβο ενός spinner. */
.eg-export-chip-icon {
    animation: eg-export-pulse 1.15s ease-in-out infinite;
}

@keyframes eg-export-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%      { opacity: .45; transform: scale(.9); }
}

@keyframes eg-export-chip-in {
    from { opacity: 0; transform: translateY(-2px); }
    to   { opacity: 1; transform: none; }
}

/* Σεβασμός στην προτίμηση του λειτουργικού για μειωμένη κίνηση. */
@media (prefers-reduced-motion: reduce) {
    .eg-export-chip,
    .eg-export-chip-icon {
        animation: none;
    }
}
/* === /Ένδειξη εξαγωγής === */

/* === Off-canvas «Επιλέξτε Φίλτρα» — καθαρές clickable σειρές (list-redesign) === */
/* Search box αναζήτησης φίλτρων — clear (×) μέσα στο input */
.eg-oc-search {
    position: relative;
}
.eg-oc-search .form-control {
    padding-right: 28px;
}
.eg-oc-search-clear {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    border: none;
    background: none;
    color: #9aa6b2;
    padding: 2px 5px;
    line-height: 1;
    cursor: pointer;
    z-index: 2;
}
.eg-oc-search-clear:hover {
    color: #36414c;
}
.eg-oc-filter-list {
    margin: 0 -4px;
}
.eg-oc-opt {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 8px;
    margin: 0;
    border-radius: 6px;
    font-size: 0.86rem;
    font-weight: 400;
    color: #36414c;
    transition: background-color .12s;
}
.eg-oc-opt:hover {
    background: #f3f6f9;
}
.eg-oc-opt:not(:last-child) {
    border-bottom: 1px solid var(--egfin-border);
}
.eg-oc-opt > span {
    line-height: 1.2;
}
/* Drag-and-drop αναδιάταξη (native HTML5) */
.eg-oc-opt[draggable="true"] {
    cursor: grab;
}
.eg-oc-opt[draggable="true"]:active {
    cursor: grabbing;
}
.eg-oc-grip {
    flex: 0 0 auto;
    color: #b6c0cb;
    font-size: .8rem;
}
.eg-oc-opt.eg-oc-dragover {
    background: #eaf1f8;
    box-shadow: inset 0 2px 0 var(--primary, #1e3548);
}
/* Tri-state control (κρυφό / «Περισσότερα» / γρήγορο) — compact icon group */
.eg-oc-state {
    flex: 0 0 auto;
}
.eg-oc-state .btn {
    padding: 4px 9px;
    line-height: 1.3;
}
.eg-oc-state .btn i {
    font-size: .8rem;
}
/* Επικεφαλίδα ομάδας φίλτρων (FilterGroup) — εμφανίζεται μόνο όταν υπάρχουν 2+ ομάδες */
.eg-oc-group-title {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    background-color: var(--primary, #1e3548);
    color: #fff;
    text-align: center;
    padding: 4px 8px;
    border-radius: 6px;
    margin-top: 10px;
}
.eg-oc-group-title:first-child {
    margin-top: 0;
}
/* === /Off-canvas «Επιλέξτε Φίλτρα» === */

.k-tabstrip > .k-tabstrip-content {
    overflow: hidden;
}

.k-combobox .k-dropdown-wrap .k-input {
    color: var(--egfin-ink) !important;
    width: 100%;
}

.k-numerictextbox .k-select {
    height: calc(1.5em + 0.75rem + 2px);
}

.k-numerictextbox .k-link-increase .k-icon {
    top: -5px;
}

.k-numerictextbox .k-link-decrease .k-icon {
    bottom: 8px;
}

.k-textarea.form-control .k-input {
    padding: 4px 8px;
}

.textarea-full-height {
    height: 100%;
}

.k-dialog-titlebar {
    background-color: var(--primary);
    color: #ffffff;
}

.k-window-titlebar.k-dialog-titlebar.k-header .k-bare.k-button {
    color: #ffffff;
}

.k-window-titlebar{
    background-color: var(--bs-primary);
    color: white;
}
.k-window-titlebar-action span {
    color: white!important;
}

.k-dialog-buttongroup .k-button.k-primary {
    background-color: var(--orange);
    color: #ffffff;
}

.k-window-content, .k-prompt-container {
    padding: 15px;
}

.k-dropdown-wrap .k-input /*, .k-multiselect .k-multiselect-wrap .k-input*/ {
    align-items: center;
    padding: 0 10px;
}

.k-dropdownlist {
    display: flex;
    border: 1px solid var(--egfin-border-strong);
}

.k-window {
    max-height: calc(100vh - 40px);
    overflow: auto;
}

.k-card-header {
    padding: 10px 15px;
}

.k-tilelayout-item-header.k-card-header {
    background-color: var(--primary);
    color: var(--egfin-on-fill);
}

.k-tilelayout {
    grid-auto-rows: auto !important;
}

/* Χωρίς hardcoded λευκό: ο τίτλος κληρονομεί το χρώμα του header του
   (primary-filled header -> --egfin-on-fill· egfin-card header -> --egfin-ink),
   ώστε να μη διαφέρει από τον πάνω τίτλο της σελίδας. */
.k-card-title {
    line-height: 1;
    color: inherit;
}

.k-input.k-disabled, .k-dropdownlist.k-disabled {
    background-color: var(--disabled) !important;
}

.k-disabled .k-dateinput-wrap .k-input {
    background-color: transparent;
}

.k-checkbox,
.k-checkbox.k-checkbox {
    width: 30px;
    height: 30px;
    border: 1px solid var(--bs-primary);
}

.k-grid-content .k-checkbox, .k-grid-header .k-checkbox, .table .k-checkbox, .k-grid-header .k-checkbox {
    width: 20px;
    height: 20px;
    border-radius: 0.25rem;
    border: 1px solid var(--egfin-ink-3);
}


.k-radio:checked, .k-radio.k-checked {
    border-color: var(--info);
    background-color: var(--info);
}

.k-animation-container.k-animation-container-shown .container-box-shadow {
    box-shadow: 5px 5px 10px #333;
}

.k-grid a {
    color: var(--egfin-link);
    border-bottom: 2px solid transparent;
}

    .k-grid a:hover, .k-grid a:focus, .k-grid a:active {
        color: var(--primary);
        border-bottom: 2px solid var(--primary);
    }

.k-grid th, .k-grid td {
    font-weight: 400;
}
/* Telerick Override End*/

/* overriden styles*/
form .form-group {
    margin-bottom: 0.5rem !important;
}

.k-numerictextbox.k-input.form-control {
    padding: 0;
}

form .form-control {
    color: var(--egfin-ink);
    border: 1px solid var(--egfin-border-strong);
    display: flex;
}

    form .form-control[type="checkbox"] {
        width: 30px;
        height: 30px;
        border: 1px solid #ccc;
    }

        form .form-control[type="checkbox"]:checked {
            background-color: var(--info);
            border-color: var(--info);
        }

/*.input-group {
    margin-bottom: 0.5rem !important;
}*/

form label {
    color: var(--egfin-ink);
    letter-spacing: 0;
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 0.2rem;
}

form .form-section {
    font-size: 1.1rem;
    font-weight: 500;
    background-color: var(--disabled);
    letter-spacing: 0;
}

form .validation-message {
    color: var(--danger);
    font-size: 0.75em;
    margin: 0;
    padding: 0;
}

form ul.validation-errors li {
    line-height: 1;
}

.img-caption {
    position: absolute;
    bottom: 0;
    background-color: rgba(0,0,0,.7);
    color: white;
}

.caption-text {
    max-height: 65px;
    overflow-y: auto;
}

    .caption-text::-webkit-scrollbar {
        width: 3px;
    }

    .caption-text::-webkit-scrollbar-thumb {
        background: #00777a;
    }

    .caption-text::-webkit-scrollbar-track {
        background: #f1f1f1;
    }

.carousel-image {
    max-height: 800px;
    margin: auto;
}

.carousel-control-prev:hover, .carousel-control-next:hover {
    background: rgba(241, 241, 241, .3);
}

.carousel-control-prev i, .carousel-control-next i {
    color: #ff682d;
}

.hover-pointer:hover {
    cursor: pointer;
}

.border-light-right {
    padding: 0;
    border-right: 1px solid var(--gray);
    padding-right: 10px;
}

.row-item {
    box-shadow: 0px 3px 6px var(--gray-light);
    border-radius: 3px;
    padding: 5px;
    margin: 5px;
}

.enter-app-button {
    min-width: 160px;
    box-shadow: 0 2px 3px #eaeaea;
}

    .enter-app-button:hover {
        box-shadow: 0 1px 2px #2f5785;
    }

.card-header {
    padding: 0.5rem !important;
}

.MonacoEditor {
    width: 100%;
    height: 500px;
}

@media (max-width: 992px) {
    .fa-toggle-off::before {
        content: none;
    }

    .fa-toggle-on::before {
        content: none;
    }
}
/* overriden styles end */

.btn-save {
    color: var(--white);
    background-color: var(--success);
    border-color: var(--success);
}

    .btn-save:hover, .btn-save:active, .btn-save:focus {
        background-color: var(--success-hover) !important;
        border-color: var(--success-hover) !important;
    }

.display-on-top,
.k-animation-container:has(.display-on-top) {
    z-index: 987654 !important;
}

/*  grid */
.k-master-row .k-table-alt-row .k-grid-content-sticky {
    background-color: var(--egfin-surface);
}

.k-grid .k-table-row {
    background-color: var(--egfin-surface);
}


.k-grid .k-table-alt-row {
    background-color: var(--egfin-surface);
}

.k-grid-header .k-grid-header-sticky {
    border-left: rgb(166 166 166 / 50%);
    border-right: rgb(166 166 166 / 50%);
    border-width: 1px;
    border-style: solid;
    background-color: var(--egfin-surface);
}

.k-table-td {
    border: 1px solid !important;
    border-color: var(--bs-border-color) !important;
}

.k-picker {
    min-width: 6em !important;
}

.k-grid .k-master-row .k-table-td.k-grid-content-sticky,
.k-grid .k-master-row.k-table-alt-row .k-table-td.k-grid-content-sticky {
    background-color: var(--egfin-surface) !important;
}

.k-grid-content {
    overflow-y: unset;
}

.k-grid-header, .k-grid-footer {
    padding-inline-end: 0;
}
/* custom components */
.eg-page-header {
    align-self: center;
}

.eg-page-header-text {
    margin: 0px !important;
    color: var(--bs-primary);
}

.k-picker {
    background: 0;
}

.k-checkbox:checked, .k-checkbox.k-checked, .k-checkbox:indeterminate, .k-checkbox.k-indeterminate {
    background-color: var(--bs-primary);
    border-color: var(--bs-dark);
}



.k-grid .k-cell-inner > .k-link {
    justify-content: center;
}

#template-customizer .template-customizer-open-btn {
    top: 170px !important;
}

    #template-customizer .template-customizer-open-btn::before {
        background-image: none !important;
    }

.k-grid-header .k-header {
    font-weight: 500;
}

.k-grid td, .k-grid .k-table-td {
    font-weight: 400;
}


.k-i-sort-asc-small::before {
    color: var(--bs-black);
    content: "\e127";
}

.k-i-sort-desc-small::before {
    color: var(--bs-black);
    content: "\e128";
}

.ofiletis-navbar {
    background-color: var(--egfin-surface);
    padding: 5px;
}

.k-tabstrip-top > .k-tabstrip-items-wrapper .k-tabstrip-item.k-active {
    background-color: var(--bs-primary);
    color: white !important;
    margin-bottom: 0px;
}

.k-tabstrip-top > .k-tabstrip-items-wrapper .k-tabstrip-item:hover {
    background-color: var(--bs-primary);
    border: 1px solid var(--bs-primary);
    color: white !important;
}

.k-tabstrip-top > .k-tabstrip-items-wrapper {
    padding: 0px;
}

.k-tabstrip-items-wrapper {
    margin-bottom: -1px;
}

.stoixeia-xreosis-tab-content {
    padding: 0.75rem;
}

.stoixeia-xreosis-close {
    margin-left: 0.5rem;
    padding: 0 0.25rem;
    border-radius: 0.25rem;
    opacity: 0.7;
    cursor: pointer;
}

    .stoixeia-xreosis-close:hover {
        opacity: 1;
        background-color: rgba(0, 0, 0, 0.15);
    }

.k-tabstrip-items .k-tabstrip-item.stoixeia-xreosis-add-tab {
    background-color: var(--light);
    color: var(--primary);
    font-weight: 600;
    margin-left: auto;
    border-right: 0 none;
}

    .k-tabstrip-items .k-tabstrip-item.stoixeia-xreosis-add-tab:hover,
    .k-tabstrip-items .k-tabstrip-item.stoixeia-xreosis-add-tab.k-active {
        background-color: var(--primary);
        color: #ffffff !important;
    }

        .k-tabstrip-items .k-tabstrip-item.stoixeia-xreosis-add-tab .k-link {
            color: var(--primary);
        }

        .k-tabstrip-items .k-tabstrip-item.stoixeia-xreosis-add-tab:hover .k-link,
        .k-tabstrip-items .k-tabstrip-item.stoixeia-xreosis-add-tab.k-active .k-link {
            color: #ffffff !important;
        }

.eg-gridToolBarDiv {
    width: calc(100vw - (100vw - 100%) - 1rem * 2) !important;
    margin: 1rem auto 0;
    border-radius: 0.375rem;
}

.divider .divider-text {
    font-size: 1.2rem !important;
}

    .divider .divider-text i {
        font-size: 1rem !important;
    }

.dropdown-item.bg-primary {
    color: #fff;
}

.grid-footer {
    text-align: right;
    font-weight: 500;
}

.k-table {
    /* --egfin-ink αντί #000: το !important έκανε αδιάβαστα ΟΛΑ τα grids στο dark. */
    color: var(--egfin-ink) !important;
}


.validation-message {
    color: var(--bs-danger)!important;
    font-size: 0.75rem;
    margin: 0;
    padding: 0;
}

.k-window{
    overflow: unset;
}

.k-item-list {
     white-space: pre;
}

.k-window-content, .k-prompt-container {
    position: unset;
}

.ofeiletis-formrow .form-group {
    margin : 0px!important;
}

.k-switch-on .k-switch-thumb {
    background-color: white!important;
}

.k-list-item {
    height: auto!important;
}


.k-switch-on .k-switch-track {
    border-color: var(--bs-primary);
    background-color: var(--bs-primary);
}

.k-switch-on:disabled .k-switch-track, .k-switch-on.k-disabled .k-switch-track {
    border-color: var(--bs-secondary);
    background-color: var(--bs-secondary);
}


/*spinner*/
.lds-ellipsis {
    display: inline-block;
    position: relative;
    width: 80px;
    height: 80px;
}

    .lds-ellipsis div {
        position: absolute;
        top: 33px;
        width: 13px;
        height: 13px;
        border-radius: 50%;
        background: var(--bs-primary);
        animation-timing-function: cubic-bezier(0, 1, 1, 0);
    }

        .lds-ellipsis div:nth-child(1) {
            left: 8px;
            animation: lds-ellipsis1 0.6s infinite;
        }

        .lds-ellipsis div:nth-child(2) {
            left: 8px;
            animation: lds-ellipsis2 0.6s infinite;
        }

        .lds-ellipsis div:nth-child(3) {
            left: 32px;
            animation: lds-ellipsis2 0.6s infinite;
        }

        .lds-ellipsis div:nth-child(4) {
            left: 56px;
            animation: lds-ellipsis3 0.6s infinite;
        }

@keyframes lds-ellipsis1 {
    0% {
        transform: scale(0);
    }

    100% {
        transform: scale(1);
    }
}

@keyframes lds-ellipsis3 {
    0% {
        transform: scale(1);
    }

    100% {
        transform: scale(0);
    }
}

@keyframes lds-ellipsis2 {
    0% {
        transform: translate(0, 0);
    }

    100% {
        transform: translate(24px, 0);
    }
}

.k-window-actions {
    justify-content: end;
}

.text-right {
    text-align: right !important;
}

.printing-modal .k-window-content {
    padding: 0;
}

.vertical-text {
    writing-mode: vertical-lr; /* Set text to vertical */
    transform: rotate(180deg); /* Rotate text 180 degrees */
    white-space: nowrap; /* Prevent text from wrapping */
}

/* Embedded mode: stretch grid columns to fill available width */
.k-grid-embedded .k-grid-header-table,
.k-grid-embedded .k-grid-table {
    width: 100% !important;
}

/* Status icon colors — χρησιμοποιούνται σε legend & status indicators (παραστατικά, αποδείξεις, κλπ) */
.eg-status-pending     { color: #F44337; } /* Εκκρεμή */
.eg-status-locked      { color: #673AB7; } /* Δεσμευμένα */
.eg-status-partial     { color: #FFB300; } /* Μερικώς ενταλματοποιημένα */
.eg-status-issued      { color: #01A9F4; } /* Ενταλματοποιημένα */
.eg-status-partial-pay { color: #9E9E9E; } /* Μερικώς εξοφλημένα */
.eg-status-paid        { color: #4CAF50; } /* Εξοφλημένα */

/* === Auth portal link στη λίστα χρηστών (XristesList) === */
.auth-user-link {
    color: var(--bs-link-color, #0d6efd);
    text-decoration: none;
    max-width: 100%;
    overflow: hidden;
}

.auth-user-link:hover,
.auth-user-link:focus {
    text-decoration: underline;
    color: var(--bs-link-hover-color, #0a58ca);
}

.auth-user-link i {
    font-size: 0.85em;
    flex-shrink: 0;
}

/* === Bulk link auth users dialog (BulkLinkAuthUsersDialog) === */
.bulk-link-candidate {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    line-height: 1.2;
}

.bulk-link-candidate .bulk-link-candidate-info {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex-grow: 1;
}

.bulk-link-candidate .bulk-link-candidate-info small {
    color: #6c757d;
    font-size: 0.78rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bulk-link-portal-link {
    color: #0d6efd;
    flex-shrink: 0;
}

.bulk-link-portal-link:hover { color: #0a58ca; }

.bulk-link-warning-cell {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding-left: 0.25rem;
}

.warning-chip {
    display: inline-block;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-size: 0.78rem;
    line-height: 1.4;
    font-weight: 500;
    white-space: nowrap;
}

.warning-chip.info {
    background-color: #cfe2ff;
    color: #052c65;
    border: 1px solid #9ec5fe;
}

.warning-chip.warn {
    background-color: #fff3cd;
    color: #664d03;
    border: 1px solid #ffe69c;
}

.bulk-link-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    gap: 1rem;
    margin-bottom: 1rem;
    padding: 0.75rem 1rem;
    background-color: #f8f9fa;
    border: 1px solid #e9ecef;
    border-radius: 0.4rem;
}

.bulk-link-toolbar .field {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.bulk-link-toolbar label {
    font-size: 0.8rem;
    color: #495057;
    margin: 0;
}

.bulk-link-toolbar .spacer { flex-grow: 1; }

/* === Single-link Auth user ComboBox στο XristisDetail dialog === */
.auth-candidate-item {
    display: flex;
    flex-direction: column;
    line-height: 1.2;
    min-width: 0;
}

.auth-candidate-item small {
    color: #6c757d;
    font-size: 0.78rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.auth-candidate-hint {
    font-size: 0.85rem;
    color: #6c757d;
    padding: 0.25rem 0;
}

.auth-candidate-empty {
    margin-bottom: 0;
}

/* ===== EgFin reusable detail skin (global egfin-* classes + opt-in Telerik containers) ===== */

/* --- 1. Global token block (aliases to --eg-* όπου ταιριάζει το hue· literals για greys χωρίς --eg- αντίστοιχο) --- */
:root {
    --egfin-primary:          var(--eg-primary);          /* #1e3548 ≈ mockup navy #1f3a5f */
    --egfin-primary-soft:     #eef2f8;                     /* literal — no --eg- equivalent */
    --egfin-accent:           #d97706;                     /* dark amber — literal (mockup accent) */
    --egfin-accent-soft:      #fff7ed;                     /* literal — no --eg- equivalent */
    --egfin-accent-hover:     #b8620a;                     /* darker amber for button hover */
    --egfin-ink:              #1b2433;                     /* literal — primary text */
    --egfin-ink-2:            #4a5568;                     /* literal — secondary text */
    --egfin-ink-3:            #6b7280;                     /* literal — muted text */
    --egfin-ink-4:            #9aa3b2;                     /* literal — faint text */
    --egfin-border:           #e4e7eb;                     /* literal — hairline border */
    --egfin-border-strong:    #d2d6dc;                     /* literal — stronger border */
    --egfin-surface:          var(--eg-white);            /* #ffffff */
    --egfin-surface-alt:      #fafbfc;                     /* literal — subtle card-head bg */
    --egfin-field-readonly:   #f6f7f9;                     /* literal — readonly field bg */
    --egfin-success:          var(--eg-success);          /* #2d7577 ≈ mockup green #15803d */
    --egfin-success-soft:     #ecfdf5;                     /* literal — no --eg- equivalent */
    --egfin-danger:           var(--eg-danger);           /* #ea5455 ≈ mockup #b91c1c */
    --egfin-radius:           8px;
    --egfin-radius-sm:        6px;
    --egfin-shadow:           0 1px 3px rgba(15, 23, 42, 0.06), 0 4px 14px rgba(15, 23, 42, 0.05);
    --egfin-shadow-lg:        0 12px 32px rgba(15, 23, 42, 0.10);
    --egfin-mono:             'JetBrains Mono', ui-monospace, 'Cascadia Code', monospace;

    /* --- Soft tints (hover/selected/info surfaces).
           Light values = ό,τι ίσχυε ήδη ως literal, ώστε το light theme να μη
           αλλάξει καθόλου· το dark theme τα κάνει override στο egritos-dark.css. --- */
    --egfin-link:             #4d6cdc;   /* grid/inline link blue */
    --egfin-link-rgb:         77, 108, 220;
    --eg-primary-rgb:         30, 53, 72;
    /* Κείμενο ΠΑΝΩ σε saturated fill (primary/accent/danger/success/warning button,
       badge, chip). Light: λευκό. Dark: σκούρο — γιατί τα fills ανοίγουν στο dark
       theme και το λευκό πέφτει κάτω από AA (μετρημένο: #fff σε primary = 3.57). */
    --egfin-on-fill:          #ffffff;
    --egfin-skeleton:         #f0f0f0;   /* skeleton shimmer base */
    --egfin-skeleton-hi:      #e0e0e0;   /* skeleton shimmer highlight */
    --egfin-tint-hover:       #f0f3f7;   /* neutral hover surface */
    --egfin-tint-hover-alt:   #f1f3f6;   /* neutral hover (icon-btn, chips, pagers) */
    --egfin-tint-hover-alt2:  #f3f3f6;   /* neutral hover (pagination) */
    --egfin-tint-active:      #f0f0f4;   /* pressed/active surface */
    --egfin-tint-danger:      #fdecec;   /* danger hover surface */
    --egfin-tint-teal:        #e3f1f1;   /* info/teal highlight surface */
    --egfin-tint-selected:    rgba(30, 53, 72, 0.08);
    --egfin-tint-selected-hv: rgba(30, 53, 72, 0.11);
    --egfin-ring-focus:       rgba(30, 53, 72, 0.12);
    /* Row-state surfaces για grids (editing/invalid) + warning chip στα footer σύνολα.
       Tokens (όχι literals): σε dark theme το ανοιχτό fill έκρυβε το ανοιχτό κείμενο. */
    --egfin-tint-editing:     #dbe7f3;   /* γραμμή υπό επεξεργασία */
    --egfin-tint-invalid:     #fdecec;   /* γραμμή με σφάλμα ελέγχου */
    --egfin-tint-warn:        #fff6e5;   /* warning chip surface */
    --egfin-warn-ink:         #b26a00;   /* warning chip text */
}

/* --- 2. Card-head chrome για Telerik TileLayout item header (.card-head look· opt-in via .egfin-card) --- */
/* Telerik v7.x renders the tile header as .k-tilelayout-item-header with .k-card-title (matches proven egritos.css selectors). */
.egfin-card .k-tilelayout-item-header,
.egfin-card .k-tilelayout-item-header.k-card-header {
    padding: 8px 12px;
    background: var(--egfin-surface-alt);
    background-color: var(--egfin-surface-alt);
    border-bottom: 1px solid var(--egfin-border);
    color: var(--egfin-ink);
}

/* Header content (icon + title + count chip + optional charge switcher) lays out as a flex
   row so a trailing .chg-switch can push right via margin-left:auto. icon/title/chip were
   already inline, so flex is visually equivalent for existing egfin cards. */
.egfin-card .k-tilelayout-item-header .k-card-title {
    margin: 0;
    font-size: 12px;
    font-weight: 600;
    color: var(--egfin-ink);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    display: flex;
    align-items: center;
}

.egfin-head-icon {
    margin-right: 0.5rem;
    color: var(--egfin-ink-3);
    font-size: 12px;
}

/* --- 2.0 Refined grid skin (opt-in via .egfin-grid on TelerikGrid) --- */
.egfin-grid.k-grid {
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: var(--egfin-radius, 8px);
    font-size: 12.5px;
}

.egfin-grid .k-grid-header {
    background: var(--egfin-surface-alt, #fafbfc);
    border-bottom: 1px solid var(--egfin-border, #e4e7eb);
}

/* Locked (frozen) columns: opaque background so scrolling cells don't bleed behind */
.egfin-grid .k-grid-header-locked,
.egfin-grid .k-grid-content-locked,
.egfin-grid .k-grid-footer-locked {
    background: var(--egfin-surface, #fff);
}

.egfin-grid .k-grid-header-locked,
.egfin-grid .k-grid-header-locked th {
    background: var(--egfin-surface-alt, #fafbfc);
}

.egfin-grid .k-grid-content-locked,
.egfin-grid .k-grid-content-locked td {
    background: var(--egfin-surface, #fff);
}

.egfin-grid .k-grid-content-locked tr:hover td {
    background: var(--egfin-surface-alt, #fafbfc);
}

.egfin-grid .k-grid-footer-locked,
.egfin-grid .k-grid-footer-locked td {
    background: var(--egfin-surface-alt, #fafbfc);
}

/* Subtle divider between locked area and scrollable area */
.egfin-grid .k-grid-header-locked,
.egfin-grid .k-grid-content-locked,
.egfin-grid .k-grid-footer-locked {
    border-right: 1px solid var(--egfin-border, #e4e7eb);
    box-shadow: 2px 0 4px -2px rgba(15, 23, 42, .06);
}

/* Telerik 7.x: locked cells use position: sticky on individual th/td.
   Without an opaque background, scrolling content bleeds through. */
.egfin-grid th.k-grid-content-sticky,
.egfin-grid th.k-grid-header-sticky {
    background: var(--egfin-surface-alt, #fafbfc) !important;
    z-index: 2;
}

.egfin-grid td.k-grid-content-sticky {
    background: var(--egfin-surface, #fff) !important;
    z-index: 1;
}

.egfin-grid tbody tr:hover td.k-grid-content-sticky {
    background: var(--egfin-surface-alt, #fafbfc) !important;
}

.egfin-grid .k-grid-footer td.k-grid-footer-sticky {
    background: var(--egfin-surface-alt, #fafbfc) !important;
    z-index: 1;
}

/* Right-side shadow on the leftmost sticky column when content scrolls under it */
.egfin-grid .k-grid-content-sticky {
    box-shadow: -2px 0 4px -2px rgba(15, 23, 42, .06);
}

.egfin-grid .k-grid-header .k-header,
.egfin-grid .k-grid-header th.k-header {
    padding: 6px 8px;
    background: transparent;
    border-bottom-color: var(--egfin-border, #e4e7eb);
    text-transform: uppercase;
    font-size: 10.5px;
    letter-spacing: 0.04em;
    font-weight: 600;
    color: var(--egfin-ink-3, #6b7280);
    white-space: nowrap;
}

.egfin-grid .k-grid-header .k-header .k-cell-inner > .k-link {
    color: inherit;
    font-weight: inherit;
    text-transform: inherit;
    letter-spacing: inherit;
    font-size: inherit;
}

/* Plain hand-rolled <table> (μη-Telerik grids που τυλίγονται σε .egfin-grid) —
   full-width responsive layout· `> table` ώστε να μην επηρεάζει τα εσωτερικά
   .k-table των Telerik grids που επίσης φέρουν .egfin-grid. */
.egfin-grid > table {
    width: 100%;
    border-collapse: collapse;
}

/* Plain hand-rolled <table> headers (μη-Telerik grids που τυλίγονται σε .egfin-grid) —
   ίδιο header styling με τα Telerik grids ώστε όλα τα egfin-grid headers να είναι UPPERCASE. */
.egfin-grid thead th {
    padding: 6px 8px;
    background: transparent;
    border-bottom-color: var(--egfin-border, #e4e7eb);
    text-transform: uppercase;
    font-size: 10.5px;
    letter-spacing: 0.04em;
    font-weight: 600;
    color: var(--egfin-ink-3, #6b7280);
    white-space: nowrap;
}

.egfin-grid .k-grid-header th.egfin-group-head {
    text-align: center;
    font-size: 11px;
    color: var(--egfin-ink-2, #4a5568);
    letter-spacing: 0.02em;
}

.egfin-grid .k-grid-header th.egfin-group-head .k-cell-inner {
    justify-content: center;
}

.egfin-grid .k-grid-header th.egfin-group-start,
.egfin-grid .k-grid-content td.egfin-group-start {
    border-left: 1px solid var(--egfin-border, #e4e7eb);
}

.egfin-grid .k-grid-content td,
.egfin-grid tbody td {
    padding: 6px 8px;
    border-color: var(--egfin-border, #e4e7eb);
    color: var(--egfin-ink, #1b2433);
    vertical-align: middle;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Single-line ellipsis for any direct text child (template-rendered content like spans/anchors) */
.egfin-grid tbody td > span:not(.spinner-border):not([class*="k-"]),
.egfin-grid tbody td > a,
.egfin-grid tbody td > div:not([class*="k-"]) {
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: middle;
}

/* Allow row-action wrapper, icon buttons and Telerik inputs/comboboxes to render normally */
.egfin-grid tbody td > .egfin-row-actions,
.egfin-grid tbody td > .egfin-icon-btn,
.egfin-grid tbody td > .k-input,
.egfin-grid tbody td > .k-picker,
.egfin-grid tbody td > .k-combobox,
.egfin-grid tbody td > .k-numerictextbox,
.egfin-grid tbody td > button {
    overflow: visible;
    text-overflow: clip;
    max-width: none;
}

.egfin-grid tbody tr:hover td {
    background: var(--egfin-surface-alt, #fafbfc);
}

.egfin-grid .k-grid-footer {
    background: var(--egfin-surface-alt, #fafbfc);
    border-top: 1px solid var(--egfin-border, #e4e7eb);
}

.egfin-grid .k-grid-footer .k-footer-template td,
.egfin-grid .k-grid-footer-wrap td {
    padding: 6px 8px;
    font-weight: 600;
    color: var(--egfin-ink, #1b2433);
    background: var(--egfin-surface-alt, #fafbfc);
    border-color: var(--egfin-border, #e4e7eb);
}

.egfin-grid-total-label {
    display: inline-block;
    width: 100%;
    text-align: right;
    color: var(--egfin-ink-3, #6b7280);
    font-weight: 600;
}

.egfin-mono {
    font-family: ui-monospace, 'JetBrains Mono', Consolas, monospace;
    font-size: 11.5px;
    color: var(--egfin-ink-2, #4a5568);
}

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

.egfin-muted {
    color: var(--egfin-ink-4, #9aa3b2);
}

/* ===== egfin read-only fields & ΣΤΟΙΧΕΙΑ ΧΡΕΩΣΗΣ charge presentations (from design kit) ===== */

/* shared value/key atoms */
.rf .rk{color:var(--egfin-ink-4)}
.rf .rv{color:var(--egfin-ink)}
.rf .rv.egfin-num{font-family:var(--egfin-mono);font-variant-numeric:tabular-nums}
.rf .rv.muted{color:var(--egfin-ink-4)}

/* read-only value shown inside a .form-group (view mode keeps the edit grid layout —
   same col, the <label> stays, the input is swapped for this value text) */
.egfin-card .form-group .fv,
.egfin-tabs .k-tabstrip-content .form-group .fv{display:block;font-size:13px;line-height:1.5;color:var(--egfin-ink);min-height:1.5em;word-break:break-word}
.egfin-card .form-group .fv.egfin-num,
.egfin-tabs .k-tabstrip-content .form-group .fv.egfin-num{font-family:var(--egfin-mono);font-variant-numeric:tabular-nums}
.egfin-card .form-group .fv.muted,
.egfin-tabs .k-tabstrip-content .form-group .fv.muted{color:var(--egfin-ink-4)}

/* V1 — Στοίβα (stacked, packs horizontally) */
.rf-wrap.l-stacked{display:flex;flex-wrap:wrap;gap:12px 22px}
.l-stacked .rf{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 160px;max-width:100%}
.l-stacked .rf .rk{font-size:10px;text-transform:uppercase;letter-spacing:.04em;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.l-stacked .rf .rv{font-size:13px;line-height:1.35;word-break:break-word}
.l-stacked .rf.full{flex-basis:100%}

/* ===== ΣΤΟΙΧΕΙΑ ΧΡΕΩΣΗΣ — multi-charge read-only presentations ===== */
.chg-pager{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--egfin-ink-3)}
.chg-pager .pg{min-width:28px;height:28px;padding:0 6px;border:1px solid var(--egfin-border);background:var(--egfin-surface);border-radius:6px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px}
.chg-pager .pg:hover{background:var(--egfin-tint-hover-alt)}
.chg-pager .pg.active{background:var(--egfin-primary);color:var(--egfin-on-fill);border-color:var(--egfin-primary)}
.chg-pager .pg[disabled]{opacity:.4;cursor:not-allowed}

/* Mode A — cards */
.chg-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
@media (max-width:900px){.chg-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.chg-cards{grid-template-columns:1fr}}
.chg-card{border:1px solid var(--egfin-border);border-radius:var(--egfin-radius-sm);background:var(--egfin-surface);overflow:hidden;display:flex;flex-direction:column}
.chg-card-top{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--egfin-surface-alt);border-bottom:1px solid var(--egfin-border)}
.chg-grp{width:22px;height:22px;border-radius:5px;background:var(--egfin-primary);color:var(--egfin-on-fill);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--egfin-mono)}
.chg-ka{font-family:var(--egfin-mono);font-weight:600;font-size:12.5px;color:var(--egfin-primary)}
.chg-card-amt{margin-left:auto;font-family:var(--egfin-mono);font-variant-numeric:tabular-nums;font-weight:700;font-size:13px;color:var(--egfin-ink)}
.chg-card-body{padding:8px 10px;display:flex;flex-direction:column;gap:5px}
.chg-desc{font-size:12.5px;color:var(--egfin-ink);line-height:1.3;font-weight:500}
.chg-meta{display:flex;flex-wrap:wrap;gap:3px 14px}
.chg-mi{display:flex;flex-direction:column;gap:0;min-width:0}
.chg-mi .k{font-size:9.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--egfin-ink-4);font-weight:600}
.chg-mi .v{font-size:11.5px;color:var(--egfin-ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chg-mi .v.mono{font-family:var(--egfin-mono)}

/* Mode C — list (touch-friendly, built for non-technical users on small screens) */
.chg-list{border:1px solid var(--egfin-border);border-radius:var(--egfin-radius-sm);overflow:hidden}
.chg-list-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;background:var(--egfin-surface-alt);border-bottom:1px solid var(--egfin-border);flex-wrap:wrap}
.chg-list-bar .lbl{font-size:13px;color:var(--egfin-ink-2);font-weight:600}
.chg-expand-all{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--egfin-primary);background:var(--egfin-surface);border:1px solid var(--egfin-border-strong);border-radius:6px;padding:8px 12px;cursor:pointer;min-height:40px}
.chg-expand-all:hover{background:var(--egfin-primary-soft)}
.cl-row{border-bottom:1px solid var(--egfin-border)}
.cl-row:last-child{border-bottom:none}
.cl-head{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:none;background:var(--egfin-surface);cursor:pointer;padding:12px 14px;min-height:60px}
.cl-head:hover{background:var(--egfin-surface-alt)}
.cl-row.open .cl-head{background:var(--egfin-primary-soft)}
.cl-num{width:30px;height:30px;flex-shrink:0;border-radius:7px;background:var(--egfin-primary);color:var(--egfin-on-fill);font-family:var(--egfin-mono);font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center}
.cl-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.cl-ka{font-family:var(--egfin-mono);font-weight:700;font-size:13.5px;color:var(--egfin-primary)}
.cl-desc{font-size:14px;color:var(--egfin-ink);line-height:1.35;text-wrap:pretty}
.cl-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}
.cl-amt{font-family:var(--egfin-mono);font-variant-numeric:tabular-nums;font-weight:700;font-size:16px;color:var(--egfin-ink);white-space:nowrap}
.cl-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--egfin-primary);white-space:nowrap}
.cl-toggle .chev{transition:transform .15s;font-size:11px}
.cl-row.open .cl-toggle .chev{transform:rotate(180deg)}
/* expanded body — big, readable, single/double column */
.cl-body{padding:6px 14px 16px 56px;background:var(--egfin-surface-alt)}
@media (max-width:640px){.cl-body{padding-left:14px}}
.cl-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px 24px}
.cl-f{display:flex;flex-direction:column;gap:2px;min-width:0}
.cl-f.full{grid-column:1/-1}
.cl-f .k{font-size:11px;color:var(--egfin-ink-3);font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.cl-f .v{font-size:14px;color:var(--egfin-ink);line-height:1.35;text-wrap:pretty}
.cl-f .v.mono{font-family:var(--egfin-mono);font-variant-numeric:tabular-nums}

.chg-foot{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:8px 10px;margin-top:8px;border-top:1px dashed var(--egfin-border);font-size:12.5px;color:var(--egfin-ink-3)}
.chg-foot strong{font-family:var(--egfin-mono);font-variant-numeric:tabular-nums;color:var(--egfin-ink);font-size:14px}
.chg-list + .chg-foot{font-size:13.5px;padding:12px 14px;background:var(--egfin-success-soft);border:1px solid #cdeae0;border-radius:var(--egfin-radius-sm);margin-top:8px}
.chg-list + .chg-foot strong{font-size:16px;color:var(--egfin-success)}

/* charge view/layout switcher (segmented control in card head) */
/* charge-view picker centered in the card header regardless of title width */
.egfin-card .k-tilelayout-item-header .k-card-title{position:relative}
.chg-switch{display:inline-flex;align-items:center;gap:8px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-transform:none;letter-spacing:0}
.chg-seg{display:inline-flex;border:1px solid var(--egfin-border-strong);border-radius:6px;overflow:hidden;background:var(--egfin-surface)}
.chg-seg-btn{width:28px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:none;background:var(--egfin-surface);color:var(--egfin-ink-3);cursor:pointer;font-size:11.5px;padding:0;border-right:1px solid var(--egfin-border)}
.chg-seg-btn:last-child{border-right:none}
.chg-seg-btn:hover{background:var(--egfin-surface-alt);color:var(--egfin-ink)}
.chg-seg-btn.active{background:var(--egfin-primary);color:var(--egfin-on-fill)}

/* --- Κάρτα Ηλεκτρονικού Τιμολογίου (ParastatikoDapanonDetail) — header layout --- */
/* Δικό μας flex wrapper: δεν βασιζόμαστε στο flex του Telerik .k-card-title (δεν εφαρμόζεται αξιόπιστα). */
.egfin-einv-head{display:flex;align-items:center;gap:8px;width:100%;flex-wrap:wrap}
.egfin-einv-head .badge{text-transform:none;letter-spacing:normal;font-weight:600}
.egfin-einv-actions{margin-left:auto;display:flex;align-items:center;gap:6px}
.egfin-einv-num{font-family:var(--egfin-mono);font-size:12px;font-weight:600;color:var(--egfin-primary);background:var(--egfin-primary-soft);border-radius:4px;padding:3px 9px;text-transform:none;letter-spacing:normal;white-space:nowrap}
.egfin-einv-num .lbl{font-family:'Segoe UI',Roboto,sans-serif;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--egfin-ink-4);margin-right:5px}

/* --- Παραστατικό Δαπανών: dense READ-mode layout (genstrip / packed fields / flags / sub-group) --- */
.genstrip{display:flex;align-items:center;gap:8px 20px;flex-wrap:wrap;background:var(--egfin-surface);border:1px solid var(--egfin-border);border-radius:var(--egfin-radius);padding:8px 12px}
.genstrip .ttl{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--egfin-ink-3);display:flex;align-items:center;gap:6px}
.genstrip .ttl i{color:var(--egfin-ink-4)}
.tb-kv{display:flex;flex-direction:column;line-height:1.2}
.tb-kv .k{font-size:9.5px;text-transform:uppercase;letter-spacing:.04em;font-weight:600;color:var(--egfin-ink-4)}
.tb-kv .v{font-size:13px;color:var(--egfin-ink);font-weight:500}
.tb-kv .v.egfin-num{font-family:var(--egfin-mono)}
.tb-div{width:1px;align-self:stretch;background:var(--egfin-border)}
/* content-width, left-packed fields (όχι τέντωμα — σταθερό κενό μεταξύ τους) */
.rf-pack{display:flex;flex-wrap:wrap;gap:12px 28px}
.rf-pack .rf{display:flex;flex-direction:column;gap:2px;min-width:0;flex:0 0 auto;max-width:320px}
.rf-pack .rf .rk{font-size:10px;text-transform:uppercase;letter-spacing:.04em;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rf-pack .rf .rv{font-size:13px;line-height:1.35;word-break:break-word}
.rf .rv.strong{font-weight:600}
/* boolean flags ως chips */
.flags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:9px;border-top:1px dashed var(--egfin-border)}
.flag{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:2px 9px;border-radius:14px;border:1px solid var(--egfin-border);color:var(--egfin-ink-3);background:var(--egfin-surface)}
.flag.on{color:var(--egfin-success);border-color:#cdeae0;background:var(--egfin-success-soft)}
.flag i{font-size:9px}
/* ενσωματωμένο sub-group (Σύμβαση) μέσα στην κάρτα */
.subgroup{margin-top:10px;padding-top:9px;border-top:1px dashed var(--egfin-border)}
.subgroup-h{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--egfin-ink-4);display:flex;align-items:center;gap:6px;margin-bottom:8px}
.subgroup-h i{color:var(--egfin-ink-4)}
/* Συναλλασσόμενος compact (flat icon-lines, χωρίς boxed labels· Καρτέλα link στο card header) */
.egfin-contact-line{font-size:12px;color:var(--egfin-ink-2);margin-top:4px;display:flex;gap:7px;align-items:baseline}
.egfin-contact-line i{color:var(--egfin-ink-4);width:13px;text-align:center;flex-shrink:0;font-size:11px}

/* --- 2.0a Icon-only row action buttons με severity-aware hover --- */
.egfin-icon-btn,
button.egfin-icon-btn {
    --egfin-icon-btn-color: var(--egfin-ink-3, #6b7280);
    --egfin-icon-btn-hover-bg: var(--egfin-tint-hover-alt);
    --egfin-icon-btn-hover-color: var(--egfin-ink, #1b2433);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    padding: 0;
    border: 1px solid transparent;
    border-radius: 6px;
    background: transparent;
    color: var(--egfin-icon-btn-color);
    cursor: pointer;
    line-height: 1;
    transition: background-color .12s, color .12s, border-color .12s;
}

.egfin-icon-btn > i,
.egfin-icon-btn .fa-solid,
.egfin-icon-btn .fa-regular {
    font-size: 13px;
    line-height: 1;
}

.egfin-icon-btn:hover:not(:disabled),
.egfin-icon-btn:focus-visible:not(:disabled) {
    background: var(--egfin-icon-btn-hover-bg);
    color: var(--egfin-icon-btn-hover-color);
}

.egfin-icon-btn:disabled,
.egfin-icon-btn.disabled {
    opacity: .45;
    cursor: not-allowed;
}

/* When EgAsyncButton injects a spinner into an icon-only button, hide the icon
   and center the spinner in place of it (no horizontal stacking). */
.egfin-icon-btn:has(> .spinner-border) > i,
.egfin-icon-btn:has(> .spinner-border) > .fa-solid,
.egfin-icon-btn:has(> .spinner-border) > .fa-regular {
    display: none;
}

.egfin-icon-btn > .spinner-border {
    width: 13px;
    height: 13px;
    border-width: 1.5px;
    margin: 0 !important;
    color: currentColor;
}

/* severity variants — color/bg kick in only on hover */
.egfin-icon-btn.egfin-danger {
    --egfin-icon-btn-hover-bg: #fef2f2;
    --egfin-icon-btn-hover-color: var(--egfin-danger, #b91c1c);
}

.egfin-icon-btn.egfin-edit,
.egfin-icon-btn.egfin-warning {
    --egfin-icon-btn-hover-bg: #fffbeb;
    --egfin-icon-btn-hover-color: var(--egfin-warning, #b45309);
}

.egfin-icon-btn.egfin-success {
    --egfin-icon-btn-hover-bg: var(--egfin-success-soft);
    --egfin-icon-btn-hover-color: var(--egfin-success, #15803d);
}

.egfin-icon-btn.egfin-primary,
.egfin-icon-btn.egfin-info {
    --egfin-icon-btn-hover-bg: var(--egfin-primary-soft, #eef2f8);
    --egfin-icon-btn-hover-color: var(--egfin-primary, #1f3a5f);
}

/* Row-action wrapper για multi-button cells */
.egfin-row-actions {
    display: inline-flex;
    gap: 2px;
    justify-content: flex-end;
    align-items: center;
}

/* When inside an egfin-grid row, dim row-actions by default and reveal on row hover */
.egfin-grid tbody td .egfin-row-actions .egfin-icon-btn,
.egfin-grid tbody td > .egfin-icon-btn {
    opacity: .55;
    transition: opacity .12s, background-color .12s, color .12s;
}

.egfin-grid tbody tr:hover td .egfin-row-actions .egfin-icon-btn,
.egfin-grid tbody tr:hover td > .egfin-icon-btn,
.egfin-grid tbody td .egfin-icon-btn:hover,
.egfin-grid tbody td .egfin-icon-btn:focus-visible {
    opacity: 1;
}

/* Γραμμή ανάλυσης χρεώσεων με αδιάθετο ποσό (μετά από απόπειρα αποθήκευσης) */
.egfin-analysis-grid tbody tr.egfin-row-invalid > td {
    background: rgba(234, 84, 85, .10);
}

.egfin-analysis-grid tbody tr.egfin-row-invalid:hover > td {
    background: rgba(234, 84, 85, .16);
}

/* --- 2.1 Compact Telerik checkbox + native label inside egfin-check row --- */
.egfin-check .k-checkbox,
.egfin-check .k-checkbox.k-checkbox {
    width: 16px;
    height: 16px;
    min-width: 16px;
    border-width: 1px;
    border-radius: 3px;
}

.egfin-check > label {
    font-size: 12.5px;
    color: var(--egfin-ink-2, #4a5568);
    margin: 0;
    cursor: pointer;
    user-select: none;
}

/* --- 3. Tabs skin για Telerik TabStrip (.tabs/.tab look· opt-in via .egfin-tabs) — serves transaction + detail (Είδη/…) strips --- */
.egfin-tabs .k-tabstrip-items {
    border-bottom: 1px solid var(--egfin-border);
    background: var(--egfin-surface);
    padding: 0 12px;
}

.egfin-tabs .k-tabstrip-items .k-tabstrip-item,
.egfin-tabs .k-tabstrip-items .k-tabstrip-item.k-active:not(.stoixeia-xreosis-add-tab),
.egfin-tabs .k-tabstrip-items .k-tabstrip-item:hover:not(.stoixeia-xreosis-add-tab),
.egfin-tabs .k-tabstrip-items .k-link {
    /* active/hover selectors included to beat global blue-bg rules
       (egritos.css ~line 159 & ~line 672) on the redesigned page;
       :not(.stoixeia-xreosis-add-tab) preserves the "+ Προσθήκη" tab skin */
    border: none;
    background: transparent;
}

.egfin-tabs .k-tabstrip-items .k-link {
    padding: 10px 10px;
    font-size: 12.5px;
    font-weight: 500;
    color: var(--egfin-ink-3);
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    white-space: nowrap;
}

.egfin-tabs .k-tabstrip-items .k-tabstrip-item:hover .k-link {
    /* !important needed to beat global rule (egritos.css ~line 169) which sets
       .k-tabstrip-item:hover .k-link { color: var(--light) !important } */
    color: var(--egfin-ink) !important;
}

.egfin-tabs .k-tabstrip-items .k-tabstrip-item.k-active .k-link {
    /* !important needed to beat global rule (egritos.css ~line 168) which sets
       .k-tabstrip-item.k-active .k-link { color: var(--light) !important } */
    color: var(--egfin-primary) !important;
    border-bottom-color: var(--egfin-accent);
    font-weight: 600;
}

.egfin-tab-cnt {
    font-size: 10.5px;
    background: var(--egfin-primary-soft);
    color: var(--egfin-ink-3);
    padding: 0 6px;
    border-radius: 10px;
    font-weight: 600;
}

.egfin-tabs .k-tabstrip-item.k-active .egfin-tab-cnt {
    background: var(--egfin-accent);
    color: var(--egfin-surface);
}

/* --- 4. Totals strip (horizontal 6-cell summary) --- */
.egfin-totals {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    background: var(--egfin-surface);
    border: 1px solid var(--egfin-border);
    border-radius: var(--egfin-radius);
    overflow: hidden;
    /* 8px κενό πάνω από το totals strip — ίσο με τα υπόλοιπα section gaps */
    margin-top: 8px;
}

.egfin-totals .cell {
    padding: 12px 14px;
    border-right: 1px solid var(--egfin-border);
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.egfin-totals .cell:last-child {
    border-right: none;
}

.egfin-totals .cell .k {
    font-size: 10.5px;
    color: var(--egfin-ink-4);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 600;
}

.egfin-totals .cell .v {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    font-size: 15px;
    color: var(--egfin-ink);
}

.egfin-totals .cell .sub {
    font-size: 11px;
    color: var(--egfin-ink-4);
    font-variant-numeric: tabular-nums;
}

.egfin-totals .cell.grand {
    background: var(--egfin-primary-soft);
}

.egfin-totals .cell.grand .k {
    color: var(--egfin-primary);
}

.egfin-totals .cell.grand .v {
    color: var(--egfin-primary);
    font-size: 18px;
    font-weight: 700;
}

.egfin-totals .cell.net {
    background: var(--egfin-success-soft);
}

.egfin-totals .cell.net .k {
    color: var(--egfin-success);
}

.egfin-totals .cell.net .v {
    color: var(--egfin-success);
    font-size: 16px;
    font-weight: 700;
}

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

    .egfin-totals .cell:nth-child(3n) {
        border-right: none;
    }
}

@media (max-width: 640px) {
    .egfin-totals {
        grid-template-columns: repeat(2, 1fr);
    }

    .egfin-totals .cell:nth-child(3n) {
        border-right: 1px solid var(--egfin-border);
    }

    .egfin-totals .cell:nth-child(2n) {
        border-right: none;
    }
}

/* Page-specific override: totals strip με 5 metrics (π.χ. καρτέλα Προμηθευτή).
   Το base grid είναι σταθερό 6-column· με 5 cells έμενε κενό 6ο κουτί.
   Desktop = ακριβώς 5 ίσες στήλες· κάτω από 1100px auto-fit ώστε να μη μένει
   ποτέ κενή trailing στήλη σε καμία ανάλυση. */
.egfin-totals.egfin-totals-5 {
    grid-template-columns: repeat(5, 1fr);
}

@media (max-width: 1100px) {
    .egfin-totals.egfin-totals-5 {
        grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    }
}

/* --- 5. Contact card (Συναλλασσόμενος) --- */
.egfin-pill {
    font-size: 10.5px;
    color: var(--egfin-ink-3);
    background: var(--egfin-tint-hover-alt);
    padding: 2px 7px;
    border-radius: 10px;
    margin-left: 4px;
    text-transform: none;
    letter-spacing: 0;
}

.egfin-contact {
    border: 1px solid var(--egfin-border);
    border-radius: var(--egfin-radius-sm);
    overflow: hidden;
    background: var(--egfin-surface);
}

.egfin-contact-search {
    display: flex;
    align-items: stretch;
    gap: 6px;
    margin-bottom: 10px;
}

.egfin-contact-search .form-control {
    flex: 1;
}

.egfin-contact-head {
    padding: 10px 12px;
    border-bottom: 1px solid var(--egfin-border);
    background: var(--egfin-surface-alt);
    display: flex;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 8px;
}

.egfin-contact-head-body {
    flex: 1;
    min-width: 0;
}

.egfin-contact-name {
    font-weight: 600;
    font-size: 13.5px;
    color: var(--egfin-ink);
    line-height: 1.3;
}

.egfin-contact-sub {
    font-size: 11px;
    color: var(--egfin-ink-3);
    margin-top: 2px;
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}

.egfin-contact-sub .id {
    font-family: var(--egfin-mono);
    font-weight: 600;
    color: var(--egfin-primary);
    background: var(--egfin-primary-soft);
    padding: 1px 6px;
    border-radius: 3px;
}

.egfin-contact-sub .afm {
    font-family: var(--egfin-mono);
}

.egfin-contact-link {
    margin-left: auto;
    font-size: 11px;
    color: var(--egfin-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.egfin-contact-link:hover {
    text-decoration: underline;
}

.egfin-contact-grid {
    padding: 10px 12px;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 8px 14px;
}

.egfin-meta-item {
    display: flex;
    flex-direction: column;
    gap: 1px;
    font-size: 12px;
    min-width: 0;
}

.egfin-meta-item.full {
    grid-column: span 2;
}

.egfin-meta-item .k {
    font-size: 10.5px;
    color: var(--egfin-ink-4);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.egfin-meta-item .v {
    color: var(--egfin-ink);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 12.5px;
}

.egfin-meta-item .v.muted {
    color: var(--egfin-ink-4);
}

/* --- 6. Dirty banner (fixed bottom-center) --- */
.egfin-dirty-banner {
    position: fixed;
    bottom: 18px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--egfin-ink);
    color: var(--egfin-surface);
    padding: 9px 14px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    gap: 12px;
    box-shadow: var(--egfin-shadow-lg);
    z-index: 1050; /* above content, below Telerik window overlays (≥10000) */
    font-size: 12.5px;
}

.egfin-dirty-banner .dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--egfin-accent);
    box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.22);
    animation: egfin-dirty-pulse 2s ease-in-out infinite;
}

.egfin-dirty-banner .actions {
    display: flex;
    gap: 6px;
    margin-left: 4px;
}

@keyframes egfin-dirty-pulse {
    0%, 100% { box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.22); }
    50%      { box-shadow: 0 0 0 5px rgba(217, 119, 6, 0.10); }
}

/* --- 7. Mono utility --- */
.egfin-code {
    font-family: var(--egfin-mono);
}

/* ═══════════════════════════════════════════════════════════════
   Phase P — Paddings + Input/Label sizing
   All rules scoped under .egfin-card (tile content) or .egfin-tabs
   (tab strip) so other pages are completely unaffected.
   ═══════════════════════════════════════════════════════════════ */

/* P-1. Card body padding: 16px → 12px */
.egfin-card .k-tilelayout-item-body {
    padding: 12px;
}

/* P-2. Tab content padding — uniform 12px gutter, never stacked, never zero.

   Two TabStrip placements exist on the page:
   (a) TRANSACTION tabs: the TabStrip sits OUTSIDE any tile body. Its content
       must supply the 12px inset itself. The global Telerik rule
       `.k-tabstrip > .k-tabstrip-content.k-active { padding: 0 }` (this file,
       ~line 150) has specificity (0,3,0) and wins on the VISIBLE (active) panel,
       which is why it previously measured 0px. We use `!important` here so the
       12px gutter beats that global zero on the active panel.
   (b) CHARGE tabs (Στοιχεία Χρέωσης): the TabStrip is a descendant of a
       `.egfin-card .k-tilelayout-item-body` which already provides 12px. The
       tab content must NOT add its own horizontal padding or it stacks to 24px —
       see the override rule right below. */
.egfin-tabs .k-tabstrip-content {
    padding: 12px !important;
}
/* The tab content wraps fields in an inner `.p-2` (Bootstrap 8px); with the
   outer 12px that would double up. Zero the inner padding so the tab body has a
   single, consistent 12px gutter matching the card body. */
.egfin-tabs .k-tabstrip-content > .p-2 {
    padding: 0 !important;
}
/* P-2b. CHARGE TabStrip nested inside a tile body: the tile already gives 12px
   horizontally, so the tab content must contribute 0 horizontal padding
   (keep the 12px vertical for rhythm). Net horizontal inset stays a single 12px. */
.egfin-card .k-tilelayout-item-body .egfin-tabs .k-tabstrip-content,
.egfin-card .k-tilelayout-item-body .k-tabstrip-content {
    padding-left: 0 !important;
    padding-right: 0 !important;
}
/* The per-ΚΑ charge tab wraps fields in `.stoixeia-xreosis-tab-content` (its own
   0.75rem/12px padding). Inside a tile body that already provides 12px, this stacks
   to 24px. Zero its HORIZONTAL padding so the charge fields align at the same 12px
   inset as every other section (vertical 12px kept for breathing room). */
.egfin-card .k-tilelayout-item-body .stoixeia-xreosis-tab-content {
    padding-left: 0 !important;
    padding-right: 0 !important;
}

/* P-3. Field labels — 11px / 500 / ink-3 / small gap */
.egfin-card .form-group,
.egfin-tabs .k-tabstrip-content .form-group {
    margin-bottom: 8px;
}
/* Normalize vertical rhythm: the field gap comes ONLY from .form-group (8px).
   Bootstrap `.row.mb-2` wrappers add an EXTRA 8px, which stacks unevenly against
   rows that use `.row.gx-2` (0 margin) — producing the inconsistent line spacing.
   Zero the row margin inside the card so every field row sits on the same 8px rhythm. */
.egfin-card .row,
.egfin-tabs .k-tabstrip-content .row {
    margin-bottom: 0 !important;
}
.egfin-card .row > [class*="col-"],
.egfin-tabs .k-tabstrip-content .row > [class*="col-"] {
    margin-bottom: 0;
}
.egfin-card .form-group > label,
.egfin-card .form-group label:first-child,
.egfin-tabs .k-tabstrip-content .form-group > label,
.egfin-tabs .k-tabstrip-content .form-group label:first-child {
    font-size: 11px;
    font-weight: 500;
    color: var(--egfin-ink-3);
    text-transform: none;
    margin-bottom: 4px;
}

/* P-4a. Telerik inputs & pickers — border / radius / size
   Excludes .k-textarea from min-height: multiline textarea keeps
   its natural multi-row height; only single-line inputs get 31px. */
.egfin-card .k-input:not(.k-textarea),
.egfin-card .k-picker,
.egfin-tabs .k-tabstrip-content .k-input:not(.k-textarea),
.egfin-tabs .k-tabstrip-content .k-picker {
    border-color: var(--egfin-border-strong);
    border-radius: var(--egfin-radius-sm);
    font-size: 13px;
    min-height: 31px;
}
/* Textarea shares typography + border/radius but NOT the fixed height */
.egfin-card .k-textarea,
.egfin-tabs .k-tabstrip-content .k-textarea {
    border-color: var(--egfin-border-strong);
    border-radius: var(--egfin-radius-sm);
    font-size: 13px;
}
/* Inner padding for all Telerik text inputs (incl. textarea inner) */
.egfin-card .k-input-inner,
.egfin-tabs .k-tabstrip-content .k-input-inner {
    padding: 5px 8px;
    font-size: 13px;
}
/* Focus ring for Telerik inputs/pickers */
.egfin-card .k-input:not(.k-textarea):focus-within,
.egfin-card .k-textarea:focus-within,
.egfin-card .k-picker:focus-within,
.egfin-tabs .k-tabstrip-content .k-input:not(.k-textarea):focus-within,
.egfin-tabs .k-tabstrip-content .k-textarea:focus-within,
.egfin-tabs .k-tabstrip-content .k-picker:focus-within {
    border-color: var(--egfin-primary);
    box-shadow: 0 0 0 3px rgba(31, 58, 95, 0.12);
}
/* Uniform 31px height for single-line inputs/pickers (ComboBox/DatePicker carry a
   side button whose global .k-button padding otherwise forces them to ~38px — taller
   than border-only TextBoxes). Pin the height and neutralize the inner/button padding
   so ComboBox, DatePicker and TextBox all render at the same 31px. */
.egfin-card .k-input:not(.k-textarea),
.egfin-card .k-picker,
.egfin-tabs .k-tabstrip-content .k-input:not(.k-textarea),
.egfin-tabs .k-tabstrip-content .k-picker {
    height: 31px;
}
.egfin-card .k-input:not(.k-textarea) .k-input-button,
.egfin-card .k-picker .k-input-button,
.egfin-card .k-input:not(.k-textarea) .k-select,
.egfin-card .k-picker .k-select,
.egfin-tabs .k-tabstrip-content .k-input:not(.k-textarea) .k-input-button,
.egfin-tabs .k-tabstrip-content .k-picker .k-input-button,
.egfin-tabs .k-tabstrip-content .k-input:not(.k-textarea) .k-select,
.egfin-tabs .k-tabstrip-content .k-picker .k-select {
    padding-top: 0;
    padding-bottom: 0;
    min-height: 0;
    height: auto;
}

/* P-4b. Bootstrap .form-control */
.egfin-card .form-control,
.egfin-tabs .k-tabstrip-content .form-control {
    font-size: 13px;
    padding: 5px 8px;
    border-color: var(--egfin-border-strong);
    border-radius: var(--egfin-radius-sm);
    min-height: 31px;
}
/* Textarea: keep natural multi-row height */
.egfin-card textarea.form-control,
.egfin-tabs .k-tabstrip-content textarea.form-control {
    min-height: unset;
}
.egfin-card .form-control:focus,
.egfin-tabs .k-tabstrip-content .form-control:focus {
    border-color: var(--egfin-primary);
    box-shadow: 0 0 0 3px rgba(31, 58, 95, 0.12);
}

/* ─── End Phase P ─────────────────────────────────────────────── */

/* --- 8. Modals / Popups (opt-in via .egfin-modal on TelerikWindow + native HTML modal pieces) --- */

/*  ROOT (apply to TelerikWindow via Class="egfin-modal" — Telerik renders
    .k-window with .k-window-content. We style the outer shell + inner pieces.) */
.egfin-modal.k-window,
.k-window.egfin-modal {
    border-radius: 10px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.22), 0 2px 6px rgba(15, 23, 42, 0.08);
    border: none;
    overflow: hidden;
    background: var(--egfin-surface);
    animation: egfin-modal-pop 0.18s cubic-bezier(0.2, 0.7, 0.3, 1);
}

.egfin-modal.k-window-titlebar,
.egfin-modal .k-window-titlebar {
    padding: 12px 16px;
    border-bottom: 1px solid var(--egfin-border);
    background: var(--egfin-surface);
    color: var(--egfin-ink);
    font-size: 14px;
    font-weight: 600;
}

.egfin-modal .k-window-content {
    padding: 16px;
    font-size: 13px;
    color: var(--egfin-ink-2);
    line-height: 1.55;
    background: var(--egfin-surface);
}

.egfin-modal .k-window-actions .k-button {
    width: 28px;
    height: 28px;
    padding: 0;
    border: none;
    background: transparent;
    color: var(--egfin-ink-3);
    border-radius: 5px;
}

.egfin-modal .k-window-actions .k-button:hover {
    background: var(--egfin-tint-hover-alt);
    color: var(--egfin-ink);
}

/* egfin modals have a light (white) titlebar, so the close-× must be dark to stay visible
   — overrides the global white !important rule used by the default navy titlebars. */
.egfin-modal .k-window-titlebar-action span,
.egfin-modal .k-window-actions .k-button span {
    color: var(--egfin-ink-3) !important;
}

.egfin-modal .k-window-actions .k-button:hover span {
    color: var(--egfin-ink) !important;
}

@keyframes egfin-modal-pop {
    from { opacity: 0; transform: translateY(6px) scale(0.985); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes egfin-modal-fade {
    from { opacity: 0; }
    to   { opacity: 1; }
}

/*  Telerik's backdrop class is .k-overlay — give it the soft blur. */
.k-overlay.egfin-modal-backdrop,
.egfin-modal-backdrop {
    background: rgba(15, 23, 42, 0.42);
    backdrop-filter: blur(2px);
    animation: egfin-modal-fade 0.15s ease;
}

/*  Building blocks for custom modal bodies (use inside WindowContent or any modal body). */
.egfin-modal-head {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    border-bottom: 1px solid var(--egfin-border);
    margin: -16px -16px 12px;   /* cancel WindowContent padding when used inside */
    background: var(--egfin-surface);
}

.egfin-modal-head .egfin-modal-icon {
    width: 30px;
    height: 30px;
    border-radius: 7px;
    display: grid;
    place-items: center;
    font-size: 14px;
    flex-shrink: 0;
}

.egfin-modal-head .egfin-modal-icon.egfin-danger {
    background: #fef2f2;
    color: var(--egfin-danger, #b91c1c);
}

.egfin-modal-head .egfin-modal-icon.egfin-warning {
    background: #fffbeb;
    color: var(--egfin-warning, #b45309);
}

.egfin-modal-head .egfin-modal-icon.egfin-success {
    background: var(--egfin-success-soft);
    color: var(--egfin-success, #15803d);
}

.egfin-modal-head .egfin-modal-icon.egfin-primary,
.egfin-modal-head .egfin-modal-icon.egfin-info {
    background: var(--egfin-primary-soft);
    color: var(--egfin-primary);
}

.egfin-modal-head h2 {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    color: var(--egfin-ink);
    line-height: 1.3;
}

.egfin-modal-head .egfin-modal-sub {
    font-size: 11.5px;
    color: var(--egfin-ink-3);
    margin-top: 2px;
}

.egfin-modal-body {
    font-size: 13px;
    color: var(--egfin-ink-2);
    line-height: 1.55;
}

.egfin-modal-body p {
    margin: 0 0 8px;
}

.egfin-modal-body p:last-child {
    margin-bottom: 0;
}

.egfin-modal-body strong {
    color: var(--egfin-ink);
    font-weight: 600;
}

.egfin-modal-foot {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    border-top: 1px solid var(--egfin-border);
    background: var(--egfin-surface-alt);
    margin: 12px -16px -16px;   /* cancel WindowContent padding when used inside */
}

.egfin-modal-foot .egfin-modal-spacer {
    flex: 1;
}

/*  Summary boxes inside a modal body (rich confirmation, warning, info, danger). */
.egfin-summary-card {
    border: 1px solid var(--egfin-border);
    border-radius: 6px;
    padding: 10px 12px;
    background: var(--egfin-surface-alt);
    margin-bottom: 10px;
}

.egfin-summary-card .egfin-summary-row {
    display: flex;
    justify-content: space-between;
    font-size: 12.5px;
    padding: 2px 0;
}

.egfin-summary-card .egfin-summary-row .egfin-summary-k {
    color: var(--egfin-ink-3);
}

.egfin-summary-card .egfin-summary-row .egfin-summary-v {
    color: var(--egfin-ink);
    font-weight: 500;
    font-variant-numeric: tabular-nums;
}

/*  Inline severity-flavoured info banners inside a modal. */
.egfin-modal-alert {
    border-radius: 6px;
    padding: 10px 12px;
    display: flex;
    gap: 10px;
    align-items: flex-start;
    font-size: 12.5px;
    margin-bottom: 10px;
}

.egfin-modal-alert > i {
    margin-top: 2px;
    flex-shrink: 0;
}

.egfin-modal-alert.egfin-danger {
    background: #fef2f2;
    border: 1px solid #fecaca;
    color: #7f1d1d;
}

.egfin-modal-alert.egfin-danger > i {
    color: var(--egfin-danger, #b91c1c);
}

.egfin-modal-alert.egfin-warning {
    background: #fffbeb;
    border: 1px solid #fde68a;
    color: #78350f;
}

.egfin-modal-alert.egfin-warning > i {
    color: var(--egfin-warning, #b45309);
}

.egfin-modal-alert.egfin-info {
    background: #eef6fd;
    border: 1px solid #bae0fd;
    color: #0c4a6e;
}

.egfin-modal-alert.egfin-info > i {
    color: #1e6fb8;
}

.egfin-modal-alert.egfin-success {
    background: var(--egfin-success-soft);
    border: 1px solid #a7f3d0;
    color: #064e3b;
}

.egfin-modal-alert.egfin-success > i {
    color: var(--egfin-success, #15803d);
}

/*  Sizing hooks (apply on TelerikWindow Width, or as utility on .k-window). */
.egfin-modal-sm.k-window { max-width: 520px; }
.egfin-modal-lg.k-window { max-width: 760px; }
.egfin-modal-xl.k-window { max-width: 980px; }

/*  Keyboard hint chip used inside picker/confirm footers. */
.egfin-kbd {
    display: inline-block;
    font-family: var(--egfin-mono);
    font-size: 10.5px;
    padding: 1px 5px;
    background: var(--egfin-surface);
    border: 1px solid var(--egfin-border-strong);
    border-radius: 3px;
    color: var(--egfin-ink-2);
    box-shadow: 0 1px 0 var(--egfin-border-strong);
}

/* --- 8a. Solid action buttons used inside modal footers (danger/dark) --- */
.egfin-btn-danger {
    background: var(--egfin-danger, #b91c1c);
    border-color: var(--egfin-danger, #b91c1c);
    color: var(--egfin-on-fill);
}

.egfin-btn-danger:hover:not(:disabled) {
    background: #991b1b;
    border-color: #991b1b;
    color: #fff;
}

.egfin-btn-dark {
    background: var(--egfin-primary);
    border-color: var(--egfin-primary);
    color: var(--egfin-on-fill);
}

.egfin-btn-dark:hover:not(:disabled) {
    background: #162d4a;
    border-color: #162d4a;
    color: #fff;
}

/* ── Boolean toggle button-groups (Ναι/Όχι) — align Bootstrap btn-primary to egfin navy (§4.2) ── */
.egfin-toggle .btn-primary {
    background: var(--egfin-primary);
    border-color: var(--egfin-primary);
    color: var(--egfin-on-fill);
}

.egfin-toggle .btn-outline-primary {
    color: var(--egfin-primary);
    border-color: var(--egfin-border-strong);
}

.egfin-toggle .btn-outline-primary:hover {
    background: var(--egfin-primary-soft);
    border-color: var(--egfin-primary);
    color: var(--egfin-primary);
}

/* --- 8b. EInvoice preview dialog toolbar (split layout) --- */
.eg-einv-statusbar {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 10px 18px;
    background: var(--egfin-primary-soft);
    border-bottom: 1px solid var(--egfin-border);
}

.eg-einv-statusbar .eg-einv-statuslabel {
    font-size: 11.5px;
    text-transform: uppercase;
    letter-spacing: .05em;
    font-weight: 700;
    color: var(--egfin-ink-2);
}

.eg-einv-statusbar .badge {
    display: inline-flex;
    align-items: center;
    font-size: 12.5px;
    font-weight: 600;
    padding: .5em .7em;
    border-radius: 8px;
}

.eg-einv-statusbar .eg-einv-spacer {
    flex: 1 1 auto;
}

.eg-einv-statusbar .eg-einv-statusbar-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.eg-einv-statusbar .einvoice-status-menu {
    align-self: center;
}

.eg-einv-actionbar {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 12px 18px;
    border-bottom: 1px solid var(--egfin-border);
}

.eg-einv-actionbar .eg-einv-actions-left {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.eg-einv-actionbar .eg-einv-spacer {
    flex: 1 1 auto;
}

.eg-einv-actionbar .einvoice-status-menu {
    align-self: center;
}

.eg-einv-primary-zone {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 8px 6px 12px;
    border-radius: 11px;
    background: var(--egfin-success-soft);
    border: 1px solid #a7f3d0;
}

.eg-einv-primary-zone .eg-einv-allow-label {
    font-size: 11.5px;
    font-weight: 600;
    line-height: 1.1;
    max-width: 96px;
    color: #2f6b48;
}

/* ═══════════════════════════════════════════════════════════════
   Προϋπολογισμός — δέντρα ΚΑ Εσόδων/Δαπανών (egfin-ptree-*)
   Pages/Proypologismos/ProypolTreeView.razor
   ═══════════════════════════════════════════════════════════════ */

/* full-height wrapper — γεμίζει το viewport κάτω από το navbar
   (3.875rem navbar + 2×0.5rem container-p-y)· scroll μόνο μέσα στα panels */
.egfin-ptree-page {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 4.875rem);
    height: calc(100dvh - 4.875rem);
    min-height: 420px;
}

.egfin-ptree-actionbar {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    flex: 0 0 auto;
    background: var(--egfin-surface, #fff);
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: var(--egfin-radius, 8px);
    padding: 8px 10px;
    box-shadow: var(--egfin-shadow, 0 1px 3px rgba(15, 23, 42, 0.06));
    margin-bottom: 14px;
}

.egfin-ptree-sep {
    width: 1px;
    height: 22px;
    background: var(--egfin-border, #e4e7eb);
    margin: 0 2px;
}

.egfin-ptree-etos {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 12px;
    font-weight: 600;
    background: var(--egfin-primary-soft, #eef2f8);
    color: var(--egfin-primary, #1e3548);
    border: 1px solid var(--egfin-border, #e4e7eb);
    padding: 2px 10px;
    border-radius: 999px;
    white-space: nowrap;
}

/* καθολική μεταβολή — chip πλήθους μη αποθηκευμένων μεταβολών */
.egfin-ptree-dirty-chip {
    font-size: 11.5px;
    font-weight: 700;
    background: #fdf3dc;
    color: #92600a;
    border: 1px solid #f0d9a6;
    padding: 2px 10px;
    border-radius: 999px;
    white-space: nowrap;
}

/* καθολική μεταβολή — inline icon buttons (προσθήκη παιδιού/διαγραφή) στη θέση ποσών/μπάρας */
.egfin-ptree-rowbtns {
    margin-left: auto;
    display: inline-flex;
    gap: 2px;
    padding-left: 10px;
    flex: none;
}

.egfin-ptree-rowbtns .egfin-icon-btn {
    width: 20px;
    height: 18px;
    /* να μην ψηλώνουν τη γραμμή του δέντρου σε σχέση με το normal mode */
    margin: -3px 0;
    border-radius: 5px;
}

.egfin-ptree-rowbtns .egfin-icon-btn > i {
    font-size: 10.5px;
}

/* καθολική μεταβολή — highlight γραμμών με μη αποθηκευμένες αλλαγές */
.egfin-ptree-row.dirty {
    background: #fdf3dc;
    box-shadow: inset 3px 0 0 #e2a93b;
    border-radius: 4px;
}

.egfin-ptree-row.dirty .egfin-ptree-ka::after {
    content: "●";
    color: #e2a93b;
    font-size: 8px;
    margin-left: 4px;
    vertical-align: middle;
}

/* dropdowns του action bar — Bootstrap dropdown (data-bs-toggle), skinned */
.egfin-ptree-dd-menu.dropdown-menu {
    min-width: 290px;
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: var(--egfin-radius, 8px);
    box-shadow: var(--egfin-shadow-lg, 0 12px 32px rgba(15, 23, 42, 0.10));
    padding: 5px;
}

.egfin-ptree-dd-menu .dropdown-header {
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--egfin-ink-4, #9aa3b2);
    padding: 7px 10px 3px;
    font-weight: 600;
}

.egfin-ptree-dd-menu .dropdown-item {
    display: flex;
    align-items: center;
    gap: 9px;
    color: var(--egfin-ink-2, #4a5568);
    padding: 7px 10px;
    border-radius: 5px;
    font-size: 12.5px;
}

.egfin-ptree-dd-menu .dropdown-item:hover:not(:disabled),
.egfin-ptree-dd-menu .dropdown-item:focus-visible {
    background: var(--egfin-primary-soft, #eef2f8);
    color: var(--egfin-primary, #1e3548);
}

.egfin-ptree-dd-menu .dropdown-item:disabled {
    opacity: .55;
    cursor: not-allowed;
}

.egfin-ptree-dd-menu .dropdown-item .fa-solid {
    opacity: .65;
    flex-shrink: 0;
}

.egfin-ptree-tag {
    margin-left: auto;
    font-size: 10px;
    background: var(--egfin-tint-hover-alt);
    color: var(--egfin-ink-3, #6b7280);
    border-radius: 999px;
    padding: 1px 7px;
    white-space: nowrap;
}

/* split layout — 70% δέντρο / 30% detail, γεμίζει το διαθέσιμο ύψος */
.egfin-ptree-split {
    display: grid;
    grid-template-columns: minmax(420px, 7fr) minmax(300px, 3fr);
    gap: 14px;
    align-items: stretch;
    flex: 1 1 auto;
    min-height: 0;
}

/* στενές οθόνες: 60-40 split + απόκρυψη μπαρών & ποσοστού στις γραμμές του δέντρου */
@media (max-width: 1280px) {
    .egfin-ptree-split {
        grid-template-columns: minmax(360px, 6fr) minmax(300px, 4fr);
    }

    .egfin-ptree-tv .pbar,
    .egfin-ptree-tv .pct {
        display: none;
    }
}

@media (max-width: 860px) {
    .egfin-ptree-page {
        height: auto;
        min-height: 0;
    }

    .egfin-ptree-split {
        grid-template-columns: 1fr;
    }

    .egfin-ptree-tree {
        max-height: 60vh;
        max-height: 60dvh;
    }

    .egfin-ptree-empty {
        min-height: 220px;
    }
}

/* panels */
.egfin-ptree-panel {
    display: flex;
    flex-direction: column;
    min-height: 0;
    background: var(--egfin-surface, #fff);
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: var(--egfin-radius, 8px);
    box-shadow: var(--egfin-shadow, 0 1px 3px rgba(15, 23, 42, 0.06));
    overflow: hidden;
}

.egfin-ptree-panel-head {
    padding: 10px 14px;
    border-bottom: 1px solid var(--egfin-border, #e4e7eb);
    background: var(--egfin-surface-alt, #fafbfc);
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--egfin-ink-3, #6b7280);
}

/* search — ενιαίο pill: φακός | input | counter chip | πεδίο αναζήτησης */
.egfin-ptree-srch {
    padding: 10px 12px;
    border-bottom: 1px solid var(--egfin-border, #e4e7eb);
}

.egfin-ptree-srch-pill {
    display: flex;
    align-items: center;
    gap: 6px;
    height: 36px;
    padding: 0 4px;
    background: var(--egfin-surface, #fff);
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 999px;
    transition: border-color .15s ease, box-shadow .15s ease;
}

.egfin-ptree-srch-pill:focus-within {
    border-color: var(--egfin-primary, #1e3548);
    box-shadow: 0 0 0 3px var(--egfin-primary-soft, #eef2f8);
}

.egfin-ptree-srch-go {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--egfin-ink-4, #9aa3b2);
    font-size: 13px;
    cursor: pointer;
    transition: background-color .15s ease, color .15s ease;
}

.egfin-ptree-srch-go:hover:not(:disabled),
.egfin-ptree-srch-go:focus-visible {
    background: var(--egfin-primary-soft, #eef2f8);
    color: var(--egfin-primary, #1e3548);
}

.egfin-ptree-srch-go:disabled {
    opacity: .55;
    cursor: default;
}

.egfin-ptree-srch-input {
    flex: 1 1 0;
    min-width: 0;
    height: 100%;
    border: 0;
    outline: none;
    background: transparent;
    padding: 0;
    font-size: 13px;
    color: var(--egfin-ink, #1b2433);
}

.egfin-ptree-srch-input::placeholder {
    color: var(--egfin-ink-4, #9aa3b2);
}

.egfin-ptree-srch-count {
    flex: 0 0 auto;
    font-size: 11px;
    font-weight: 600;
    background: var(--egfin-tint-hover-alt);
    color: var(--egfin-ink-3, #6b7280);
    border-radius: 999px;
    padding: 3px 9px;
    white-space: nowrap;
}

.egfin-ptree-srch-count.none {
    background: var(--egfin-accent-soft, #fff7ed);
    color: var(--egfin-accent, #d97706);
}

.egfin-ptree-srch-mode {
    flex: 0 0 auto;
    width: auto;
    height: 26px;
    border: 0;
    border-left: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 0;
    background: transparent;
    padding: 0 4px 0 10px;
    font-size: 12px;
    font-weight: 600;
    color: var(--egfin-ink-2, #4a5568);
    outline: none;
    cursor: pointer;
}

/* checkbox «Μόνο αποτελέσματα» — φιλτράρει το δέντρο στα matches + τους πατρικούς τους */
.egfin-ptree-srch-filter {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    flex: 0 0 auto;
    height: 26px;
    padding: 0 10px;
    margin: 0;
    border-left: 1px solid var(--egfin-border, #e4e7eb);
    font-size: 12px;
    font-weight: 600;
    color: var(--egfin-ink-2, #4a5568);
    white-space: nowrap;
    cursor: pointer;
    user-select: none;
}

.egfin-ptree-srch-filter .form-check-input {
    margin: 0;
    cursor: pointer;
}

/* tree — κάθετο scroll μόνο μέσα στο δέντρο, ποτέ οριζόντιο */
.egfin-ptree-tree {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 6px 8px 12px;
}

.egfin-ptree-tree-empty {
    padding: 24px 14px;
    text-align: center;
    color: var(--egfin-ink-3, #6b7280);
}

/* Το Kendo theme βάφει τα states στο .k-treeview-item-content (0,2,0)·
   τα overrides εδώ (0,3,0) φορτώνουν μετά το all.css και υπερισχύουν. */

/* όχι εσωτερικό (οριζόντιο) scroll στο ίδιο το k-treeview — scroll μόνο στο wrapper */
.egfin-ptree-tv.k-treeview {
    overflow: visible;
}

/* τα nested groups/items δεν διαστέλλουν το πλάτος — η περιγραφή κόβεται με ellipsis */
.egfin-ptree-tv .k-treeview-group,
.egfin-ptree-tv .k-treeview-item {
    max-width: 100%;
}

.egfin-ptree-tv .k-treeview-leaf {
    flex: 1 1 auto;
    min-width: 0;
    padding: 2px 6px;
    color: inherit;
}

.egfin-ptree-tv .k-treeview-item-content {
    border-radius: 6px;
    border: 1px solid transparent;
    color: var(--egfin-ink, #1b2433);
    max-width: 100%;
    min-width: 0;
}

.egfin-ptree-tv .k-treeview-item-content:hover,
.egfin-ptree-tv .k-treeview-item-content.k-hover,
.egfin-ptree-tv .k-treeview-leaf:hover,
.egfin-ptree-tv .k-treeview-leaf.k-hover {
    background: var(--egfin-tint-hover);
    color: var(--egfin-ink, #1b2433);
}

.egfin-ptree-tv .k-treeview-item-content.k-selected,
.egfin-ptree-tv .k-treeview-item-content.k-selected:hover,
.egfin-ptree-tv .k-treeview-item-content.k-selected.k-hover,
.egfin-ptree-tv .k-treeview-leaf.k-selected,
.egfin-ptree-tv .k-treeview-leaf.k-selected:hover,
.egfin-ptree-tv .k-treeview-leaf.k-selected.k-hover {
    background: var(--egfin-primary-soft, #eef2f8);
    border-color: var(--egfin-primary, #1e3548);
    color: var(--egfin-ink, #1b2433);
}

.egfin-ptree-tv .k-treeview-item-content:focus,
.egfin-ptree-tv .k-treeview-item-content.k-focus,
.egfin-ptree-tv .k-treeview-leaf:focus,
.egfin-ptree-tv .k-treeview-leaf.k-focus {
    box-shadow: inset 0 0 0 1px var(--egfin-primary, #1e3548);
}

.egfin-ptree-tv .k-selected .egfin-ptree-ka {
    color: var(--egfin-primary, #1e3548);
}

.egfin-ptree-tv .k-selected .egfin-ptree-desc {
    color: var(--egfin-ink, #1b2433);
}

.egfin-ptree-tv .k-selected .egfin-ptree-amt {
    color: var(--egfin-ink-2, #4a5568);
}

.egfin-ptree-tv .k-treeview-leaf-text {
    display: block;
    width: 100%;
}

.egfin-ptree-row {
    display: flex;
    align-items: center;
    gap: 6px;
    width: 100%;
    min-width: 0;
}

.egfin-ptree-row.hit .egfin-ptree-desc {
    background: var(--egfin-accent-soft, #fff7ed);
    color: var(--egfin-accent, #d97706);
    border-radius: 3px;
}

.egfin-ptree-ka {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 12px;
    font-weight: 600;
    color: var(--egfin-primary, #1e3548);
    white-space: nowrap;
}

.egfin-ptree-desc {
    font-size: 12.5px;
    color: var(--egfin-ink-2, #4a5568);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.egfin-ptree-amt {
    margin-left: auto;
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 11.5px;
    color: var(--egfin-ink-3, #6b7280);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    padding-left: 10px;
}

.egfin-ptree-pill {
    font-size: 9.5px;
    font-weight: 700;
    border-radius: 999px;
    padding: 1px 7px;
    letter-spacing: .03em;
    flex-shrink: 0;
}

.egfin-ptree-pill.kin {
    background: var(--egfin-success-soft, #ecfdf5);
    color: #15803d;
}

.egfin-ptree-pill.mikin {
    background: var(--egfin-tint-hover-alt);
    color: var(--egfin-ink-3, #6b7280);
}

/* detail panel */
.egfin-ptree-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex: 1 1 auto;
    gap: 8px;
    padding: 14px;
}

.egfin-ptree-wm {
    font-size: 30px;
    font-weight: 800;
    letter-spacing: .04em;
    color: #e9edf2;
    text-align: center;
    line-height: 1.25;
}

.egfin-ptree-hint {
    font-size: 12px;
    color: var(--egfin-ink-4, #9aa3b2);
}

.egfin-ptree-det {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 14px 16px 18px;
}

.egfin-ptree-det-head {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 4px;
}

.egfin-ptree-det-ka {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 16px;
    font-weight: 700;
    background: var(--egfin-primary-soft, #eef2f8);
    color: var(--egfin-primary, #1e3548);
    border-radius: 6px;
    padding: 3px 10px;
}

.egfin-ptree-det-desc {
    font-size: 14px;
    font-weight: 600;
    flex: 1;
    min-width: 160px;
    color: var(--egfin-ink, #1b2433);
}

.egfin-ptree-det-meta {
    font-size: 11.5px;
    color: var(--egfin-ink-3, #6b7280);
    margin: 6px 0 14px;
}

.egfin-ptree-det-actions {
    margin: 0 0 14px;
}

.egfin-ptree-om-total td {
    font-weight: 700;
    background: var(--egfin-surface-alt);
    border-top: 1px solid var(--egfin-border, #e4e7eb);
    color: var(--egfin-primary, #1e3548);
}

.egfin-ptree-sec {
    margin-bottom: 14px;
}

.egfin-ptree-sec-title {
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--egfin-ink-4, #9aa3b2);
    border-bottom: 1px solid var(--egfin-border, #e4e7eb);
    padding-bottom: 4px;
    margin-bottom: 8px;
}

.egfin-ptree-rows {
    display: grid;
    grid-template-columns: 1fr auto;
    row-gap: 5px;
    column-gap: 16px;
}

.egfin-ptree-rows .rl {
    color: var(--egfin-ink-3, #6b7280);
    font-size: 12.5px;
}

.egfin-ptree-rows .rv {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 12.5px;
    font-variant-numeric: tabular-nums;
    text-align: right;
    color: var(--egfin-ink, #1b2433);
}

/* κειμενικές τιμές (π.χ. περιγραφές ΠΔ54) — όχι monospace */
.egfin-ptree-rows .rv.txt {
    font-family: inherit;
}

.egfin-ptree-rows .rv.hl {
    font-weight: 700;
    color: var(--egfin-primary, #1e3548);
}

.egfin-ptree-rows .rv.pos {
    color: var(--egfin-success, #2d7577);
}

.egfin-ptree-rows .rl.tot,
.egfin-ptree-rows .rv.tot {
    border-top: 1px dashed var(--egfin-border-strong, #d2d6dc);
    padding-top: 5px;
    font-weight: 600;
}

/* totals footer */
.egfin-ptree-totbar {
    display: flex;
    gap: 22px;
    flex-wrap: wrap;
    align-items: center;
    flex: 0 0 auto;
    background: var(--egfin-surface, #fff);
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: var(--egfin-radius, 8px);
    box-shadow: var(--egfin-shadow, 0 1px 3px rgba(15, 23, 42, 0.06));
    padding: 9px 16px;
    margin-top: 14px;
    font-size: 12px;
}

.egfin-ptree-totbar .tl {
    color: var(--egfin-ink-3, #6b7280);
}

.egfin-ptree-totbar .tv {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

/* CRUD windows (Μεταβολή / Νέος πρωτοβάθμιος ΚΑ) */
.egfin-ptree-winform .form-group {
    margin-bottom: 8px;
}

.egfin-ptree-winform label {
    font-size: 11.5px;
    font-weight: 600;
    color: var(--egfin-ink-3, #6b7280);
    margin-bottom: 2px;
}

.egfin-ptree-fld-err {
    font-size: 11px;
    font-weight: 500;
    color: #d63939;
    margin-top: 2px;
}

.egfin-ptree-mono-input .k-input-inner {
    font-family: var(--egfin-mono, ui-monospace, monospace);
}

.egfin-ptree-wininfo {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 14px;
    font-size: 11.5px;
    color: var(--egfin-ink-3, #6b7280);
    font-variant-numeric: tabular-nums;
    background: var(--egfin-surface-alt);
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 6px;
    padding: 6px 10px;
    margin-bottom: 8px;
}

.egfin-ptree-wininfo-chip {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 11px;
    background: var(--egfin-primary-soft, #eef2f8);
    color: var(--egfin-primary, #1e3548);
    border-radius: 6px;
    padding: 2px 8px;
    margin-left: auto;
}

.egfin-ptree-pd54 {
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 6px;
    padding: 6px 10px 2px;
    margin: 4px 0 8px;
}

.egfin-ptree-pd54-legend {
    float: none;
    width: auto;
    font-size: 11.5px;
    font-weight: 700;
    color: var(--egfin-primary, #1e3548);
    padding: 0 6px;
    margin-bottom: 4px;
}

.egfin-ptree-pd54-hint {
    display: flex;
    align-items: center;
    font-size: 11px;
    font-style: italic;
    color: var(--egfin-ink-3, #6b7280);
    margin-top: 2px;
}

.egfin-ptree-pd54-ro {
    min-height: 30px;
    display: flex;
    align-items: center;
    font-size: 12.5px;
    color: var(--egfin-ink-2, #374151);
    background: var(--egfin-surface-alt);
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 4px;
    padding: 0 8px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.egfin-ptree-exp-toggle {
    display: flex;
    align-items: center;
    gap: 4px;
    background: none;
    border: 0;
    padding: 0 0 2px;
    font-size: 11.5px;
    font-weight: 600;
    color: var(--egfin-ink-3, #6b7280);
    cursor: pointer;
}

/* ---- ΠΔ54: υποψήφιοι ΚΑ + Εύρεση (Slice 2.3b) ---- */
.egfin-ptree-pd54-cand-title {
    font-size: 11.5px;
    font-weight: 600;
    color: var(--egfin-ink-3, #6b7280);
    margin-bottom: 6px;
}

.egfin-ptree-pd54-cand-empty {
    font-size: 12.5px;
    color: var(--egfin-ink-3, #6b7280);
    background: var(--egfin-surface-alt);
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 6px;
    padding: 8px 10px;
}

.egfin-ptree-pd54-cand-list,
.egfin-ptree-pd54-find-list {
    list-style: none;
    margin: 0;
    padding: 0;
    max-height: 240px;
    overflow-y: auto;
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 6px;
}

.egfin-ptree-pd54-cand-item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    text-align: left;
    background: none;
    border: 0;
    border-bottom: 1px solid var(--egfin-border, #e4e7eb);
    padding: 7px 10px;
    font-size: 12.5px;
    color: var(--egfin-ink-2, #374151);
    cursor: pointer;
}

.egfin-ptree-pd54-cand-list li:last-child .egfin-ptree-pd54-cand-item,
.egfin-ptree-pd54-find-list li:last-child .egfin-ptree-pd54-cand-item {
    border-bottom: 0;
}

.egfin-ptree-pd54-cand-item:hover:not(:disabled),
.egfin-ptree-pd54-cand-item:focus-visible {
    background: var(--egfin-primary-soft, #eef2f8);
}

.egfin-ptree-pd54-cand-item:disabled {
    opacity: .55;
    cursor: default;
}

.egfin-ptree-pd54-cand-core {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-weight: 700;
    color: var(--egfin-primary, #1e3548);
    white-space: nowrap;
}

.egfin-ptree-pd54-cand-desc {
    flex: 1 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.egfin-ptree-pd54-cand-full,
.egfin-ptree-pd54-cand-lvl {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 11px;
    color: var(--egfin-ink-3, #6b7280);
    white-space: nowrap;
}

.egfin-ptree-pd54-find {
    position: relative;
    margin-top: 22px;
    padding-top: 20px;
    border-top: 1px dashed var(--egfin-border, #e4e7eb);
}

/* «ή» πάνω στη διαχωριστική: δηλώνει ότι υποψήφιοι και Εύρεση είναι
   εναλλακτικοί τρόποι επιλογής, όχι διαδοχικά βήματα. */
.egfin-ptree-pd54-find::before {
    content: "ή";
    position: absolute;
    top: 0;
    left: 50%;
    transform: translate(-50%, -50%);
    padding: 2px 12px;
    background: var(--egfin-surface, #fff);
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.2;
    color: var(--egfin-primary, #1e3548);
}

.egfin-ptree-pd54-find-head {
    font-size: 11.5px;
    font-weight: 700;
    color: var(--egfin-primary, #1e3548);
    margin-bottom: 6px;
}

.egfin-ptree-pd54-find-list {
    margin-top: 8px;
}

.egfin-ptree-pd54-find-status {
    display: flex;
    align-items: center;
    font-size: 11.5px;
    color: var(--egfin-ink-3, #6b7280);
    margin-top: 8px;
}

.egfin-ptree-pd54-find-status.none {
    font-style: italic;
}

/* ---- ΠΔ54: περιήγηση (drill-down) στο επίσημο δέντρο ---- */
.egfin-ptree-pd54-crumbs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 3px;
    margin-top: 8px;
}

.egfin-ptree-pd54-crumb {
    background: none;
    border: 0;
    padding: 1px 4px;
    border-radius: 4px;
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 11px;
    font-weight: 700;
    color: var(--egfin-primary, #1e3548);
    cursor: pointer;
}

.egfin-ptree-pd54-crumb:hover:not(:disabled),
.egfin-ptree-pd54-crumb:focus-visible {
    background: var(--egfin-primary-soft, #eef2f8);
}

.egfin-ptree-pd54-crumb:disabled {
    color: var(--egfin-ink-3, #6b7280);
    cursor: default;
}

.egfin-ptree-pd54-crumb-sep {
    font-size: 11px;
    color: var(--egfin-ink-3, #6b7280);
}

.egfin-ptree-pd54-cand-more {
    font-size: 14px;
    line-height: 1;
    color: var(--egfin-primary, #1e3548);
    white-space: nowrap;
}

.egfin-ptree-pd54-cand-exists {
    font-size: 10.5px;
    font-style: italic;
    color: var(--egfin-ink-3, #6b7280);
    white-space: nowrap;
}

/* ---- Ειδικές λειτουργίες: Αντιγραφή κωδικών (Wave A) ---- */
.egfin-ptree-clone-src {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin-bottom: 10px;
    padding: 6px 10px;
    background: var(--egfin-primary-soft, #eef2f8);
    border-radius: 6px;
    font-size: 12.5px;
    overflow: hidden;
}

.egfin-ptree-clone-src-lbl {
    font-weight: 700;
    color: var(--egfin-ink-3, #6b7280);
    white-space: nowrap;
}

.egfin-ptree-clone-src-val {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    color: var(--egfin-primary, #1e3548);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.egfin-ptree-clone-tgts-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin: 8px 0 6px;
    font-size: 11.5px;
    font-weight: 700;
    color: var(--egfin-primary, #1e3548);
}

.egfin-ptree-clone-row {
    display: flex;
    align-items: flex-end;
    gap: 8px;
    padding: 8px;
    margin-bottom: 6px;
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 6px;
}

.egfin-ptree-clone-row-fields {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
    flex: 1 1 auto;
}

.egfin-ptree-clone-row-fields .form-group {
    margin-bottom: 0;
}

.egfin-ptree-clone-row-del {
    flex: 0 0 auto;
}

/* execution progress bars */
.pbar {
    position: relative;
    height: 6px;
    border-radius: 4px;
    background: #eef1f4;
    overflow: hidden;
    min-width: 54px;
    flex: 1;
}

.pbar > i {
    display: block;
    height: 100%;
    border-radius: 4px;
    background: linear-gradient(90deg, var(--eg-secondary), var(--eg-success));
    transition: width 1s ease;
}

.pbar.lo > i {
    background: #e0a03a;
}

.pbar.mid > i {
    background: linear-gradient(90deg, #3d6d94, #3d6d94);
}

.pct {
    font-family: var(--egfin-mono);
    font-size: 11px;
    color: var(--egfin-ink-3, #6b7280);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.pct.hi {
    color: var(--egfin-success, #2d7577);
}

.pct.lo {
    color: #b45309;
}

/* level-0 (πρωτοβάθμιοι) row emphasis */
.egfin-ptree-row.p1 .egfin-ptree-desc {
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .02em;
    font-size: 11.5px;
}

/* ═══════════════════════════════════════════════════════════════
   Προϋπολογισμός — Κατάρτιση Εσόδων/Δαπανών (egfin-pkat-*)
   Pages/Proypologismos/EsodaKatartisiView.razor + DapanesKatartisiView.razor
   ═══════════════════════════════════════════════════════════════ */

/* finalized banner */
.egfin-pkat-banner {
    display: flex;
    align-items: center;
    gap: 8px;
    background: #fdf6ec;
    border: 1px solid #ecd9b8;
    border-radius: var(--egfin-radius, 8px);
    color: #8a5b16;
    font-size: 12.5px;
    font-weight: 600;
    padding: 8px 12px;
    margin-bottom: 14px;
}

/* banner μαζικής ενέργειας άλλου χρήστη (grid κλειδωμένο όσο τρέχει) */
.egfin-pkat-bulkbanner {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #eef4ff;
    border: 1px solid #c7d9fb;
    border-radius: var(--egfin-radius, 8px);
    color: #1c3f7c;
    font-size: 12.5px;
    padding: 8px 12px;
    margin-bottom: 14px;
}

.egfin-pkat-bulkbanner .egfin-pkat-avatar {
    width: 24px;
    height: 24px;
    font-size: 10.5px;
    border-width: 1px;
}

.egfin-pkat-bulkbanner-hint {
    margin-left: auto;
    color: var(--egfin-ink-4, #9aa3b2);
    font-style: italic;
}

/* banner ολοκλήρωσης μαζικής ενέργειας άλλου χρήστη (τα δεδομένα άλλαξαν) */
.egfin-pkat-bulkdone {
    display: flex;
    align-items: center;
    gap: 10px;
    background: #eaf7ee;
    border: 1px solid #bfe3c9;
    border-radius: var(--egfin-radius, 8px);
    color: #1e6b38;
    font-size: 12.5px;
    padding: 8px 12px;
    margin-bottom: 14px;
}

.egfin-pkat-bulkdone > i {
    font-size: 14px;
}

.egfin-pkat-bulkdone-close {
    margin-left: auto;
    color: inherit;
}

/* toolbar search + toggle */
.egfin-pkat-srchwrap {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.egfin-pkat-srch-ico {
    position: absolute;
    left: 8px;
    font-size: 11px;
    color: var(--egfin-ink-4, #9aa3b2);
    pointer-events: none;
}

.egfin-pkat-srch {
    height: 30px;
    width: 130px;
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 6px;
    padding: 0 8px 0 24px;
    font-size: 12.5px;
    color: var(--egfin-ink, #1b2433);
    background: var(--egfin-surface, #fff);
    outline: none;
}

/* περιγραφή: πλατύτερο πεδίο — τα κείμενα είναι μεγάλα */
.egfin-pkat-srch.wide {
    width: 240px;
}

.egfin-pkat-srch:focus {
    border-color: var(--egfin-primary, #1e3548);
}

.egfin-pkat-srch::placeholder {
    color: var(--egfin-ink-4, #9aa3b2);
}

.egfin-pkat-srch-count {
    font-size: 11.5px;
    font-weight: 600;
    color: var(--egfin-ink-3, #6b7280);
    white-space: nowrap;
}

/* σύνολα ανά στήλη στο footer του grid */
.egfin-pkat-foot {
    display: block;
    text-align: right;
    font-weight: 700;
    font-size: 12.5px;
    font-variant-numeric: tabular-nums;
    color: var(--egfin-ink, #1b2433);
    cursor: help;
}

/* warning: το σύνολο εσόδων υπολείπεται των δαπανών (desktop TTIconWarning) */
.egfin-pkat-foot.egfin-pkat-foot-warn {
    color: var(--egfin-warn-ink, #b26a00);
    background: var(--egfin-tint-warn, #fff6e5);
    border-radius: 4px;
    padding: 1px 4px;
}

/* υπόδειξη μέσα σε dropdown (π.χ. «πατήστε πρώτα Εκτίμηση») */
.egfin-pkat-dd-hint {
    padding: 2px 16px 6px;
    font-size: 11.5px;
    line-height: 1.35;
    color: var(--egfin-ink-3, #6b7280);
}

/* γραμμή υπό επεξεργασία (τοπικά, στον χρήστη που επεξεργάζεται) */
/* Ο χρωματισμός μπαίνει ΚΑΙ στα κελιά: το Telerik δίνει δικό του background στα td
   (locked/alt columns), που θα σκέπαζε το background του tr. */
.egfin-pkat-grid .egfin-pkat-row-editing,
.egfin-pkat-grid .egfin-pkat-row-editing:hover,
.egfin-pkat-grid .egfin-pkat-row-editing > td,
.egfin-pkat-grid .egfin-pkat-row-editing:hover > td {
    background: var(--egfin-tint-editing, #dbe7f3) !important;
}

.egfin-pkat-grid .egfin-pkat-row-editing {
    box-shadow: inset 3px 0 0 var(--egfin-primary, #1e3548);
}

/* διακριτική ένδειξη: Προταθέντα ≠ Εγκριθέντα (η διαφορά είναι θεμιτή, όχι σφάλμα) */
/* Η ένδειξη μπαίνει ΜΕΣΑ στο κελί (badge πριν το ποσό) και όχι με absolute positioning:
   το κελί του grid έχει overflow/clipping, οπότε το τριγωνάκι «έφευγε» πάνω από το header. */
.egfin-pkat-num.egfin-pkat-diff {
    cursor: help;
}

.egfin-pkat-num.egfin-pkat-diff::before {
    content: "\f071"; /* fa triangle-exclamation */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    font-size: 9.5px;
    color: #c98a00;
    margin-right: 5px;
    vertical-align: 1px;
}

/* loader κατά την αρχική φόρτωση */
.egfin-pkat-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 48px 12px;
    color: var(--egfin-ink-2, #4a5568);
}

.egfin-pkat-loading .spinner-border {
    width: 1.4rem;
    height: 1.4rem;
    color: var(--egfin-primary, #1e3548);
}

.egfin-pkat-loading-txt {
    font-size: 13.5px;
    font-weight: 600;
}

.egfin-pkat-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: var(--egfin-ink-2, #4a5568);
    margin: 0;
    white-space: nowrap;
    cursor: pointer;
}

.egfin-pkat-toggle .form-check-input {
    margin: 0;
    cursor: pointer;
}

/* save status indicator */
.egfin-pkat-status {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
}

.egfin-pkat-status.saving,
.egfin-pkat-status.pending {
    color: var(--egfin-ink-3, #6b7280);
}

.egfin-pkat-status.saved {
    color: var(--egfin-success, #2d7577);
}

.egfin-pkat-status.invalid {
    color: #d63939;
}

/* grid */
.egfin-pkat-panel .egfin-pkat-grid {
    border: none;
}

/* --- Επικεφαλίδες δύο γραμμών: ετικέτα πάνω, έτος από κάτω ---
   Το global default (.k-column-title: nowrap + ellipsis) έκοβε τους τίτλους με έτος
   («Απολογισθέντα 2024» -> «Απολογισθέντ...»), χάνοντας την πληροφορία του έτους.
   Ο override είναι scoped στο grid της Κατάρτισης — οι υπόλοιπες λίστες κρατούν
   τη μονή γραμμή με ellipsis. */
.egfin-pkat-grid .k-grid-header .k-column-title {
    white-space: normal;      /* επιτρέπει τη δεύτερη γραμμή */
    overflow: visible;
    text-overflow: clip;
}

.egfin-pkat-grid .egfin-pkat-th {
    display: flex;
    flex-direction: column;
    white-space: normal;      /* αμυντικό: μη κληρονομήσει nowrap από τον th/k-link */
    align-items: flex-end;    /* τα ποσά είναι δεξιά-στοιχισμένα — ο τίτλος ακολουθεί */
    line-height: 1.2;
    min-width: 0;
}

/* Η ετικέτα κρατά ellipsis: αν κάποια στήλη στενέψει πολύ (resize), κόβεται η
   ετικέτα και ΟΧΙ το έτος, που είναι η κρίσιμη πληροφορία. */
.egfin-pkat-th-lbl {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.egfin-pkat-th-yr {
    font-size: 10px;
    font-weight: 700;
    opacity: 0.75;
    font-variant-numeric: tabular-nums;
}

/* Οι στήλες χωρίς έτος (ΚΑ, Περιγραφή, Εκτίμηση) έχουν μονογραμμικό τίτλο· το
   flex-end alignment τους κρατά ευθυγραμμισμένους με τους δίγραμμους. */
.egfin-pkat-grid .k-grid-header .k-table-th {
    vertical-align: bottom;
}

.egfin-pkat-ka {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 12px;
    font-weight: 600;
    color: var(--egfin-primary, #1e3548);
    white-space: nowrap;
}

.egfin-pkat-desc {
    display: block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.egfin-pkat-num {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 12px;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.egfin-pkat-num.muted {
    color: var(--egfin-ink-4, #9aa3b2);
}

.egfin-pkat-num.hl {
    font-weight: 600;
    color: var(--egfin-ink, #1b2433);
}

.egfin-pkat-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--egfin-primary, #1e3548);
    flex-shrink: 0;
}

/* row states */
.egfin-pkat-grid .egfin-pkat-row-invalid,
.egfin-pkat-grid .egfin-pkat-row-invalid:hover,
.egfin-pkat-grid .egfin-pkat-row-invalid > td,
.egfin-pkat-grid .egfin-pkat-row-invalid:hover > td {
    background: var(--egfin-tint-invalid, #fdecec) !important;
}

.egfin-pkat-grid .egfin-pkat-row-invalid {
    box-shadow: inset 3px 0 0 #d63939;
}

.egfin-pkat-grid .egfin-pkat-row-pending {
    box-shadow: inset 3px 0 0 #e0a03a;
}

/* percent window scope note */
.egfin-pkat-scope {
    font-size: 11.5px;
    color: var(--egfin-ink-3, #6b7280);
    margin: 2px 0 6px;
}

/* balance bar (sticky) */
.egfin-pkat-balbar {
    position: sticky;
    bottom: 0;
    z-index: 5;
    display: flex;
    gap: 18px;
    flex-wrap: wrap;
    align-items: center;
    background: var(--egfin-surface, #fff);
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: var(--egfin-radius, 8px);
    box-shadow: var(--egfin-shadow-lg, 0 -2px 12px rgba(15, 23, 42, 0.08));
    padding: 9px 16px;
    margin-top: 14px;
    font-size: 12px;
}

.egfin-pkat-balbar .tl {
    color: var(--egfin-ink-3, #6b7280);
}

.egfin-pkat-balbar .tv {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.egfin-pkat-balchip {
    font-size: 11.5px;
    font-weight: 700;
    border-radius: 999px;
    padding: 3px 12px;
    white-space: nowrap;
}

.egfin-pkat-balchip.pos {
    background: #e8f4ee;
    color: #2f6b48;
    border: 1px solid #bfdccd;
}

.egfin-pkat-balchip.zero {
    background: #e9f1fa;
    color: #2b5d8c;
    border: 1px solid #c3d8ec;
}

.egfin-pkat-balchip.neg {
    background: #fdecec;
    color: #b02a2a;
    border: 1px solid #f0c4c4;
}

/* grid + omades split */
.egfin-pkat-main.with-omades {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 14px;
    align-items: start;
}

@media (max-width: 1100px) {
    .egfin-pkat-main.with-omades {
        grid-template-columns: 1fr;
    }
}

/* omades toggle badge (toolbar) */
.egfin-pkat-om-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 17px;
    height: 17px;
    margin-left: 4px;
    padding: 0 5px;
    border-radius: 999px;
    background: #d63939;
    color: #fff;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 1;
}

/* omades panel — δεξιά κάρτα δίπλα στο grid */
.egfin-pkat-om-panel {
    min-width: 0;
}

.egfin-pkat-om-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding-top: 7px;
    padding-bottom: 7px;
    padding-right: 10px;
}

.egfin-pkat-om-close.egfin-icon-btn {
    width: 24px;
    height: 24px;
    flex-shrink: 0;
}

.egfin-pkat-om-close.egfin-icon-btn:focus-visible {
    outline: 2px solid var(--egfin-primary, #1e3548);
    outline-offset: 1px;
}

/* month row — label | combo | Εφαρμογή σε μία γραμμή */
.egfin-pkat-om-month {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    padding: 10px 12px;
    border-bottom: 1px solid var(--egfin-border, #e4e7eb);
    background: var(--egfin-surface-alt, #fafbfc);
}

.egfin-pkat-om-month label {
    margin: 0;
    font-size: 11.5px;
    font-weight: 600;
    color: var(--egfin-ink-3, #6b7280);
    white-space: nowrap;
}

.egfin-pkat-om-month .egfin-pkat-om-month-cmb {
    flex: 1 1 110px;
    min-width: 0;
}

.egfin-pkat-om-lbl {
    display: block;
    font-size: 11.5px;
    font-weight: 600;
    color: var(--egfin-ink-3, #6b7280);
    margin: 12px 0 4px;
}

/* group list */
.egfin-pkat-om-list {
    max-height: 44vh;
    overflow-y: auto;
}

.egfin-pkat-om-row {
    padding: 9px 12px 10px;
    border-bottom: 1px solid var(--egfin-border, #e4e7eb);
    cursor: pointer;
    transition: background .12s ease;
}

.egfin-pkat-om-row:hover {
    background: var(--egfin-surface-alt, #fafbfc);
}

.egfin-pkat-om-row:focus-visible {
    outline: 2px solid var(--egfin-primary, #1e3548);
    outline-offset: -2px;
}

.egfin-pkat-om-row.selected {
    background: var(--egfin-primary-soft, #eef2f8);
    box-shadow: inset 3px 0 0 var(--egfin-primary, #1e3548);
}

.egfin-pkat-om-row.exceeded,
.egfin-pkat-om-row.selected.exceeded {
    box-shadow: inset 3px 0 0 var(--egfin-danger, #d63939);
}

.egfin-pkat-om-desc {
    display: flex;
    align-items: baseline;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    color: var(--egfin-ink, #232b36);
}

.egfin-pkat-om-desc .txt {
    min-width: 0;
}

.egfin-pkat-om-manual {
    flex-shrink: 0;
    font-size: 10px;
    font-weight: 700;
    background: var(--egfin-tint-hover-alt);
    color: var(--egfin-ink-3, #6b7280);
    border-radius: 999px;
    padding: 1px 7px;
    white-space: nowrap;
}

/* Όριο / Τρέχον — labeled metric pair */
.egfin-pkat-om-metrics {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-top: 6px;
}

.egfin-pkat-om-metric .lbl {
    display: block;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--egfin-ink-4, #9aa3b2);
    margin-bottom: 1px;
}

.egfin-pkat-om-metric .val {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 12px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--egfin-ink, #232b36);
    white-space: nowrap;
}

.egfin-pkat-om-metric .val.over,
.egfin-pkat-om-flag {
    color: var(--egfin-danger, #d63939);
}

.egfin-pkat-om-flag {
    font-size: 11px;
    flex-shrink: 0;
}

/* Τρέχον/Όριο progress bar */
.egfin-pkat-om-bar {
    height: 4px;
    border-radius: 999px;
    background: var(--egfin-border, #e4e7eb);
    margin-top: 7px;
    overflow: hidden;
}

.egfin-pkat-om-bar .fill {
    height: 100%;
    border-radius: 999px;
    background: var(--egfin-success, #2d7577);
    transition: width .2s ease;
}

.egfin-pkat-om-bar.over .fill {
    background: var(--egfin-danger, #d63939);
}

.egfin-pkat-om-empty {
    padding: 14px 12px;
    font-size: 12px;
    color: var(--egfin-ink-4, #9aa3b2);
    text-align: center;
}

/* Αναλυτικά — tinted sub-section επιλεγμένης ομάδας */
.egfin-pkat-om-detail {
    padding: 12px;
    border-top: 2px solid var(--egfin-border, #e4e7eb);
    background: var(--egfin-surface-alt, #fafbfc);
}

.egfin-pkat-om-dhead {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--egfin-ink-3, #6b7280);
    margin-bottom: 6px;
}

.egfin-pkat-om-drow {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    font-size: 12px;
    padding: 3px 0;
}

.egfin-pkat-om-drow span:first-child {
    color: var(--egfin-ink-3, #6b7280);
}

.egfin-pkat-om-drow span:last-child {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.egfin-pkat-om-reset {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    border: 0;
    background: transparent;
    padding: 0;
    margin-top: 8px;
    font-size: 11.5px;
    font-weight: 600;
    color: var(--egfin-primary, #1e3548);
    text-decoration: underline;
    cursor: pointer;
}

.egfin-pkat-om-reset:focus-visible {
    outline: 2px solid var(--egfin-primary, #1e3548);
    outline-offset: 1px;
}

.egfin-pkat-om-reset:disabled {
    opacity: .55;
    cursor: default;
}

.egfin-pkat-om-kat {
    display: block;
    margin-top: 14px;
}

/* Έλεγχος Κατάρτισης window */
.egfin-pkat-elx-chips {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.egfin-pkat-elx-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 11.5px;
    font-weight: 600;
    border-radius: 999px;
    padding: 4px 12px;
    white-space: nowrap;
}

.egfin-pkat-elx-chip b {
    font-weight: 800;
}

.egfin-pkat-elx-chip.ok {
    background: #e8f4ee;
    color: #2f6b48;
    border: 1px solid #bfdccd;
}

.egfin-pkat-elx-chip.fail {
    background: #fdecec;
    color: #b02a2a;
    border: 1px solid #f0c4c4;
}

.egfin-pkat-elx-chip.skip {
    background: var(--egfin-tint-hover-alt);
    color: var(--egfin-ink-3, #6b7280);
    border: 1px solid var(--egfin-border, #e4e7eb);
}

.egfin-pkat-elx-list {
    max-height: 52vh;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding-right: 2px;
}

/* rule card — αριστερό status rail σε semantic χρώμα */
.egfin-pkat-elx-card {
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: var(--egfin-radius, 8px);
    background: var(--egfin-surface, #fff);
    box-shadow: inset 3px 0 0 var(--egfin-ink-4, #9aa3b2);
    overflow: hidden;
    flex-shrink: 0;
}

.egfin-pkat-elx-card.ok {
    box-shadow: inset 3px 0 0 var(--egfin-success, #2d7577);
}

.egfin-pkat-elx-card.fail {
    border-color: #f0c4c4;
    box-shadow: inset 3px 0 0 var(--egfin-danger, #d63939);
}

.egfin-pkat-elx-card.skip {
    background: var(--egfin-surface-alt, #fafbfc);
    box-shadow: inset 3px 0 0 var(--egfin-border-strong, #d2d6dc);
}

.egfin-pkat-elx-head {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 9px 10px 9px 14px;
}

.egfin-pkat-elx-card.fail .egfin-pkat-elx-head {
    background: #fdf3f3;
}

.egfin-pkat-elx-head.clickable {
    cursor: pointer;
}

.egfin-pkat-elx-head.clickable:hover {
    background: var(--egfin-surface-alt, #fafbfc);
}

.egfin-pkat-elx-card.fail .egfin-pkat-elx-head.clickable:hover {
    background: #fbeaea;
}

.egfin-pkat-elx-ico {
    flex-shrink: 0;
    width: 22px;
    height: 22px;
    margin-top: 1px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    font-size: 10.5px;
    background: var(--egfin-tint-hover-alt);
    color: var(--egfin-ink-4, #9aa3b2);
}

.egfin-pkat-elx-card.ok .egfin-pkat-elx-ico {
    background: #e8f4ee;
    color: #2f6b48;
}

.egfin-pkat-elx-card.fail .egfin-pkat-elx-ico {
    background: #fdecec;
    color: #b02a2a;
}

.egfin-pkat-elx-body {
    flex: 1 1 auto;
    min-width: 0;
}

.egfin-pkat-elx-title {
    display: block;
    font-size: 12.5px;
    font-weight: 500;
    line-height: 1.45;
    color: var(--egfin-ink, #232b36);
    margin-top: 2px;
}

.egfin-pkat-elx-card.fail .egfin-pkat-elx-title {
    font-weight: 600;
}

.egfin-pkat-elx-card.skip .egfin-pkat-elx-title {
    color: var(--egfin-ink-4, #9aa3b2);
}

.egfin-pkat-elx-skipreason {
    display: block;
    margin-top: 2px;
    font-size: 11.5px;
    font-style: italic;
    color: var(--egfin-ink-4, #9aa3b2);
}

/* expand chevron — πραγματικό button, δεξιά στο header */
.egfin-pkat-elx-chev {
    flex-shrink: 0;
    width: 26px;
    height: 26px;
    padding: 0;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--egfin-ink-3, #6b7280);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.egfin-pkat-elx-chev i {
    font-size: 11px;
    transition: transform .15s ease;
}

.egfin-pkat-elx-chev.open i {
    transform: rotate(180deg);
}

.egfin-pkat-elx-chev:hover {
    background: var(--egfin-tint-hover-alt);
    color: var(--egfin-ink, #232b36);
}

.egfin-pkat-elx-chev:focus-visible {
    outline: 2px solid var(--egfin-primary, #1e3548);
    outline-offset: 1px;
}

/* violation table */
.egfin-pkat-elx-tblwrap {
    border-top: 1px solid var(--egfin-border, #e4e7eb);
    max-height: 240px;
    overflow: auto;
    background: var(--egfin-surface, #fff);
}

.egfin-pkat-elx-tbl {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}

.egfin-pkat-elx-tbl th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--egfin-surface-alt, #fafbfc);
    color: var(--egfin-ink-3, #6b7280);
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    text-align: left;
    padding: 6px 12px;
    border-bottom: 1px solid var(--egfin-border, #e4e7eb);
    white-space: nowrap;
}

.egfin-pkat-elx-tbl td {
    padding: 5px 12px;
    border-bottom: 1px solid #f0f2f5;
    color: var(--egfin-ink-2, #4a5568);
    white-space: nowrap;
}

.egfin-pkat-elx-tbl tbody tr:nth-child(even) td {
    background: var(--egfin-surface-alt, #fafbfc);
}

.egfin-pkat-elx-tbl tr:last-child td {
    border-bottom: none;
}

.egfin-pkat-elx-tbl th.num,
.egfin-pkat-elx-tbl td.num {
    text-align: right;
}

.egfin-pkat-elx-tbl td.num {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-variant-numeric: tabular-nums;
}

/* footer — advisory note σε δική του γραμμή, actions δεξιά */
.egfin-pkat-elx-note {
    display: flex;
    align-items: center;
    gap: 7px;
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid var(--egfin-border, #e4e7eb);
    font-size: 11.5px;
    color: var(--egfin-ink-3, #6b7280);
}

.egfin-pkat-elx-note i {
    color: var(--egfin-ink-4, #9aa3b2);
}

.egfin-pkat-elx-foot {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 8px;
    margin-top: 10px;
}

/* ---- Σύνταξη εισηγητικής έκθεσης ---- */
.egfin-pkat-eis-main {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-top: 4px;
}

.egfin-pkat-eis-tpl-body {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 12px 14px;
}

.egfin-pkat-eis-tpl-txt {
    width: 100%;
    min-height: 62px;
    resize: vertical;
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 6px;
    padding: 8px 10px;
    font-size: 12.5px;
    color: var(--egfin-ink, #1b2433);
    background: var(--egfin-surface, #fff);
    outline: none;
}

.egfin-pkat-eis-tpl-txt:focus {
    border-color: var(--egfin-primary, #1e3548);
}

.egfin-pkat-eis-tpl-hint {
    font-size: 11.5px;
    color: var(--egfin-ink-3, #6b7280);
}

.egfin-pkat-eis-tpl-hint code {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 11px;
    background: var(--egfin-surface-2, #f4f6f8);
    border-radius: 4px;
    padding: 1px 5px;
    color: var(--egfin-primary, #1e3548);
}

/* Token «Διαθέσιμα πεδία»: ίδια εμφάνιση με το <code> που αντικατέστησε, αλλά clickable
   (κλικ → αντιγραφή στο clipboard· η ταύτιση των tokens είναι case-sensitive). */
.egfin-pkat-eis-tok {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 11px;
    background: var(--egfin-surface-2, #f4f6f8);
    border: 1px solid transparent;
    border-radius: 4px;
    padding: 1px 5px;
    margin: 0 2px;
    color: var(--egfin-primary, #1e3548);
    cursor: pointer;
}

.egfin-pkat-eis-tok:hover {
    border-color: var(--egfin-primary, #1e3548);
}

.egfin-pkat-eis-tok:focus-visible {
    outline: 2px solid var(--egfin-primary, #1e3548);
    outline-offset: 1px;
}

.egfin-pkat-eis-tpl-only {
    align-self: flex-start;
}

.egfin-pkat-eis-tpl-btns {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.egfin-pkat-eis-cell {
    display: block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 12px;
}

.egfin-pkat-eis-cell.muted {
    color: var(--egfin-ink-4, #9aa3b2);
}

/* ═══════════════════════════════════════════════════════════════
   Ταμειακή Κατηγορία — Έλεγχος & Κανόνες (egfin-tamk-*)
   Pages/Proypologismos/TameiakiKategoriaView.razor
   ═══════════════════════════════════════════════════════════════ */

.egfin-tamk-toolbar {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 10px 2px;
}

.egfin-tamk-mono {
    font-family: "Consolas", "Menlo", "Courier New", monospace;
    font-size: 12.5px;
}

.egfin-tamk-loading {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 24px 8px;
    font-size: 13px;
    color: var(--egfin-ink-3, #6b7280);
}

.egfin-tamk-grid {
    font-size: 12.5px;
}

/* ---- Εικονικοί ΚΑ (Wave B): window διαχείρισης ---- */
.egfin-ptree-virt-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 8px;
}

.egfin-ptree-virt-head-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--egfin-primary, #1e3548);
}

.egfin-ptree-virt-ro {
    font-size: 12px;
    color: var(--egfin-ink-3, #6b7280);
    background: var(--egfin-surface-alt);
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 6px;
    padding: 6px 10px;
    margin-bottom: 8px;
}

.egfin-ptree-virt-empty {
    font-size: 12.5px;
    color: var(--egfin-ink-3, #6b7280);
    padding: 18px 8px;
    text-align: center;
}

.egfin-ptree-virt-tblwrap {
    overflow-x: auto;
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 6px;
}

.egfin-ptree-virt-tbl {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}

.egfin-ptree-virt-tbl th,
.egfin-ptree-virt-tbl td {
    padding: 6px 10px;
    text-align: left;
    border-bottom: 1px solid var(--egfin-border, #e4e7eb);
    white-space: nowrap;
}

.egfin-ptree-virt-tbl th {
    font-weight: 700;
    color: var(--egfin-ink-3, #6b7280);
    background: var(--egfin-surface-alt);
}

.egfin-ptree-virt-tbl tbody tr:last-child td {
    border-bottom: none;
}

.egfin-ptree-virt-tbl .num {
    text-align: right;
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-variant-numeric: tabular-nums;
}

.egfin-ptree-virt-tbl .mono {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-weight: 600;
    color: var(--egfin-primary, #1e3548);
}

.egfin-ptree-virt-tbl .muted {
    color: var(--egfin-ink-3, #6b7280);
}

.egfin-ptree-virt-tbl td.act {
    text-align: right;
    white-space: nowrap;
}

.egfin-ptree-virt-flags {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 4px;
}

.egfin-ptree-virt-badge {
    font-size: 9.5px;
    font-weight: 700;
    border-radius: 999px;
    padding: 1px 7px;
    letter-spacing: .03em;
    background: var(--egfin-primary-soft, #eef2f8);
    color: var(--egfin-primary, #1e3548);
    white-space: nowrap;
}

.egfin-ptree-virt-formhead {
    font-size: 13px;
    font-weight: 700;
    color: var(--egfin-primary, #1e3548);
    margin-bottom: 8px;
}

.egfin-ptree-virt-checks {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 20px;
    margin: 6px 0 4px;
}

/* ---- Κατάρτιση: badge εικονικού ΚΑ ---- */
.egfin-pkat-virt-badge {
    display: inline-block;
    margin-left: 6px;
    font-size: 9.5px;
    font-weight: 700;
    border-radius: 999px;
    padding: 1px 7px;
    letter-spacing: .03em;
    background: var(--egfin-primary-soft, #eef2f8);
    color: var(--egfin-primary, #1e3548);
    white-space: nowrap;
    vertical-align: middle;
}

/* ═══════════════════════════════════════════════════════════════
   Κατάρτιση co-editing (presence bar, cell indicators, flash)
   ═══════════════════════════════════════════════════════════════ */

/* panel head becomes a row so the presence bar sits on the right */
.egfin-pkat-panel .egfin-ptree-panel-head {
    display: flex;
    align-items: center;
    gap: 12px;
}

.egfin-pkat-presence {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    margin-left: auto;
    text-transform: none;
    letter-spacing: normal;
    padding-bottom: 10px; /* χώρος για την ετικέτα «Εσείς» κάτω από το avatar */
}

.egfin-pkat-presence-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 11.5px;
    font-weight: 700;
    color: var(--egfin-ink-2, #4a5568);
    background: var(--egfin-surface, #fff);
    border: 1px solid var(--egfin-border, #e4e7eb);
    border-radius: 999px;
    padding: 2px 10px;
    white-space: nowrap;
}

.egfin-pkat-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    line-height: 1;
    border: 2px solid var(--egfin-surface);
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.18);
    flex-shrink: 0;
    user-select: none;
}

.egfin-pkat-avatar-more {
    background: var(--egfin-ink-3, #6b7280);
    font-size: 11px;
}

/* Ο εαυτός σου: διακριτικό δαχτυλίδι + ετικέτα «Εσείς» */
.egfin-pkat-avatar-self {
    position: relative;
    box-shadow: 0 0 0 2px var(--egfin-primary, #1e3548), 0 1px 3px rgba(15, 23, 42, 0.18);
    margin-right: 6px;
}

.egfin-pkat-avatar-self .egfin-pkat-avatar-you {
    position: absolute;
    bottom: -9px;
    left: 50%;
    transform: translateX(-50%);
    padding: 0 5px;
    height: 13px;
    line-height: 13px;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .2px;
    color: #fff;
    background: var(--egfin-primary, #1e3548);
    border-radius: 999px;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.25);
}

/* ---- co-editing: highlight ΟΛΟΥ του κελιού (styling στο ίδιο το <td> μέσω OnCellRender) ----
   Το inner span δεν μπορεί να καλύψει το κελί (το .k-table-td έχει overflow:hidden, οπότε
   negative margins κόβονται) — γι' αυτό η κλάση μπαίνει στο td. Το χρώμα του peer έρχεται
   ως κλάση παλέτας (.pkat-c0…c7) γιατί το GridCellRenderEventArgs δέχεται μόνο Class. */
.k-grid .k-table-td.egfin-pkat-td-peer {
    position: relative;
    box-shadow: inset 0 0 0 2px var(--pkat-peer-color, var(--egfin-primary, #1e3548));
    background-color: var(--pkat-peer-tint, rgba(30, 53, 72, .07));
    /* χώρος αριστερά για το badge, ώστε να μην ακουμπά τον δεξιά-στοιχισμένο αριθμό */
    padding-left: 26px;
}

/* παλέτα peer (ίδια σειρά με το CoEditPalette στο code-behind) */
.egfin-pkat-td-peer.pkat-c0 { --pkat-peer-color: #2a78d6; --pkat-peer-tint: rgba(42, 120, 214, .10); }
.egfin-pkat-td-peer.pkat-c1 { --pkat-peer-color: #d64545; --pkat-peer-tint: rgba(214, 69, 69, .10); }
.egfin-pkat-td-peer.pkat-c2 { --pkat-peer-color: #2fa36b; --pkat-peer-tint: rgba(47, 163, 107, .10); }
.egfin-pkat-td-peer.pkat-c3 { --pkat-peer-color: #c8811a; --pkat-peer-tint: rgba(200, 129, 26, .10); }
.egfin-pkat-td-peer.pkat-c4 { --pkat-peer-color: #8a4fd6; --pkat-peer-tint: rgba(138, 79, 214, .10); }
.egfin-pkat-td-peer.pkat-c5 { --pkat-peer-color: #0f9bb0; --pkat-peer-tint: rgba(15, 155, 176, .10); }
.egfin-pkat-td-peer.pkat-c6 { --pkat-peer-color: #c0398b; --pkat-peer-tint: rgba(192, 57, 139, .10); }
.egfin-pkat-td-peer.pkat-c7 { --pkat-peer-color: #5a7a1a; --pkat-peer-tint: rgba(90, 122, 26, .10); }

/* badge με τα αρχικά του peer — αγκυρωμένο στο ΑΡΙΣΤΕΡΟ άκρο του κελιού */
.k-grid .k-table-td.egfin-pkat-td-peer .egfin-pkat-peerbadge {
    position: absolute;
    top: 50%;
    left: 5px;
    transform: translateY(-50%);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 17px;
    height: 17px;
    padding: 0 4px;
    border-radius: 999px;
    color: #fff;
    font-size: 9px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: .2px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .3);
    pointer-events: none;
}

/* live-update flash pulse όταν φτάνει τιμή από peer — σε όλο το κελί */
@keyframes egfin-pkat-flash {
    0% { background-color: var(--pkat-peer-color, var(--egfin-primary, #1e3548)); }
    100% { background-color: transparent; }
}

.k-grid .k-table-td.egfin-pkat-td-flash {
    animation: egfin-pkat-flash 320ms ease-out;
}

/* Το presence chip/avatar ακολουθεί τα tokens, άρα δουλεύει και στα δύο themes
   χωρίς theme-specific selector. (Πριν: `:root[data-theme="dark"]` — dead code,
   γιατί το data-theme κρατά το template variant `theme-default`/`theme-semi-dark`,
   ποτέ `dark`/`light`. Το light/dark ζει στην κλάση `light-style`/`dark-style`.) */
.egfin-pkat-presence-chip {
    background: var(--egfin-surface);
    color: var(--egfin-ink-2);
    border-color: var(--egfin-border);
}

.egfin-pkat-avatar {
    border-color: var(--egfin-surface);
}


/* --- Footer: όνομα οργανισμού εφαρμογής ---
   Ο vendor footer έδειχνε μόνο ΕΓΚΡΙΤΟΣ GROUP + version, άρα δεν φαινόταν
   πουθενά σε ποιον οργανισμό δουλεύει ο χρήστης. Μπαίνει inline ΜΕΤΑ το
   copyright (ίδιο div), με διαχωριστικό — όχι ως ξεχωριστή στήλη του flex,
   που έδειχνε να «αιωρείται» στο κέντρο. Χρησιμοποιεί tokens → ακολουθεί
   αυτόματα light/dark. */
.eg-footer-organismos {
    display: inline-flex;
    align-items: baseline;
    max-width: 40ch;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 600;
    color: var(--eg-primary);
}

/* Διαχωριστικό από το copyright */
.eg-footer-organismos::before {
    content: "•";
    margin: 0 0.5rem;
    font-weight: 400;
    color: var(--egfin-ink-4);
}

.eg-footer-organismos > i {
    color: var(--egfin-ink-3);
    font-size: 0.8em;
}

@media (max-width: 767.98px) {
    .eg-footer-organismos {
        max-width: 100%;
        font-size: 0.85rem;
    }
    /* Σε column layout το bullet δεν έχει νόημα στην αρχή γραμμής */
    .eg-footer-organismos::before {
        display: none;
    }
}

/**
 * egritos-dark.css — Dark theme overrides
 * -------------------------------------------------------------------------------------
 * Το vendor template (template-customizer.js) εναλλάσσει core.css → core-dark.css και
 * theme-semi-dark.css → theme-semi-dark-dark.css, και προσθέτει την κλάση `dark-style`
 * στο <html>. Το vendor ΔΕΝ καλύπτει:
 *   1) Το Telerik/Kendo theme — το πακέτο σερβίρει μόνο light `all.css`.
 *   2) Το custom μας CSS (--eg-* / --egfin-* tokens στο egritos.css).
 *
 * Αυτό το αρχείο καλύπτει και τα δύο, ΜΟΝΟ με override σε tokens — καμία αλλαγή
 * σε layout/spacing/specificity. Ο selector είναι `html.dark-style` (0,1,1) που
 * υπερισχύει των `:root` (0,1,0) ορισμών του Telerik και του egritos.css.
 *
 * ΠΡΟΣΟΧΗ: το light theme ΔΕΝ αγγίζεται από αυθό το αρχείο.
 */

/* =====================================================================
   1. App tokens (--eg-* / --egfin-*)
   ===================================================================== */
html.dark-style {
    /* --- Surfaces: το ανοιχτό γίνεται σκούρο --- */
    --eg-white:                  #232b36;   /* "λευκή" επιφάνεια → dark card */
    --eg-light:                  #2c3846;
    --eg-disabled:               #2a323d;
    --eg-gray:                   rgba(195, 203, 214, 0.6);
    --eg-gray-light:             #2c3846;
    --eg-dark:                   #c3cbd6;   /* αντιστροφή: "dark" = ανοιχτό κείμενο */

    /* --- Brand: ξεθωριάζει σε σκούρο φόντο → ανοιχτότερη απόχρωση --- */
    --eg-primary:                #61a5d1;
    --eg-primary-rgb:            97, 165, 209;
    --eg-primary-hover:          #7db6dc;
    --eg-secondary:              #6ba3c7;

    /* --- Semantic: ανοιχτότερες αποχρώσεις για contrast σε dark bg --- */
    --eg-success:                #4fb3b5;
    --eg-success-hover:          #63c4c6;
    --eg-info:                   #98a2b0;
    --eg-info-hover:             #b0b9c5;
    --eg-warning:                #ffb066;
    --eg-danger:                 #f37374;
    --eg-orange:                 #ff9147;

    /* --- egfin design system --- */
    --egfin-primary:             #61a5d1;
    --egfin-primary-soft:        #0f2231;
    --egfin-accent:              #f0a742;
    --egfin-accent-soft:         #2e2413;
    --egfin-accent-hover:        #ffbe5c;

    /* Κείμενο: αντιστροφή της ink κλίμακας (σκούρο→ανοιχτό) */
    --egfin-ink:                 #e6eaf0;
    --egfin-ink-2:               #c3cbd6;
    --egfin-ink-3:               #98a2b0;
    --egfin-ink-4:               #949eae;

    --egfin-border:              #3a4756;
    --egfin-border-strong:       #4a5a6c;

    --egfin-surface:             #232b36;
    --egfin-surface-alt:         #1e2530;
    --egfin-field-readonly:      #1a212a;

    --egfin-success:             #4fb3b5;
    --egfin-success-soft:        #16241f;
    --egfin-danger:              #f37374;

    /* Σκιές: πιο βαθιές/αδιαφανείς — σε σκούρο φόντο οι ανοιχτές σκιές δεν φαίνονται */
    --egfin-shadow:              0 1px 3px rgba(0, 0, 0, 0.36), 0 4px 14px rgba(0, 0, 0, 0.30);
    --egfin-shadow-lg:           0 12px 32px rgba(0, 0, 0, 0.46);

    /* --- Soft tints: σκούρες εκδοχές των hover/selected/info επιφανειών --- */
    --egfin-link:                #6fb3e0;
    --egfin-link-rgb:            111, 179, 224;
    --egfin-on-fill:             #10171f;   /* σκούρο κείμενο πάνω στα ανοιχτά dark fills */
    --egfin-skeleton:            #2a333f;
    --egfin-skeleton-hi:         #353f4d;
    --egfin-tint-hover:          #28323e;
    --egfin-tint-hover-alt:      #29323d;
    --egfin-tint-hover-alt2:     #29323d;
    --egfin-tint-active:         #2a343f;
    --egfin-tint-danger:         #2c1619;
    --egfin-tint-teal:           #172c2c;
    --egfin-tint-selected:       rgba(97, 165, 209, 0.18);
    --egfin-tint-selected-hv:    rgba(97, 165, 209, 0.24);
    --egfin-ring-focus:          rgba(97, 165, 209, 0.38);
    /* Row-state surfaces: σκούρες εκδοχές — τα light fills (#dbe7f3/#fdecec/#fff6e5)
       έκρυβαν το ανοιχτό κείμενο των κελιών (Κατάρτιση Π/Υ: επιλεγμένη γραμμή αδιάβαστη). */
    --egfin-tint-editing:        #24384a;
    --egfin-tint-invalid:        #2c1619;
    --egfin-tint-warn:           #2e2413;
    --egfin-warn-ink:            #ffc26b;
}

/* --- Bootstrap surface vars ---
   Το core-dark.css του vendor ΟΡΙΖΕΙ σωστά dark τιμές για --bs-body-bg/-color,
   ΑΛΛΑ τις δηλώνει σε `:root` (0,1,0). Το egritos.css δηλώνει --bs-border-color
   σε `html` (0,1,1) και φορτώνει ΜΕΤΑ → η light τιμή κέρδιζε και στο dark.
   Εδώ επαναφέρουμε τα surface vars στα tokens μας. */
html.dark-style {
    --bs-border-color:      var(--egfin-border);
    --bs-body-color:        var(--egfin-ink);
    --bs-emphasis-color:    var(--egfin-ink);
    --bs-card-bg:           var(--egfin-surface);
    --bs-tertiary-bg:       var(--egfin-surface-alt);
    --bs-secondary-bg:      var(--egfin-tint-hover);
    --bs-table-bg:          transparent;
    --bs-table-color:       var(--egfin-ink);
}

/* =====================================================================
   2. Telerik / Kendo tokens
   Το πακέτο Telerik.UI.for.Blazor 13.3.0 σερβίρει μόνο light
   `kendo-theme-bootstrap/all.css`. Το theme είναι πλήρως token-based, οπότε
   το dark mode γίνεται με override των --kendo-color-* (χωρίς 2ο CSS αρχείο).
   ===================================================================== */
html.dark-style {
    /* --- Βασικές επιφάνειες & κείμενο --- */
    --kendo-color-app-surface:          #232b36;
    --kendo-color-on-app-surface:       #e6eaf0;
    --kendo-color-surface:              #1e2530;
    --kendo-color-surface-alt:          #232b36;

    /* --- Base (buttons, headers, inputs) --- */
    --kendo-color-base:                 #2c3846;
    --kendo-color-base-subtle:          #273240;
    --kendo-color-base-subtle-hover:    #2c3846;
    --kendo-color-base-subtle-active:   #3a4756;
    --kendo-color-base-hover:           #36434f;
    --kendo-color-base-active:          #3f4d5c;
    --kendo-color-base-emphasis:        rgba(230, 234, 240, 0.34);
    --kendo-color-base-on-subtle:       #e6eaf0;
    --kendo-color-base-on-surface:      #e6eaf0;
    --kendo-color-on-base:              #e6eaf0;

    /* --- Borders --- */
    --kendo-color-border:               rgba(230, 234, 240, 0.16);
    --kendo-color-border-alt:           rgba(230, 234, 240, 0.26);

    /* --- Primary --- */
    --kendo-color-primary:              #61a5d1;
    --kendo-color-primary-hover:        #7db6dc;
    --kendo-color-primary-active:       #92c4e6;
    --kendo-color-primary-subtle:       #0f2231;
    --kendo-color-primary-subtle-hover: #142b3c;
    --kendo-color-primary-subtle-active:#193448;
    --kendo-color-primary-emphasis:     rgba(97, 165, 209, 0.4);
    --kendo-color-primary-on-subtle:    #bfdcf0;
    --kendo-color-primary-on-surface:   #7db6dc;
    --kendo-color-on-primary:           #10171f;

    /* --- Light / Dark ρόλοι: αντιστρέφονται --- */
    --kendo-color-light:                #2c3846;
    --kendo-color-light-subtle:         #273240;
    --kendo-color-on-light:             #e6eaf0;
    /* ΠΡΟΣΟΧΗ: το --kendo-color-dark ΔΕΝ είναι "χρώμα κειμένου" — το χρησιμοποιεί
       το .k-overlay / .k-loader-container-overlay ως SCRIM. Αν το αντιστρέψουμε,
       το overlay φόρτωσης/modal γίνεται ΛΕΥΚΟ πάνω από τη σκούρα σελίδα.
       Μένει σκούρο· για κείμενο υπάρχει το --kendo-color-dark-on-surface. */
    --kendo-color-dark:                 #0e141b;
    --kendo-color-dark-subtle:          #3a4756;
    --kendo-color-on-dark:              #10171f;

    /* --- Inverse --- */
    --kendo-color-inverse:              #e6eaf0;
    --kendo-color-inverse-subtle:       #adb5bd;
    --kendo-color-on-inverse:           #10171f;

    /* --- Semantic states: ανοιχτότερες + σκούρα subtle φόντα --- */
    --kendo-color-success:              #35b37e;
    --kendo-color-success-subtle:       #16241f;
    --kendo-color-on-success:           #10171f;
    --kendo-color-error:                #f0666f;
    --kendo-color-error-subtle:         #2c1619;
    --kendo-color-on-error:             #10171f;
    --kendo-color-warning:              #f2c14e;
    --kendo-color-warning-subtle:       #2e2413;
    --kendo-color-info:                 #4fc3e0;
    --kendo-color-info-subtle:          #12252c;

    /* --- Tokens που έμεναν light και έσπαγαν το dark (μετρημένα ως fails) --- */
    --kendo-color-subtle:               #98a2b0;   /* ήταν #565e64 → 2.16:1 (muted/placeholder text) */
    --kendo-color-secondary:            #98a2b0;   /* ήταν #6c757d → 3.05:1 */
    --kendo-color-secondary-subtle:     #273240;   /* ήταν #e2e3e5 → LIGHT surface */
    --kendo-color-tertiary-subtle:      #241f2e;   /* ήταν #e2d9f3 → LIGHT surface */
    --kendo-color-light-subtle-hover:   #2c3846;   /* ήταν #e9ecef → LIGHT surface */
    --kendo-color-light-subtle-active:  #36434f;   /* ήταν #e9ecef → LIGHT surface */

    /* Τα *-on-subtle είναι κείμενο ΜΕΣΑ σε subtle chip/alert/validation. Τα subtle
       φόντα έγιναν σκούρα, άρα το σκούρο κείμενο γινόταν αόρατο (error 1.05:1). */
    --kendo-color-error-on-subtle:      #f0a8ad;
    --kendo-color-success-on-subtle:    #8fd6b4;
    --kendo-color-warning-on-subtle:    #e8cd8a;
    --kendo-color-info-on-subtle:       #9ad8e8;
    --kendo-color-base-on-subtle:       #e6eaf0;
    --kendo-color-dark-on-surface:      #e6eaf0;   /* ήταν #212529 → 1.08:1 */
    --kendo-color-light-on-surface:     #e6eaf0;
    --kendo-color-secondary-on-subtle:  #c3cbd6;
}


/* =====================================================================
   3. Component-scoped tokens
   Το --egfin-icon-btn-hover-bg ΔΕΝ είναι global token: δηλώνεται μέσα στο
   .egfin-icon-btn και ξανα-ορίζεται από τα severity variants. Override σε
   :root/html δεν θα είχε καμία επίδραση (το local declaration κερδίζει),
   γι' αυτό το κάνουμε στο ίδιο επίπεδο specificity με τα originals.
   ===================================================================== */
html.dark-style button.egfin-icon-btn {
    --egfin-icon-btn-hover-bg: #2c3846;
}

html.dark-style .egfin-icon-btn.egfin-danger {
    --egfin-icon-btn-hover-bg: #2c1619;
}

html.dark-style .egfin-icon-btn.egfin-edit,
html.dark-style .egfin-icon-btn.egfin-warning {
    --egfin-icon-btn-hover-bg: #2e2413;
}


/* =====================================================================
   4. Vendor hardcoded purple (#7367f0) — ΔΕΝ πιάνεται με tokens
   -------------------------------------------------------------------
   Το theme-semi-dark-dark.css γράφει το #7367f0 ως ΚΥΡΙΟΛΕΚΤΙΚΗ τιμή σε
   169 κανόνες (π.χ. `a { color:#7367f0 }`, `.text-primary{...!important}`,
   pagination/nav-tabs/badges) — όχι μέσω CSS variable. Επιπλέον ο
   template-customizer το φορτώνει ΔΥΝΑΜΙΚΑ μετά το app.min.css, άρα
   κερδίζει και στη σειρά. Άρα χρειάζονται ρητά overrides με ίδιο ή
   μεγαλύτερο specificity, στο brand μπλε του auth.
   ===================================================================== */

/* Links */
html.dark-style a {
    color: var(--egfin-link);
}

html.dark-style a:hover,
html.dark-style a:focus {
    color: var(--eg-primary-hover);
}

/* Μην αλλοιώνεις links που παίρνουν χρώμα από component context
   (buttons, dropdown items, menu links, grid cells, tabs, pagers). */
html.dark-style a.btn,
html.dark-style a.dropdown-item,
html.dark-style a.menu-link,
html.dark-style a.nav-link,
html.dark-style a.page-link,
html.dark-style a.k-button,
html.dark-style a.list-group-item,
html.dark-style .k-grid a.k-button,
html.dark-style .menu a,
html.dark-style .dropdown-menu a {
    color: inherit;
}

/* Bootstrap utility: το vendor το έχει με !important */
html.dark-style .text-primary {
    color: var(--eg-primary) !important;
}

/* Pagination active state */
html.dark-style .page-item.active .page-link,
html.dark-style .page-item > .page-link.active,
html.dark-style .pagination li.active > a:not(.page-link) {
    background-color: var(--eg-primary);
    border-color: var(--eg-primary);
    color: var(--egfin-on-fill);
}

/* Nav tabs / pills active */
html.dark-style .nav-tabs .nav-link.active,
html.dark-style .nav-pills .nav-link.active {
    color: var(--eg-primary);
}

html.dark-style .nav-pills .nav-link.active {
    background-color: var(--eg-primary);
    color: var(--egfin-on-fill);
}

/* Label/soft badges */
html.dark-style .bg-label-primary {
    background-color: var(--egfin-primary-soft) !important;
    color: var(--eg-primary) !important;
}

/* Sidebar active menu item — ο vendor το βάφει με linear-gradient (όχι background-color),
   γι' αυτό ένα απλό `color` override δεν άλλαζε τίποτα. */
html.dark-style .bg-menu-theme.menu-vertical .menu-item.active > .menu-link:not(.menu-toggle),
html.dark-style .bg-menu-theme.menu-horizontal .menu-inner > .menu-item.active > .menu-link.menu-toggle {
    background-image: linear-gradient(72.47deg, var(--eg-primary) 22.16%, var(--egfin-primary-soft) 76.47%);
    box-shadow: 0px 2px 6px 0px var(--egfin-ring-focus);
    color: var(--egfin-on-fill);
}

html.dark-style .menu.bg-primary .menu-inner-shadow {
    background-image: linear-gradient(var(--eg-primary) 41%, transparent 95%, transparent);
}


/* --- Bootstrap primary buttons / checkboxes / icons ---
   Ο vendor τα γράφει με literal #7367f0 (btn-primary bg+border,
   btn-outline-primary color+border, form-check-input:checked, icons).
   Μετρημένο live: 299 στοιχεία έμεναν μωβ. */
html.dark-style .btn-primary {
    --bs-btn-bg: var(--eg-primary);
    --bs-btn-border-color: var(--eg-primary);
    --bs-btn-color: var(--egfin-on-fill);
    --bs-btn-hover-bg: var(--eg-primary-hover);
    --bs-btn-hover-border-color: var(--eg-primary-hover);
    --bs-btn-hover-color: var(--egfin-on-fill);
    --bs-btn-active-bg: var(--eg-primary-hover);
    --bs-btn-active-border-color: var(--eg-primary-hover);
    --bs-btn-active-color: var(--egfin-on-fill);
    --bs-btn-disabled-bg: var(--eg-primary);
    --bs-btn-disabled-border-color: var(--eg-primary);
    background-color: var(--eg-primary);
    border-color: var(--eg-primary);
    color: var(--egfin-on-fill);
}

html.dark-style .btn-primary:hover,
html.dark-style .btn-primary:focus,
html.dark-style .btn-primary:active,
html.dark-style .btn-primary.active {
    background-color: var(--eg-primary-hover);
    border-color: var(--eg-primary-hover);
    color: var(--egfin-on-fill);
}

html.dark-style .btn-outline-primary {
    --bs-btn-color: var(--eg-primary);
    --bs-btn-border-color: var(--eg-primary);
    --bs-btn-hover-bg: var(--eg-primary);
    --bs-btn-hover-border-color: var(--eg-primary);
    --bs-btn-hover-color: var(--egfin-on-fill);
    --bs-btn-active-bg: var(--eg-primary);
    --bs-btn-active-border-color: var(--eg-primary);
    --bs-btn-active-color: var(--egfin-on-fill);
    color: var(--eg-primary);
    border-color: var(--eg-primary);
}

html.dark-style .btn-outline-primary:hover,
html.dark-style .btn-outline-primary:focus,
html.dark-style .btn-outline-primary:active,
html.dark-style .btn-outline-primary.active {
    background-color: var(--eg-primary);
    border-color: var(--eg-primary);
    color: var(--egfin-on-fill);
}

/* Checkboxes / radios */
html.dark-style .form-check-input:checked,
html.dark-style .form-check-input[type="checkbox"]:indeterminate {
    background-color: var(--eg-primary);
    border-color: var(--eg-primary);
}

html.dark-style .form-check.custom-option.checked,
html.dark-style .form-check.custom-option:has(.form-check-input:checked) {
    border-color: var(--eg-primary);
}

/* Icons that inherit the vendor primary literal */
html.dark-style .fa-solid.fa-thumbtack,
html.dark-style .fa-solid.fa-check,
html.dark-style .fa-solid.fa-check-double,
html.dark-style .fa-solid.fa-eye-slash,
html.dark-style .fa-solid.fa-circle-info,
html.dark-style .fa-solid.fa-gear,
html.dark-style .fa-solid.fa-print,
html.dark-style .fa-solid.fa-xmark,
html.dark-style .fa.fa-filter {
    color: inherit;
}


/* --- Vendor purple: focus rings, tabs, switches, pickers ---
   Βρέθηκαν με περιήγηση στις σελίδες (detail forms/tabs). Ο vendor τα γράφει
   literal, πολλά με !important, άρα χρειάζονται ρητά overrides. */
html.dark-style .form-control:focus,
html.dark-style .form-select:focus,
html.dark-style .input-group:focus-within .form-control,
html.dark-style .input-group:focus-within .input-group-text,
html.dark-style .form-check-input:focus,
html.dark-style .form-control:focus ~ .form-label {
    border-color: var(--eg-primary) !important;
}

html.dark-style .form-floating > .form-control:focus ~ label,
html.dark-style .form-floating > .form-control:not(:placeholder-shown) ~ label {
    color: var(--eg-primary);
}

/* Tabs: active indicator */
html.dark-style .nav-tabs .nav-link.active,
html.dark-style .nav-tabs .nav-link.active:hover,
html.dark-style .nav-tabs .nav-link.active:focus {
    box-shadow: 0 -2px 0 var(--eg-primary) inset;
}

html.dark-style .nav-align-bottom .nav-tabs .nav-link.active {
    box-shadow: 0 2px 0 var(--eg-primary) inset;
}

html.dark-style .nav-align-left .nav-tabs .nav-link.active {
    box-shadow: -2px 0px 0 var(--eg-primary) inset;
}

html.dark-style .nav-align-right .nav-tabs .nav-link.active {
    box-shadow: 2px 0px 0 var(--eg-primary) inset;
}

/* Switches */
html.dark-style .switch-input:focus ~ .switch-toggle-slider,
html.dark-style .switch-primary.switch .switch-input:focus ~ .switch-toggle-slider {
    border: 1px solid var(--eg-primary);
    box-shadow: 0 0 0.25rem 0.05rem var(--egfin-ring-focus);
}

html.dark-style .switch-primary .switch-input:checked ~ .switch-toggle-slider {
    background: var(--eg-primary);
    border-color: var(--eg-primary);
}

/* Date picker (flatpickr) selected day */
html.dark-style .flatpickr-day.selected,
html.dark-style .flatpickr-day.selected.inRange,
html.dark-style .flatpickr-day.selected:focus,
html.dark-style .flatpickr-day.selected:hover {
    background: var(--eg-primary) !important;
    border-color: var(--eg-primary) !important;
    color: var(--egfin-on-fill) !important;
}

/* list-group active/primary */
html.dark-style .list-group-item-action.active,
html.dark-style .list-group-item-action.active:hover {
    background-color: var(--eg-primary);
    border-color: var(--eg-primary);
    color: var(--egfin-on-fill);
}

html.dark-style a.list-group-item-primary,
html.dark-style button.list-group-item-primary {
    color: var(--eg-primary);
}

/* btn-label-primary / outline focus */
html.dark-style .btn-label-primary:focus,
html.dark-style .btn-label-primary.focus,
html.dark-style .btn-check:focus + .btn-outline-primary,
html.dark-style .btn-outline-primary:focus {
    color: var(--eg-primary);
    border-color: var(--eg-primary);
}

html.dark-style .btn-outline-primary:hover .badge,
html.dark-style .btn-outline-primary:focus:hover .badge {
    background: var(--eg-primary);
    border-color: var(--eg-primary);
}


/* --- Bootstrap utility classes που «κλειδώνουν» light χρώμα ---
   Βρέθηκαν με περιήγηση: `.bg-white` σε card (Ρυθμίσεις) και `.border-primary`
   στα KPI cards του dashboard (ο vendor το έχει literal μωβ). */
html.dark-style .bg-white {
    background-color: var(--egfin-surface) !important;
    color: var(--egfin-ink);
}

/* Ο vendor το γράφει ως `html:not([dir="rtl"]) .border-primary` με !important
   (specificity 0,2,1) — άρα το απλό `html.dark-style .border-primary` (0,2,0)
   έχανε. Ταιριάζουμε το σχήμα του για να κερδίσουμε. */
html.dark-style:not([dir="rtl"]) .border-primary,
html.dark-style[dir="rtl"] .border-primary,
html.dark-style .border-primary {
    border-color: var(--eg-primary) !important;
}

/* ΠΡΟΣΟΧΗ: το .text-white ΔΕΝ γίνεται override γενικά — σχεδόν πάντα συνοδεύει
   saturated fill (btn-primary / bg-success / bg-info / badge), όπου πρέπει να
   μείνει αναγνώσιμο πάνω στο fill. Αντ' αυτού, τα fills φροντίζουν μόνα τους
   το χρώμα κειμένου μέσω --egfin-on-fill. */
html.dark-style .bg-primary.text-white,
html.dark-style .btn-primary.text-white {
    color: var(--egfin-on-fill) !important;
}


/* --- Off-canvas «Επιλέξτε Φίλτρα» (.eg-oc-*) ---
   Το egritos.css γράφει literal light χρώματα (#36414c κείμενο, #b6c0cb grip,
   #f3f6f9 hover, #eaf1f8 dragover). Σε dark η επιφάνεια γίνεται --egfin-surface,
   οπότε τα labels έβγαιναν σκούρο-σε-σκούρο (αδιάβαστα) και το hover άσπραζε. */
html.dark-style .eg-oc-opt {
    color: var(--egfin-ink);
}

html.dark-style .eg-oc-opt:hover {
    background: var(--egfin-surface-alt);
}

html.dark-style .eg-oc-grip {
    color: var(--egfin-ink-4);
}

html.dark-style .eg-oc-opt.eg-oc-dragover {
    background: var(--egfin-primary-soft);
}

html.dark-style .eg-oc-search-clear {
    color: var(--egfin-ink-3);
}

html.dark-style .eg-oc-search-clear:hover {
    color: var(--egfin-ink);
}

/* Ο τίτλος ομάδας έχει saturated fill (--primary) → το κείμενο ακολουθεί το
   on-fill token αντί για literal #fff, όπως τα υπόλοιπα fills. */
html.dark-style .eg-oc-group-title {
    color: var(--egfin-on-fill);
}
