/* ============================================================
   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;
}

/* Vendor fix — .btn-outline-secondary (vendor/css/core.css:7392).
   Ο vendor δίνει `color: #fff; border-color: #fff` στη resting state — σχεδιασμένο για
   σκούρη επιφάνεια, οπότε πάνω σε φωτεινή κάρτα το κουμπί είναι ΑΟΡΑΤΟ μέχρι το hover.
   Πάσχει ΜΟΝΟ η resting state: τα :hover/:focus/:active/:disabled χρησιμοποιούν ήδη
   #a8aaae, και το core-dark.css το έχει σωστό — άρα το dark theme δεν πάσχει καθόλου.
   Γιατί `html:root` (0,2,1) και όχι σκέτο `.btn-outline-secondary` (0,1,0): ο
   template-customizer φορτώνει το core-dark.css δυναμικά ΜΕΤΑ το app.min.css, οπότε σε
   dark mode θα κέρδιζε το tie-break της σειράς (ίδιο σκεπτικό με τα --bs-* overrides πάνω).
   Token-based ⇒ το dark ακολουθεί αυτόματα μέσω egritos-dark.css.
   ΣΗΜ. Η σύμβαση του project για «Άκυρο/Ακύρωση» είναι το solid `btn-secondary` (βλ.
   Παραστατικά Δαπανών / ΧΕΠ)· αυτός ο κανόνας είναι δίκτυ ασφαλείας για τα ~37 σημεία
   που χρησιμοποιούν ακόμη την outline παραλλαγή. */
html:root .btn-outline-secondary {
    color: var(--eg-dark);
    border-color: var(--eg-gray);
    background: transparent;
}

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).
   Επίσημη λύση Telerik (KB "Sticky Grid Headers"): το Grid από μόνο του δεν έχει
   παράμετρο για sticky header — το built-in Height/scrollable mode κάνει το ΣΩΜΑ
   να σκρολάρει μέσα σε δικό του container, όχι τη σελίδα. Επειδή εδώ σκρολάρει η
   ΣΕΛΙΔΑ, χρειάζεται position:sticky + μηδενισμός των overflow/height που βάζει
   το Kendo στα wrapper elements — αλλιώς το sticky δεν «πιάνει» ποτέ.
   ⚠ Ασύμβατο με Height στο Grid (δεν ορίζουμε Height στο EgListViewer). */
.k-grid .k-grid-aria-root,
.k-grid .k-grid-container,
.k-grid .k-grid-content {
    height: auto;
}
.k-grid .k-grid-aria-root,
.k-grid .k-grid-container {
    overflow: visible;
}
/* Το .k-grid-content κρατά `overflow: auto` — ΔΕΝ γίνεται visible όπως λέει το KB.
   Χωρίς height (το μηδενίσαμε πιο πάνω) δεν γίνεται κάθετος scroll container, άρα
   δεν εγκλωβίζει το sticky· ταυτόχρονα όμως κρατά το ΟΡΙΖΟΝΤΙΟ scrollbar του grid.
   Με `visible` (κατά γράμμα KB) ο πίνακας των στηλών — πλατύτερος από τον container
   όταν δεν χωρούν οι στήλες (μετρημένο: 1320px vs 1098px) — ξεχυνόταν έξω από την
   κάρτα και το scrollbar μεταφερόταν σε ολόκληρη τη σελίδα.
   Μετρημένο στον browser: page overflow-x = false ΚΑΙ header top = 0 στο scroll. */
.k-grid .k-grid-content {
    overflow: auto;
}
.k-grid .k-grid-header {
    position: sticky;
    /* top:0 — ο navbar ΔΕΝ είναι fixed: το index.html γράφει `layout-navbar-fixed`
       στο <html>, αλλά ο template customizer το αφαιρεί κατά το runtime (μετρημένο
       στον browser: .layout-navbar → position:relative, σκρολάρει μαζί με τη σελίδα).
       Οπότε δεν υπάρχει fixed λωρίδα να αντισταθμιστεί· offset εδώ θα άφηνε κενό και
       θα έκοβε την κεφαλίδα. */
    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 μέσα σε modal (TelerikWindow) ---------------------------------
   Σε modal ΔΕΝ σκρολάρει η σελίδα αλλά το .k-window-content (έχει Height από το
   TelerikWindow + overflow:auto). Το sticky δουλεύει κανονικά ως προς αυτό, ΟΜΩΣ
   σταματά στο padding box του scroller: με padding 15px έμενε λωρίδα 15px πάνω &
   κάτω όπου φαινόταν να «περνάει» μισή γραμμή δεδομένων κάτω από την κεφαλίδα και
   πάνω από τα σύνολα. Τραβάμε τις sticky άκρες κατά το padding ώστε να ακουμπούν
   στα άκρα του παραθύρου. Το padding διαφέρει ανά modal (default 15px, egfin-modal
   16px, printing-modal 0) — γι' αυτό μέσω μεταβλητής αντί για σταθερά. */
.k-window-content {
    --eg-modal-pad: 15px;
}
.egfin-modal .k-window-content {
    --eg-modal-pad: 16px;
}
.printing-modal .k-window-content {
    --eg-modal-pad: 0px;
}
.k-window-content .k-grid .k-grid-header {
    top: calc(-1 * var(--eg-modal-pad));
}
.k-window-content .k-grid .k-grid-footer {
    bottom: calc(-1 * var(--eg-modal-pad));
}

/* Sticky footer (γραμμή συνόλων) — καρφιτσώνεται στο ΚΑΤΩ άκρο του viewport όσο
   σκρολάρει ο χρήστης, ώστε τα αθροίσματα να είναι πάντα ορατά· όταν φτάσει στο
   τέλος της σελίδας κάθεται στη φυσική του θέση (πάνω από τον pager).
   Εμφανίζεται μόνο σε λίστες με CalculateAggregates="true" — αλλιώς το Kendo
   δεν παράγει καθόλου .k-grid-footer. */
.k-grid .k-grid-footer {
    position: sticky;
    bottom: 0;
    z-index: 3;
}
.k-grid .k-grid-footer,
.k-grid .k-grid-footer td,
.k-grid .k-grid-footer .k-table-td {
    /* opaque για τον ίδιο λόγο με την κεφαλίδα: αλλιώς οι γραμμές φαίνονται από κάτω */
    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;
}

/* (το overflow του .k-grid-content ρυθμίζεται στο sticky-header block πιο πάνω) */

.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-chip-ok-border:   #cfe9e2;                     /* literal — περίγραμμα chip έγκυρων */
    --egfin-chip-warn-border: #f0d9a6;                     /* literal — περίγραμμα chip προειδοποιήσεων */
    --egfin-chip-err-border:  #f7cfcf;                     /* literal — περίγραμμα chip σφαλμάτων */
    --egfin-chip-err-ink:     #c33d3e;                     /* literal — κείμενο chip σφαλμάτων */
    /* danger «soft» κλίμακα — αντίστοιχη του --egfin-success-soft. Tokens (όχι literals)
       ώστε το egritos-dark.css να τα αντιστρέψει: literal ανοιχτό ροζ φόντο + ανοιχτό
       --egfin-ink κείμενο έκανε αδιάβαστους τους τίτλους παραβάσεων στο dark. */
    --egfin-danger-soft:      #fdecec;                     /* literal — fill (chip/icon) */
    --egfin-danger-surface:   #fdf3f3;                     /* literal — card-head bg */
    --egfin-danger-hover:     #fbeaea;                     /* literal — card-head hover */
    --egfin-danger-border:    #f0c4c4;                     /* literal — border */
    --egfin-danger-ink:       #b02a2a;                     /* literal — text on soft fill */
    --egfin-success-border:   #bfdccd;                     /* literal — border */
    --egfin-success-ink:      #2f6b48;                     /* literal — text on soft fill */
    --egfin-success-fill:     #e8f4ee;                     /* literal — chip/icon fill */
    --egfin-info-fill:        #e9f1fa;                     /* literal — chip fill */
    --egfin-info-border:      #c3d8ec;                     /* literal — border */
    --egfin-info-ink:         #2b5d8c;                     /* literal — text on soft fill */
    --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 */
    --egfin-warn-border:      #e8cf9a;   /* warning chip/banner border */
}

/* --- 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);
    /* Η κλίμακα τίτλου ενότητας ζει στο .k-card-title παρακάτω — αλλά το Telerik TileLayout
       ΔΕΝ παράγει .k-card-title όταν χρησιμοποιείται HeaderTemplate: το κείμενο μπαίνει ως
       γυμνό text node και κληρονομούσε 16px/400, δηλαδή ΜΕΓΑΛΥΤΕΡΟ από τους τίτλους των tabs
       (12.5px/600) που έχουν τον ίδιο σημασιολογικό ρόλο μετά το redesign. Ορίζεται εδώ ώστε
       να ισχύει και για HeaderTemplate και για σκέτο Title=. */
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

