/* --- Tema Modernă și Luminoasă --- */

/* Preload style for dark mode to prevent FOUC */
html.dark-mode-preload {
    --bg-main: #1a1a1a;
    --bg-surface: #2c2c2c;
    --text-primary: #e0e0e0;
    --text-secondary: #a0a0a0;
    --border-color: #444444;
    /* Add any other critical variables that define initial layout colors, like input backgrounds if they are prominent */
    --input-bg: #333333;
    --input-border: #555555;

    background-color: var(--bg-main); /* Apply immediately */
    color: var(--text-primary);      /* Apply immediately */
}

html.dark-mode-preload body {
    background-color: var(--bg-main); /* Ensure body also gets the main background quickly */
    color: var(--text-primary);
    /* Surface elements like cards will pick up var(--bg-surface) from the html preload block */
}


/* Variabile de Culoare */
:root {
    /* Light theme with a calm blue tint */
    --bg-main: #f5f7fb;                     /* White with subtle cool tint */
    --bg-surface: #ffffff;                  /* Primary surfaces */
    --bg-surface-hover: #edf2f7;            /* Gentle hover */

    --text-primary: #1f2937;                /* Softer dark */
    --text-secondary: #6b7280;              /* Medium gray */
    --text-on-accent: #ffffff;              /* On colored buttons */

    --accent-primary: #3b82f6;              /* Blue 500 */
    --accent-primary-darker: #1d4ed8;       /* Blue 700 */
    --accent-secondary: #6c757d;            /* Bootstrap secondary */
    --accent-secondary-darker: #545b62;     /* Darker hover */

    --accent-success: #22c55e;              /* Green 500 */
    --accent-danger: #ef4444;               /* Red 500 */
    --accent-warning: #f59e0b;              /* Amber 500 */
    --accent-info: #06b6d4;                 /* Cyan 500 */

    --border-color: #d9dee6;                /* Softer borders */
    --input-bg: #ffffff;
    --input-border: #cfd6de;
    --input-focus-border: #93c5fd;          /* Light blue focus */
    --input-focus-shadow: rgba(59, 130, 246, 0.25);

    --link-color: var(--accent-primary);
    --link-hover-color: var(--accent-primary-darker);

    --shadow-sm: 0 .125rem .25rem rgba(0, 0, 0, .075);
    --shadow-md: 0 .5rem 1rem rgba(0, 0, 0, .12);
    --shadow-lg: 0 1rem 3rem rgba(0, 0, 0, .16);
    color-scheme: light dark;
}
html { scroll-behavior: smooth; }

/* Dark Mode Variables */
[data-theme="dark"] {
    --bg-main: #1a1a1a;                     /* Very dark grey */
    --bg-surface: #2c2c2c;                  /* Dark grey for cards, surfaces */
    --bg-surface-hover: #383838;           /* Slightly lighter grey for hover */

    --text-primary: #f0f0f0;                /* Slightly brighter for primary text */
    --text-secondary: #cccccc;              /* Brighter secondary text for better readability */
    /* --text-on-accent remains #ffffff or could be adjusted if accent changes drastically */

    /* Accents can often remain the same, or be slightly desaturated/adjusted if needed */
    /* --accent-primary: #007bff; (keep or adjust) */
    /* --accent-primary-darker: #0056b3; (keep or adjust) */

    --border-color: #525252;                /* Slightly lighter border for less harshness */
    --input-bg: #282828;                    /* Darker input bg for better form field separation */
    --input-border: #606060;                /* Slightly lighter input border */
    --input-focus-border: #007bff;          /* Keep accent for focus, or use a lighter variant */
    --input-focus-shadow: rgba(0, 123, 255, 0.35); /* Adjusted alpha for dark bg */

    --link-color: #66bfff;                  /* Adjusted link color for even better contrast */
    --link-hover-color: #99d6ff;            /* Corresponding lighter hover */

    /* Shadows might need to be less pronounced or use a lighter color if the background is very dark */
    /* For simplicity, we'll keep them for now, but they might be less effective */

    /* Explicit text colors for headings and common elements in dark mode */
    h1, h2, h3, h4, h5, h6, p, li, dt, dd {
        color: var(--text-primary);
    }
    /* Ensure labels also get the primary text color */
    label {
        color: var(--text-primary);
    }
}

[data-theme="dark"] ::selection {
    background-color: var(--accent-primary);
    color: var(--text-on-accent);
}

/* Dacă se folosește clasa .text-dark de la Bootstrap, trebuie suprascrisă în dark mode */
[data-theme="dark"] .text-dark {
    color: var(--text-primary) !important;
}
/* Similar pentru .text-black dacă este folosită */
[data-theme="dark"] .text-black {
    color: var(--text-primary) !important;
}

/* Style for .bg-light in dark mode */
[data-theme="dark"] .bg-light {
    background-color: var(--bg-surface-hover) !important; /* A slightly lighter dark background */
    color: var(--text-primary) !important; /* Ensure text on this background is light */
}
/* Ensure elements within .bg-light also inherit text color if needed, e.g., labels */
[data-theme="dark"] .bg-light label,
[data-theme="dark"] .bg-light .form-label {
    color: var(--text-primary) !important;
}

/* Ensure text on .badge.bg-warning is dark for readability */
[data-theme="dark"] .badge.bg-warning,
[data-theme="dark"] .badge.status-urmeaza, /* Common class for "upcoming" status */
[data-theme="dark"] .badge[class*="bg-warning"] { /* Catch any badge with bg-warning */
    color: #111827 !important; /* Keep dark text on yellow for better contrast */
    /* background-color remains var(--accent-warning) or Bootstrap's default yellow */
}


