/**
 * FitTrack - Main Stylesheet
 * Light theme with clean, modern design
 */

/* ==================== CSS Variables ==================== */
:root {
    /* Colors */
    --color-primary: #1e293b;
    --color-primary-light: #334155;
    --color-primary-dark: #0f172a;
    --color-accent: #3b82f6;
    --color-accent-hover: #2563eb;
    --color-success: #10b981;
    --color-warning: #f59e0b;
    --color-danger: #ef4444;
    
    /* Backgrounds */
    --bg-body: #f8fafc;
    --bg-card: #ffffff;
    --bg-input: #ffffff;
    --bg-hover: #f1f5f9;
    
    /* Text */
    --text-primary: #1e293b;
    --text-secondary: #64748b;
    --text-muted: #94a3b8;
    --text-inverse: #ffffff;
    
    /* Borders */
    --border-color: #e2e8f0;
    --border-color-focus: #3b82f6;
    
    /* Shadows */
    --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
    --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
    --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
    --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
    
    /* Spacing */
    --spacing-xs: 0.25rem;
    --spacing-sm: 0.5rem;
    --spacing-md: 1rem;
    --spacing-lg: 1.5rem;
    --spacing-xl: 2rem;
    --spacing-2xl: 3rem;
    
    /* Border Radius */
    --radius-sm: 0.375rem;
    --radius-md: 0.5rem;
    --radius-lg: 0.75rem;
    --radius-xl: 1rem;
    --radius-full: 9999px;
    
    /* Transitions */
    --transition-fast: 150ms ease;
    --transition-normal: 200ms ease;
    --transition-slow: 300ms ease;
}

/* ============================================================
   [2net] Dark theme — override χρωματικών variables.
   Ενεργό: (α) data-theme="dark" ρητά, (β) data-theme="system" + OS σε dark.
   Τα spacing/radius/transitions ΔΕΝ αλλάζουν (μένουν από :root).
   ============================================================ */
[data-theme="dark"] {
    --color-primary: #0f172a;
    --color-primary-light: #1e293b;
    --color-primary-dark: #020617;
    --color-accent: #3b82f6;
    --color-accent-hover: #60a5fa;

    --bg-body: #0f172a;
    --bg-card: #1e293b;
    --bg-input: #334155;
    --bg-hover: #334155;

    --text-primary: #f1f5f9;
    --text-secondary: #94a3b8;
    --text-muted: #8a97ab;
    --text-inverse: #0f172a;

    --border-color: #334155;
    --border-color-focus: #3b82f6;

    --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.35);
    --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.45), 0 2px 4px -2px rgb(0 0 0 / 0.45);
    --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.5);
    --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.55), 0 8px 10px -6px rgb(0 0 0 / 0.55);
}

/* data-theme="system": ακολούθα το OS */
@media (prefers-color-scheme: dark) {
    [data-theme="system"] {
        --color-primary: #0f172a;
        --color-primary-light: #1e293b;
        --color-primary-dark: #020617;
        --color-accent: #3b82f6;
        --color-accent-hover: #60a5fa;

        --bg-body: #0f172a;
        --bg-card: #1e293b;
        --bg-input: #334155;
        --bg-hover: #334155;

        --text-primary: #f1f5f9;
        --text-secondary: #94a3b8;
        --text-muted: #8a97ab;
        --text-inverse: #0f172a;

        --border-color: #334155;
        --border-color-focus: #3b82f6;

        --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.35);
        --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.45), 0 2px 4px -2px rgb(0 0 0 / 0.45);
        --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.5);
        --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.55), 0 8px 10px -6px rgb(0 0 0 / 0.55);
    }
}

/* ============================================================
   [2net] Dark v2 — "Warm charcoal". Ουδετερο, premium.
   Ζεστα γκρι (hue ~40, χαμηλος κορεσμος), cards πιο ανοιχτα απο body
   (φως απο πανω), κρυο μπλε accent για contrast/συνεπεια.
   ============================================================ */
