/* ==========================================================================
   theme.css — κοινό υπηρεσιακό θέμα
   Αναθέσεις Μαθημάτων  ·  Ωρολόγια Προγράμματα

   ΣΧΕΔΙΑΣΤΙΚΗ ΑΡΧΗ
   Εσωτερικά εργαλεία δημόσιου φορέα. Ο χρήστης περνά ώρες μπροστά σε πυκνούς
   πίνακες με ονόματα, ΑΦΜ, ώρες, μόρια, ωρολόγια προγράμματα. Προτεραιότητα:
   ευκρίνεια και ησυχία. Το χρώμα μπαίνει ΜΟΝΟ όπου φέρει πληροφορία.

   - Αριθμοί με tabular-nums, ώστε ώρες και μόρια να στοιχίζονται κάθετα.
   - Καταστάσεις ως «σφραγίδες»: μικρά αραιωμένα κεφαλαία με λεπτό περίγραμμα,
     όπως σε υπηρεσιακό έγγραφο. Εκεί πηγαίνει όλη η οπτική ένταση.
   - Λεπτή κάθετη μπάρα στις επικεφαλίδες, σαν καρτέλα πρωτοκόλλου.
   - Γωνίες σχεδόν ορθές. Σκιές ελάχιστες. Καμία βαθμίδα χρώματος.

   ΚΟΙΝΗ ΒΑΣΗ
   Και οι δύο εφαρμογές χρησιμοποιούν Bootstrap 5.3.2, από τοπικά αρχεία.
   Μερικοί επιλογείς παλαιότερης έκδοσης παραμένουν ως δικλείδα, αν κάποια
   σελίδα ξεφύγει από τη μετατροπή.

   ΦΟΡΤΩΝΕΤΑΙ ΤΕΛΕΥΤΑΙΟ, μετά το bootstrap και μετά τυχόν inline <style>.
   ========================================================================== */

:root {
    /* --- χρώμα ------------------------------------------------------- */
    --melani:      #14181F;   /* κύριο κείμενο */
    --melani-2:    #5A6672;   /* δευτερεύον */
    --melani-3:    #8A959F;   /* υποσημειώσεις */
    --naftiko:     #123A63;   /* κεφαλίδες, ταυτότητα */
    --naftiko-sk:  #0C2947;   /* μπάρα κορυφής */
    --azourio:     #1B6EC2;   /* διαδραστικά */
    --azourio-ap:  #E8F1FA;   /* απαλό φόντο επιλογής */
    --charti:      #F6F8FA;   /* φόντο σελίδας */
    --leuko:       #FFFFFF;
    --grammi:      #DCE3EB;   /* διαχωριστικά */
    --grammi-2:    #EDF1F5;   /* πολύ απαλό */

    /* καταστάσεις — φέρουν πληροφορία, όχι διακόσμηση */
    --vevaiosi:    #1F6B47;   /* αποδοχή, δημοσιευμένο */
    --vevaiosi-ap: #E7F3EC;
    --voula:       #9E3223;   /* απόρριψη, κλειδωμένο */
    --voula-ap:    #FBEDEB;
    --anamoni:     #8A5A00;   /* εκκρεμότητα */
    --anamoni-ap:  #FDF3E0;

    /* --- τυπογραφία --------------------------------------------------- */
    /* Στοίβα με σωστή απόδοση ελληνικών σε Windows, macOS και Linux.
       Καμία εξωτερική γραμματοσειρά: οι σελίδες δείχνουν προσωπικά δεδομένα
       και δεν πρέπει να εξαρτώνται από τρίτους διακομιστές. */
    --grafi: "Segoe UI", "Noto Sans", "Helvetica Neue", Arial, "Liberation Sans", sans-serif;
    --arithmoi: "Segoe UI", "Noto Sans", ui-monospace, "Cascadia Mono", Consolas, monospace;

    /* --- διαστάσεις --------------------------------------------------- */
    --r:      3px;
    --skia:   0 1px 2px rgba(20, 24, 31, .06), 0 1px 8px rgba(20, 24, 31, .04);
    --skia-2: 0 2px 4px rgba(20, 24, 31, .08), 0 8px 24px rgba(20, 24, 31, .08);

    /* Bootstrap 5: αντικατάσταση των δικών του μεταβλητών */
    --bs-primary: #123A63;
    --bs-body-color: #14181F;
    --bs-body-bg: #F6F8FA;
    --bs-border-color: #DCE3EB;
    --bs-border-radius: 3px;
    --bs-link-color: #1B6EC2;
    --bs-link-hover-color: #123A63;
}

/* ==========================================================================
   Βάση
   ========================================================================== */