/* Ensure any element with a warning background (yellow) has dark text in dark mode for readability */
[data-theme="dark"] [style*="background-color: var(--accent-warning)"],
[data-theme="dark"] .bg-warning, /* This includes .alert-warning if it uses .bg-warning */
[data-theme="dark"] [class*="status-urmeaza"], /* Catch classes like status-urmeaza, status-upcoming etc. */
[data-theme="dark"] [style*="background-color: yellow"],
[data-theme="dark"] [style*="background: yellow"] {
    color: #111827 !important;
}
/* If text-white is explicitly used on a warning background, override it */
[data-theme="dark"] .bg-warning.text-white,
[data-theme="dark"] [style*="background-color: var(--accent-warning)"].text-white,
[data-theme="dark"] [style*="background-color: yellow"].text-white,
[data-theme="dark"] [style*="background: yellow"].text-white {
    color: #212529 !important;
}


[data-theme="dark"] .navbar-toggler-icon {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28224, 224, 224, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); /* Lighter stroke for dark mode */
}

[data-theme="dark"] .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%); /* Common trick to make black SVGs white */
}

[data-theme="dark"] input[type="date"]::-webkit-calendar-picker-indicator,
[data-theme="dark"] input[type="time"]::-webkit-calendar-picker-indicator,
[data-theme="dark"] input[type="datetime-local"]::-webkit-calendar-picker-indicator {
    filter: invert(1);
}

[data-theme="dark"] .card-header:not([class*="bg-"]) {
    background-color: var(--bg-surface-hover);
    border-bottom: 1px solid var(--border-color);
    color: var(--text-primary); /* Ensure header text is also correct */
}

/* === START JULES' CONSOLIDATED DARK MODE TABLE/LIST STYLING === */
[data-theme="dark"] .table {
    background-color: var(--bg-surface);
}

[data-theme="dark"] .table th,
[data-theme="dark"] .table td {
    color: var(--text-primary);
    border-color: var(--border-color);
}

[data-theme="dark"] .table thead th {
    background-color: var(--bg-surface-hover);
    border-bottom-width: 2px;
}

[data-theme="dark"] .table-striped > tbody > tr:nth-of-type(odd) > * {
    background-color: rgba(255, 255, 255, 0.035);
}

[data-theme="dark"] .table-hover > tbody > tr:hover > * {
    background-color: rgba(255, 255, 255, 0.08);
}

[data-theme="dark"] .table-success > td,
[data-theme="dark"] .table-success > th {
    background-color: rgba(40, 167, 69, 0.15);
}

[data-theme="dark"] .table-warning > td,
[data-theme="dark"] .table-warning > th {
    background-color: rgba(255, 193, 7, 0.15);
}

[data-theme="dark"] .table-danger > td,
[data-theme="dark"] .table-danger > th {
    background-color: rgba(220, 53, 69, 0.15);
}

[data-theme="dark"] .table-info > td,
[data-theme="dark"] .table-info > th {
    background-color: rgba(13, 202, 240, 0.1);
}

[data-theme="dark"] .table a {
    color: var(--link-color);
}

[data-theme="dark"] .table a:hover {
    color: var(--link-hover-color);
}

[data-theme="dark"] .list-group-item {
    background-color: var(--bg-surface);
    color: var(--text-primary);
    border-color: var(--border-color);
}

[data-theme="dark"] .list-group-item-action:hover,
[data-theme="dark"] .list-group-item-action:focus {
    background-color: var(--bg-surface-hover);
    color: var(--text-primary);
}

[data-theme="dark"] .list-group-item-striped:nth-of-type(odd) {
     background-color: rgba(255, 255, 255, 0.035);
}

[data-theme="dark"] .list-group-item-success { background-color: rgba(40, 167, 69, 0.15); }
[data-theme="dark"] .list-group-item-warning { background-color: rgba(255, 193, 7, 0.15); }
[data-theme="dark"] .list-group-item-danger { background-color: rgba(220, 53, 69, 0.15); }
/* === END CONSOLIDATED DARK MODE TABLE/LIST STYLING === */

/* General Modal Styling (ensure visibility) */
.modal {
    display: none; /* Handled by Bootstrap JS */
    /* Ensure z-index is high enough if other elements are interfering */
    /* z-index: 1050; Bootstrap default, usually fine */
}
.modal.show .modal-dialog {
    /* Ensure modal dialog itself is not positioned off-screen or transparent */
    transform: none; /* Override any accidental transforms */
    opacity: 1; /* Ensure not transparent */
}

/* Dark Mode Modals */
[data-theme="dark"] .modal-content {
    background-color: var(--bg-surface);
    color: var(--text-primary);
    border: 1px solid var(--border-color);
}
[data-theme="dark"] .modal-header {
    background-color: var(--bg-surface-hover); /* Slightly different background for header */
    color: var(--text-primary);
    border-bottom: 1px solid var(--border-color);
}
[data-theme="dark"] .modal-header .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%); /* Make the 'X' button white */
}
[data-theme="dark"] .modal-body {
    color: var(--text-primary);
}
/* Ensure form elements inside modals are also styled correctly for dark mode */
[data-theme="dark"] .modal-body .form-label {
    color: var(--text-primary);
}
[data-theme="dark"] .modal-body .form-control {
    background-color: var(--input-bg);
    color: var(--text-primary);
    border-color: var(--input-border);
}
[data-theme="dark"] .modal-body .form-control::placeholder {
    color: var(--text-secondary);
}
[data-theme="dark"] .modal-body .form-select {
    background-color: var(--input-bg);
    color: var(--text-primary);
    border-color: var(--input-border);
}