[data-theme="dark-v2"] {
    color-scheme: dark; /* [2net] σκουρες και οι μπαρες κυλισης / date pickers / dropdowns του browser */
    --color-primary: #262219;
    --color-primary-light: #34302a;
    --color-primary-dark: #1a1712;
    --color-accent: #4b8bf0;
    --color-accent-hover: #6ba1f5;
    --color-success: #34d399;
    --color-warning: #fbbf24;
    --color-danger: #f87171;

    --bg-body: #14130f;
    --bg-card: #1e1c16;
    --bg-input: #2a2820;
    --bg-hover: #2a2820;

    --text-primary: #f4f1ea;
    --text-secondary: #b0a99b;
    --text-muted: #938c7c;
    --text-inverse: #14130f;

    --border-color: #302d24;
    --border-color-focus: #4b8bf0;

    --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.45);
    --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.55), 0 2px 4px -2px rgb(0 0 0 / 0.55);
    --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.6), 0 4px 6px -4px rgb(0 0 0 / 0.6);
    --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.65), 0 8px 10px -6px rgb(0 0 0 / 0.65);
}


/* ==================== Reset & Base ==================== */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

/* [2net] Τα κουμπια/inputs να κληρονομουν το χρωμα κειμενου (αλλιως ο browser
   βαζει μαυρο default -> αορατο κειμενο σε dark). WCAG contrast fix. */
button, input, select, textarea {
    color: inherit;
}

html {
    font-size: 16px;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    font-size: 1rem;
    line-height: 1.5;
    color: var(--text-primary);
    background-color: var(--bg-body);
    min-height: 100vh;
}

a {
    color: var(--color-accent);
    text-decoration: none;
    transition: color var(--transition-fast);
}

a:hover {
    color: var(--color-accent-hover);
}

img {
    max-width: 100%;
    height: auto;
}

/* ==================== Typography ==================== */
h1, h2, h3, h4, h5, h6 {
    font-weight: 600;
    line-height: 1.25;
    color: var(--text-primary);
}

h1 { font-size: 2rem; }
h2 { font-size: 1.5rem; }
h3 { font-size: 1.25rem; }
h4 { font-size: 1.125rem; }
h5 { font-size: 1rem; }
h6 { font-size: 0.875rem; }

.text-muted { color: var(--text-muted); }
.text-secondary { color: var(--text-secondary); }
.text-small { font-size: 0.875rem; }
.text-xs { font-size: 0.75rem; }
.text-center { text-align: center; }

/* ==================== Layout ==================== */
.container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 var(--spacing-lg);
}

.page-wrapper {
    display: flex;
    min-height: 100vh;
}

/* ==================== Login Page ==================== */
.login-page {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: var(--spacing-lg);
    background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
}

/* [2net] σκούρο θέμα (προεπιλογή): το φόντο της σύνδεσης/επαναφοράς κωδικού από τα theme vars */
[data-theme="dark-v2"] .login-page {
    background: linear-gradient(135deg, var(--bg-body) 0%, var(--bg-card) 100%);
}

.login-container {
    width: 100%;
    max-width: 420px;
}

.login-header {
    text-align: center;
    margin-bottom: var(--spacing-xl);
}

.login-logo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    background: var(--color-primary);
    border-radius: var(--radius-lg);
    margin-bottom: var(--spacing-lg);
    box-shadow: var(--shadow-lg);
}

.login-logo svg {
    width: 32px;
    height: 32px;
    color: white;
}

.login-logo-large {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    max-width: 95%;
    margin: 0 auto var(--spacing-lg);
    padding: var(--spacing-2xl) var(--spacing-xl);
    background: var(--color-primary);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-lg);
}

.login-logo-large svg {
    width: 100%;
    height: auto;
    max-height: 170px;
    fill: white;
}

/* ανεβασμένο λογότυπο ή όνομα με γράμματα (Ρυθμίσεις > Λογότυπο) */
.login-logo-large .brand-logo-img {
    max-width: 100%;
    max-height: 170px;
    object-fit: contain;
}

.brand-logo-text {
    font-size: 2rem;
    font-weight: 800;
    line-height: 1.2;
    text-align: center;
    overflow-wrap: anywhere;
}

.brand-logo-text.on-primary {
    color: #fff;
}

.login-title {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: var(--spacing-sm);
}

.login-subtitle {
    color: var(--text-secondary);
    font-size: 0.9375rem;
}

/* ==================== Cards ==================== */
.card {
    background: var(--bg-card);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--border-color);
}

.card-body {
    padding: var(--spacing-xl);
}

.card-header {
    padding: var(--spacing-lg) var(--spacing-xl);
    border-bottom: 1px solid var(--border-color);
}