/* 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;
}

/* Το badge κατάστασης έβγαινε 12.15px (Bootstrap `.85em` πάνω σε 14.3px context) — μοναδικό
   κλασματικό μέγεθος στη σελίδα. Καρφώνεται στα 12px, στην ίδια βαθμίδα με τους τίτλους. */
.eg-detail-action-bar .badge {
    font-size: 12px;
}

/* Το vendor .text-dark γίνεται ΑΝΟΙΧΤΟ γκρι στο dark theme, ενώ τα bg-warning/bg-info
   μένουν ανοιχτά και στα δύο themes → contrast 1.43:1, πρακτικά δυσανάγνωστο. Καρφώνουμε
   σκούρο ink: 7.6:1 σε light ΚΑΙ dark. Αφορά και το legend της λίστας ΧΕΠ. */
.badge.bg-warning.text-dark,
.badge.bg-info.text-dark {
    color: #1b2433 !important;
}

.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;
    /* Ευθυγράμμιση γραμματοσειράς grid με τα υπόλοιπα controls/κείμενο της σελίδας:
       χωρίς αυτό το grid κληρονομεί την default Telerik theme font και φαίνεται διαφορετικό. */
    font-family: inherit;
}

.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;
}

/* Telerik grid data table: το .k-table κάνει `font-size: var(--kendo-font-size, inherit)`
   (= 16px στο bootstrap theme) και ΑΚΥΡΩΝΕΙ το 12.5px που ορίζει το .egfin-grid.k-grid στη
   ρίζα — τα κελιά κληρονομούν από το .k-table, όχι από το .k-grid.
   ⚠️ Το ΣΚΕΤΟ .k-table είναι απαραίτητο: τα grid tables βγαίνουν ΧΩΡΙΣ size class
   (`k-grid-table k-table`), οπότε ένας selector μόνο σε .k-table-{sm,md,lg} δεν πιάνει τίποτα.
   Ίδιο για το font-family: το .k-table ορίζει --kendo-font-family → system-ui.
   Οι κεφαλίδες μένουν στα 10.5px: το .egfin-grid .k-grid-header .k-header είναι πιο ειδικό. */
.egfin-grid .k-table,
.egfin-grid .k-table-sm,
.egfin-grid .k-table-md,
.egfin-grid .k-table-lg {
    font-size: 12.5px;
    font-family: inherit;
}

/* Plain hand-rolled <table> (μη-Telerik grids που τυλίγονται σε .egfin-grid) —
   full-width responsive layout· `> table` ώστε να μην επηρεάζει τα εσωτερικά
   .k-table των Telerik grids που επίσης φέρουν .egfin-grid.
   Το font-size ταιριάζει με το .egfin-grid.k-grid (12.5px) — χωρίς αυτό ο plain table
   κληρονομούσε τη βάση της σελίδας και έδειχνε αισθητά μεγαλύτερος από τα Telerik grids
   δίπλα του (φάνηκε στην προβολή «Πίνακας» των Παραστατικών του ΧΕΠ, όπου δεν υπάρχει
   πια κάρτα να δώσει context). */
.egfin-grid > table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12.5px;
}

/* Ορατές γραμμές στους plain tables. Ο κανόνας .egfin-grid tbody td παρακάτω ορίζει ΜΟΝΟ
   border-color, χωρίς width/style: τα Telerik grids φέρνουν τα δικά τους borders από το skin,
   οπότε αρκούσε — ο hand-rolled table όμως έμενε τελείως χωρίς διαχωριστικές γραμμές.
   Child selectors (`> table >`) ώστε να μην αγγίξει τα εσωτερικά .k-table των Telerik grids
   που τυλίγονται στο ίδιο .egfin-grid. */
.egfin-grid > table > thead > tr > th {
    border-bottom: 1px solid var(--egfin-border, #e4e7eb);
}

.egfin-grid > table > tbody > tr > td {
    border-bottom: 1px solid var(--egfin-border, #e4e7eb);
}

.egfin-grid > table > tbody > tr:hover > td {
    background: var(--egfin-tint-hover-alt);
}

/* Η γραμμή συνόλων ξεχωρίζει με βαρύτερο περίγραμμα, όπως το footer των Telerik grids. */
.egfin-grid > table > tfoot > tr > td {
    border-top: 2px solid var(--egfin-border, #e4e7eb);
    padding: 6px 8px;
}

/* 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;
}

/* Footer total value — δεξιά στοίχιση κάτω από τις αριθμητικές στήλες (TextAlign="Right").
   Το Telerik δεν προωθεί το column alignment στο footer cell, οπότε το κάνει block full-width. */
.egfin-grid-total {
    display: inline-block;
    width: 100%;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.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;
}

/* Ποσό-ΑΠΟΦΑΣΗΣ σε κελί grid. Το .egfin-num παραπάνω δίνει ΜΟΝΟ tabular-nums, οπότε δύο ποσά
   δίπλα-δίπλα (ένα πληροφοριακό, ένα δεσμευτικό) διαβάζονται ως ισοβαρή — ο χρήστης δεν βλέπει
   ποιο κρίνει. Τα .cl-amt / .chg-card-amt κάνουν το αντίστοιχο για list/card προβολές· αυτό είναι
   το grid ισοδύναμό τους. Χρησιμοποιούνται tokens και όχι literals, ώστε να αντιστραφούν στο dark
   theme. */
.egfin-amt-strong {
    font-family: var(--egfin-mono);
    font-variant-numeric: tabular-nums;
    font-weight: 700;
}

/* Αρνητικό ποσό. Στους pickers ενταλματοποίησης τα πιστωτικά/ανατροπές έχουν ΑΝΤΙΣΤΡΟΦΗ σημασία
   (το επιτρεπτό διάστημα του «Ενταλθέν» αντιστρέφεται), άρα δεν είναι απλώς «μικρότερο νούμερο». */
.egfin-amt-neg {
    color: var(--egfin-danger-ink);
}

/* ⚠️ Grid με select-all checkbox σε ΣΤΕΝΗ στήλη + ShowColumnMenu στο grid: το εικονίδιο του column
   menu είναι 30×30 και σε κελί 45px προσγειώνεται ΠΑΝΩ στο checkbox των 20×20 — μετρημένο,
   document.elementFromPoint στο κέντρο του checkbox επιστρέφει το <svg> του μενού. Αποτέλεσμα: το
   κλικ ΔΕΝ φτάνει ποτέ στο checkbox και το «επιλογή όλων» είναι απάτητο (το κλικ ανοίγει το μενού).
   Η στήλη επιλογής δεν έχει τι να ταξινομήσει, να φιλτράρει ή να κρύψει, οπότε το μενού αφαιρείται
   εκεί — ίδιο σκεπτικό με το ShowColumnMenu="false" της στήλης eye-icon (FRONTEND_PATTERNS § 5.4.1).
   CSS και όχι παράμετρος στο GridCheckboxColumn: το ShowColumnMenu ΔΕΝ είναι επαληθευμένο ως
   παράμετρος εκείνου του component σε αυτή την έκδοση, και μια άγνωστη παράμετρος σκοτώνει ΟΛΟ το
   grid στο render (βλ. PageSizes). */
.egfin-grid-selectall .k-grid-header th:first-child .k-grid-column-menu,
.egfin-grid-selectall .k-grid-header th:has(input[type="checkbox"]) .k-grid-column-menu {
    display: none;
}

.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-muted{background:var(--egfin-surface-alt)}
.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}
/* ΧΕΠ: λίστα ηλεκτρονικών τιμολογίων των παραστατικών (web ισοδύναμο του desktop status bar).
   Χρησιμοποιεί τα ίδια tokens με τα υπόλοιπα .egfin-einv-* ώστε να ακολουθεί και το dark theme. */
.egfin-einv-list{display:flex;flex-direction:column;gap:4px;padding:6px 12px 10px}
.egfin-einv-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px}
.egfin-einv-row .badge{text-transform:none;letter-spacing:normal;font-weight:600}
.egfin-einv-label{padding:0;text-align:left;font-size:12.5px;text-decoration:none;white-space:normal}
.egfin-einv-label:hover{text-decoration:underline}
.egfin-einv-par{margin-left:auto;font-size:11.5px;white-space:nowrap}

/* --- Παραστατικό Δαπανών: 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}
/* Κενό από την προηγούμενη ενότητα μέσα στην ίδια κάρτα. Ήταν inline style
   στο ParastatikoDapanonDetail.razor· βγήκε σε κλάση ώστε να μπορεί να το
   υπερισχύσει το Phase C (inline styles δεν υπερισχύονται από CSS). */
.rf-pack-gap{margin-top:10px}
.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 --- */
/* Focus indicator στα tabs. Το kendo βάζει `inset 0 0 0 3px` σε σκούρο 15% — βαρύ κουτί που
   διαβάζεται ως δεύτερο active state δίπλα στο accent underline του ενεργού tab. Το κρατάμε
   ορατό (keyboard a11y) αλλά λεπτότερο και σε χρώμα του skin. Καλύπτονται και :focus και
   .k-focus: το Telerik εφαρμόζει και τα δύο. */
.egfin-tabs .k-tabstrip-items-wrapper .k-tabstrip-item:focus,
.egfin-tabs .k-tabstrip-items-wrapper .k-tabstrip-item.k-focus,
.egfin-tabs .k-tabstrip-items-wrapper .k-item:focus,
.egfin-tabs .k-tabstrip-items-wrapper .k-item.k-focus {
    box-shadow: inset 0 0 0 2px var(--egfin-accent);
}

/* Ο global κανόνας `.k-tabstrip > .k-tabstrip-content { font-size: 1.2em }` (egritos.css:122)
   φούσκωνε στα 19.2px κάθε κείμενο που δεν ορίζει δικό του μέγεθος — π.χ. τα empty states
   shared controls («Δεν υπάρχουν αρχεία.»), που έβγαιναν μεγαλύτερα από κάθε τίτλο της
   σελίδας. Scoped reset στο νέο skin, στη βασική κλίμακα κειμένου. */
.egfin-tabs .k-tabstrip-content {
    font-size: 13px;
}

.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;
    /* ink-3 και ΟΧΙ ink-4: μετά το redesign το .sub φιλοξενεί το «Ολογράφως …», δηλαδή
       πραγματικό κείμενο προς ανάγνωση και όχι micro-label. Το ink-4 δίνει 2.54:1 — ανεκτό
       για ετικέτα δύο λέξεων, όχι για πρόταση. Το ink-3 δίνει 4.8:1. */
    color: var(--egfin-ink-3);
    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;
    /* Ο header ορίζει πλέον weight 600 (βλ. .egfin-card .k-tilelayout-item-header) — το pill
       είναι δευτερεύον προσδιοριστικό, δεν πρέπει να ζυγίζει όσο ο τίτλος. */
    font-weight: 400;
}