[data-theme="dark"] .modal-footer {
    background-color: var(--bg-surface-hover); /* Slightly different background for footer */
    border-top: 1px solid var(--border-color);
}
/* Ensure buttons in modal footer are styled correctly if they are e.g. btn-secondary */
[data-theme="dark"] .modal-footer .btn-secondary {
    color: var(--text-on-accent); /* Or var(--text-primary) if background is light enough */
    background-color: var(--accent-secondary); /* Or a darker variant if needed */
    border-color: var(--accent-secondary);
}
[data-theme="dark"] .modal-footer .btn-secondary:hover {
    background-color: var(--accent-secondary-darker);
    border-color: var(--accent-secondary-darker);
}


/* Asigură contrast pentru rândurile de tabel colorate în dark mode */
[data-theme="dark"] .table-success,
[data-theme="dark"] .table-success > th,
[data-theme="dark"] .table-success > td {
    background-color: rgba(40, 167, 69, 0.2) !important; /* Verde mai transparent și mai puțin intens */
}
[data-theme="dark"] .table-success .badge {
    color: #000 !important; /* Text negru pentru badge-uri pe fundal verde deschis, pentru contrast */
    background-color: rgba(40, 167, 69, 0.5) !important; /* Fundal badge mai opac */
}
[data-theme="dark"] .table-success a {
    color: #b3ffc6 !important; /* Linkuri mai vizibile - acestea pot rămâne așa sau ajustate dacă este necesar */
    /* Dacă linkurile trebuie să fie și ele var(--text-primary), atunci se modifică aici. Momentan le las. */
    /* O alternativă pentru linkuri, dacă se dorește aceeași culoare ca textul normal: */
    /* color: var(--text-primary) !important; */
    /* text-decoration: underline; */ /* Poate fi adăugat dacă se dorește subliniere explicită */
}


[data-theme="dark"] .table-warning,
[data-theme="dark"] .table-warning > th,
[data-theme="dark"] .table-warning > td {
    background-color: rgba(255, 193, 7, 0.2) !important; /* Galben mai transparent */
}
[data-theme="dark"] .table-warning .badge.bg-info.text-dark {
    color: #000 !important;
    background-color: rgba(13, 202, 240, 0.5) !important;
}
[data-theme="dark"] .table-warning a {
    color: #ffeca0 !important;
}


[data-theme="dark"] .table-secondary,
[data-theme="dark"] .table-secondary > th,
[data-theme="dark"] .table-secondary > td {
    background-color: rgba(108, 117, 125, 0.2) !important; /* Gri mai transparent */
}
[data-theme="dark"] .table-secondary a {
    color: #cdd2d6 !important;
}


/* Badge-uri specifice pentru vizibilitate în dark mode */
[data-theme="dark"] .badge.bg-dark {
    background-color: #1f2937 !important; /* gray-800 */
    color: #f1f5f9 !important;
}

[data-theme="dark"] .badge.bg-info {
    /* bg-info este un cyan. Textul default Bootstrap pentru .badge.bg-info este #000. */
    /* Dacă se dorește text alb: color: var(--text-on-accent) !important; */
    /* Dar pentru lizibilitate pe cyan, textul închis este de obicei mai bun. */
    /* Bootstrap 5 .badge.bg-info are deja text închis. */
}
[data-theme="dark"] .badge.bg-info.text-dark { /* Asigurare că text-dark e aplicat */
    color: #000 !important;
}


/* Minimal alert adjustments for readability */
[data-theme="dark"] .alert-warning {
     color: #fff4c2 !important;
     background-color: #3b2a03 !important;
     border-color: #a16207 !important;
}
[data-theme="dark"] .alert-warning a.alert-link, [data-theme="dark"] .alert-warning .alert-link {
    color: #2c1f01; /* Ensure link color is dark enough on yellow background */
}
[data-theme="dark"] .alert-light { /* Bootstrap's .alert-light */
    color: var(--text-primary);
    background-color: var(--bg-surface-hover);
    border-color: var(--border-color);
}
[data-theme="dark"] .alert-secondary {
    background-color: #1f2732 !important;
    color: #e2e8f0 !important;
    border-color: #475569 !important;
}

/* Ensure .alert-info has good contrast in dark mode */
[data-theme="dark"] .alert-info {
    background-color: #0a2a3a !important;
    color: #dff7ff !important;
    border-color: #075985 !important;
}
[data-theme="dark"] .alert-info a,
[data-theme="dark"] .alert-info .alert-link {
    color: var(--link-color); /* Use the general dark mode link color for good contrast */
}


/* Stil pentru listele de studenți din presence_report.html */
[data-theme="dark"] .list-group-item {
    background-color: var(--bg-surface); /* Fundalul cardului */
    color: var(--text-primary); /* Text deschis */
    border-color: var(--border-color); /* Separator între itemi */
}


/* Stiluri Globale */
body {
    font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    margin: 0;
    padding: 0;
    background: linear-gradient(180deg, rgba(59,130,246,0.05), rgba(255,255,255,0)) no-repeat fixed, var(--bg-main);
    color: var(--text-primary);
    line-height: 1.4; /* Redus și mai mult line-height global */
    font-size: 0.95rem; /* Micșorat fontul de bază global */
}