body {
    font-family: var(--grafi);
    font-size: 14px;
    line-height: 1.5;
    color: var(--melani);
    background: var(--charti);
    -webkit-font-smoothing: antialiased;
}

/* Οι αριθμοί στοιχίζονται κάθετα — κρίσιμο σε στήλες ωρών και μορίων. */
input, td, th, .arithmos, .mono {
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1;
}

a { color: var(--azourio); text-decoration: none; }
a:hover { color: var(--naftiko); text-decoration: underline; }

/* Ορατή εστίαση πληκτρολογίου — προϋπόθεση, όχι προαιρετικό. */
a:focus-visible, button:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible {
    outline: 2px solid var(--azourio);
    outline-offset: 2px;
    border-radius: 2px;
}

::selection { background: var(--azourio-ap); color: var(--naftiko); }

h1, h2, h3, h4, h5, h6 {
    color: var(--naftiko);
    font-weight: 600;
    letter-spacing: -.005em;
}
h1 { font-size: 1.4rem; }
h2 { font-size: 1.25rem; }
h3 { font-size: 1.15rem; }
h4 { font-size: 1.05rem; }
h5 { font-size: .95rem; }

/* ==========================================================================
   Πλοήγηση

   Οι δύο εφαρμογές είχαν εντελώς διαφορετικές μπάρες: η μία σκούρα και λιτή,
   η άλλη με βαθμίδα χρώματος. Ενοποιούνται.
   ========================================================================== */

.topbar,
.navbar.bg-primary,
.navbar.bg-dark,
.navbar-dark.bg-primary,
nav.navbar {
    background: var(--naftiko-sk) !important;
    background-image: none !important;
    color: #C9D8E8;
    box-shadow: inset 0 -1px 0 rgba(255, 255, 255, .08);
    border: 0;
}

.topbar {
    padding: 0 16px;
    height: 38px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 12.5px;
    letter-spacing: .01em;
    position: sticky;
    top: 0;
    z-index: 1030;
}

.navbar { padding: .4rem 1rem; min-height: 46px; }

.navbar-brand,
.topbar__foreas {
    color: #fff !important;
    font-weight: 600;
    font-size: 14px;
    letter-spacing: .02em;
    display: flex;
    align-items: center;
    gap: 9px;
    min-width: 0;
}

/* Η κάθετη μπάρα: σήμα καρτέλας πρωτοκόλλου, όχι διακόσμηση. */
.navbar-brand::before,
.topbar__foreas::before {
    content: "";
    width: 3px;
    height: 15px;
    background: var(--azourio);
    border-radius: 1px;
    flex: none;
}
.navbar-brand img { display: none; }   /* το λογότυπο μένει στις δημόσιες σελίδες */

.topbar__nav { display: flex; align-items: center; gap: 2px; white-space: nowrap; }

.topbar a,
.navbar .nav-link {
    color: #C9D8E8 !important;
    padding: 5px 9px;
    border-radius: var(--r);
    font-size: 13px;
    transition: background .12s, color .12s;
}
.topbar a:hover,
.navbar .nav-link:hover,
.navbar .nav-link.active {
    background: rgba(255, 255, 255, .1);
    color: #fff !important;
    text-decoration: none;
}

.topbar__user,
.navbar-text {
    color: #8FA6BF !important;
    font-size: 12.5px;
    padding-right: 9px;
    margin-right: 4px;
    border-right: 1px solid rgba(255, 255, 255, .16);
}

/* ==========================================================================
   ΣΚΟΥΡΕΣ ΕΠΙΦΑΝΕΙΕΣ — εγγύηση αντίθεσης

   Οι σελίδες των Προγραμμάτων είχαν κεφαλίδες με λευκό κείμενο πάνω σε
   έγχρωμο φόντο. Όταν το φόντο χαθεί για οποιονδήποτε λόγο, το κείμενο
   γίνεται αόρατο. Εδώ επιβάλλουμε ΚΑΙ τα δύο μαζί, ώστε να μην μπορούν να
   αποσυνδεθούν.
   ========================================================================== */

.header,
.program-header,
.hero,
.jumbotron,
.bg-primary,
.bg-dark,
.card-header.bg-primary,
.search-card > .card-header {
    background: var(--naftiko) !important;
    background-image: none !important;
    color: #fff !important;
    border-radius: var(--r) var(--r) 0 0;
}

.header *, .program-header *, .hero *, .jumbotron *,
.bg-primary *, .bg-dark *,
.search-card > .card-header * {
    color: #fff !important;
}