.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);
}

/* Κωδικός ΚΑ ως ενεργός σύνδεσμος («Καρτέλα Κ.Α.»). Είναι <button> για προσβασιμότητα (ενέργεια,
   όχι πλοήγηση — ανοίγει modal), αλλά όλα τα οπτικά του τα ΚΛΗΡΟΝΟΜΕΙ: μπαίνει ΔΙΠΛΑ στο
   υπάρχον .chg-ka / .cl-ka / .egfin-code, που κρατούν font/χρώμα ανά προβολή. Χωρίς το reset,
   το browser default του button θα έσπαγε και τις τρεις. */
.egfin-ka-link {
    background: none;
    border: 0;
    padding: 0;
    font: inherit;
    color: inherit;
    cursor: pointer;
    text-align: inherit;
}

.egfin-ka-link:hover,
.egfin-ka-link:focus-visible {
    text-decoration: underline;
}

/* Υπόμνημα καταστάσεων ΧΕΠ («Εξήγηση εικονιδίων»). Μία στήλη: οι ετικέτες είναι φράσεις
   («Αναμένεται Απάντηση Από Επίτροπο») και σε δύο στήλες τυλίγονταν σε 2 σειρές, αφήνοντας
   το 9ο μόνο του σε μισή σειρά. Το εικονίδιο σταθερού πλάτους στοιχίζει τα κείμενα. */
