/* V75 Unified Card UI System
   Global visual polish for manager/admin screens.
   Intent: make legacy cards/lists/tables/forms match the modern voting/proxy/link dashboards. */

:root{
  --ui-page-bg:#f7f9fc;
  --ui-surface:#ffffff;
  --ui-surface-soft:#fbfcff;
  --ui-border:#eef2f7;
  --ui-border-soft:#edf2f8;
  --ui-text:#0f172a;
  --ui-muted:#1f2937;
  --ui-primary:#1f2937;
  --ui-primary-soft:#eef2f7;
  --ui-success:#16a34a;
  --ui-success-soft:#e8f8ef;
  --ui-warning:#f59e0b;
  --ui-warning-soft:#fff3df;
  --ui-danger:#dc2626;
  --ui-danger-soft:#fdecec;
  --ui-purple:#1f2937;
  --ui-purple-soft:#eef2f7;
  --ui-radius:18px;
  --ui-radius-sm:12px;
  --ui-shadow:0 10px 28px rgba(15, 23, 42,.06);
  --ui-shadow-soft:0 6px 18px rgba(15, 23, 42,.045);
}

body.theme-manager,
body.app-shell-manager{
  background:var(--ui-page-bg);
  color:var(--ui-text);
}

body.theme-manager .main,
body.app-shell-manager .main{
  background:var(--ui-page-bg);
}

/* Keep the already custom voting/proxy/link dashboards in their own CSS,
   but normalize legacy screens around the same visual language. */
body.theme-manager .main > :not(.vote-dashboard):not(.links-dashboard):not(.proxy-page):not(.maint-shell):not(.resolution-page),
body.app-shell-manager .main > :not(.vote-dashboard):not(.links-dashboard):not(.proxy-page):not(.maint-shell):not(.resolution-page){
  min-width:0;
}

/* Generic page headers */
body.theme-manager .page-standard,
body.theme-manager .content-stack,
body.theme-manager .page-content,
body.theme-manager .main-content,
body.app-shell-manager .page-standard,
body.app-shell-manager .content-stack,
body.app-shell-manager .page-content,
body.app-shell-manager .main-content{
  max-width:100%;
  min-width:0;
}

body.theme-manager .section-title,
body.theme-manager h1.section-title,
body.theme-manager h2.section-title,
body.theme-manager .page-title,
body.app-shell-manager .section-title,
body.app-shell-manager h1.section-title,
body.app-shell-manager h2.section-title,
body.app-shell-manager .page-title{
  color:var(--ui-text);
  letter-spacing:-.025em;
  font-weight:850;
}

body.theme-manager .muted,
body.theme-manager .helptext,
body.theme-manager .form-help,
body.app-shell-manager .muted,
body.app-shell-manager .helptext,
body.app-shell-manager .form-help{
  color:var(--ui-muted)!important;
}

/* Cards / panels */
body.theme-manager .card,
body.theme-manager .card-soft,
body.theme-manager .soft-panel,
body.theme-manager .form-box,
body.theme-manager .form-section,
body.theme-manager .table-card,
body.theme-manager .summary-card,
body.theme-manager .kpi-card,
body.theme-manager .metric-card,
body.theme-manager .stat-card,
body.theme-manager .dashboard-card,
body.theme-manager .panel-card,
body.app-shell-manager .card,
body.app-shell-manager .card-soft,
body.app-shell-manager .soft-panel,
body.app-shell-manager .form-box,
body.app-shell-manager .form-section,
body.app-shell-manager .table-card,
body.app-shell-manager .summary-card,
body.app-shell-manager .kpi-card,
body.app-shell-manager .metric-card,
body.app-shell-manager .stat-card,
body.app-shell-manager .dashboard-card,
body.app-shell-manager .panel-card{
  background:var(--ui-surface)!important;
  border:1px solid var(--ui-border)!important;
  border-radius:var(--ui-radius)!important;
  box-shadow:var(--ui-shadow-soft)!important;
  color:var(--ui-text);
  min-width:0;
}