/* Οι δευτερεύουσες γραμμές μέσα σε σκούρα κεφαλίδα: ορατές, όχι σβηστές.
   Το opacity .9 που χρησιμοποιούσαν οι σελίδες τις έκανε δυσανάγνωστες. */
.header p, .program-header p, .hero p,
.search-card > .card-header p,
.header small, .program-header small {
    color: rgba(255, 255, 255, .82) !important;
    opacity: 1 !important;
}

.header a, .program-header a { color: #fff !important; text-decoration: underline; }

/* Η κάθετη μπάρα των card-header δεν έχει νόημα σε σκούρο φόντο. */
.card-header.bg-primary::before,
.search-card > .card-header::before { background: rgba(255, 255, 255, .5); }

/* ==========================================================================
   ΕΙΚΟΝΙΔΙΑ

   Δύο περιβάλλοντα, δύο λογικές.
   ========================================================================== */

/* --- πάνω σε σκούρο: ανοιχτό, όχι το κανονικό μπλε ---------------------
   Το --azourio είναι φτιαγμένο για λευκό φόντο. Πάνω στο ναυτικό μπλε της
   μπάρας πλοήγησης σχεδόν εξαφανίζεται. */
.navbar .fas, .navbar .far, .navbar .fa,
.navbar .nav-link i,
.topbar .fas, .topbar .far, .topbar .fa,
.header .fas, .header .fa,
.program-header .fas, .program-header .fa,
.bg-primary .fas, .bg-primary .fa,
.bg-dark .fas, .bg-dark .fa {
    color: #8FB6DE !important;      /* ανοιχτό γαλάζιο, ευανάγνωστο σε σκούρο */
}
.navbar .nav-link:hover i,
.navbar .nav-link.active i,
.navbar-brand i,
.topbar a:hover .fas {
    color: #fff !important;
}

/* --- κάρτες μετρήσεων: ανοιχτό φόντο, σκούρο εικονίδιο ------------------
   Ήταν συμπαγή έγχρωμα τετράγωνα με λευκό εικονίδιο — έντονα, και τραβούσαν
   την προσοχή από τον ίδιο τον αριθμό, που είναι το μήνυμα. Αντιστρέφεται:
   απαλή επιφάνεια, σκούρο σύμβολο.

   Η ΣΗΜΑΣΙΑ ΤΟΥ ΧΡΩΜΑΤΟΣ ΔΙΑΤΗΡΕΙΤΑΙ: πράσινο = δημοσιευμένα, ώχρα =
   πρόχειρα. Αν όλα γίνονταν γαλάζια, η κατάσταση θα χανόταν. */
.stat-card .icon,
.action-card .icon,
.stat-icon {
    background: var(--azourio-ap) !important;
    color: var(--naftiko) !important;
    border: 1px solid rgba(18, 58, 99, .12);
    border-radius: var(--r) !important;
    width: 46px !important;
    height: 46px !important;
    font-size: 19px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
}
.stat-card .icon i, .action-card .icon i, .stat-icon i { color: inherit !important; }

.stat-card .icon.primary { background: var(--azourio-ap)  !important; color: var(--naftiko)  !important; }
.stat-card .icon.success { background: var(--vevaiosi-ap) !important; color: var(--vevaiosi) !important; }
.stat-card .icon.warning { background: var(--anamoni-ap)  !important; color: var(--anamoni)  !important; }
.stat-card .icon.danger  { background: var(--voula-ap)    !important; color: var(--voula)    !important; }
.stat-card .icon.info    { background: var(--azourio-ap)  !important; color: var(--azourio)  !important; }

.stat-card .icon.success { border-color: rgba(31, 107, 71, .18); }
.stat-card .icon.warning { border-color: rgba(138, 90, 0, .18); }
.stat-card .icon.danger  { border-color: rgba(158, 50, 35, .18); }

/* ==========================================================================
   Επικεφαλίδες ενοτήτων
   ========================================================================== */

.epikefalida,
.page-header {
    display: flex;
    align-items: baseline;
    gap: 10px;
    padding: 14px 0 10px;
    margin-bottom: 14px;
    border-bottom: 1px solid var(--grammi);
    background: transparent !important;
    background-image: none !important;
    color: var(--melani) !important;
    border-radius: 0;
    box-shadow: none;
}
.epikefalida h1, .epikefalida h4, .epikefalida h5,
.page-header h1, .page-header h2, .page-header h3 {
    margin: 0;
    color: var(--naftiko) !important;
}
.page-header p, .epikefalida__ypo { color: var(--melani-2); font-size: 12.5px; margin: 0; }

/* Ετικέτα ενότητας: μικρά αραιωμένα κεφαλαία */
.etiketa {
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--melani-3);
    display: block;
    margin-bottom: 3px;
}
.ypotitlos, .hint, .label, .form-text, small.text-muted {
    font-size: 11.5px;
    color: var(--melani-2) !important;
    line-height: 1.45;
}