.xep-legend {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.xep-legend > li {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: var(--egfin-ink);
}

.xep-legend > li > i {
    flex: 0 0 22px;
    text-align: center;
}

/* Icon-only κουμπί ενέργειας σε γραμμή grid: το vendor .btn δίνει 14px οριζόντιο padding, που για
   εικονίδιο 16px βγάζει κουμπί ~46px — δύο τέτοια δεν χωρούν σε στήλη ενεργειών μαζί με το padding
   του κελιού και τα εικονίδια κόβονται. Το ύψος δεν αλλάζει (η γραμμή μένει στοιχισμένη). */
.egfin-icon-btn {
    padding-left: 7px;
    padding-right: 7px;
}

/* Segmented control (btn-group) με ετικέτες ανόμοιου μήκους μέσα σε στενή στήλη φόρμας.
   Χρήση: «Τύπος καταχώρησης» του ΧΕΠ (Μηχανογραφημένη / Χειρόγραφη).

   Τρία προβλήματα μαζί, μετρημένα στο runtime:
   1. Το Bootstrap δίνει ίσο flex-basis σε κάθε κουμπί, οπότε η μεγάλη ετικέτα κόβεται ενώ η μικρή
      περισσεύει χώρο → flex: 0 1 auto (πλάτος κατά το περιεχόμενο).
   2. Στο default 13px/14px-padding τα δύο κουμπιά ζητούσαν 250px, ενώ η στήλη δίνει 206px — και η
      σειρά είναι ΓΕΜΑΤΗ (3+2+3+4 = 12), άρα δεν υπάρχει χώρος να πάρει. Μικρότερο font + padding
      φέρνει το σύνολο κάτω από το διαθέσιμο, χωρίς να αλλάξουν οι ετικέτες (desktop parity).
   3. min-width: 0 ώστε, σε ακόμα στενότερη οθόνη, το flex να μπορεί να συρρικνώσει τα κουμπιά
      αντί να ξεχειλίσει το group.

   ΔΕΝ μικραίνουν οι ετικέτες: «Μηχανογραφημένη»/«Χειρόγραφη» είναι τα desktop labels. */
/* Segmented control με ΜΑΚΡΙΕΣ ελληνικές ετικέτες σε στενή κολόνα.
   ⚠️ Ο συνδυασμός `min-width: 0` + `white-space: nowrap` επιτρέπει στο κουμπί να συρρικνωθεί κάτω
   από το κείμενό του αλλά απαγορεύει το wrap ⇒ το κείμενο ΚΟΒΕΤΑΙ. Χωρίς ellipsis το κόψιμο
   μοιάζει με σφάλμα rendering: μια ετικέτα «Μηχανογραφημένη» εμφανιζόταν ως «ηχανογραφημέ» (κομμένη
   και από τις δύο άκρες, γιατί το κείμενο είναι κεντραρισμένο). Το ellipsis δεν λύνει τον χώρο —
   τον ΔΗΛΩΝΕΙ· ο χώρος λύνεται στη διάταξη (βλ. XepHeaderSection: 2 πεδία ανά γραμμή).
   Μονολεκτικές ετικέτες (π.χ. «Μηχανογραφημένη», 15 χαρακτήρες) ΔΕΝ μπορούν να κάνουν wrap, οπότε
   το nowrap δεν είναι αυτό που προκαλεί το πρόβλημα — είναι το ανεπαρκές πλάτος. */
.egfin-seg-nowrap > .btn {
    flex: 0 1 auto;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: 11.5px;
    padding-left: 6px;
    padding-right: 6px;
}

/* ═══════════════════════════════════════════════════════════════
   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 ─────────────────────────────────────────────── */

/* ═══════════════════════════════════════════════════════════════
   Phase C — Πυκνό preview (Παραστατικό Δαπανών, read-only ΜΟΝΟ)

   Opt-in via `.egfin-dense` στο root του read-only view. Σκοπός: μείωση
   ΜΟΝΟ των κατακόρυφων κενών — καμία αλλαγή σε font-size, χρώμα, borders
   ή οριζόντιο inset, ώστε η σελίδα να μένει ίδια οπτικά, απλώς πιο σφιχτή.

   ΓΙΑΤΙ scoped και όχι στα κοινά atoms: τα .egfin-card / .egfin-tabs /
   .flags / .subgroup μοιράζονται 19 detail pages (ΧΕΠ, ΕΑΔ, Αποδείξεις
   Εξόδων, Προμηθευτές, Σύμβαση, Παραστατικά Εσόδων). Αλλαγή εκεί θα
   άλλαζε την πυκνότητα και σε αυτές χωρίς έλεγχο. Όταν εγκριθεί οπτικά
   εδώ, οι ίδιες τιμές μπορούν να προαχθούν στα κοινά atoms και αυτό το
   block να διαγραφεί.
   ═══════════════════════════════════════════════════════════════ */

/* C-1. Card body: 12px → 9px πάνω / 10px κάτω (Phase P P-1 δίνει 12px) */
.egfin-dense .egfin-card .k-tilelayout-item-body {
    padding: 9px 12px 10px;
}

/* C-2. Ταινία «Γενικά»: 8px → 6px κατακόρυφα */
.egfin-dense .genstrip {
    padding: 6px 12px;
}

/* C-3. Κενό μεταξύ ενοτήτων: το mt-2 του Bootstrap (8px) → 6px.
   Απαριθμούνται ρητά οι 5 φορείς του mt-2 στο view (ParastatikoDapanonDetail.razor
   γρ. 183/249/848/1025/1268) και ΟΧΙ γενικό `.egfin-dense .mt-2`, ώστε να μη
   συρρικνωθούν mt-2 μέσα σε toolbars, alerts ή grid templates. */
.egfin-dense .egfin-card.mt-2,
.egfin-dense .row.g-2.mt-2,
.egfin-dense .egfin-tabs-section.mt-2 {
    margin-top: 6px !important;
}

/* C-4. Στοίβες πεδίων: το ROW gap πέφτει (12px → 7px), το COLUMN gap μένει
   ώστε να μη «κολλήσουν» οριζόντια τα πεδία. */
.egfin-dense .rf-wrap.l-stacked {
    gap: 7px 22px;
}
.egfin-dense .rf-pack {
    gap: 7px 28px;
}
/* Η τιμή του πεδίου: line-height 1.35 → 1.25 (κερδίζει ~1px ανά γραμμή
   × ~20 πεδία). Το font-size ΔΕΝ αλλάζει. */
.egfin-dense .l-stacked .rf .rv,
.egfin-dense .rf-pack .rf .rv {
    line-height: 1.25;
}
/* ① Το σημείο που ανέφερε ο χρήστης: Αιτιολογία → Τρόπος Πληρωμής.
   Ήταν 12px (row gap) + 10px (margin) = 22px· γίνεται 7 + 8 = 15px. */
.egfin-dense .rf-pack-gap {
    margin-top: 8px;
}

/* C-5. Ζώνες με dashed διαχωριστικό (flags, Σύμβαση): 10+9 = 19px → 7+6 = 13px.
   Τα dashed borders ΜΕΝΟΥΝ: με αυτή την πυκνότητα είναι το μόνο που κρατά
   τον διαχωρισμό των ζωνών μέσα στην κάρτα. */
.egfin-dense .flags,
.egfin-dense .subgroup {
    margin-top: 7px;
    padding-top: 6px;
}
.egfin-dense .subgroup-h {
    margin-bottom: 5px;
}

/* C-6. TabStrip (Είδη / Κρατήσεις / Συνημμένα / Σχετικά): tab link 10px → 6px.
   Το `!important` της Phase P P-2 στο .k-tabstrip-content απαιτεί ίδιο βάρος. */
.egfin-dense .egfin-tabs .k-tabstrip-items .k-link {
    padding: 6px 10px;
}
/* Το περιεχόμενο του tab δεν χρειάζεται πάνω padding: το border του tabbar
   είναι ήδη ο διαχωρισμός. Ο grid ακουμπά στη γραμμή. */
.egfin-dense .egfin-tabs .k-tabstrip-content {
    padding: 0 12px 10px !important;
}
/* Όταν το tab περιέχει grid, μηδενίζεται και το οριζόντιο inset ώστε ο
   grid να πιάνει όλο το πλάτος (ο grid έχει δικό του border). */
.egfin-dense .egfin-tabs .k-tabstrip-content > .k-grid,
.egfin-dense .egfin-tabs .k-tabstrip-content > .p-2 > .k-grid {
    margin-left: -12px;
    margin-right: -12px;
}

/* C-7. Κάρτες Κ.Α. χρέωσης: 8px → 5px/6px κατακόρυφα */
.egfin-dense .chg-card-top {
    padding: 5px 9px;
}
.egfin-dense .chg-card-body {
    padding: 6px 9px;
    gap: 3px;
}
.egfin-dense .chg-desc {
    line-height: 1.25;
}

/* C-8. Grid rows: 8px → 5px (Telerik .k-table-md δίνει 8px ανά κελί) */
.egfin-dense .egfin-grid .k-table-td,
.egfin-dense .egfin-grid td {
    padding-top: 5px;
    padding-bottom: 5px;
}

/* C-9. Totals strip: 12px → 8px, gap 3px → 1px, margin-top 8px → 6px.
   Τα font-sizes ΔΕΝ αλλάζουν — το strip είναι το τελευταίο πράγμα που
   διαβάζει ο χρήστης και τα ποσά πρέπει να μένουν εξίσου εμφανή. */
.egfin-dense .egfin-totals {
    margin-top: 6px;
}
.egfin-dense .egfin-totals .cell {
    padding: 8px 12px;
    gap: 1px;
}

/* ─── End Phase C ─────────────────────────────────────────────── */

/* --- 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;
}

/* ── Action bar σε δύο γραμμές (Κατάρτιση Π/Υ) ────────────────────────────────
   Γραμμή 1 = ενέργειες, Γραμμή 2 = φίλτρα & κατάσταση. Το ίδιο .egfin-ptree-actionbar
   κουτί, με τις δύο σειρές ως flex rows ώστε να μη «φουσκώνει» μία ατέλειωτη γραμμή. */
.egfin-ptree-actionbar.egfin-ptree-actionbar-stacked {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: 0;
}

.egfin-ptree-actionbar-row {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 7px 10px;
}

/* Λεπτός διαχωριστής μεταξύ των δύο σειρών — ίδιο token με το κάθετο .egfin-ptree-sep. */
.egfin-ptree-actionbar-row + .egfin-ptree-actionbar-row {
    border-top: 1px solid var(--egfin-border, #e4e7eb);
}

/* Η σειρά φίλτρων είναι δευτερεύουσα: διακριτικά πιο ήπιο φόντο ώστε το μάτι να
   πηγαίνει πρώτα στις ενέργειες. */
.egfin-ptree-actionbar-row.is-filters {
    background: var(--egfin-surface-alt, #fafbfc);
    border-bottom-left-radius: var(--egfin-radius, 8px);
    border-bottom-right-radius: var(--egfin-radius, 8px);
}

/* Badge οριστικοποίησης στο action bar — διακριτικό, ίδιο pill idiom με τα
   .egfin-ptree-dirty-chip / .egfin-ptree-etos. Tokens (όχι literals) για dark theme. */
.egfin-ptree-final-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 11.5px;
    font-weight: 700;
    background: var(--egfin-tint-warn);
    color: var(--egfin-warn-ink);
    border: 1px solid var(--egfin-warn-ink);
    padding: 2px 10px;
    border-radius: 999px;
    white-space: nowrap;
}

.egfin-ptree-final-chip-note {
    font-family: var(--egfin-mono, ui-monospace, monospace);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .03em;
    padding: 0 5px;
    border-radius: 999px;
    background: var(--egfin-warn-ink);
    color: var(--egfin-tint-warn);
}

.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);
}

/* ═══════════════════════════════════════════════════════════════
   ΕΓΛΣ — panel αρχικοποίησης κενού σχεδίου ΚΑ (egfin-egls-*)
   Pages/Proypologismos/EglsEmptyBudgetPanel.razor
   ═══════════════════════════════════════════════════════════════ */
.egfin-egls-empty {
    max-width: 900px;
    margin: 20px auto;
    padding: 20px;
}

/* ── κεφαλίδα ─────────────────────────────────────────────── */
.egfin-egls-head {
    text-align: center;
    margin-bottom: 22px;
}

.egfin-egls-head-icon {
    width: 42px;
    height: 42px;
    margin: 0 auto 10px;
    border-radius: 10px;
    background: var(--egfin-accent-soft);
    color: var(--egfin-accent);
    font-size: 17px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.egfin-egls-head-title {
    font-size: 16px;
    font-weight: 600;
    color: var(--egfin-ink);
}

.egfin-egls-head-sub {
    font-size: 12.5px;
    color: var(--egfin-ink-3);
    max-width: 560px;
    margin: 4px auto 0;
    text-wrap: pretty;
}

/* ── grid καρτών ──────────────────────────────────────────── */
.egfin-egls-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 16px;
}

.egfin-egls-card {
    height: 100%;
}

.egfin-egls-card .card-body {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 12px;
}

/* Η προτεινόμενη διαδρομή — accent border, όχι ξεθώριασμα της άλλης. */
.egfin-egls-card-lead {
    border-left: 4px solid var(--egfin-accent);
}

.egfin-egls-card-head {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 5px;
}

.egfin-egls-card-icon {
    color: var(--egfin-accent);
}

.egfin-egls-card-icon-muted {
    color: var(--egfin-ink-4);
}

.egfin-egls-card-title {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
}

.egfin-egls-badge {
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    background: #e3f1f1;
    color: var(--egfin-success);
    padding: 2px 8px;
    border-radius: 999px;
}

.egfin-egls-card-text {
    color: var(--egfin-ink-3);
    font-size: 12.5px;
    margin: 0;
}

