/* ============================================================
   SOLON.H — Unified Color Tokens (Single Source of Truth)
   Version: 1.0
   Scope: Hotel module + Login. Restaurant/Housekeeping/Spa = phase 2.
   Load order: BEFORE solon-buttons.css, general.css, page-specific CSS.
   ============================================================ */

:root {
    /* Brand */
    --solon-primary:        #2563EB;   /* blue-600 */
    --solon-primary-light:  #3B82F6;   /* blue-500 (hover/focus) */
    --solon-primary-dark:   #1D4ED8;   /* blue-700 (active/pressed) */
    --solon-primary-tint:   #DBEAFE;   /* blue-100 (selected rows, badge bg) */

    /* Semantic */
    --solon-success:        #10B981;   /* emerald-500 */
    --solon-success-dark:   #059669;
    --solon-success-tint:   #D1FAE5;
    --solon-warning:        #F59E0B;   /* amber-500 */
    --solon-warning-dark:   #D97706;
    --solon-warning-tint:   #FEF3C7;
    --solon-danger:         #EF4444;   /* red-500 */
    --solon-danger-dark:    #DC2626;
    --solon-danger-tint:    #FEE2E2;
    --solon-info:           #0891B2;   /* cyan-600 (= Spa accent) */
    --solon-info-tint:      #CFFAFE;

    /* Neutrals - Tailwind slate scale */
    --solon-bg-page:        #F8FAFC;
    --solon-bg:             #FFFFFF;
    --solon-bg-subtle:      #F1F5F9;
    --solon-border:         #E2E8F0;
    --solon-border-strong:  #CBD5E1;
    --solon-text:           #0F172A;
    --solon-text-secondary: #475569;
    --solon-text-muted:     #94A3B8;

    /* Status rezervare Hotel (paleta deja semantic-OK; doar mutata in tokens) */
    --solon-status-cazat:        #3B82F6;
    --solon-status-confirmat:    #22C55E;
    --solon-status-neconfirmat:  #F59E0B;
    --solon-status-plecat:       #9CA3AF;
    --solon-status-anulat:       #D1D5DB;
    --solon-status-blocat:       #EF4444;

    /* Status plati unificat (AH2 style aplicat si pe FCV2) */
    --solon-pay-numerar:    #059669;   /* emerald-600 */
    --solon-pay-virament:   #2563EB;   /* primary */
    --solon-pay-online:     #7C3AED;   /* violet-600 */
    --solon-pay-card:       #0891B2;   /* cyan-600 */
    --solon-pay-voucher:    #D97706;   /* amber-600 */
    --solon-pay-other:      #64748B;   /* slate-500 */

    /* Module identity (Login + sidebar - pastram cele 4) */
    --solon-mod-hotel:        #0F172A;
    --solon-mod-restaurant:   #059669;
    --solon-mod-housekeeping: #475569;
    --solon-mod-spa:          #0891B2;

    /* Shadows (folositi token-uri uniforme pe paginile V2/V3) */
    --solon-shadow-sm:  0 1px 2px rgba(0, 0, 0, 0.04);
    --solon-shadow-md:  0 4px 12px rgba(0, 0, 0, 0.08);
    --solon-shadow-lg:  0 10px 24px rgba(0, 0, 0, 0.12);
}