.container, .container-fluid {
    padding-top: 0.5rem; /* Redus și mai mult padding container */
    padding-bottom: 0.5rem; /* Redus și mai mult padding container */
}

a {
    color: var(--link-color);
    text-decoration: none;
    background-image: linear-gradient(currentColor, currentColor);
    background-position: 0% 100%;
    background-repeat: no-repeat;
    background-size: 0% 2px;
    transition: color 0.2s ease-in-out, background-size 0.2s ease-in-out;
}
a:hover {
    color: var(--link-hover-color);
    background-size: 100% 2px;
}

/* Navbar */
.navbar-brand img.logo-img {
    height: clamp(40px, 6.5vw, 64px);
    width: auto;
    margin-right: 8px;
    filter: drop-shadow(0 2px 6px rgba(0,0,0,.08));
}

/* Logo for the main page (home.html) */
.main-page-logo {
    max-height: 120px;
    width: auto;
    margin-bottom: 1rem; /* Bootstrap's mb-4 is 1.5rem, this is mb-3 equivalent */
}

.navbar {
    background-color: var(--bg-surface) !important;
    border-bottom: 1px solid var(--border-color);
    box-shadow: 0 8px 30px rgba(0,0,0,.05);
    backdrop-filter: saturate(120%) blur(6px);
}
.navbar {
    padding-top: 0.02rem; /* Și mai mic padding navbar */
    padding-bottom: 0.02rem; /* Și mai mic padding navbar */
}
.navbar .navbar-brand {
    font-weight: 500; /* Redus font-weight brand */
    font-size: 0.85rem; /* Și mai mic font-size brand */
    display: flex;
    align-items: center;
    padding-top: 0.02rem; /* Și mai mic padding brand */
    padding-bottom: 0.02rem; /* Și mai mic padding brand */
    line-height: 1.1; /* Și mai strâns line-height brand */
}
.navbar .navbar-brand img { /* Dacă se adaugă un logo imagine */
    max-height: 18px; /* Și mai mic logo height */
    margin-right: 0.15rem;
}
.navbar .nav-link {
    color: var(--text-secondary) !important;
    font-weight: 400; /* Redus font-weight linkuri */
    padding-top: 0.02rem; /* Și mai mic padding linkuri */
    padding-bottom: 0.02rem; /* Și mai mic padding linkuri */
    font-size: 0.75rem; /* Și mai mic font-size linkuri */
    line-height: 1.1; /* Și mai strâns line-height linkuri */
}
.navbar .nav-link:hover, .navbar .nav-link.active {
    color: var(--accent-primary) !important;
}
.navbar .btn#darkModeToggle {
    border-color: var(--border-color);
    color: var(--text-secondary);
    background: transparent;
}
.navbar .btn#darkModeToggle:hover {
    background-color: var(--bg-surface-hover);
}
.navbar .nav-link:focus-visible,
.btn:focus-visible,
.form-control:focus-visible,
.form-select:focus-visible {
    outline: 2px solid var(--accent-primary);
    outline-offset: 2px;
}
.navbar-toggler {
    border-color: rgba(0,0,0,0.1);
}
.navbar-toggler-icon {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar-text {
    color: var(--text-secondary);
}


/* Carduri */
.stat-card {
    background: radial-gradient(1200px circle at 0% 0%, rgba(0,123,255,0.08), transparent 40%), var(--bg-surface);
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
    box-shadow: 0 10px 30px rgba(0,0,0,.05);
    transition: transform .2s ease, box-shadow .2s ease;
}
.stat-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 18px 45px rgba(0,0,0,.10);
}
.stat-card h4 { font-weight: 700; letter-spacing: .2px; }
.stat-card small { color: var(--text-secondary); }

.card {
    background-color: var(--bg-surface);
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
    box-shadow: 0 10px 30px rgba(0,0,0,.06);
    margin-bottom: 1rem;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.card:hover {
    transform: translateY(-2px);
    box-shadow: 0 18px 45px rgba(0,0,0,.10);
}
.card-header {
    background-color: var(--bg-main);
    color: var(--text-primary);
    border-bottom: 1px solid var(--border-color);
    font-weight: 600;
    padding: 0.9rem 1.1rem;
}
.card-body {
    color: var(--text-primary);
    padding: 1.1rem;
}
.card-footer {
    background-color: var(--bg-main);
    border-top: 1px solid var(--border-color);
    padding: 0.6rem 1rem; /* Redus padding card-footer */
}
.card-title {
    margin-bottom: 0.5rem; /* Redus margin-bottom card-title */
    font-weight: 600;
}

/* Tabele */
.table {
    color: var(--text-primary);
    border-color: var(--border-color);
    width: 100%;
    margin-bottom: 1rem;
}
.table th, .table td {
    padding: 0.5rem; /* Redus padding table cell */
    vertical-align: top;
    border-top: 1px solid var(--border-color);
    color: var(--text-primary); /* Asigură explicit culoarea textului în celule */
}
.table thead th {
    vertical-align: bottom;
    border-bottom: 2px solid var(--border-color);
    font-weight: 600;
    background-color: var(--bg-surface-hover);
    color: var(--text-primary);
    position: sticky;
    top: 0;
    z-index: 1;
    cursor: pointer;
    user-select: none;
}
.th-sortable::after {
    content: '';
    display: inline-block;
    margin-left: .35rem;
    border: 4px solid transparent;
    border-top-color: transparent;
    border-bottom-color: transparent;
}
thead th[aria-sort="ascending"].th-sortable::after {
    border-bottom-color: currentColor;
}
thead th[aria-sort="descending"].th-sortable::after {
    border-top-color: currentColor;
}

/* Selection bar */
:root {
    --selection-bar-height: 60px; /* Default height for desktop */
}

.selection-bar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: calc(-1 * var(--selection-bar-height));
    background: var(--bg-surface);
    border-top: 1px solid var(--border-color);
    transition: bottom 0.2s ease-in-out;
    z-index: 1039;
    min-height: var(--selection-bar-height);
    display: flex;
    align-items: center;
}
.selection-bar.show {
    bottom: 0;
}
[data-theme="dark"] .selection-bar {
    background: var(--bg-surface);
}

