/* Wspólna warstwa wszystkich ról i modułów. Bez zmian typografii i kolorów marki.
   Jawne selektory omijają mapy, wykresy, pola checkbox/radio i stany alarmowe. */
:root {
  --ui-gap: 16px;
  --ui-panel-padding: 20px;
  --ui-panel-radius: 10px;
  --ui-control-radius: 6px;
}
body[data-role-page] .page-head { gap: 20px; margin-bottom: 20px; flex-wrap: wrap; }
body[data-role-page] :is(.page-actions, .card-header, .section-title) { flex-wrap: wrap; }
body[data-role-page] :is(.grid-2, .grid-3, .stack, .form-grid) { gap: var(--ui-gap); }
body[data-role-page] .grid-2 { align-items: start; }
body[data-role-page] .stack { min-width: 0; align-content: start; }
body[data-role-page] .metric-grid { gap: var(--ui-gap); margin-bottom: 20px; }
body[data-role-page] .metric { padding: 18px; border-radius: var(--ui-panel-radius); box-shadow: none; }
body[data-role-page] .metric-top { align-items: flex-start; }
body[data-role-page] .metric-icon { flex-shrink: 0; }
body[data-role-page] :is(.card, .kadry-card, .zdolnosc-card, .zapasy-card, .zapasy-bank, .uzg-card, .analityka-card, .critical-resource-card, .zdlp-critical-card, .production-calendar-card, .wymiana-item, .complete-card, .provincial-license-card, .role-panel-card, .workflow-card) {
  min-width: 0; border-radius: var(--ui-panel-radius); box-shadow: none;
}
body[data-role-page] :is(.kadry-card, .zdolnosc-card, .zapasy-card, .zapasy-bank, .uzg-card, .analityka-card, .critical-resource-card, .zdlp-critical-card, .wymiana-item, .complete-card, .provincial-license-card, .role-panel-card, .workflow-card) {
  padding: var(--ui-panel-padding);
}
body[data-role-page] .card-header { padding: 16px var(--ui-panel-padding); gap: 12px; }
body[data-role-page] .card-body { padding: var(--ui-panel-padding); }
body[data-role-page] .card-footer { padding: 12px var(--ui-panel-padding); }
body[data-role-page] .duty-card { padding: var(--ui-panel-padding); border-radius: var(--ui-panel-radius); }
body[data-role-page] :is(.duty-card-top, .duty-card footer) { flex-wrap: wrap; gap: 12px; }
body[data-role-page] :is(.kadry-grid, .zdolnosc-grid, .uzg-grid, .resource-registry-grid, .critical-resource-form-grid, .zdlp-grid, .production-account-grid) { gap: var(--ui-gap); }
body[data-role-page] :is(.struktura-toolbar, .zdolnosc-toolbar, .kadry-tools, .zapasy-tools, .uzg-toolbar, .wymiana-toolbar, .analityka-filters) {
  gap: 12px; flex-wrap: wrap; min-width: 0;
}
body[data-role-page] :is(.struktura-toolbar, .zdolnosc-toolbar, .kadry-tools, .zapasy-tools, .uzg-toolbar, .wymiana-toolbar, .analityka-filters) > * { min-width: 0; max-width: 100%; }
/* Stałe odstępy tabel; szerokie rejestry nadal przewijają się w swoich kontenerach. */
body[data-role-page] :is(.table-wrap, .struktura-table, .wymiana-table, .analityka-table) { max-width: 100%; overflow-x: auto; }
body[data-role-page] :is(th, td) { padding: 12px; }
body[data-role-page] :is(.btn, .search input, .form-grid input:not([type=checkbox]):not([type=radio]):not([type=range]), .form-grid select, .form-grid textarea) { border-radius: var(--ui-control-radius); }
body[data-role-page] :is(.modal, .struktura-dialog, .zdolnosc-dialog, .kadry-dialog, .zapasy-dialog, .uzg-dialog, .wymiana-dialog, .analityka-dialog, .freshness-dialog, .potential-form-dialog, .resource-registry-dialog, .critical-resource-dialog, .widokrm-alert-dialog, .widokrm-degraded-dialog, .widokrm-offline-queue-dialog) { border-radius: var(--ui-panel-radius); }
body[data-role-page] :is(.struktura-dialog, .zdolnosc-dialog, .kadry-dialog, .zapasy-dialog, .uzg-dialog, .wymiana-dialog, .analityka-dialog, .freshness-dialog, .potential-form-dialog, .resource-registry-dialog, .critical-resource-dialog, .widokrm-alert-dialog, .widokrm-degraded-dialog, .widokrm-offline-queue-dialog) { padding: var(--ui-panel-padding); }
body[data-role-page] :is(.modal-head, .modal-body, .modal-footer) { padding-left: var(--ui-panel-padding); padding-right: var(--ui-panel-padding); }
body[data-role-page] .modal-footer { flex-wrap: wrap; gap: 12px; }
body[data-role-page] :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]), select, textarea) { border-radius: var(--ui-control-radius); }
body[data-role-page] :is(.sor-kpi, .sor-alert, .sor-empty, .sor-priority-zone, .zdlp-p0, .zdlp-event-button, .central-summary-card, .central-ward-detail, .report-reminder-panel, .metric-drilldown, .production-placeholder, .central-empty, .central-error) { border-radius: var(--ui-panel-radius); }
body[data-role-page] :is(.sor-kpi, .central-summary-card) { padding: 18px; }
body[data-role-page] :is(.sor-kpi-grid, .central-summary-grid, .zdlp-panel-stack) { gap: var(--ui-gap); }
body[data-role-page] .production-overview article { padding: var(--ui-panel-padding); border-radius: var(--ui-panel-radius); box-shadow: none; }
/* Data i oś pozostają rozdzielone również przy długich wpisach. */
body[data-role-page] .timeline { gap: 16px; }
body[data-role-page] .timeline-item { grid-template-columns: 80px 12px minmax(0, 1fr); gap: 12px; }
body[data-role-page] .timeline-content { min-width: 0; overflow-wrap: anywhere; padding-bottom: 8px; }
body[data-role-page] .timeline-line::before { bottom: -16px; }
body[data-role-page] .timeline-item:last-child .timeline-content { padding-bottom: 0; }
body[data-role-page] .metric[data-metric-tone="ok"] .metric-state { color: #256b49; }
body[data-role-page] .metric[data-metric-tone="warn"] .metric-state { color: #805015; }
body[data-role-page] .metric[data-metric-tone="critical"] .metric-state { color: #a3342c; }
/* Ekrany wspólne zachowują własną typografię. */
body .widokrm-auth-card { border-radius: var(--ui-panel-radius); box-shadow: none; }
body .role-launcher .role-card { border-radius: var(--ui-panel-radius); }
body .sheet .release { padding: var(--ui-panel-padding); border: 1px solid var(--line); border-radius: var(--ui-panel-radius); background: var(--surface); margin-bottom: 20px; }
@media (max-width: 640px) {
  :root { --ui-gap: 12px; --ui-panel-padding: 16px; }
  body[data-role-page] .metric { padding: 16px; }
  body[data-role-page] .timeline-item { grid-template-columns: 68px 10px minmax(0, 1fr); gap: 8px; }
  body[data-role-page] :is(th, td) { padding: 10px; }
}