/* ── αριθμημένα βήματα ────────────────────────────────────── */
.egfin-egls-steps {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.egfin-egls-step {
    display: flex;
    gap: 10px;
    align-items: flex-start;
}

.egfin-egls-step-no {
    width: 20px;
    height: 20px;
    flex: none;
    border-radius: 999px;
    background: var(--egfin-tint-hover-alt);
    color: var(--egfin-ink-2);
    font-size: 11px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
}

.egfin-egls-step-body {
    flex: 1;
    min-width: 0;
}

.egfin-egls-step-text {
    font-size: 12.5px;
    color: var(--egfin-ink-2);
    margin-bottom: 7px;
}

/* ── ζώνη drag & drop ─────────────────────────────────────── */
.egfin-egls-drop {
    position: relative;
    border: 1.5px dashed var(--egfin-border-strong);
    border-radius: var(--egfin-radius);
    background: var(--egfin-surface-alt);
    padding: 18px 12px;
    text-align: center;
    transition: border-color .15s, background-color .15s;
}

.egfin-egls-drop:hover,
.egfin-egls-drop-over {
    border-color: var(--egfin-accent);
    background: var(--egfin-accent-soft);
}

.egfin-egls-drop-busy {
    opacity: .6;
}

/* Καλύπτει ΟΛΗ τη ζώνη: δέχεται το drop και ανοίγει τον επιλογέα με κλικ οπουδήποτε. */
.egfin-egls-drop-input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}

.egfin-egls-drop-input:disabled {
    cursor: default;
}

.egfin-egls-drop-inner {
    pointer-events: none;
}

.egfin-egls-drop-icon {
    display: block;
    font-size: 22px;
    color: var(--egfin-ink-4);
    margin-bottom: 6px;
}

.egfin-egls-drop-main {
    font-size: 13px;
    color: var(--egfin-ink-2);
}

.egfin-egls-drop-file {
    font-weight: 600;
    word-break: break-all;
}

.egfin-egls-drop-sub {
    font-size: 12px;
    color: var(--egfin-ink-3);
    margin-top: 2px;
}

.egfin-egls-drop-link {
    color: var(--egfin-link);
    text-decoration: underline;
}

/* ── πλαίσιο στοιχείων (κάρτα ΕΓΛΣ) ───────────────────────── */
.egfin-egls-facts {
    padding: 11px 13px;
    background: var(--egfin-surface-alt);
    border: 1px solid var(--egfin-border);
    border-radius: var(--egfin-radius-sm);
}

.egfin-egls-fact {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    font-size: 12.5px;
    color: var(--egfin-ink-3);
}

.egfin-egls-fact + .egfin-egls-fact {
    margin-top: 4px;
}

.egfin-egls-fact-num {
    font-family: var(--egfin-mono);
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    color: var(--egfin-ink-2);
}

.egfin-egls-fact-val {
    font-weight: 600;
    color: var(--egfin-ink-2);
}

/* ── note όταν δεν υπάρχει προηγούμενη χρήση ──────────────── */
.egfin-egls-note {
    margin-top: auto;
    display: flex;
    gap: 10px;
    padding: 12px 14px;
    background: var(--egfin-surface-alt);
    border: 1px solid var(--egfin-border);
    border-radius: var(--egfin-radius);
    font-size: 12px;
    color: var(--egfin-ink-3);
    line-height: 1.55;
}

.egfin-egls-note i {
    font-size: 13px;
    color: var(--egfin-ink-4);
    margin-top: 2px;
}

/* ── κατάσταση ελέγχου (dry-run) ──────────────────────────── */
.egfin-egls-review .card-body {
    gap: 14px;
}

.egfin-egls-file {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.egfin-egls-file-icon {
    font-size: 15px;
    color: var(--egfin-success);
}

.egfin-egls-file-name {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    word-break: break-all;
}

.egfin-egls-file-meta {
    font-size: 12px;
    color: var(--egfin-ink-3);
}

.egfin-egls-file-btn {
    margin-left: auto;
}

.egfin-egls-chips {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.egfin-egls-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    padding: 4px 10px;
    border-radius: 999px;
    border: 1px solid transparent;
}

.egfin-egls-chip-ok {
    background: var(--egfin-success-soft);
    color: var(--egfin-success);
    border-color: var(--egfin-chip-ok-border);
}

.egfin-egls-chip-warn {
    background: var(--egfin-tint-warn);
    color: var(--egfin-warn-ink);
    border-color: var(--egfin-chip-warn-border);
}

.egfin-egls-chip-err {
    background: var(--egfin-tint-invalid);
    color: var(--egfin-chip-err-ink);
    border-color: var(--egfin-chip-err-border);
}

/* Ο πίνακας μπορεί να έχει δεκάδες γραμμές: scroll μέσα του, όχι στη σελίδα. */
.egfin-egls-findings {
    border: 1px solid var(--egfin-border);
    border-radius: var(--egfin-radius-sm);
    overflow: auto;
    max-height: 320px;
}

.egfin-egls-findings table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12.5px;
}

.egfin-egls-findings th {
    position: sticky;
    top: 0;
    text-align: left;
    padding: 7px 10px;
    background: var(--egfin-surface-alt);
    border-bottom: 1px solid var(--egfin-border);
    font-size: 10.5px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--egfin-ink-4);
    white-space: nowrap;
}

.egfin-egls-findings td {
    padding: 7px 10px;
    border-bottom: 1px solid var(--egfin-border);
    vertical-align: top;
}

.egfin-egls-mono {
    font-family: var(--egfin-mono);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.egfin-egls-dim {
    color: var(--egfin-ink-3);
}

.egfin-egls-ka-err {
    color: var(--egfin-danger);
}

.egfin-egls-row-err {
    background: var(--egfin-tint-invalid);
}

.egfin-egls-sep {
    height: 1px;
    background: var(--egfin-border);
}

.egfin-egls-review-actions {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.egfin-egls-summary {
    flex: 1;
    min-width: 240px;
    font-size: 12.5px;
    color: var(--egfin-ink-3);
    text-wrap: pretty;
}

.egfin-egls-summary strong {
    color: var(--egfin-ink);
}

/* ── κατάσταση δημιουργίας ─────────────────────────────────── */
.egfin-egls-prog-title {
    font-size: 13.5px;
    font-weight: 600;
    margin-bottom: 7px;
}

.egfin-egls-prog {
    height: 6px;
    border-radius: 999px;
    background: var(--egfin-tint-hover-alt);
    overflow: hidden;
}

/* Indeterminate: δεν γνωρίζουμε ποσοστό και δεν το εφευρίσκουμε. */
.egfin-egls-prog-fill {
    height: 100%;
    width: 40%;
    border-radius: 999px;
    background: var(--egfin-primary);
    animation: egfin-egls-slide 1.2s ease-in-out infinite;
}

@keyframes egfin-egls-slide {
    0%   { margin-left: -40%; }
    100% { margin-left: 100%; }
}

.egfin-egls-prog-sub {
    font-size: 12px;
    color: var(--egfin-ink-4);
    margin-top: 7px;
}

.egfin-egls-stages {
    padding: 12px 14px;
    background: var(--egfin-surface-alt);
    border: 1px solid var(--egfin-border);
    border-radius: var(--egfin-radius-sm);
    display: flex;
    flex-direction: column;
    gap: 7px;
}

.egfin-egls-stage {
    display: flex;
    align-items: center;
    gap: 9px;
    font-size: 12.5px;
}

.egfin-egls-stage-done {
    color: var(--egfin-success);
}

.egfin-egls-stage-now {
    color: var(--egfin-ink);
    font-weight: 600;
}

@media (prefers-reduced-motion: reduce) {
    .egfin-egls-prog-fill {
        animation: none;
        width: 100%;
    }
}

/* Το θέμα (vendor/css/core.css) ορίζει .btn-outline-secondary με color:#fff και
   border-color:#fff — φτιαγμένο για σκούρα φόντα όπως το navbar. Πάνω σε λευκή κάρτα το
   κουμπί είναι ΑΟΡΑΤΟ μέχρι το hover, που το γεμίζει. Διόρθωση με εμβέλεια στο panel:
   δεν αγγίζουμε τα υπόλοιπα σημεία που ίσως βασίζονται στο λευκό. */
.egfin-egls-empty .btn-outline-secondary {
    color: var(--egfin-ink-2);
    border-color: var(--egfin-border-strong);
}

.egfin-egls-empty .btn-outline-secondary:hover,
.egfin-egls-empty .btn-outline-secondary:focus,
.egfin-egls-empty .btn-outline-secondary:active {
    color: var(--egfin-ink);
    border-color: var(--egfin-ink-4);
    background: var(--egfin-tint-hover-alt);
}

.egfin-egls-card-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: auto;
}

/* Το 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-finalized {
    display: flex;
    align-items: flex-start;
    gap: 2px;
    margin-bottom: 10px;
    padding: 7px 10px;
    border: 1px solid var(--egfin-warn-ink);
    border-left-width: 3px;
    border-radius: 5px;
    background: var(--egfin-tint-warn);
    font-size: 11.5px;
    line-height: 1.45;
    color: var(--egfin-warn-ink);
}

.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;
}

/* Ισοσκελισμός συνόλων Εσόδων/Δαπανών — desktop KatartisiEsodonForm.vb:2256-2321
   (Green/Blue/Red). Μόνο χρώμα κειμένου όπως η desktop, χωρίς fill: τα σύνολα είναι
   έντονα και δεξιά-στοιχισμένα, ένα background θα τα έκανε να «χοροπηδούν». Tokens
   (όχι literals) ώστε να αντιστραφούν σωστά στο dark theme. */
.egfin-pkat-foot.egfin-pkat-foot-over {
    color: var(--egfin-success-ink);
}

.egfin-pkat-foot.egfin-pkat-foot-even {
    color: var(--egfin-info-ink);
}

.egfin-pkat-foot.egfin-pkat-foot-under {
    color: var(--egfin-danger-ink);
}

/* υπόδειξη μέσα σε 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;
}

/* Δέντρο ΚΑ με επιλογή μόνο κινούμενων (AllowEpilogiMiKinoumenonKA=false, Ehelp 411928).
   Το Telerik 13.3 δεν έχει CheckBoxOnlyOnLeaves, οπότε κρύβουμε το checkbox στους κόμβους με
   παιδιά — το aria-expanded μπαίνει ΜΟΝΟ σε αυτούς, άρα διακρίνει αξιόπιστα πατέρα από φύλλο. */
.egfin-katree-leaf-only .k-treeview-item[aria-expanded] > .k-treeview-item-content > .k-checkbox-wrap {
    visibility: hidden;
    pointer-events: none;
}

.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: var(--egfin-success-fill);
    color: var(--egfin-success-ink);
    border: 1px solid var(--egfin-success-border);
}