.card-footer {
    padding: var(--spacing-lg) var(--spacing-xl);
    border-top: 1px solid var(--border-color);
    background: var(--bg-hover);
    border-radius: 0 0 var(--radius-xl) var(--radius-xl);
}

/* ==================== Forms ==================== */
.form-group {
    margin-bottom: var(--spacing-lg);
}

.form-label {
    display: block;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-secondary);
    margin-bottom: var(--spacing-sm);
}

.form-control {
    display: block;
    width: 100%;
    padding: 0.875rem 1rem;
    font-size: 0.9375rem;
    font-family: inherit;
    color: var(--text-primary);
    background: var(--bg-input);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-lg);
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

/* Date input specific styles for iOS compatibility */
input[type="date"].form-control {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    text-align: left;
    min-height: 48px;
    line-height: 1.2;
}

input[type="date"].form-control::-webkit-date-and-time-value {
    text-align: left;
    padding: 0;
}

.form-control:focus {
    outline: none;
    border-color: var(--border-color-focus);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

.form-control::placeholder {
    color: var(--text-muted);
}

.form-control-icon {
    position: relative;
}

.form-control-icon .form-control {
    padding-left: 2.75rem;
}

.form-control-icon .icon {
    position: absolute;
    left: 1rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--text-muted);
    pointer-events: none;
}

.form-control-icon .icon svg {
    width: 18px;
    height: 18px;
}

.form-hint {
    font-size: 0.8125rem;
    color: var(--text-muted);
    margin-top: var(--spacing-xs);
}

.form-error {
    font-size: 0.8125rem;
    color: var(--color-danger);
    margin-top: var(--spacing-xs);
}

/* Checkbox */
.form-checkbox {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    cursor: pointer;
}

.form-checkbox input[type="checkbox"] {
    width: 18px;
    height: 18px;
    border: 2px solid var(--border-color);
    border-radius: var(--radius-sm);
    cursor: pointer;
    accent-color: var(--color-accent);
}

.form-checkbox-label {
    font-size: 0.875rem;
    color: var(--text-secondary);
}

/* ==================== Buttons ==================== */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
    padding: 0.875rem 1.5rem;
    font-size: 0.9375rem;
    font-weight: 600;
    font-family: inherit;
    line-height: 1;
    text-align: center;
    white-space: nowrap;
    border: none;
    border-radius: var(--radius-lg);
    cursor: pointer;
    transition: all var(--transition-fast);
}

.btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.btn-block {
    display: flex;
    width: 100%;
}

.btn-primary {
    color: var(--text-inverse);
    background: var(--color-primary);
}

.btn-primary:hover:not(:disabled) {
    background: var(--color-primary-light);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}

.btn-primary:active:not(:disabled) {
    transform: translateY(0);
}

/* [2net] Σε dark themes το --color-primary ειναι σχεδον ισο με το φοντο (αορατο
   κουμπι) και το --text-inverse σκουρο. Κανε το primary CTA μπλε accent + λευκο
   κειμενο ωστε να ξεχωριζει καθαρα (WCAG: bold/large λευκο σε accent >=3:1). */
[data-theme="dark"] .btn-primary,
[data-theme="dark-v2"] .btn-primary {
    background: var(--color-accent);
    color: #ffffff;
}
[data-theme="dark"] .btn-primary:hover:not(:disabled),
[data-theme="dark-v2"] .btn-primary:hover:not(:disabled) {
    background: var(--color-accent-hover);
}
@media (prefers-color-scheme: dark) {
    [data-theme="system"] .btn-primary {
        background: var(--color-accent);
        color: #ffffff;
    }
    [data-theme="system"] .btn-primary:hover:not(:disabled) {
        background: var(--color-accent-hover);
    }
}

.btn-secondary {
    color: var(--text-primary);
    background: var(--bg-hover);
    border: 1px solid var(--border-color);
}

.btn-secondary:hover:not(:disabled) {
    background: var(--border-color);
}

.btn-link {
    padding: 0;
    color: var(--color-accent);
    background: transparent;
}

.btn-link:hover {
    color: var(--color-accent-hover);
    text-decoration: underline;
}

.btn svg {
    width: 18px;
    height: 18px;
}