/* Add padding to the body when the bar is shown to avoid content overlap */
[data-theme="dark"] .selection-bar-shown {
    padding-bottom: var(--selection-bar-height);
    transition: padding-bottom 0.2s ease-in-out;
}

@media print {
    .navbar, .footer, .fab-container, #loading-overlay { display: none !important; }
    a { text-decoration: none !important; color: #000 !important; }
    body { background: #fff !important; color: #000 !important; }
    .card, .table { box-shadow: none !important; }
}
.table-striped > tbody > tr:nth-of-type(odd) > * {
    background-color: rgba(0, 0, 0, 0.03); /* Dungile foarte subtile */
}
.table-hover > tbody > tr:hover > * {
    background-color: rgba(0, 0, 0, 0.06);
    /* Dark mode specific hover is handled by body.dark-mode .table-hover */
}
.table-compact th, .table-compact td { padding: 0.35rem !important; }
.table tbody tr.row-selected > * { background-color: rgba(59,130,246,0.12) !important; }
[data-theme="dark"] .table tbody tr.row-selected > * { background-color: rgba(59,130,246,0.22) !important; }

/* Debug admin bar spacing under sticky navbar */
@media (max-width: 991.98px) {
  [data-theme="dark"] .container.mt-4 { margin-top: 1rem !important; }
}

/* Specific dark mode table cell text color, just in case of overrides */
[data-theme="dark"] .table { background-color: var(--bg-surface); }
[data-theme="dark"] .table th,
[data-theme="dark"] .table td {
    color: var(--text-primary) !important;
    background-color: var(--bg-surface) !important;
}
[data-theme="dark"] .table thead th {
    background-color: var(--bg-surface-hover) !important; /* Consistent with other dark mode headers */
}
[data-theme="dark"] .table-striped > tbody > tr:nth-of-type(odd) > * {
    background-color: rgba(255, 255, 255, 0.035) !important; /* Lighter stripe over dark surface */
}
[data-theme="dark"] .table-hover > tbody > tr:hover > * {
    background-color: rgba(255, 255, 255, 0.08) !important;
}
[data-theme="dark"] .table a { color: var(--link-color) !important; }
[data-theme="dark"] .table a:hover { color: var(--link-hover-color) !important; }


/* Formulare */
.form-control, .form-select {
    background-color: var(--input-bg);
    color: var(--text-primary);
    border: 1px solid var(--input-border);
    border-radius: 0.25rem;
    padding: 0.4rem 0.6rem; /* Redus padding form-control/select */
    transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.form-control::placeholder { /* Stil explicit pentru placeholder */
    color: var(--text-secondary);
    opacity: 1;
}
.form-control:focus, .form-select:focus {
    background-color: var(--input-bg);
    color: var(--text-primary);
    border-color: var(--input-focus-border);
    box-shadow: 0 0 0 0.25rem var(--input-focus-shadow);
    outline: 0; /* Elimină outline default */
}
.form-label {
    color: var(--text-primary);
    font-weight: 500;
    margin-bottom: 0.3rem; /* Redus margin-bottom form-label */
}
.form-check-input {
    margin-top: 0.2rem; /* Aliniere mai bună cu label-ul */
}
.form-check-input:checked {
    background-color: var(--accent-primary);
    border-color: var(--accent-primary);
}
.form-text { /* Pentru textul ajutător din formulare */
    font-size: 0.875em;
    color: var(--text-secondary);
}


/* Butoane - folosind culorile Bootstrap standard pentru coerență */
.btn {
    border-radius: 0.25rem;
    padding: 0.4rem 0.8rem; /* Redus padding btn */
    font-weight: 500;
    transition: color .15s ease, background-color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.btn:hover {
    transform: translateY(-1px);
    filter: brightness(98%);
}
/* Pentru butoanele outline, vrem ca textul și border-ul să devină mai opace, nu tot butonul */
.btn-outline-primary:hover, .btn-outline-secondary:hover {
    filter: none; /* Anulăm filter brightness general pentru outline */
    /* Efectul de umplere la hover e deja definit de Bootstrap și e suficient */
}

.btn-primary {
    background-color: var(--accent-primary);
    border-color: var(--accent-primary);
    color: var(--text-on-accent);
}
.btn-primary:hover, .btn-primary:focus {
    background-color: var(--accent-primary-darker);
    border-color: var(--accent-primary-darker);
    color: var(--text-on-accent);
}
.btn-secondary {
    background-color: var(--accent-secondary);
    border-color: var(--accent-secondary);
    color: var(--text-on-accent);
}
.btn-secondary:hover, .btn-secondary:focus {
    background-color: var(--accent-secondary-darker);
    border-color: var(--accent-secondary-darker);
    color: var(--text-on-accent);
}
.btn-success {
    background-color: var(--accent-success);
    border-color: var(--accent-success);
    color: var(--text-on-accent);
}
.btn-danger {
    background-color: var(--accent-danger);
    border-color: var(--accent-danger);
    color: var(--text-on-accent);
}
.btn-warning {
    background-color: var(--accent-warning);
    border-color: var(--accent-warning);
    color: #212529; /* Text închis pentru contrast pe galben */
}
.btn-info {
    background-color: var(--accent-info);
    border-color: var(--accent-info);
    color: var(--text-on-accent);
}
/* Butoane Outline */
.btn-outline-primary {
    color: var(--accent-primary);
    border-color: var(--accent-primary);
}
.btn-outline-primary:hover {
    color: var(--text-on-accent);
    background-color: var(--accent-primary);
    border-color: var(--accent-primary);
}
.btn-outline-secondary {
    color: var(--accent-secondary);
    border-color: var(--accent-secondary);
}
.btn-outline-secondary:hover {
    color: var(--text-on-accent);
    background-color: var(--accent-secondary);
    border-color: var(--accent-secondary);
}

/* Dropdowns */
.dropdown-menu {
    border-radius: 0.5rem;
    border-color: var(--border-color);
    box-shadow: 0 10px 30px rgba(0,0,0,.10);
    background-color: var(--bg-surface);
}
.dropdown-item { color: var(--text-primary); }
.dropdown-item:hover, .dropdown-item:focus { background-color: var(--bg-surface-hover); }
[data-theme="dark"] .dropdown-menu { background-color: var(--bg-surface); border-color: var(--border-color); }
[data-theme="dark"] .dropdown-item { color: var(--text-primary); }
[data-theme="dark"] .dropdown-item:hover, [data-theme="dark"] .dropdown-item:focus { background-color: var(--bg-surface-hover); color: var(--text-primary); }


/* Alerte */
.alert {
    border-width: 1px;
    border-radius: 0.25rem;
    padding: 0.75rem; /* Redus padding alert */
    margin-bottom: 0.75rem; /* Redus margin-bottom alert */
}
.alert-success {
    color: #0f5132; background-color: #d1e7dd; border-color: #badbcc;
}
.alert-danger {
    color: #842029; background-color: #f8d7da; border-color: #f5c2c7;
}
.alert-warning {
    color: #664d03; background-color: #fff3cd; border-color: #ffecb5;
}
.alert-info {
    color: #055160; background-color: #cff4fc; border-color: #b6effb;
}
.alert-secondary {
    color: #41464b; background-color: #e2e3e5; border-color: #d3d6d8;
}
.btn-close { /* Pentru închiderea alertelor - ajustat pentru fundal deschis */
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e");
}


/* Badges */
.badge {
    font-weight: 600; /* Puțin mai bold */
    padding: 0.35em 0.65em; /* Padding standard Bootstrap */
    font-size: .8em; /* Mărime ajustată */
}
/* Bootstrap standard bg colors for badges are generally fine with new text colors */
.badge.bg-primary { background-color: var(--accent-primary) !important; }
.badge.bg-secondary { background-color: var(--accent-secondary) !important; }
.badge.bg-success { background-color: var(--accent-success) !important; }
.badge.bg-danger { background-color: var(--accent-danger) !important; }
.badge.bg-warning { background-color: var(--accent-warning) !important; color: #212529 !important; }
.badge.bg-info { background-color: var(--accent-info) !important; }
.badge.bg-light { background-color: #e9ecef !important; color: #212529 !important; } /* Light badge pe fundal deschis */
.badge.bg-dark { background-color: #343a40 !important; }


/* Text Muted */
.text-muted {
    color: var(--text-secondary) !important;
}

/* Animation for content fade-in */
@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(15px); /* Slight upward movement */
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.content-wrapper-animated {
    animation: fadeIn 0.5s ease-out forwards;
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation: none !important;
        transition: none !important;
        scroll-behavior: auto !important;
    }
}

/* Icon Animations */
.icon-rotate-hover {
    display: inline-block; /* Necessary for transform to work as expected */
    transition: transform 0.3s ease-in-out;
}

.icon-rotate-hover:hover {
    transform: rotate(15deg); /* Slight rotation on hover */
}

/* Specific hover for settings/refresh icons for full rotation */
.icon-spin-hover:hover {
    animation: spin 1s ease-in-out;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}


/* Hr */
hr {
    border-top: 1px solid var(--border-color);
    opacity: 0.25; /* Opacitate standard Bootstrap */
}

/* Input[type="date"] and input[type="time"] picker icon */
input[type="date"]::-webkit-calendar-picker-indicator,
input[type="time"]::-webkit-calendar-picker-indicator,
input[type="datetime-local"]::-webkit-calendar-picker-indicator {
    filter: none; /* Elimină filtrul invert, nu mai e necesar pe fundal deschis */
    opacity: 0.7;
    cursor: pointer;
}
input[type="date"]::-webkit-calendar-picker-indicator:hover,
input[type="time"]::-webkit-calendar-picker-indicator:hover,
input[type="datetime-local"]::-webkit-calendar-picker-indicator:hover {
    opacity: 1;
}


/* Footer specific styles */
.footer {
    padding: 0.1rem 0; /* Și mai mic padding footer */
    background-color: var(--bg-surface);
    border-top: 1px solid var(--border-color);
    color: var(--text-secondary);
    text-align: center;
    font-size: 0.65em; /* Și mai mic font-size footer */
    line-height: 1.1; /* Și mai strâns line-height footer */
}

.heartbeat {
    display: inline-block;
    animation: heartbeat_animation 1.5s ease-in-out infinite;
    color: var(--accent-danger); /* Roșu pentru inimă */
}

@keyframes heartbeat_animation {
    0% { transform: scale(1); }
    10% { transform: scale(1.3); }
    20% { transform: scale(1); }
    30% { transform: scale(1.3); }
    40% { transform: scale(1); }
    100% { transform: scale(1); }
}

/* Responsive adjustments */
@media (max-width: 768px) {
    body {
        font-size: 0.9rem; /* Ajustează fontul de bază pentru ecrane medii/mici */
    }
    .table-responsive { /* Ensure all responsive tables can scroll if needed */
        overflow-x: auto;
    }
    .container, .container-fluid {
        padding-left: 1rem;
        padding-right: 1rem;
    }
    h1 { font-size: 2rem; }
    h2 { font-size: 1.75rem; }
    h3 { font-size: 1.5rem; }
    .navbar-brand { font-size: 1.25rem; }
    .navbar-brand img { max-height: 30px; }
}

@media (max-width: 576px) {
    .btn {
        padding: 0.4rem 0.8rem; /* Padding mai mic pentru butoane pe ecrane foarte mici */
        font-size: 0.9rem;
    }
    .form-control, .form-select {
        padding: 0.4rem 0.6rem;
        font-size: 0.9rem;
    }
    .table th, .table td {
        padding: 0.25rem; /* Padding și mai mic pentru celule tabel pe ecrane foarte mici */
        font-size: 0.8rem; /* Font și mai mic în tabele pe ecrane foarte mici */
    }
    /* Asigură că butoanele de acțiune din tabele au suficient spațiu sau trec pe rând nou */
    .table td .btn {
        margin-bottom: 0.25rem; /* Adaugă un mic spațiu sub butoane dacă se împachetează */
    }
    .table td form.d-inline { /* Asigură că formularele inline nu cauzează probleme de layout */
        /* display: block; Pot fi probleme dacă vrem btn-group */
        margin-bottom: 0.25rem;
    }
    /* Face butoanele individuale (nu cele din grup) să ocupe lățimea maximă */
    .table td > form.d-inline .btn,
    .table td > a.btn,
    .table td > button.btn:not([type='submit']) {
        width: 100%;
        margin-right: 0; /* Eliminăm margin-right dacă sunt full-width */
    }
    /* Menține butoanele dintr-un btn-group inline */
    .table td .btn-group .btn,
    .table td .btn-group form.d-inline .btn {
        width: auto !important; /* Important pentru a suprascrie regula de mai sus */
    }
    .table td .btn-group {
        display: flex; /* Asigură că btn-group se întinde dacă e nevoie */
        flex-wrap: wrap; /* Permite wrap pentru butoane în grup */
        width: 100%; /* btn-group să ocupe lățimea celulei */
        justify-content: flex-start; /* Aliniere butoane în grup */
    }
    .table td .btn-group > .btn,
    .table td .btn-group > form { /* Spațiere între elementele din btn-group când fac wrap */
        margin-bottom: 0.25rem;
        margin-right: 0.25rem;
    }
    .table td .btn-group > *:last-child {
        margin-right: 0;
    }


}

/* Utility classes */
.fw-bold { font-weight: bold !important; }
.fs-sm { font-size: 0.875rem !important; }
.fs-lg { font-size: 1.25rem !important; }

/* Responsive adjustments for Navbar */
@media (max-width: 991.98px) { /* Below lg breakpoint (when navbar collapses) */
    .navbar-nav {
        margin-top: 0.5rem; /* Add some space above nav items when collapsed */
    }
    .navbar-nav .nav-item {
        text-align: center; /* Center nav items when collapsed for a cleaner look */
    }
    .navbar-nav .nav-link {
        padding-left: 0.5rem; /* Ensure padding is consistent */
        padding-right: 0.5rem;
    }
    .navbar-text { /* Ensure user info span is also centered and has some margin */
        display: block;
        text-align: center;
        margin-bottom: 0.5rem;
        margin-right: 0 !important; /* Override me-2 for centering */
        font-size: 0.8rem; /* Reduced font size for login info on mobile */
    }
}

@media (max-width: 575.98px) { /* Extra small devices (phones) */
    :root {
        --selection-bar-height: 75px; /* Taller bar on mobile for easier touch */
    }

    .selection-bar .sel-info {
        font-size: 0.8rem;
    }

    .selection-bar .btn {
        font-size: 0.8rem;
        padding: 0.4rem 0.7rem; /* Slightly larger padding for easier tap */
    }

    .container, .container-fluid {
        padding-left: 0.75rem; /* Further reduce padding on very small screens */
        padding-right: 0.75rem;
    }
    /* Navbar brand logo text defined in base.html, style it here for small screens */
    /* Assuming .unap-logo-text is a child of .navbar-brand */
    .navbar .navbar-brand .unap-logo-text { /* More specific selector if needed */
        font-size: 1.35rem !important; /* Slightly reduce logo text size, use !important if defined inline with higher specificity */
    }
    .navbar .navbar-brand {
        padding-top: 0.1rem;
        padding-bottom: 0.1rem;
    }

    /* Reduce card header/title font size on small screens */
    .card-header h1, .card-header h2, .card-header h3, .card-header h4, .card-header h5, .card-header h6,
    .card-title { /* Also target .card-title directly if used outside header */
        font-size: 1.1rem; /* Adjust as needed */
    }
    .card-body, .card-footer {
        font-size: 0.85rem; /* Slightly reduce body/footer font in cards too */
    }
    .card-body .btn { /* Ensure buttons in cards are also smaller if not already btn-sm */
        font-size: 0.8rem;
        padding: 0.3rem 0.6rem;
    }
}

/* Floating actions (CSV export, Print) */
.fab-container {
    position: fixed;
    right: 16px;
    bottom: 16px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    z-index: 1040; /* Above content, below modal (1050) */
}
.fab-button {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 10px 30px rgba(0,0,0,.15);
}

/* Loading Spinner Overlay */
/* (Note: keep this marker for navigation only) */
#loading-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.6);
    z-index: 9999;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    display: none; /* Ascuns implicit */
    transition: opacity 0.3s ease;
    opacity: 0;
}

#loading-overlay.show {
    display: flex;
    opacity: 1;
}

[data-theme="dark"] #loading-overlay {
    background-color: rgba(0, 0, 0, 0.7); /* Fundal întunecat semi-transparent */
}

#loading-overlay .spinner-container {
    text-align: center;
    color: #333;
}

[data-theme="dark"] #loading-overlay .spinner-container {
    color: #f1f1f1;
}

#loading-overlay .spinner {
    border: 6px solid transparent;
    border-top-color: #3498db;
    border-right-color: #3498db;
    border-radius: 50%;
    width: 56px;
    height: 56px;
    animation: spin 0.8s linear infinite;
    margin: 0 auto;
    box-shadow: inset 0 0 0 1px rgba(52,152,219,0.25);
}