body.theme-manager .card-header,
body.theme-manager .soft-panel__header,
body.theme-manager .table-card__header,
body.theme-manager .form-section__header,
body.app-shell-manager .card-header,
body.app-shell-manager .soft-panel__header,
body.app-shell-manager .table-card__header,
body.app-shell-manager .form-section__header{
  border-bottom:1px solid var(--ui-border-soft);
  color:var(--ui-text);
}

/* Common grids: responsive without forcing overflow */
body.theme-manager .grid-2,
body.theme-manager .compact-grid-2,
body.theme-manager .form-grid-2,
body.app-shell-manager .grid-2,
body.app-shell-manager .compact-grid-2,
body.app-shell-manager .form-grid-2{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));
  gap:16px;
  min-width:0;
}

body.theme-manager .grid-3,
body.theme-manager .compact-grid-3,
body.theme-manager .form-grid-3,
body.theme-manager .stats-grid,
body.theme-manager .summary-grid,
body.app-shell-manager .grid-3,
body.app-shell-manager .compact-grid-3,
body.app-shell-manager .form-grid-3,
body.app-shell-manager .stats-grid,
body.app-shell-manager .summary-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));
  gap:16px;
  min-width:0;
}

body.theme-manager .grid-4,
body.theme-manager .kpi-grid,
body.app-shell-manager .grid-4,
body.app-shell-manager .kpi-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));
  gap:16px;
  min-width:0;
}

/* KPI-like legacy cards */
body.theme-manager .kpi-card,
body.theme-manager .metric-card,
body.theme-manager .stat-card,
body.app-shell-manager .kpi-card,
body.app-shell-manager .metric-card,
body.app-shell-manager .stat-card{
  padding:20px!important;
}

body.theme-manager .kpi-card strong,
body.theme-manager .metric-card strong,
body.theme-manager .stat-card strong,
body.app-shell-manager .kpi-card strong,
body.app-shell-manager .metric-card strong,
body.app-shell-manager .stat-card strong{
  color:var(--ui-text);
  font-weight:850;
}

/* PR #274 (2026-05-23): catch-all'e input/button[type="submit"]:not(.app-btn) USUNIETE.
   Pozostaly nazwane warianty .btn (wymagaja jawnej klasy). Submity musza mit klase
   app-btn z wariantem (--primary, --ghost, --danger, --sm). */
body.theme-manager .btn,
body.theme-manager button.btn,
body.theme-manager a.btn,
body.app-shell-manager .btn,
body.app-shell-manager button.btn,
body.app-shell-manager a.btn{
  border-radius:12px!important;
  min-height:40px;
  border:1px solid var(--ui-primary)!important;
  background:var(--ui-primary)!important;
  color:#fff!important;
  font-weight:800!important;
  box-shadow:none!important;
  text-decoration:none!important;
}

body.theme-manager .btn-secondary,
body.theme-manager .btn.btn-secondary,
body.theme-manager a.btn-secondary,
body.theme-manager button.btn-secondary,
body.app-shell-manager .btn-secondary,
body.app-shell-manager .btn.btn-secondary,
body.app-shell-manager a.btn-secondary,
body.app-shell-manager button.btn-secondary{
  background:#fff!important;
  color:#1f2937!important;
  border-color:#eef2f7!important;
}

body.theme-manager .btn-danger,
body.theme-manager .btn.btn-danger,
body.app-shell-manager .btn-danger,
body.app-shell-manager .btn.btn-danger{
  background:var(--ui-danger)!important;
  border-color:var(--ui-danger)!important;
  color:#fff!important;
}

body.theme-manager .actions,
body.theme-manager .toolbar,
body.theme-manager .action-row,
body.theme-manager .manager-actions,
body.app-shell-manager .actions,
body.app-shell-manager .toolbar,
body.app-shell-manager .action-row,
body.app-shell-manager .manager-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  align-items:center;
}