/* ==================== Alerts ==================== */
.alert {
    padding: var(--spacing-md) var(--spacing-lg);
    border-radius: var(--radius-lg);
    font-size: 0.875rem;
    margin-bottom: var(--spacing-lg);
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

.alert-success {
    background: rgba(16, 185, 129, 0.1);
    color: #065f46;
    border: 1px solid rgba(16, 185, 129, 0.2);
}

.alert-error {
    background: rgba(239, 68, 68, 0.1);
    color: #991b1b;
    border: 1px solid rgba(239, 68, 68, 0.2);
}

.alert-warning {
    background: rgba(245, 158, 11, 0.1);
    color: #92400e;
    border: 1px solid rgba(245, 158, 11, 0.2);
}

.alert-info {
    background: rgba(59, 130, 246, 0.1);
    color: #1e40af;
    border: 1px solid rgba(59, 130, 246, 0.2);
}

/* ==================== Divider ==================== */
.divider {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin: var(--spacing-lg) 0;
}

.divider::before,
.divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--border-color);
}

.divider-text {
    font-size: 0.75rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ==================== Links Group ==================== */
.links-group {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--spacing-lg);
}

.links-group a {
    font-size: 0.875rem;
}

/* ==================== Footer ==================== */
.login-footer {
    text-align: center;
    padding-top: var(--spacing-xl);
}

.login-footer p {
    font-size: 0.875rem;
    color: var(--text-muted);
}

/* ==================== Utilities ==================== */
.mt-1 { margin-top: var(--spacing-xs); }
.mt-2 { margin-top: var(--spacing-sm); }
.mt-3 { margin-top: var(--spacing-md); }
.mt-4 { margin-top: var(--spacing-lg); }
.mt-5 { margin-top: var(--spacing-xl); }

.mb-1 { margin-bottom: var(--spacing-xs); }
.mb-2 { margin-bottom: var(--spacing-sm); }
.mb-3 { margin-bottom: var(--spacing-md); }
.mb-4 { margin-bottom: var(--spacing-lg); }
.mb-5 { margin-bottom: var(--spacing-xl); }

.hidden { display: none !important; }

/* ==================== Animations ==================== */
@keyframes fadeIn {
    from { opacity: 0; transform: translateY(-10px); }
    to { opacity: 1; transform: translateY(0); }
}

.animate-fade-in {
    animation: fadeIn 0.3s ease forwards;
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
    20%, 40%, 60%, 80% { transform: translateX(5px); }
}

.animate-shake {
    animation: shake 0.5s ease;
}

/* ==================== Responsive ==================== */
@media (max-width: 480px) {
    .login-page {
        padding: var(--spacing-md);
    }
    
    .card-body {
        padding: var(--spacing-lg);
    }
    
    .login-title {
        font-size: 1.5rem;
    }
}

/* =====================================================================================================
   [2net] Παλέτα FitTrack (30/09/2026): ένα σύστημα, ίδιο σε ανοιχτό και σκούρο θέμα.
   - Ένα μπλε: το --color-accent του θέματος (κουμπιά, avatar, ενεργές επιλογές). Όχι #2563eb/#667eea κ.λπ.
   - Τέσσερα νοήματα: info (πρόγραμμα/πληροφορία), warn (προσοχή/λήξη/αλλαγή), ok (ενεργό/ολοκληρωμένο), bad (λάθος/έληξε).
     Badges και εικονίδια κατάστασης: απαλό φόντο (tint) + κείμενο στο χρώμα του νοήματος.
     Κουτιά πληροφορίας (callouts): η επιφάνεια του θέματος + γραμμή 3px αριστερά στο χρώμα του νοήματος.
   - Ετικέτες χωρίς νόημα (τοποθεσία): ουδέτερες.
   Οι κανόνες έχουν πρόθεμα "html body" ώστε να κερδίζουν το CSS κάθε σελίδας χωρίς !important.
   ===================================================================================================== */