[data-theme="dark"] #loading-overlay .spinner {
    border-color: #555;
    border-top-color: #3498db;
}

/* Styling for the report text block to be copied */
.report-text-block {
    background-color: #e9ecef;
    border: 1px solid #ced4da;
    border-radius: 0.25rem;
    padding: 1rem;
    font-family: monospace;
    white-space: pre-wrap;
    word-wrap: break-word;
    font-size: 0.875em;
    margin-top: 1rem;
}

[data-theme="dark"] .report-text-block {
    background-color: #1a1a1a;
    border-color: #555;
    color: #f1f1f1;
}

/* Larger controls for date/time inputs to improve readability */
input[type="date"],
input[type="time"],
input[type="datetime-local"] {
  /* A general minimum width for all date/time inputs */
  min-width: 180px;
}

/* Specific rules for inputs with helper buttons to prevent shrinking */
.input-group > input.has-time-helpers {
  /* Let it grow (1), don't let it shrink (0), and give it a base size */
  flex: 1 0 180px;
  /* min-width is a fallback and ensures it doesn't get smaller than this */
  min-width: 180px;
}

/* Ensure inside small forms we still see content */
.form-control[type="date"],
.form-control[type="time"],
.form-control[type="datetime-local"] {
  padding-right: 0.75rem;
}