/* Dark mode reasignari - aplicate cand body are clasa msf-dark */
body.msf-dark {
    --solon-bg-page:        #0F172A;
    --solon-bg:             #1A1A2E;
    --solon-bg-subtle:      #16213E;
    --solon-border:         #2A2A4A;
    --solon-border-strong:  #334155;
    --solon-text:           #E0E0E0;
    --solon-text-secondary: #94A3B8;
    --solon-text-muted:     #64748B;

    /* Brand: primary mai luminos pe dark pt contrast */
    --solon-primary:        #60A5FA;   /* blue-400 */
    --solon-primary-light:  #93C5FD;   /* blue-300 */
    --solon-primary-dark:   #3B82F6;
    --solon-primary-tint:   #1E3A8A;

    /* Semantic tints adaptate pentru dark (mai saturate) */
    --solon-success:        #34D399;
    --solon-success-tint:   #064E3B;
    --solon-warning:        #FBBF24;
    --solon-warning-tint:   #5C3A0E;
    --solon-danger:         #F87171;
    --solon-danger-tint:    #5B1B1B;
    --solon-info:           #22D3EE;
    --solon-info-tint:      #164E5C;

    /* Status plati - variante mai luminoase pe dark */
    --solon-pay-numerar:    #34D399;
    --solon-pay-virament:   #60A5FA;
    --solon-pay-online:     #A78BFA;
    --solon-pay-card:       #22D3EE;
    --solon-pay-voucher:    #FBBF24;
    --solon-pay-other:      #94A3B8;

    /* === Aliasing tokens locale (pagina-specifice) catre paleta dark canonica ===
       Asta acopera modal-urile Bootstrap care sunt rendered direct pe <body>
       (Servicii Camera, Istoric rezervari, etc.) si paginile fara wrapper
       dedicat (FormServiciiCV, FormFacturareServicii etc.) care folosesc body.msf-dark.
       Reduce duplicarea selectorilor `.xxx-dark` cu `body.msf-dark` peste tot. */
    --fcv2-bg:             var(--solon-bg);
    --fcv2-bg-subtle:      var(--solon-bg-subtle);
    --fcv2-bg-page:        var(--solon-bg-page);
    --fcv2-border:         var(--solon-border);
    --fcv2-text:           var(--solon-text);
    --fcv2-text-secondary: var(--solon-text-secondary);
    --fcv2-text-muted:     var(--solon-text-muted);
    --fcv2-primary:        var(--solon-primary);
    --fcv2-success:        var(--solon-success);
    --fcv2-warning:        var(--solon-warning);
    --fcv2-danger:         var(--solon-danger);
    --fcv2-gray:           var(--solon-text-muted);

    --dhv2-bg:             var(--solon-bg);
    --dhv2-bg-subtle:      var(--solon-bg-subtle);
    --dhv2-border:         var(--solon-border);
    --dhv2-text:           var(--solon-text);
    --dhv2-text-secondary: var(--solon-text-secondary);
    --dhv2-primary:        var(--solon-primary);
    --dhv2-success:        var(--solon-success);
    --dhv2-warning:        var(--solon-warning);
    --dhv2-danger:         var(--solon-danger);
    --dhv2-gray:           var(--solon-text-muted);

    --fbv2-bg:             var(--solon-bg);
    --fbv2-bg-subtle:      var(--solon-bg-subtle);
    --fbv2-border:         var(--solon-border);
    --fbv2-text:           var(--solon-text);
    --fbv2-text-secondary: var(--solon-text-secondary);
    --fbv2-primary:        var(--solon-primary);
    --fbv2-success:        var(--solon-success);
    --fbv2-warning:        var(--solon-warning);
    --fbv2-danger:         var(--solon-danger);
    --fbv2-gray:           var(--solon-text-muted);

    --dbv2-bg:             var(--solon-bg);
    --dbv2-bg-subtle:      var(--solon-bg-subtle);
    --dbv2-border:         var(--solon-border);
    --dbv2-text:           var(--solon-text);
    --dbv2-text-secondary: var(--solon-text-secondary);
    --dbv2-primary:        var(--solon-primary);
    --dbv2-success:        var(--solon-success);
    --dbv2-warning:        var(--solon-warning);
    --dbv2-danger:         var(--solon-danger);
    --dbv2-gray:           var(--solon-text-muted);

    --fcv3-bg:             var(--solon-bg);
    --fcv3-bg-subtle:      var(--solon-bg-subtle);
    --fcv3-bg-page:        var(--solon-bg-page);
    --fcv3-border:         var(--solon-border);
    --fcv3-text:           var(--solon-text);
    --fcv3-text-secondary: var(--solon-text-secondary);
    --fcv3-text-muted:     var(--solon-text-muted);
    --fcv3-primary:        var(--solon-primary);
    --fcv3-primary-dark:   var(--solon-primary-dark);
    --fcv3-success:        var(--solon-success);
    --fcv3-warning:        var(--solon-warning);
    --fcv3-danger:         var(--solon-danger);
}

/* Aliasing pentru contexte ne-body dark (clasa pe wrapper, nu pe body):
   .fcv2-dark, .dhv2-dark, .fbv2-dark, .dbv2-dark, .fcv3-dark.
   Reaplica aceleasi tokens dark astfel incat orice component din interior
   sa primeasca paleta dark indiferent daca msf-dark e pe body sau nu. */