:root {
    --ft-info: #2563eb; --ft-info-text: #1d4ed8; --ft-info-tint: rgba(37, 99, 235, 0.10);
    --ft-warn: #d97706; --ft-warn-text: #92400e; --ft-warn-tint: rgba(217, 119, 6, 0.12);
    --ft-ok: #059669; --ft-ok-text: #047857; --ft-ok-tint: rgba(5, 150, 105, 0.11);
    --ft-bad: #dc2626; --ft-bad-text: #b91c1c; --ft-bad-tint: rgba(220, 38, 38, 0.09);
    --ft-neutral-tint: #eef2f6;
    --ft-callout: #f8fafc;
}
[data-theme="dark"], [data-theme="dark-v2"] {
    --ft-info: #4b8bf0; --ft-info-text: #9cc0f8; --ft-info-tint: rgba(75, 139, 240, 0.16);
    --ft-warn: #fbbf24; --ft-warn-text: #fcd34d; --ft-warn-tint: rgba(251, 191, 36, 0.12);
    --ft-ok: #34d399; --ft-ok-text: #6ee7b7; --ft-ok-tint: rgba(52, 211, 153, 0.13);
    --ft-bad: #f87171; --ft-bad-text: #fca5a5; --ft-bad-tint: rgba(248, 113, 113, 0.13);
    --ft-neutral-tint: rgba(255, 255, 255, 0.07);
    --ft-callout: var(--bg-input);
}
@media (prefers-color-scheme: dark) {
    [data-theme="system"] {
        --ft-info: #4b8bf0; --ft-info-text: #9cc0f8; --ft-info-tint: rgba(75, 139, 240, 0.16);
        --ft-warn: #fbbf24; --ft-warn-text: #fcd34d; --ft-warn-tint: rgba(251, 191, 36, 0.12);
        --ft-ok: #34d399; --ft-ok-text: #6ee7b7; --ft-ok-tint: rgba(52, 211, 153, 0.13);
        --ft-bad: #f87171; --ft-bad-text: #fca5a5; --ft-bad-tint: rgba(248, 113, 113, 0.13);
        --ft-neutral-tint: rgba(255, 255, 255, 0.07);
        --ft-callout: var(--bg-input);
    }
}