.egfin-pkat-balchip.zero {
    background: var(--egfin-info-fill);
    color: var(--egfin-info-ink);
    border: 1px solid var(--egfin-info-border);
}

.egfin-pkat-balchip.neg {
    background: var(--egfin-danger-soft);
    color: var(--egfin-danger-ink);
    border: 1px solid var(--egfin-danger-border);
}

/* 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: var(--egfin-success-fill);
    color: var(--egfin-success-ink);
    border: 1px solid var(--egfin-success-border);
}

.egfin-pkat-elx-chip.fail {
    background: var(--egfin-danger-soft);
    color: var(--egfin-danger-ink);
    border: 1px solid var(--egfin-danger-border);
}

.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: var(--egfin-danger-border);
    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: var(--egfin-danger-surface);
}

.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: var(--egfin-danger-hover);
}

.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: var(--egfin-success-fill);
    color: var(--egfin-success-ink);
}

.egfin-pkat-elx-card.fail .egfin-pkat-elx-ico {
    background: var(--egfin-danger-soft);
    color: var(--egfin-danger-ink);
}

.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 var(--egfin-border, #e4e7eb);
    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;
}

/* Ehelp 668721 — modal «Μεταφορά νέων Κ.Α. από το προηγούμενο έτος» */
.egfin-pkat-mtf {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.egfin-pkat-mtf-intro {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    padding: 10px 12px;
    border-radius: 6px;
    background: var(--egfin-info-fill);
    border: 1px solid var(--egfin-info-border);
    color: var(--egfin-info-ink);
    font-size: 12.5px;
    line-height: 1.5;
}

.egfin-pkat-mtf-intro.done {
    background: var(--egfin-success-fill);
    border-color: var(--egfin-success-border);
    color: var(--egfin-success-ink);
}

.egfin-pkat-mtf-intro.warn {
    background: var(--egfin-tint-warn);
    border-color: var(--egfin-warn-border);
    color: var(--egfin-warn-ink);
}

/* Γραμμή ΚΑ που θα μπει εκτός δέντρου — διακριτικό warning tint, ώστε να ξεχωρίζει
   στον πίνακα χωρίς να «φωνάζει» (η μεταφορά είναι έγκυρη, απλώς θέλει διόρθωση μετά). */
.egfin-pkat-elx-tbl tbody tr.is-orphan td,
.egfin-pkat-elx-tbl tbody tr.is-orphan:nth-child(even) td {
    background: var(--egfin-tint-warn);
}

.egfin-pkat-mtf-warn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: var(--egfin-warn-ink);
    font-weight: 600;
    white-space: nowrap;
}

.egfin-pkat-mtf-ok {
    color: var(--egfin-success-ink);
}

.egfin-pkat-mtf-intro > i {
    margin-top: 2px;
    flex: 0 0 auto;
}

.egfin-pkat-mtf-note {
    margin-top: 6px;
    font-size: 11.5px;
    opacity: .9;
}

