/*
 * Systemowa warstwa PrimeFaces dla desktopowego PWA w trybie ciemnym.
 * Nie używać tu selektorów widoków biznesowych. Reguły są aktywne tylko wtedy,
 * gdy appSurface.js potwierdzi jednocześnie powierzchnię PWA desktop i dark mode.
 * Ta warstwa ustala wartości domyślne i celowo nie używa !important: reguły
 * konkretnego komponentu lub widoku muszą mieć możliwość jej nadpisania.
 */
@media (display-mode: standalone) and (min-width: 761px) and (prefers-color-scheme: dark) {
html {
    --ian-pf-bg: #101012;
    --ian-pf-bg-raised: #1c1c1e;
    --ian-pf-bg-subtle: #202a32;
    --ian-pf-border: #38383a;
    --ian-pf-border-strong: #48484a;
    --ian-pf-text: #f5f5f7;
    --ian-pf-text-muted: #a1a1aa;
    --ian-pf-accent: #0a84ff;
    --ian-pf-accent-hover: #006edc;
    --ian-pf-selection: #1c2c3a;
    --ian-pf-error: #ff6961;
    --ian-pf-error-bg: #321c1a;
    --ian-pf-error-border: #7a312d;
}

/* Kontenery PrimeFaces, również te dopinane bezpośrednio do body. */
html body :is(
    .ui-dialog,
    .ui-overlaypanel,
    .ui-sidebar,
    .ui-selectonemenu-panel,
    .ui-autocomplete-panel,
    .ui-datepicker,
    .ui-menu
) {
    border-color: var(--ian-pf-border);
    background: var(--ian-pf-bg);
    color: var(--ian-pf-text);
    text-shadow: none;
}

html body :is(
    .ui-dialog-titlebar,
    .ui-dialog-content,
    .ui-dialog-buttonpane,
    .ui-overlaypanel-content,
    .ui-sidebar-content,
    .ui-datepicker-header,
    .ui-fileupload-content,
    .ui-fileupload-buttonbar
) {
    border-color: var(--ian-pf-border);
    background: var(--ian-pf-bg);
    color: var(--ian-pf-text);
}

/* Panele, zakładki, akordeony i tabele renderowane wewnątrz aplikacji. */
html body :is(
    .ui-panel,
    .ui-panel-content,
    .ui-panel-titlebar,
    .ui-tabs,
    .ui-tabs-panel,
    .ui-tabs-nav,
    .ui-accordion-content,
    .ui-accordion-header,
    .ui-datatable,
    .ui-datatable-tablewrapper
) {
    border-color: var(--ian-pf-border);
    background-color: var(--ian-pf-bg);
    color: var(--ian-pf-text);
    text-shadow: none;
}

html body .ui-datatable :is(th, td),
html body .ui-datatable :is(.ui-datatable-header, .ui-datatable-footer) {
    border-color: var(--ian-pf-border);
    background: var(--ian-pf-bg);
    color: var(--ian-pf-text);
    text-shadow: none;
}
html body .ui-datatable tbody tr:nth-child(even) > td {
    background: var(--ian-pf-bg-raised);
}

/* Pola formularzy i listy rozwijane. */
html body :is(
    .ui-inputfield,
    .ui-selectonemenu,
    .ui-selectonemenu-label,
    .ui-autocomplete-input,
    .ui-autocomplete-multiple-container
) {
    border-color: var(--ian-pf-border-strong);
    background: #000;
    color: var(--ian-pf-text);
    box-shadow: none;
    text-shadow: none;
}
html body .ui-inputfield::placeholder { color: var(--ian-pf-text-muted); }
html body :is(.ui-inputfield, .ui-selectonemenu).ui-state-focus,
html body .ui-inputfield:focus {
    border-color: var(--ian-pf-accent);
    box-shadow: 0 0 0 3px rgba(10, 132, 255, .22);
}
html body .ui-selectonemenu-trigger {
    border-color: var(--ian-pf-border-strong);
    background: var(--ian-pf-bg-raised);
    color: var(--ian-pf-text-muted);
}

/* Wspólne stany elementów wybieralnych. */
html body :is(
    .ui-selectonemenu-item,
    .ui-autocomplete-item,
    .ui-menuitem-link,
    .ui-datepicker-calendar td a
) {
    border-color: transparent;
    background: var(--ian-pf-bg);
    color: var(--ian-pf-text);
    text-shadow: none;
}
html body :is(
    .ui-selectonemenu-item,
    .ui-autocomplete-item,
    .ui-menuitem-link,
    .ui-datepicker-calendar td a
):is(.ui-state-hover, .ui-state-highlight, :hover, :focus) {
    border-color: var(--ian-pf-border-strong);
    background: var(--ian-pf-selection);
    color: var(--ian-pf-text);
}

/* Walidacja i powiadomienia. */
html body .ui-outputlabel.ui-state-error {
    border: 0;
    background: transparent;
    box-shadow: none;
    color: var(--ian-pf-text);
}
html body :is(.ui-message-error, .ui-messages-error) {
    border-color: var(--ian-pf-error-border);
    background: var(--ian-pf-error-bg);
    color: var(--ian-pf-error);
    text-shadow: none;
}
html body .ui-growl .ui-growl-item-container {
    border-color: var(--ian-pf-border);
    border-left-color: var(--notice-color);
    background: var(--ian-pf-bg-raised);
    color: #d1d1d6;
    box-shadow: 0 8px 28px rgba(0, 0, 0, .5);
    text-shadow: none;
}
html body .ui-growl .ui-growl-title { color: var(--ian-pf-text); }
html body .ui-growl .ui-growl-icon-close { color: var(--ian-pf-text-muted); }

/* Maski, blokady i stany nieaktywne. */
html body :is(.ui-widget-overlay, .ui-dialog-mask, .ui-blockui) {
    background: rgba(0, 0, 0, .78);
}
html body .ui-blockui-content {
    border-color: var(--ian-pf-border);
    background: var(--ian-pf-bg-raised);
    color: var(--ian-pf-text);
}
html body .ui-state-disabled {
    opacity: .55;
}

/* Domyślne neutralne kontrolki; działania główne zachowują klasy widoków. */
html body :is(
    .ui-dialog-titlebar-close,
    .ui-panel-titlebar-icon,
    .ui-tabs-nav > li,
    .ui-accordion-header
) {
    border-color: var(--ian-pf-border-strong);
    background: var(--ian-pf-bg-raised);
    color: var(--ian-pf-text);
    text-shadow: none;
}
}
