* { box-sizing: border-box; }
body { font-family: system-ui, sans-serif; margin: 0; color: #1a2332; background: #f7f9fc; }
header { background: #0f2544; color: #fff; padding: 1rem 2rem; display: flex; justify-content: space-between; align-items: center; }
header h1 a, header nav a { color: #fff; text-decoration: none; }
main { max-width: 1000px; margin: 2rem auto; padding: 0 1rem; }
h2 { border-bottom: 2px solid #e2e8f0; padding-bottom: .4rem; }
a { color: #1d4ed8; }

/* --- nagłówek statystyk --- */
.stats { color: #475569; font-size: .95rem; margin: 0 0 1rem; }
.stats strong { color: #0f2544; }

/* --- pasek filtrów --- */
.filters { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center;
  background: #fff; border: 1px solid #e2e8f0; border-radius: 10px; padding: .8rem; margin-bottom: 1.4rem; }
.filters input[type="search"] { flex: 1 1 220px; min-width: 180px; }
.filters input[type="search"], .filters select {
  padding: .45rem .6rem; border: 1px solid #cbd5e1; border-radius: 7px; font: inherit; background: #fff; }
.filters .chk { display: inline-flex; align-items: center; gap: .3rem; font-size: .9rem; color: #475569; }
.filters button { padding: .45rem 1rem; border: 0; border-radius: 7px; background: #0f2544; color: #fff;
  font-weight: 600; cursor: pointer; }
.filters button:hover { background: #1e3a63; }
.filters .clear { font-size: .9rem; color: #64748b; text-decoration: none; }
.filters .clear:hover { text-decoration: underline; }

/* --- karty --- */
.result-count { color: #475569; font-size: .9rem; margin: 0 0 .7rem; }
.cards { list-style: none; padding: 0; margin: 0; display: grid; gap: .9rem; }
.card { background: #fff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 1.1rem;
  box-shadow: 0 1px 2px rgba(15,37,68,.04); }
.card-head { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin-bottom: .5rem; }
.card-title { text-decoration: none; color: #0f2544; font-size: 1.1rem; display: inline-block; margin: .1rem 0 .4rem; }
.card-title:hover { text-decoration: underline; }
.meta { color: #64748b; font-size: .85rem; margin-top: .2rem; }
.card-facts { display: flex; flex-wrap: wrap; gap: .5rem 1rem; margin: .6rem 0 .2rem; }
.fact { font-size: .9rem; font-weight: 600; }
.fact.deadline, .deadline { color: #b91c1c; }
.fact.budget { color: #15803d; }

/* --- badge score --- */
.badge { display: inline-block; min-width: 2.2rem; text-align: center; padding: .18rem .55rem;
  border-radius: 999px; font-weight: 700; color: #fff; background: #94a3b8; font-size: .85rem; }
.score-hi { background: #16a34a; }
.score-mid { background: #eab308; color: #422006; }
.score-lo { background: #f97316; }
.score-none { background: #94a3b8; }

/* --- chipy (kategoria / tagi) --- */
.chip { display: inline-block; padding: .12rem .55rem; border-radius: 999px; font-size: .78rem; font-weight: 600; }
.chip-cat { background: #e0edff; color: #1e40af; }
.chip-tag { background: #f1f5f9; color: #475569; font-weight: 500; }
.chip-dup { background: #fef3c7; color: #92400e; }
.tags { display: flex; flex-wrap: wrap; gap: .35rem; margin: .5rem 0 .2rem; }

.reason { color: #475569; font-size: .9rem; margin: .5rem 0; line-height: 1.4; }

/* --- przycisk otwarcia naboru --- */
.btn-open { display: inline-block; margin-top: .7rem; padding: .5rem 1rem; background: #1d4ed8; color: #fff;
  text-decoration: none; border-radius: 7px; font-weight: 600; font-size: .9rem; }
.btn-open:hover { background: #1e40af; }
.btn-open-lg { font-size: 1rem; padding: .7rem 1.4rem; margin-top: 1.2rem; }

.empty { color: #64748b; background: #fff; border: 1px dashed #cbd5e1; border-radius: 10px; padding: 1.2rem; }

/* --- szczegóły grantu --- */
.back { margin: 0 0 .8rem; }
.detail { background: #fff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 1.4rem; }
.detail h2 { border: 0; padding: 0; margin: .4rem 0 .6rem; }
dl { display: grid; grid-template-columns: max-content 1fr; gap: .35rem 1rem; margin: 1rem 0; }
dt { font-weight: 700; color: #334155; }
dd { margin: 0; }
blockquote { background: #f1f5f9; border-left: 3px solid #0f2544; margin: 1rem 0; padding: .8rem 1rem; }

/* --- status / logi --- */
table { width: 100%; border-collapse: collapse; }
th, td { text-align: left; padding: .5rem; border-bottom: 1px solid #e2e8f0; }
.ok { color: #16a34a; font-weight: 700; }
.err { color: #dc2626; font-weight: 700; }

@media (max-width: 600px) {
  .filters { flex-direction: column; align-items: stretch; }
  .filters input[type="search"], .filters select, .filters button { width: 100%; }
  dl { grid-template-columns: 1fr; }
}

/* pilność deadline — nadpisuje generyczne .deadline (kolejność źródła) */
.deadline-urgent { color: #dc2626; font-weight: 700; }
.deadline-soon { color: #ea580c; font-weight: 600; }
.deadline-normal { color: #16a34a; }
.deadline-past { color: #94a3b8; text-decoration: line-through; }