/* ένα μπλε */
html body :is(.btn.btn-primary, .btn-save, button.submit-btn, .action-btn.primary, .start-scanner-btn, .theme-option.active,
    .program-icon, .btn-view-medical, .role-badge.admin) { background: var(--color-accent); border-color: var(--color-accent); color: #fff; }
html body :is(.btn.btn-primary, .btn-save, button.submit-btn, .action-btn.primary, .start-scanner-btn, .btn-view-medical):hover { background: var(--color-accent-hover, var(--color-accent)); }
html body :is(.user-avatar, .athlete-avatar, .profile-avatar, .sub-avatar, .avatar-preview, .recent-avatar) { background: var(--color-accent); }

/* badges και εικονίδια κατάστασης */
html body :is(.status-badge.status-active, .status-badge.active, .medical-status-badge.completed) { background: var(--ft-ok-tint); color: var(--ft-ok-text); }
html body :is(.status-badge.status-expiring, .status-badge.expiring, .stat-icon.amber) { background: var(--ft-warn-tint); color: var(--ft-warn-text); }
html body :is(.status-badge.status-expired, .status-badge.expired, .stat-icon.red, .status-icon) { background: var(--ft-bad-tint); color: var(--ft-bad-text); }
html body :is(.stat-icon.blue, .sub-credits-badge, .auto-id) { background: var(--ft-info-tint); color: var(--ft-info-text); }
html body :is(.sub-icon, .subscription-banner.expired .sub-icon) { background: var(--ft-bad-tint); color: var(--ft-bad-text); }
html body .subscription-banner.active .sub-icon { background: var(--ft-ok-tint); color: var(--ft-ok-text); }
html body .subscription-banner.expiring .sub-icon { background: var(--ft-warn-tint); color: var(--ft-warn-text); }
html body .subscription-banner.none .sub-icon { background: var(--ft-neutral-tint); color: var(--text-secondary); }
html body .subscription-banner.expired .sub-status { color: var(--ft-bad-text); }
html body .sub-icon.medical-icon { background: var(--ft-warn-tint); color: var(--ft-warn-text); }

/* ετικέτες τοποθεσίας: ουδέτερες (δεν έχουν νόημα κατάστασης) */
html body :is(.profile-location, .program-location-badge, .location-badge) { background: var(--ft-neutral-tint); color: var(--text-primary); border-color: var(--border-color); }

/* κουτιά πληροφορίας */
html body :is(.subscription-banner, .subscription-banner.expired, .subscription-banner.clickable, .subscription-banner.none) { background: var(--ft-callout); border: 1px solid var(--border-color); border-left: 3px solid var(--ft-info); color: var(--text-primary); }
html body :is(.subscription-banner.expired, .subscription-banner.expired.clickable) { border-left-color: var(--ft-bad); }
html body .subscription-banner.medical-banner { border-left-color: var(--ft-warn); }

/* ειδοποιήσεις (toast): κάρτα του θέματος με γραμμή νοήματος· πριν λευκό κείμενο πάνω σε ανοιχτό πράσινο δεν διαβαζόταν */
html body :is(.toast, .toast.success, .toast.error, .toast.warning, .toast.info) { background: var(--bg-card); color: var(--text-primary); border: 1px solid var(--border-color); border-left: 4px solid var(--ft-ok); box-shadow: var(--shadow-lg); }
html body :is(.toast.error, .toast.error.visible, .toast.error.show) { border-left-color: var(--ft-bad); }
html body .toast.warning { border-left-color: var(--ft-warn); }

/* badges κατάστασης σε όλες τις σελίδες (παρουσίες, αναφορές, προφίλ, συνδρομές, καρτέλα αθλητή) */
html body :is(.status-active, .status-attended, .status-badge.active, .stat-icon.green, .stat-icon.teal, .badge.success,
    .google-icon.connected) { background: var(--ft-ok-tint); color: var(--ft-ok-text); }
html body :is(.status-expiring, .status-excused, .medical-status-badge.pending, .toggle-label-icon.warning, .stat-icon.orange,
    .badge.warning) { background: var(--ft-warn-tint); color: var(--ft-warn-text); }
html body :is(.status-expired, .status-missed, .session-count.noshow-badge, .error-card .status-icon, .stat-icon.red,
    .badge.danger, .status-badge.inactive) { background: var(--ft-bad-tint); color: var(--ft-bad-text); }
html body :is(.status-scheduled, .stat-icon.blue, .stat-icon.purple, .badge.info, .role-badge.trainer, .profile-role.admin,
    .offer-icon, .offer-discount) { background: var(--ft-info-tint); color: var(--ft-info-text); }
html body .program-location-badge.all { background: var(--ft-neutral-tint); color: var(--text-primary); }

/* κουτιά πληροφορίας και μηνύματα */
html body :is(.alert-success, .alert-error, .medical-banner, .medical-intro, .warning-box, .api-warning, .delete-blocked,
    .plan-card.custom, .plan-card.personal) {
    background: var(--ft-callout); border: 1px solid var(--border-color); border-left: 3px solid var(--ft-info); color: var(--text-primary);
}
html body :is(.alert-success, .medical-banner.completed, .subscription-banner.active) { border-left-color: var(--ft-ok); }
html body :is(.alert-error, .delete-blocked) { border-left-color: var(--ft-bad); }
html body :is(.medical-banner, .warning-box, .api-warning, .plan-card.custom, .subscription-banner.expiring) { border-left-color: var(--ft-warn); }
html body .medical-banner.completed { border-left-color: var(--ft-ok); }
html body :is(.subscription-banner.active, .subscription-banner.expiring, .subscription-banner.enabled) {
    background: var(--ft-callout); border: 1px solid var(--border-color); border-left: 3px solid var(--ft-ok); color: var(--text-primary);
}
html body .subscription-banner.expiring { border-left-color: var(--ft-warn); }
html body .subscription-banner.enabled { border-left-color: var(--ft-info); }

/* hover: απαλό φόντο του νοήματος, όχι παστέλ που «ανάβει» στο σκούρο */
html body :is(.credits-btn.plus, .action-btn.success):hover { background: var(--ft-ok-tint); }
html body :is(.credits-btn.minus, .action-btn.danger, .clear-filter-btn):hover { background: var(--ft-bad-tint); }
html body :is(.action-btn.warning, .action-btn.demote):hover { background: var(--ft-warn-tint); }
html body :is(.autocomplete-item.add-new, .sub-action-btn.wallet-btn):hover { background: var(--ft-info-tint); }
html body .subscription-banner.active .sub-status { color: var(--ft-ok-text); }
html body .subscription-banner.expiring .sub-status { color: var(--ft-warn-text); }
html body .subscription-banner.none .sub-status { color: var(--text-secondary); }

/* κουμπιά: πράσινο = δημιουργία (.ft-add «+»), μπλε = αποθήκευση/ενέργεια, ουδέτερο = δευτερεύον */
html body :is(.notes-save-btn, .note-save-btn, .modal-btn.primary) { background: var(--color-accent); color: #fff; }
html body :is(.notes-save-btn, .note-save-btn, .modal-btn.primary):hover { background: var(--color-accent-hover, var(--color-accent)); }