/* Forms */
body.theme-manager input[type="text"],
body.theme-manager input[type="email"],
body.theme-manager input[type="password"],
body.theme-manager input[type="number"],
body.theme-manager input[type="date"],
body.theme-manager input[type="datetime-local"],
body.theme-manager input[type="search"],
body.theme-manager input[type="tel"],
body.theme-manager input[type="url"],
body.theme-manager select,
body.theme-manager textarea,
body.app-shell-manager input[type="text"],
body.app-shell-manager input[type="email"],
body.app-shell-manager input[type="password"],
body.app-shell-manager input[type="number"],
body.app-shell-manager input[type="date"],
body.app-shell-manager input[type="datetime-local"],
body.app-shell-manager input[type="search"],
body.app-shell-manager input[type="tel"],
body.app-shell-manager input[type="url"],
body.app-shell-manager select,
body.app-shell-manager textarea{
  border:1px solid #eef2f7!important;
  border-radius:12px!important;
  background:#fff!important;
  color:var(--ui-text)!important;
  min-height:42px;
  padding:10px 12px;
  box-shadow:none!important;
  max-width:100%;
}

body.theme-manager textarea,
body.app-shell-manager textarea{
  min-height:110px;
}

body.theme-manager label,
body.app-shell-manager label{
  color:#1f2937;
  font-weight:700;
}

body.theme-manager input:focus,
body.theme-manager select:focus,
body.theme-manager textarea:focus,
body.app-shell-manager input:focus,
body.app-shell-manager select:focus,
body.app-shell-manager textarea:focus{
  outline:3px solid rgba(31, 41, 55,.12)!important;
  border-color:var(--ui-primary)!important;
}

/* Tables */
body.theme-manager .table-wrap,
body.theme-manager .table-responsive,
body.theme-manager .overflow-table,
body.theme-manager .scroll-x,
body.app-shell-manager .table-wrap,
body.app-shell-manager .table-responsive,
body.app-shell-manager .overflow-table,
body.app-shell-manager .scroll-x{
  border:1px solid var(--ui-border);
  border-radius:var(--ui-radius);
  background:#fff;
  box-shadow:var(--ui-shadow-soft);
  overflow-x:auto;
  max-width:100%;
}

body.theme-manager table,
body.app-shell-manager table{
  border-collapse:collapse;
  width:100%;
  color:#233251;
}

body.theme-manager table th,
body.app-shell-manager table th{
  background:#fbfcff;
  color:#1f2937;
  font-size:12px;
  font-weight:850;
  letter-spacing:.01em;
  border-bottom:1px solid var(--ui-border-soft);
}

body.theme-manager table th,
body.theme-manager table td,
body.app-shell-manager table th,
body.app-shell-manager table td{
  padding:13px 14px;
  border-bottom:1px solid var(--ui-border-soft);
  vertical-align:middle;
}

body.theme-manager table tr:last-child td,
body.app-shell-manager table tr:last-child td{
  border-bottom:0;
}

body.theme-manager table tbody tr:hover,
body.app-shell-manager table tbody tr:hover{
  background:#fbfdff;
}

/* Pills, badges and statuses */
body.theme-manager .badge,
body.theme-manager .pill,
body.theme-manager .status-pill,
body.theme-manager .label,
body.app-shell-manager .badge,
body.app-shell-manager .pill,
body.app-shell-manager .status-pill,
body.app-shell-manager .label{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px!important;
  padding:6px 11px!important;
  font-size:12px!important;
  font-weight:850!important;
  background:#eef2f7!important;
  color:#1f2937!important;
  line-height:1.2;
  white-space:nowrap;
}

body.theme-manager .badge-success,
body.theme-manager .pill-success,
body.theme-manager .status-success,
body.app-shell-manager .badge-success,
body.app-shell-manager .pill-success,
body.app-shell-manager .status-success{
  background:var(--ui-success-soft)!important;
  color:#128147!important;
}