/* ==========================================================================
   Κάρτες
   ========================================================================== */

.card,
.search-card,
.stat-card {
    border: 1px solid var(--grammi);
    border-radius: var(--r);
    box-shadow: var(--skia);
    background: var(--leuko);
    margin-bottom: 16px;
}

.card-header {
    background: var(--leuko) !important;
    background-image: none !important;
    border-bottom: 1px solid var(--grammi);
    color: var(--naftiko) !important;
    font-weight: 600;
    font-size: 13.5px;
    letter-spacing: .01em;
    padding: 11px 16px;
    display: flex;
    align-items: center;
    gap: 9px;
    border-radius: var(--r) var(--r) 0 0;
}
.card-header::before {
    content: "";
    width: 3px;
    height: 14px;
    background: var(--naftiko);
    border-radius: 1px;
    flex: none;
}
.card-header.no-bar::before { display: none; }
.card-body { padding: 16px; }
.card-footer { background: var(--grammi-2); border-top: 1px solid var(--grammi); padding: 10px 16px; }

/* Κάρτες μετρήσεων: ο αριθμός είναι το μήνυμα. */
.stat-card { padding: 14px 16px; text-align: left; }
.stat-card .stat-value,
.stat-card h2, .stat-card h3,
.stat, .stat-number {
    font-size: 1.7rem;
    font-weight: 600;
    color: var(--naftiko);
    line-height: 1.1;
    font-variant-numeric: tabular-nums;
}
.stat-card .stat-label,
.stat-card p, .stat-label {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .07em;
    text-transform: uppercase;
    color: var(--melani-3);
    margin: 4px 0 0;
}

/* ==========================================================================
   Φόρμες  (Bootstrap 4 και 5)
   ========================================================================== */

label, .form-label {
    font-size: 12px;
    font-weight: 500;
    color: var(--melani-2);
    margin-bottom: 3px;
}

.form-control, .custom-select, .form-select, .select2-selection {
    border: 1px solid var(--grammi) !important;
    border-radius: var(--r) !important;
    color: var(--melani);
    font-size: 13.5px;
    height: auto;
    padding: 6px 10px;
    background-color: var(--leuko);
    transition: border-color .12s, box-shadow .12s;
}
.form-control:focus, .custom-select:focus, .form-select:focus {
    border-color: var(--azourio) !important;
    box-shadow: 0 0 0 3px rgba(27, 110, 194, .13) !important;
    color: var(--melani);
}
.form-control:disabled, .form-control[readonly] {
    background-color: var(--grammi-2);
    color: var(--melani-2);
}
.form-control::placeholder { color: var(--melani-3); }
.form-control-sm, .form-select-sm { font-size: 12.5px; padding: 4px 8px; }

.form-check-input:checked { background-color: var(--naftiko); border-color: var(--naftiko); }
.form-check-input:focus { box-shadow: 0 0 0 3px rgba(27, 110, 194, .13); }

/* ==========================================================================
   Κουμπιά
   ========================================================================== */

.btn {
    border-radius: var(--r);
    font-size: 13px;
    font-weight: 500;
    letter-spacing: .005em;
    padding: 6px 14px;
    border-width: 1px;
    transition: background .12s, border-color .12s, color .12s;
}
.btn:focus, .btn.focus { box-shadow: 0 0 0 3px rgba(27, 110, 194, .18); }
.btn-lg { font-size: 15px; padding: 10px 22px; }
.btn-sm { font-size: 12px; padding: 3px 9px; }