/* --- Additional hardening for dark mode lists/tables and utility backgrounds --- */

/* Ensure white backgrounds are adapted in dark mode when used by utilities */
[data-theme="dark"] .bg-white,
[data-theme="dark"] .table .bg-white {
  background-color: var(--bg-surface) !important;
  color: var(--text-primary) !important;
}

/* Force override inline white backgrounds to avoid unreadable rows/elements on dark theme */
[data-theme="dark"] [style*="background:#fff"],
[data-theme="dark"] [style*="background: #fff"],
[data-theme="dark"] [style*="background:#ffffff"],
[data-theme="dark"] [style*="background: #ffffff"],
[data-theme="dark"] [style*="background-color:#fff"],
[data-theme="dark"] [style*="background-color: #fff"],
[data-theme="dark"] [style*="background-color:#ffffff"],
[data-theme="dark"] [style*="background-color: #ffffff"],
[data-theme="dark"] [style*="background-color:rgb(255, 255, 255)"],
[data-theme="dark"] [style*="background:rgb(255, 255, 255)"],
[data-theme="dark"] .row.bg-white,
[data-theme="dark"] tr[style*="background-color: #fff"],
[data-theme="dark"] tr[style*="background-color:#fff"] {
  background-color: var(--bg-surface) !important;
  color: var(--text-primary) !important;
}

/* Bordered tables should use dark borders in dark mode */
[data-theme="dark"] .table-bordered,
[data-theme="dark"] .table-bordered > :not(caption) > * {
  border-color: var(--border-color) !important;
}

/* Ensure cell borders use dark border color for all table types */
[data-theme="dark"] .table > :not(caption) > * > * {
  border-color: var(--border-color) !important;
}

/* List group interactive items hover/focus in dark mode */
[data-theme="dark"] .list-group-item-action:hover,
[data-theme="dark"] .list-group-item-action:focus {
  background-color: var(--bg-surface-hover) !important;
  color: var(--text-primary) !important;
}

/* Muted text can be slightly brighter in dark mode for readability inside table/list contexts */
[data-theme="dark"] .table .text-muted,
[data-theme="dark"] .list-group .text-muted {
  color: #bdbdbd !important; /* slightly brighter than default muted */
}

/* Ensure striped list groups (if any) get proper background */
[data-theme="dark"] .list-group-striped .list-group-item:nth-of-type(odd) {
  background-color: rgba(255,255,255,0.035) !important;
}

/* Fix hover state for table row links in dark mode (keep contrast) */
[data-theme="dark"] .table tbody tr:hover a {
  color: var(--link-hover-color) !important;
}