body.theme-manager .badge-warning,
body.theme-manager .pill-warning,
body.theme-manager .status-warning,
body.app-shell-manager .badge-warning,
body.app-shell-manager .pill-warning,
body.app-shell-manager .status-warning{
  background:var(--ui-warning-soft)!important;
  color:#c96b00!important;
}

body.theme-manager .badge-danger,
body.theme-manager .pill-danger,
body.theme-manager .status-danger,
body.app-shell-manager .badge-danger,
body.app-shell-manager .pill-danger,
body.app-shell-manager .status-danger{
  background:var(--ui-danger-soft)!important;
  color:#d93434!important;
}

/* Empty states and messages */
body.theme-manager .empty-state,
body.theme-manager .empty,
body.theme-manager .empty-row,
body.app-shell-manager .empty-state,
body.app-shell-manager .empty,
body.app-shell-manager .empty-row{
  color:var(--ui-muted);
  background:#fff;
  border:1px dashed #eef2f7;
  border-radius:var(--ui-radius);
  padding:22px;
}

body.theme-manager .message-item,
body.app-shell-manager .message-item{
  border-radius:14px!important;
  border:1px solid var(--ui-border)!important;
  box-shadow:var(--ui-shadow-soft)!important;
}

/* Legacy filter/search bars */
body.theme-manager form.card,
body.theme-manager .filter-card,
body.theme-manager .filter-panel,
body.theme-manager .filters,
body.theme-manager .search-panel,
body.app-shell-manager form.card,
body.app-shell-manager .filter-card,
body.app-shell-manager .filter-panel,
body.app-shell-manager .filters,
body.app-shell-manager .search-panel{
  background:#fff!important;
  border:1px solid var(--ui-border)!important;
  border-radius:var(--ui-radius)!important;
  box-shadow:var(--ui-shadow-soft)!important;
  padding:18px!important;
}

/* Dashboard home shortcuts */
body.theme-manager .quick-actions,
body.theme-manager .shortcut-grid,
body.theme-manager .quick-grid,
body.app-shell-manager .quick-actions,
body.app-shell-manager .shortcut-grid,
body.app-shell-manager .quick-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));
  gap:16px;
  min-width:0;
}

body.theme-manager .quick-actions a,
body.theme-manager .shortcut-grid a,
body.theme-manager .quick-grid a,
body.app-shell-manager .quick-actions a,
body.app-shell-manager .shortcut-grid a,
body.app-shell-manager .quick-grid a{
  background:#fff;
  border:1px solid var(--ui-border);
  border-radius:var(--ui-radius);
  box-shadow:var(--ui-shadow-soft);
  padding:18px;
  color:var(--ui-text);
  text-decoration:none;
}

body.theme-manager .quick-actions a:hover,
body.theme-manager .shortcut-grid a:hover,
body.theme-manager .quick-grid a:hover,
body.app-shell-manager .quick-actions a:hover,
body.app-shell-manager .shortcut-grid a:hover,
body.app-shell-manager .quick-grid a:hover{
  border-color:#eef2f7;
  box-shadow:var(--ui-shadow);
}

/* Mobile consistency */
@media (max-width: 992px){
  body.theme-manager .main,
  body.app-shell-manager .main{
    background:var(--ui-page-bg);
  }
  body.theme-manager .actions,
  body.theme-manager .toolbar,
  body.theme-manager .action-row,
  body.theme-manager .manager-actions,
  body.app-shell-manager .actions,
  body.app-shell-manager .toolbar,
  body.app-shell-manager .action-row,
  body.app-shell-manager .manager-actions{
    align-items:stretch;
  }
  body.theme-manager .actions > *,
  body.theme-manager .toolbar > *,
  body.theme-manager .action-row > *,
  body.theme-manager .manager-actions > *,
  body.app-shell-manager .actions > *,
  body.app-shell-manager .toolbar > *,
  body.app-shell-manager .action-row > *,
  body.app-shell-manager .manager-actions > *{
    flex:1 1 auto;
  }
}