.egfin-pkat-mtf-busy {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 2px;
    font-size: 12.5px;
    color: var(--egfin-ink-3, #6b7280);
}

.egfin-pkat-mtf-grphead {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0 2px 5px;
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--egfin-ink-3, #6b7280);
}

.egfin-pkat-mtf-cnt {
    padding: 1px 7px;
    border-radius: 9px;
    background: var(--egfin-surface-alt, #fafbfc);
    border: 1px solid var(--egfin-border, #e4e7eb);
    color: var(--egfin-ink-2, #4a5568);
    font-size: 11px;
    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;
}

/* Ίδιο πατρόν με τον loader της Κατάρτισης (.egfin-pkat-loading): η φόρτωση είναι αισθητή
   (4.400+ ΚΑ Εσόδων & Δαπανών μέσω των Proypol_Ka*Taxinomiseis), οπότε ρητή κεντραρισμένη
   ένδειξη αντί για διακριτικό inline spinner. */
.egfin-tamk-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 48px 12px;
    color: var(--egfin-ink-2, #4a5568);
}

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

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

/* Επεξήγηση σκοπού στην καρτέλα Κανόνων (desktop lblTitle) */
.egfin-tamk-hint {
    font-size: 12px;
    color: var(--egfin-ink-3, #6b7280);
    white-space: nowrap;
}

/* Σύνοψη αποτελεσμάτων ελέγχου (desktop lblStatus) */
.egfin-tamk-status {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    color: var(--egfin-ink-2, #374151);
    /* Το μεγάλο κείμενο συρρικνώνεται πριν σπάσει γραμμή το κουμπί Ανανέωσης */
    flex: 1 1 auto;
    min-width: 0;
    justify-content: flex-end;
    text-align: right;
}

/* ---- Εικονικοί ΚΑ (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);
}


/* ============================================================
   SIDEBAR: scroller του μενού + καρφωμένο footer + έτος χρήσης
   ------------------------------------------------------------
   Το footer μετακόμισε από το .content-wrapper στο κάτω μέρος του
   #layout-menu, ώστε ο χώρος της σελίδας να μένει ολόκληρος για το
   περιεχόμενο. Το <aside> είναι ήδη flex column (vendor .menu-vertical),
   οπότε το μενού γίνεται ο scroller και το footer μένει σταθερό.
   ============================================================ */

/* ⚠️ ΤΟ ΚΛΕΙΔΙ: το sidebar πρέπει να έχει ΟΡΟΦΟ στο ύψος του viewport.
   Ο vendor δίνει `.layout-menu { flex: 1 0 auto }` (core.css:18719-18722) —
   flex-shrink: 0, δηλαδή το <aside> ΜΕΓΑΛΩΝΕΙ με το περιεχόμενό του και
   ΔΕΝ ξαναμαζεύει. Μαζί με `.layout-container { min-height: 100vh }`
   (core.css:18420 — MIN, όχι max) και `.layout-menu .menu-vertical
   { height: 100% }` (core.css:18729), το 100% υπολογίζεται πάνω σε γονέα
   που έχει ΗΔΗ μεγαλώσει.

   Συνέπεια χωρίς αυτό: ανοίγεις μεγάλη ομάδα → το aside ξεπερνά την οθόνη
   → το footer φεύγει κάτω από το viewport και η μπάρα κύλισης του μενού
   ΜΕΝΕΙ ακόμη κι όταν κλείσεις την ομάδα (το aside δεν συρρικνώνεται πίσω).
   Με το cap, ο scroller συρρικνώνεται και η μπάρα εξαφανίζεται μόνη της. */
#layout-menu.layout-menu {
    flex-shrink: 1;
    height: 100vh;
    max-height: 100vh;
    overflow: hidden;
}

/* Ο vendor δίνει στο .menu-inner `height: 100%` (core.css:17879). Με ένα
   δεύτερο flex παιδί (το footer) από κάτω, το 100% το σπρώχνει εκτός
   οθόνης. Το min-height: 0 είναι ΥΠΟΧΡΕΩΤΙΚΟ: χωρίς αυτό ένα flex item
   δεν συμπιέζεται κάτω από το ύψος του περιεχομένου του. */
#layout-menu .menu-inner {
    flex: 1 1 auto;
    min-height: 0;
    height: auto;
    overflow-y: auto;
    /* Καμία οριζόντια μπάρα στο μενού: τα .menu-item έχουν σταθερό
       width: 16.25rem (260px) από τον vendor, αλλά η κατακόρυφη μπάρα
       τρώει ~17px από το content box → 17px overhang σε ΚΑΘΕ γραμμή.
       Γι' αυτό τα κάνουμε 100% του container (παρακάτω) και κρύβουμε
       ό,τι περισσεύει. */
    overflow-x: hidden;
    /* Κρατά δεσμευμένο τον χώρο της μπάρας ώστε να μην «πηδάει» το
       πλάτος όταν εμφανίζεται/κρύβεται (άνοιγμα/κλείσιμο ομάδας). */
    scrollbar-gutter: stable;
}

/* Γραμμές πλήρους πλάτους ΩΣ ΠΡΟΣ ΤΟΝ SCROLLER, όχι σταθερά 260px.
   ΠΡΟΣΟΧΗ: `width: auto` ΔΕΝ δουλεύει — τα items μαζεύουν στο πλάτος
   του κειμένου (μετρημένο: 138px) και το scrollWidth ΜΕΓΑΛΩΝΕΙ. */
#layout-menu .menu-inner > .menu-item,
#layout-menu .menu-inner > .menu-header,
#layout-menu .menu-inner .menu-sub {
    width: 100%;
}

/* --- Έτος χρήσης ως υπότιτλος του brand (αντί για αιωρούμενο pill) ---
   Το παλιό `btn btn-secondary rounded-pill` έβγαινε γκρι rgb(168,170,174)
   στη dark παλέτα (--eg-info), δηλ. εκτός brand, και δεν έλεγε πουθενά
   ΤΙ είναι το «2026». Τώρα κάθεται κάτω από τον τίτλο, χωρίς να προσθέτει
   ύψος στη λίστα του μενού. */
.app-brand.demo {
    /* Ο vendor το έχει align-items: center για μία γραμμή· με τον υπότιτλο
       το logo πρέπει να ευθυγραμμιστεί με την κορυφή του κειμένου. */
    align-items: flex-start;
    /* Το κενό logo→κείμενο: το έδινε το margin-left του .app-brand-text, που
       τώρα μηδενίζεται ώστε τίτλος και υπότιτλος να ξεκινούν στην ίδια στήλη. */
    gap: 0.625rem;
    padding-top: 1rem;
    padding-bottom: 0.35rem;
}

.app-brand.demo .app-brand-link {
    align-items: flex-start;
}

/* Η στήλη κειμένου του brand: τίτλος πάνω, «Χρήση» από κάτω.
   Το min-width: 0 επιτρέπει στο ellipsis του τίτλου να δουλέψει. */
.eg-brand-stack {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: 0;
}

/* ⚠️ Η ευθυγράμμιση τίτλου/υποτίτλου κρίνεται ΕΔΩ.
   Ο vendor δίνει `.app-brand-text { margin-left: 0.625rem !important }`
   (core.css:19214). Ένα σκέτο `.eg-brand-title { margin-left: 0 !important }`
   ΔΕΝ αρκεί: και τα δύο είναι !important με ΙΔΙΑ specificity (0,1,0), οπότε
   κερδίζει όποιο φορτώνει τελευταίο — δηλαδή ο vendor. Αποτέλεσμα: ο τίτλος
   κρατούσε 10px margin, ο υπότιτλος 0 → μη ευθυγραμμισμένα (το ξαναφτιάχνουμε).
   Το `#layout-menu` ανεβάζει τη specificity σε (1,1,0) και κερδίζει σταθερά,
   ανεξάρτητα από σειρά φόρτωσης. Το κενό logo→κείμενο το δίνει πλέον το
   `gap` του .app-brand. */
#layout-menu .app-brand .eg-brand-title {
    line-height: 1.15;
    margin-left: 0 !important;
    color: inherit;
    text-decoration: none;
}

#layout-menu .app-brand .eg-brand-title:hover,
#layout-menu .app-brand .eg-brand-title:focus {
    color: inherit;
    text-decoration: none;
}

.eg-brand-etos {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.2;
    color: var(--eg-secondary);
    cursor: pointer;
}

.eg-brand-etos:hover,
.eg-brand-etos:focus-visible {
    color: var(--eg-primary-hover);
}

.eg-brand-etos-label {
    font-weight: 500;
    opacity: 0.85;
}

.eg-brand-etos-value {
    font-variant-numeric: tabular-nums;
}

.eg-brand-etos-caret {
    font-size: 0.6em;
    opacity: 0.75;
}

/* Χρήση καθορισμένη από query string (?EtosId=) — δεν την διάλεξε ο
   χρήστης. Κρατάμε την ένδειξη του παλιού btn-warning ως χρώμα + κλειδαριά. */
.eg-brand-etos-locked {
    color: var(--eg-warning);
}

.eg-brand-etos-locked:hover,
.eg-brand-etos-locked:focus-visible {
    color: var(--eg-orange);
}

.eg-brand-etos-lock {
    font-size: 0.75em;
}

/* Στο semi-dark sidebar το κείμενο είναι light-on-dark, οπότε τα brand
   μπλε δεν έχουν αντίθεση — φωτίζουμε. */
.bg-menu-theme .eg-brand-etos {
    color: rgba(255, 255, 255, 0.72);
}

.bg-menu-theme .eg-brand-etos:hover,
.bg-menu-theme .eg-brand-etos:focus-visible {
    color: #fff;
}

.bg-menu-theme .eg-brand-etos-locked {
    color: var(--eg-warning);
}

/* Collapsed sidebar (260px → 5.25rem): μένει μόνο το logo.
   ⚠ Ο vendor κρύβει τον τίτλο με τον selector `.app-brand-logo ~ .app-brand-text`
   (core.css:19269) — ΑΔΕΡΦΙΚΟΣ. Ο τίτλος ζει τώρα μέσα στο .eg-brand-stack, οπότε
   ο vendor selector ΔΕΝ τον φτάνει πια: κρύβουμε ρητά όλη τη στήλη. */
@media (min-width: 1200px) {
    .layout-menu-collapsed:not(.layout-menu-hover):not(.layout-menu-offcanvas):not(.layout-menu-fixed-offcanvas) .layout-menu .eg-brand-stack {
        overflow: hidden;
        white-space: nowrap;
        opacity: 0;
        pointer-events: none;
    }
}

/* --- Καρφωμένο footer στη βάση του sidebar --- */
.eg-sidebar-footer {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.7rem 1rem 0.6rem;
    background-color: rgba(0, 0, 0, 0.16);
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.eg-sidebar-footer-badge {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 0.375rem;
    background-color: rgba(255, 255, 255, 0.1);
    color: #67def0;
    font-size: 0.875rem;
}

.eg-sidebar-footer-body {
    min-width: 0;
    flex: 1 1 auto;
}

/* Το όνομα του οργανισμού: μία γραμμή με ellipsis — τα ονόματα δήμων
   ξεπερνούν εύκολα τα 260px («Δήμος Αγίου Νικολάου Κρήτης»).
   Το πλήρες όνομα μένει στο title attribute. */
.eg-sidebar-footer-org {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #fff;
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.25;
}

/* Στοίβα, όχι σειρά: η πλήρης έκδοση («v. 10.0.26252.56692») μαζί με το
   «ΕΓΚΡΙΤΟΣ GROUP» ξεπερνά το πλάτος του sidebar και τύλιγε άσχημα. */
.eg-sidebar-footer-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    margin-top: 0.1rem;
    font-size: 0.6875rem;
    line-height: 1.35;
    min-width: 0;
}

.eg-sidebar-footer-version {
    color: rgba(255, 255, 255, 0.5);
    font-variant-numeric: tabular-nums;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Χωρίς το override, ο vendor δίνει --bs-link-color (μπλε) — αόρατο εδώ. */
.eg-sidebar-footer-link,
.eg-sidebar-footer-link:hover,
.eg-sidebar-footer-link:focus {
    color: rgba(255, 255, 255, 0.5);
    font-weight: 500;
    text-decoration: none;
}

.eg-sidebar-footer-link:hover,
.eg-sidebar-footer-link:focus {
    color: rgba(255, 255, 255, 0.78);
}

/* Collapsed sidebar: μένει μόνο το εικονίδιο, κεντραρισμένο. */
@media (min-width: 1200px) {
    .layout-menu-collapsed:not(.layout-menu-hover):not(.layout-menu-offcanvas):not(.layout-menu-fixed-offcanvas) .layout-menu .eg-sidebar-footer {
        justify-content: center;
        padding-left: 0.5rem;
        padding-right: 0.5rem;
    }

    .layout-menu-collapsed:not(.layout-menu-hover):not(.layout-menu-offcanvas):not(.layout-menu-fixed-offcanvas) .layout-menu .eg-sidebar-footer-body {
        display: none;
    }
}

/* Λωρίδα επιλεγμένων γραμμών (EgListViewer, multiselect λίστες).
   Φαίνεται μόνο όταν υπάρχει ενεργή επιλογή — βλ. IsStickySelectionEnabled/StickySelectionCount. */
.eg-selection-bar {
    padding: 0.375rem 0.75rem;
    border: 1px solid var(--eg-primary);
    border-left-width: 3px;
    border-radius: 0.375rem;
    background-color: rgba(30, 53, 72, 0.06);
    font-size: 0.875rem;
}
/* ═══════════════════════════════════════════════════════════════════════════════
   Σχόλια οντοτήτων (EgSxolia) — ροή σχολίων. Δεν επαναχρησιμοποιεί τα .rf-wrap/.chg-*:
   εκείνα είναι για ζεύγη ετικέτα-τιμή σταθερού πλάτους, ενώ εδώ το κείμενο είναι ελεύθερης
   ροής με διατήρηση αλλαγών γραμμής.
   ═══════════════════════════════════════════════════════════════════════════════ */
.eg-sxolia-list {
    border: 1px solid var(--egfin-border);
    border-radius: 4px;
    max-height: 320px;
    overflow-y: auto;
}

.eg-sxolia-item {
    padding: 7px 10px;
    border-bottom: 1px solid var(--egfin-border);
}

.eg-sxolia-item:last-child {
    border-bottom: none;
}

/* Το σχόλιο που επεξεργάζεται ο χρήστης, ώστε να είναι προφανές ΠΟΙΟ γεμίζει τον composer. */
.eg-sxolia-item.is-editing {
    background: var(--egfin-surface-alt);
    box-shadow: inset 3px 0 0 var(--egfin-accent);
}

.eg-sxolia-head {
    display: flex;
    align-items: baseline;
    gap: 8px;
    font-size: 11.5px;
    color: var(--egfin-ink-3);
}

.eg-sxolia-author {
    font-weight: 600;
    color: var(--egfin-ink-2);
}

.eg-sxolia-date {
    font-variant-numeric: tabular-nums;
}

.eg-sxolia-edited {
    font-style: italic;
    color: var(--egfin-ink-4);
}

.eg-sxolia-actions {
    margin-left: auto;
    white-space: nowrap;
}

/* Εικονίδια ενεργειών: btn-link χωρίς το underline/padding του Bootstrap, ώστε να μη
   μεγαλώνουν τη γραμμή της κεφαλίδας. */
.eg-sxolia-icon {
    padding: 0 4px;
    text-decoration: none;
    line-height: 1;
    vertical-align: baseline;
}

.eg-sxolia-icon:hover {
    text-decoration: none;
}

/* pre-wrap: τα σχόλια γράφονται σε textarea και οι αλλαγές γραμμής είναι περιεχόμενο. */
.eg-sxolia-text {
    font-size: 13px;
    color: var(--egfin-ink);
    white-space: pre-wrap;
    word-break: break-word;
    margin-top: 2px;
}

.eg-sxolia-composer {
    margin-top: 8px;
}

.eg-sxolia-composer .k-textarea {
    width: 100%;
}

.eg-sxolia-composer-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 6px;
}

/* Ο μετρητής μπαίνει αριστερά και τα κουμπιά σπρώχνονται δεξιά. */
.eg-sxolia-counter {
    margin-right: auto;
    font-size: 11px;
    color: var(--egfin-ink-3);
    font-variant-numeric: tabular-nums;
}

.eg-sxolia-counter.is-over {
    color: var(--bs-danger, #dc3545);
    font-weight: 600;
}


/* ─────────────────────────────────────────────────────────────────────────────
   Toast με πολλές γραμμές (λίστα προς διόρθωση)
   ─────────────────────────────────────────────────────────────────────────────
   Μηνύματα του server που κουβαλούν ΛΙΣΤΑ (π.χ. ΚΗΜΔΗΣ validations 2 και 5 —
   «παραστατικά χωρίς πρωτογενές αίτημα», «συναλλασσόμενοι χωρίς πόλη») ενώνουν
   τις γραμμές με Environment.NewLine στον backend mapper και πρέπει να φτάνουν
   στο toast ΑΥΤΟΛΕΞΕΙ, ίδια με τη desktop (δεσμευτική απαίτηση του spec §4.2).
   Ο HTML render όμως καταρρέει τα \r\n σε μία συνεχή γραμμή.

   Η διόρθωση γίνεται ΕΔΩ, στο σημείο εμφάνισης, και ΟΧΙ στον mapper: το
   `pre-line` εμφανίζει τις αλλαγές γραμμής ως πραγματικές, χωρίς να πειραχτεί
   ούτε ένας χαρακτήρας του μηνύματος του server. Προτιμάται από μετατροπή σε
   <br> γιατί τα μηνύματα περιέχουν δεδομένα χρήστη (επωνυμίες συναλλασσομένων,
   περιγραφές παραστατικών) — καμία σύνθεση HTML, καμία πιθανότητα injection.
   Το wrapping παραμένει (το `pre-line` σπάει κανονικά σε overflow, σε αντίθεση
   με το `pre`), άρα τα μονόγραμμα toasts δεν αλλάζουν συμπεριφορά.

   `.toast-message` = το default MessageClass του Sotsera.Blazor.Toaster. Το
   app.min.css φορτώνεται ΜΕΤΑ το _content/Sotsera.Blazor.Toaster/toastr.min.css
   (index.html:63-64), άρα με ίδια specificity ο override περνά. */
.toast-message {
    white-space: pre-line;
}

/* ── Grid με ομαδοποίηση εξ ορισμού (picker ενταλματοποίησης) ──────────────────────
   Κρύβει τη ζώνη «drag a column header here to group» της Telerik.

   ⚠️ ΓΙΑΤΙ CSS και όχι παράμετρος: το `<GridGroupableSettings Visible="false" />`
   που θα φαινόταν το προφανές ΔΕΝ ΥΠΑΡΧΕΙ στην Telerik 13.3.0. Το
   GridGroupableSettings κληρονομεί απευθείας από ComponentBase και εκθέτει μόνο
   Container, Reorderable, Sortable, StickyFooters, StickyHeaders (επαληθευμένο με
   System.Reflection.Metadata πάνω στο Telerik.Blazor.dll, με διάσχιση της
   ιεραρχίας — τα XML docs δεν αρκούν, δίνουν ψευδώς-αρνητικά). Άγνωστη παράμετρος
   μεταγλωττίζεται καθαρά και πετά στο render, εξαφανίζοντας ΟΛΟ το grid.
   Το ParastatikoDapanonDetail.razor:1892 έχει ακριβώς αυτό το bug.

   Η ομαδοποίηση ορίζεται μέσω OnStateInit, οπότε η ζώνη δεν χρειάζεται καθόλου:
   ο picker έχει ήδη τρεις λωρίδες πάνω από το grid (πηγή+αναζήτηση, επιλογή,
   pager) και μια τέταρτη κενή ζώνη είναι σκέτο ύψος. Το column menu διατηρεί την
   επιλογή group/ungroup για όποιον τη θέλει. */
.egfin-grid-grouped .k-grouping-header {
    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;

    /* Semantic «soft» επιφάνειες/κείμενο: στο light είναι ανοιχτό ροζ/πράσινο με σκούρο
       κείμενο — στο dark αντιστρέφονται (σκούρα tinted επιφάνεια, ανοιχτό κείμενο).
       Χωρίς αυτά, οι τίτλοι των παραβάσεων στον Έλεγχο Κατάρτισης ήταν αδιάβαστοι
       (ανοιχτό --egfin-ink πάνω σε literal #fdf3f3). */
    --egfin-danger-soft:         #2b1a1d;
    --egfin-danger-surface:      #2a1b1e;
    --egfin-danger-hover:        #332024;
    --egfin-danger-border:       #5d383c;
    --egfin-danger-ink:          #f5a3a3;
    --egfin-success-border:      #2e4a3e;
    --egfin-success-ink:         #7fd0ab;
    --egfin-success-fill:        #17251f;
    --egfin-info-fill:           #16222e;
    --egfin-info-border:         #2f4a63;
    --egfin-info-ink:            #8dbde4;

    /* Σκιές: πιο βαθιές/αδιαφανείς — σε σκούρο φόντο οι ανοιχτές σκιές δεν φαίνονται */
    --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;
    --egfin-warn-border:         #5c4620;
}

/* --- 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);
}