.fcv2-dark,
.dhv2-dark,
.fbv2-dark,
.dbv2-dark,
.fcv3-dark {
    --solon-bg-page:        #0F172A;
    --solon-bg:             #1A1A2E;
    --solon-bg-subtle:      #16213E;
    --solon-border:         #2A2A4A;
    --solon-border-strong:  #334155;
    --solon-text:           #E0E0E0;
    --solon-text-secondary: #94A3B8;
    --solon-text-muted:     #64748B;
    --solon-primary:        #60A5FA;
    --solon-primary-light:  #93C5FD;
    --solon-primary-dark:   #3B82F6;
    --solon-primary-tint:   #1E3A8A;
    --solon-success:        #34D399;
    --solon-success-tint:   #064E3B;
    --solon-warning:        #FBBF24;
    --solon-warning-tint:   #5C3A0E;
    --solon-danger:         #F87171;
    --solon-danger-tint:    #5B1B1B;
    --solon-info:           #22D3EE;
    --solon-info-tint:      #164E5C;
    --solon-pay-numerar:    #34D399;
    --solon-pay-virament:   #60A5FA;
    --solon-pay-online:     #A78BFA;
    --solon-pay-card:       #22D3EE;
    --solon-pay-voucher:    #FBBF24;
    --solon-pay-other:      #94A3B8;
}

/* === PSV2 modal (Postare servicii) - dark coverage GLOBAL ===
   PSV2 e copiat in multe pagini cu hex hardcoded (#fff, #e5e7eb, #f3f4f6 etc.).
   Aici aplicam dark uniform indiferent unde e folosit (FCV2, FCV21, FormServiciiCV,
   FormFacturareServicii, FormProforme, FormAvansuri etc.). */
body.msf-dark .psv2-categ-btn {
    background: var(--solon-bg-subtle) !important;
    border-color: var(--solon-border) !important;
}
body.msf-dark .psv2-categ-btn:hover,
body.msf-dark .psv2-categ-btn.active {
    background: var(--solon-primary-tint) !important;
    border-color: var(--solon-primary) !important;
}
body.msf-dark .psv2-categ-btn-name { color: var(--solon-text); }
body.msf-dark .psv2-search input {
    background: var(--solon-bg-subtle) !important;
    border-color: var(--solon-border) !important;
    color: var(--solon-text);
}
body.msf-dark .psv2-search input::placeholder { color: var(--solon-text-muted); }
body.msf-dark .psv2-service-list-header { color: var(--solon-text); border-bottom-color: var(--solon-border); }
body.msf-dark .psv2-item { border-color: var(--solon-border); }
body.msf-dark .psv2-item:hover { background: var(--solon-primary-tint); }
body.msf-dark .psv2-item-name { color: var(--solon-text); }
body.msf-dark .psv2-item-price { color: var(--solon-text-secondary); }
body.msf-dark .psv2-serv-btn { color: var(--solon-text) !important; }
body.msf-dark .psv2-serv-btn-daily { color: var(--solon-text-muted); }
body.msf-dark .psv2-toggle { background: var(--solon-bg-subtle); }
body.msf-dark .psv2-toggle-btn { color: var(--solon-text-secondary); }
body.msf-dark .psv2-toggle-btn.active { background: var(--solon-bg); color: var(--solon-primary); }
body.msf-dark .psv2-btn-cancel { background: var(--solon-bg-subtle); color: var(--solon-text-secondary); }
body.msf-dark .psv2-detail-grid label { color: var(--solon-text-secondary); }
body.msf-dark .psv2-detail-close { background: var(--solon-border); color: var(--solon-text-secondary); }

/* === Bootstrap table striped rows pe dark ===
   tabelele cu .table-striped au tbody tr:nth-child(odd/even) hardcoded #fff/#f9f9f9.
   Override pe dark. */
body.msf-dark .table-striped tbody tr:nth-of-type(odd),
body.msf-dark .table-striped tbody tr:nth-of-type(even),
body.msf-dark .table tbody tr {
    background-color: transparent;
    color: var(--solon-text);
}
body.msf-dark .table-striped tbody tr:nth-of-type(odd) { background-color: rgba(255,255,255,0.02); }
body.msf-dark .table-bordered,
body.msf-dark .table-bordered td,
body.msf-dark .table-bordered th { border-color: var(--solon-border) !important; }
body.msf-dark .table thead th { border-bottom-color: var(--solon-border); color: var(--solon-text-secondary); }