.btn-primary          { background: var(--naftiko); border-color: var(--naftiko); color: #fff; }
.btn-primary:hover    { background: var(--naftiko-sk); border-color: var(--naftiko-sk); color: #fff; }
.btn-primary:disabled { background: #93A6BC; border-color: #93A6BC; }

.btn-success          { background: var(--vevaiosi); border-color: var(--vevaiosi); color: #fff; }
.btn-success:hover    { background: #185639; border-color: #185639; color: #fff; }

.btn-danger           { background: var(--voula); border-color: var(--voula); color: #fff; }
.btn-danger:hover     { background: #7F281C; border-color: #7F281C; color: #fff; }

.btn-info             { background: var(--azourio); border-color: var(--azourio); color: #fff; }
.btn-info:hover       { background: #155A9F; border-color: #155A9F; color: #fff; }

.btn-secondary        { background: #6B7785; border-color: #6B7785; color: #fff; }
.btn-secondary:hover  { background: #58636F; border-color: #58636F; color: #fff; }

.btn-warning          { background: #C88A00; border-color: #C88A00; color: #fff; }
.btn-warning:hover    { background: #A97400; border-color: #A97400; color: #fff; }

.btn-outline-secondary       { color: var(--melani-2); border-color: var(--grammi); background: var(--leuko); }
.btn-outline-secondary:hover { background: var(--grammi-2); color: var(--melani); border-color: #C6D0DA; }
.btn-outline-primary         { color: var(--naftiko); border-color: var(--naftiko); }
.btn-outline-primary:hover   { background: var(--naftiko); color: #fff; }
.btn-outline-light           { color: #fff; border-color: rgba(255,255,255,.4); }
.btn-outline-light:hover     { background: rgba(255,255,255,.14); color: #fff; }

.dropdown-menu {
    border: 1px solid var(--grammi);
    border-radius: var(--r);
    box-shadow: var(--skia-2);
    font-size: 13.5px;
    padding: 4px;
}
.dropdown-item { border-radius: 2px; padding: 6px 11px; color: var(--melani); }
.dropdown-item:hover, .dropdown-item:focus {
    background: var(--azourio-ap) !important;
    color: var(--naftiko) !important;
}

/* ==========================================================================
   Πίνακες — το κύριο εργαλείο εργασίας
   ========================================================================== */

.table, .program-table, .schedule-table {
    font-size: 13px;
    color: var(--melani);
    margin-bottom: 0;
    background: var(--leuko);
}

.table thead th,
.program-table thead th,
.schedule-table thead th {
    background: #EFF3F7 !important;
    background-image: none !important;
    color: var(--naftiko) !important;
    font-weight: 600;
    font-size: 11px;
    letter-spacing: .05em;
    text-transform: uppercase;
    border-bottom: 1px solid var(--grammi) !important;
    border-top: 0;
    padding: 8px 9px;
    vertical-align: middle;
    white-space: nowrap;
}

.table td, .table th,
.program-table td, .program-table th,
.schedule-table td, .schedule-table th {
    border-color: var(--grammi-2);
    padding: 7px 9px;
    vertical-align: middle;
}
.table-sm td, .table-sm th { padding: 5px 8px; }
.table-bordered, .table-bordered td, .table-bordered th { border-color: var(--grammi-2); }
.table-hover tbody tr:hover { background: var(--azourio-ap); }
.table-striped tbody tr:nth-of-type(odd) { background: rgba(20,24,31,.018); }

.sticky, .table thead.sticky th {
    position: sticky;
    top: 0;
    z-index: 5;
    box-shadow: inset 0 -1px 0 var(--grammi);
}

/* --- ωρολόγιο πρόγραμμα ------------------------------------------------ */
.schedule-table td { text-align: center; height: 46px; }
.lesson-cell {
    background: var(--azourio-ap);
    border-radius: 2px;
    font-size: 12px;
    line-height: 1.3;
    padding: 4px 6px;
}
.lesson-cell.theory { box-shadow: inset 3px 0 0 var(--naftiko); }
.lesson-cell.lab    { box-shadow: inset 3px 0 0 var(--vevaiosi); }
.empty-cell { background: var(--grammi-2); }

/* --- καταστάσεις γραμμών ------------------------------------------------ */
.answer-yes, tr.accepted   { background: var(--vevaiosi-ap) !important; }
.answer-no,  tr.rejected   { background: var(--voula-ap)    !important; }
.no-answer                 { background: #F1ECF6            !important; }
.danger                    { background: var(--voula-ap)    !important; }

td.accepted, .accepted { color: var(--vevaiosi); font-weight: 600; background: var(--vevaiosi-ap); }
td.rejected, .rejected { color: var(--voula);    font-weight: 600; background: var(--voula-ap); }

/* Απορριφθείς λόγω προσόντων: κόκκινο φόντο και κάθετη μπάρα. Η γραμμή δεν
   είναι «σβηστή» — τα στοιχεία της χρειάζονται ακόμη. */
tr.aporriftheis > td, tr.aporriftheis > th,
tr.aporriftheis.answer-yes > td,
tr.aporriftheis.answer-no > td,
tr.aporriftheis.no-answer > td {
    background: var(--voula-ap) !important;
    color: var(--melani-2);
}
tr.aporriftheis > th:first-child,
tr.aporriftheis > td:first-child { box-shadow: inset 3px 0 0 var(--voula); }
tr.aporriftheis input[readonly] {
    background: #F6DDD9 !important;
    border-color: #E3BDB7;
    color: var(--melani-2);
}
tr.aporriftheis a { color: var(--voula); }

.current_selected { background: var(--azourio-ap) !important; box-shadow: inset 3px 0 0 var(--azourio); }
.selected { font-weight: 600; }

/* ==========================================================================
   ΣΦΡΑΓΙΔΕΣ — το σήμα κατατεθέν και των δύο εφαρμογών

   Οι καταστάσεις αποδίδονται όπως σε υπηρεσιακό έγγραφο: μικρά αραιωμένα
   κεφαλαία μέσα σε λεπτό περίγραμμα. Διαβάζονται με μια ματιά σε πυκνό
   πίνακα και δεν εξαρτώνται μόνο από το χρώμα — σημασία για δυσχρωματοψία
   και για ασπρόμαυρη εκτύπωση.
   ========================================================================== */

.sfragida {
    display: inline-block;
    font-size: 9.5px;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    padding: 2px 6px;
    border: 1px solid currentColor;
    border-radius: 2px;
    line-height: 1.35;
    white-space: nowrap;
    background: transparent;
}
.sfragida--nai      { color: var(--vevaiosi); background: var(--vevaiosi-ap); }
.sfragida--ochi     { color: var(--voula);    background: var(--voula-ap); }
.sfragida--anamoni  { color: var(--anamoni);  background: var(--anamoni-ap); }
.sfragida--oudeteri { color: var(--melani-2); background: var(--grammi-2); }

/* Τα badge του Bootstrap παίρνουν την ίδια γλώσσα, και στις δύο εκδόσεις. */
.badge {
    font-size: 9.5px;
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
    padding: 3px 6px;
    border-radius: 2px;
    border: 1px solid currentColor;
}
.badge-danger,    .badge.bg-danger    { color: var(--voula) !important;    background: var(--voula-ap) !important; }
.badge-success,   .badge.bg-success   { color: var(--vevaiosi) !important; background: var(--vevaiosi-ap) !important; }
.badge-secondary, .badge.bg-secondary { color: var(--melani-2) !important; background: var(--grammi-2) !important; }
.badge-primary,   .badge.bg-primary   { color: var(--azourio) !important;  background: var(--azourio-ap) !important; }
.badge-warning,   .badge.bg-warning   { color: var(--anamoni) !important;  background: var(--anamoni-ap) !important; }
.badge-info,      .badge.bg-info      { color: var(--azourio) !important;  background: var(--azourio-ap) !important; }

/* ==========================================================================
   Ειδοποιήσεις
   ========================================================================== */

.alert {
    border: 1px solid;
    border-left-width: 3px;
    border-radius: var(--r);
    font-size: 13px;
    padding: 10px 14px;
}
.alert-success { background: var(--vevaiosi-ap); border-color: var(--vevaiosi); color: #175135; }
.alert-danger  { background: var(--voula-ap);    border-color: var(--voula);    color: #7F281C; }
.alert-warning { background: var(--anamoni-ap);  border-color: var(--anamoni);  color: #6E4800; }
.alert-info,
.alert-secondary,
.alert-primary { background: var(--azourio-ap); border-color: var(--azourio); color: var(--naftiko); }

/* Κενή κατάσταση: εξηγεί, δεν απλώς αδειάζει. */
.empty-state {
    text-align: center;
    padding: 44px 20px;
    color: var(--melani-2);
    background: var(--leuko);
    border: 1px dashed var(--grammi);
    border-radius: var(--r);
}
.empty-state i { font-size: 34px; color: var(--melani-3); margin-bottom: 12px; display: block; }

/* ==========================================================================
   Παράθυρα διαλόγου
   ========================================================================== */

.modal-content { border: 0; border-radius: var(--r); box-shadow: var(--skia-2); }
.modal-header {
    border-bottom: 1px solid var(--grammi);
    background: var(--leuko) !important;
    background-image: none !important;
    padding: 13px 18px;
    align-items: center;
}
.modal-title { font-size: 14.5px; font-weight: 600; color: var(--naftiko) !important; }
.modal-body { padding: 18px; font-size: 13.5px; }
.modal-footer { border-top: 1px solid var(--grammi); padding: 11px 18px; }

/* Bootstrap 4: .close  ·  Bootstrap 5: .btn-close */
.close { font-size: 22px; font-weight: 400; color: var(--melani-3); opacity: 1; text-shadow: none; }
.close:hover, .close:focus { color: var(--voula); opacity: 1; }
.btn-close { opacity: .5; }
.btn-close:hover { opacity: 1; }

/* ==========================================================================
   Πρόοδος και σελιδοποίηση
   ========================================================================== */

.progress { height: 18px; border-radius: var(--r); background: var(--grammi-2); font-size: 10.5px; }
.progress-bar { background: var(--naftiko); font-weight: 600; letter-spacing: .04em; }
.progress-bar.bg-success { background: var(--vevaiosi) !important; }
.progress-bar.bg-warning { background: var(--anamoni) !important; }

.page-link { color: var(--azourio); border-color: var(--grammi); font-size: 13px; }
.page-item.active .page-link { background: var(--naftiko); border-color: var(--naftiko); }

/* DataTables */
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select {
    border: 1px solid var(--grammi);
    border-radius: var(--r);
    padding: 4px 8px;
    font-size: 13px;
}
.dataTables_wrapper .dataTables_info,
.dataTables_wrapper .dataTables_paginate { font-size: 12.5px; color: var(--melani-2); }

/* ==========================================================================
   Εικονίδια
   ========================================================================== */

.fas, .far, .fa { color: var(--azourio); }
.fa-lock-open, .text-success { color: var(--vevaiosi) !important; }
.fa-lock, .text-danger       { color: var(--voula) !important; }
.fa-magic, .fa-sync-alt      { color: var(--vevaiosi); }
.fa-clone                    { color: var(--melani-2); }
.fa-times-circle             { color: var(--voula); }
.text-primary                { color: var(--naftiko) !important; }
.text-info                   { color: var(--azourio) !important; }
.text-warning                { color: var(--anamoni) !important; }
.text-muted                  { color: var(--melani-2) !important; }

.bg-primary   { background-color: var(--naftiko) !important; }
.bg-success   { background-color: var(--vevaiosi) !important; }
.bg-danger    { background-color: var(--voula) !important; }
.bg-info      { background-color: var(--azourio) !important; }
.bg-warning   { background-color: var(--anamoni) !important; }
.bg-light     { background-color: var(--grammi-2) !important; }

#printer, .printer {
    color: var(--naftiko);
    background: var(--grammi-2);
    border: 1px solid var(--grammi);
    padding: 6px;
    border-radius: var(--r);
}
#printer:hover, .printer:hover { background: var(--azourio-ap); border-color: var(--azourio); }

/* ==========================================================================
   Φόρτωση
   ========================================================================== */

#loader {
    background: rgba(18, 41, 71, .55) !important;
    opacity: 1 !important;
    backdrop-filter: blur(1.5px);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 16px;
}
.loader, .spinner-border {
    margin: 0 !important;
    width: 42px !important;
    height: 42px !important;
    border: 3px solid rgba(255, 255, 255, .28) !important;
    border-top-color: #fff !important;
    border-radius: 50%;
    animation: peristrofi .8s linear infinite;
}
@keyframes peristrofi { to { transform: rotate(360deg); } }

#loader_text {
    background: transparent !important;
    color: #fff !important;
    font-size: 12.5px;
    letter-spacing: .05em;
    text-transform: uppercase;
    padding: 0 !important;
}

@media (prefers-reduced-motion: reduce) {
    .loader, .spinner-border { animation-duration: 2.4s; }
    * { transition-duration: .01ms !important; }
}

/* ==========================================================================
   Σελίδα σύνδεσης — ίδια και στις δύο εφαρμογές
   ========================================================================== */

.login-wrap {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: linear-gradient(180deg, rgba(18, 58, 99, .04), transparent 220px), var(--charti);
}
.login-card {
    width: 100%;
    max-width: 380px;
    background: var(--leuko);
    border: 1px solid var(--grammi);
    border-top: 3px solid var(--naftiko);
    border-radius: var(--r);
    box-shadow: var(--skia-2);
    padding: 30px 28px 24px;
}
.login-card h1 {
    font-size: 17px;
    font-weight: 600;
    color: var(--naftiko);
    margin: 0 0 3px;
    letter-spacing: -.01em;
}
/* Bootstrap 5 κατάργησε το .btn-block */
.login-card .btn { display: block; width: 100%; }

/* ==========================================================================
   Δημόσιες σελίδες
   ========================================================================== */

.main-container { max-width: 1180px; margin: 0 auto; padding: 18px; }

.dimosia-kefalida {
    border-bottom: 2px solid var(--naftiko);
    padding-bottom: 12px;
    margin-bottom: 22px;
}
.dimosia-kefalida .foreas {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--melani-2);
}
.dimosia-kefalida h1 { font-size: 19px; margin: 4px 0 0; color: var(--naftiko); }

.ypografi, .footer {
    margin-top: 26px;
    padding-top: 14px;
    border-top: 1px solid var(--grammi);
    font-size: 12px;
    color: var(--melani-2);
    text-align: center;
    background: transparent;
}

/* ==========================================================================
   Κουμπιά επιλογής (φόρμα απάντησης εκπαιδευτή)

   Κρυφά radio και <label>, ώστε να λειτουργούν ΧΩΡΙΣ JavaScript. Η φόρμα
   απάντησης είναι η μόνη σελίδα που βλέπει ο εκπαιδευτής, συχνά από κινητό.
   ========================================================================== */

.epilogi { display: inline-flex; border-radius: var(--r); overflow: hidden; border: 1px solid var(--grammi); }
.epilogi input { position: absolute; opacity: 0; pointer-events: none; }
.epilogi label {
    margin: 0;
    padding: 7px 16px;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    background: var(--leuko);
    color: var(--melani-2);
    user-select: none;
    transition: background .12s, color .12s;
    display: flex;
    align-items: center;
    gap: 6px;
}
.epilogi label + label { border-left: 1px solid var(--grammi); }
.epilogi label:hover { background: var(--grammi-2); }
.epilogi input:checked + label.nai  { background: var(--vevaiosi); color: #fff; font-weight: 600; }
.epilogi input:checked + label.ochi { background: var(--voula);    color: #fff; font-weight: 600; }
.epilogi input:focus-visible + label { outline: 2px solid var(--azourio); outline-offset: -2px; }

/* Όσο δεν έχει γίνει επιλογή, το πλαίσιο παραμένει τονισμένο. */
.epilogi[data-required]:not(:has(input:checked)) {
    border-color: var(--anamoni);
    box-shadow: 0 0 0 2px var(--anamoni-ap);
}
.mathima__ores:has(.epilogi:not(:has(input:checked)))::after {
    content: "απαιτείται επιλογή";
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--anamoni);
    width: 100%;
    text-align: right;
}
@supports not selector(:has(*)) {
    .epilogi[data-required] { border-color: var(--anamoni); }
}

/* Κάθε μάθημα με έγχρωμη μπάρα στην αρχή. */
.mathima {
    border: 1px solid var(--grammi);
    border-left: 4px solid var(--naftiko);
    border-radius: var(--r);
    padding: 14px 14px 14px 16px;
    margin-bottom: 14px;
    background: var(--leuko);
}
.mathima:nth-of-type(even) { border-left-color: var(--azourio); }
.mathima__titlos { font-size: 15px; font-weight: 600; color: var(--naftiko); }
.mathima__ores {
    display: flex; align-items: center; justify-content: space-between;
    flex-wrap: wrap; gap: 10px; padding: 8px 0;
}
.mathima__ores + .mathima__ores { border-top: 1px solid var(--grammi-2); }

/* ==========================================================================
   Βοηθητικά
   ========================================================================== */

.mono { font-family: var(--arithmoi); font-size: 12px; }
hr { border-color: var(--grammi); }

.suggestions-dropdown {
    border: 1px solid var(--grammi);
    border-radius: var(--r);
    box-shadow: var(--skia-2);
    background: var(--leuko);
}
.suggestion-item { padding: 7px 11px; font-size: 13px; border-bottom: 1px solid var(--grammi-2); cursor: pointer; }
.suggestion-item:hover { background: var(--azourio-ap); }
.suggestion-item:last-child { border-bottom: 0; }

/* ==========================================================================
   Κινητά
   ========================================================================== */

@media (max-width: 768px) {
    .topbar { height: auto; padding: 6px 12px; flex-wrap: wrap; gap: 4px; }
    .topbar__foreas, .navbar-brand { font-size: 12px; }
    .card-body { padding: 12px; }
    .table { font-size: 12px; }
    .main-container { padding: 12px; }
}
@media (max-width: 576px) {
    .epilogi { width: 100%; }
    .epilogi label { flex: 1; justify-content: center; padding: 10px 8px; }
    .mathima__ores { flex-direction: column; align-items: stretch; }
}

/* ==========================================================================
   Εκτύπωση — υπηρεσιακό έγγραφο, χωρίς διεπαφή
   ========================================================================== */

@media print {
    .topbar, .navbar, .btn, .dropdown, #loader, #printer, .printer,
    form.no-print, .no-print, .dataTables_filter, .dataTables_length,
    .dataTables_paginate {
        display: none !important;
    }
    body { background: #fff; font-size: 10pt; }
    .card, .stat-card { box-shadow: none; border: 1px solid #999; }
    .table thead th, .program-table thead th, .schedule-table thead th {
        background: #eee !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }
    .sfragida, .badge { border: 1px solid #666; }
    a { color: #000; text-decoration: none; }
    .page-header, .epikefalida { border-bottom: 2px solid #000; }
}
