/* Akademia Bachmana — panel mailingowy. Estetyka: edytorska, papierowa,
   głęboki teal + terakota. Wszystko tu (CSP: style-src 'self', zero inline). */

:root {
  --paper:#f3efe4; --paper-2:#ece6d8; --surface:#fffdf8;
  --ink:#211e18; --ink-soft:#4a443a; --muted:#857a68;
  --line:#e4ddcb; --line-strong:#d3c9b2;
  --brand:#16574e; --brand-deep:#0d3b34; --brand-tint:#e6efe9;
  --accent:#c06a36; --accent-deep:#9a5128;
  --danger:#a8392c; --danger-bg:#f8e7e2; --danger-line:#e3b6ac;
  --ok:#2f6f4f; --ok-bg:#e7f0e8;
  --radius:11px; --radius-sm:7px;
  --shadow:0 1px 2px rgba(33,30,24,.05), 0 14px 30px -18px rgba(33,30,24,.30);
  --ring:0 0 0 3px rgba(22,87,78,.18);
}

* { box-sizing:border-box; }

html { -webkit-text-size-adjust:100%; }

body {
  margin:0;
  font-family:"Karla", ui-sans-serif, system-ui, sans-serif;
  font-size:15.5px; line-height:1.6;
  color:var(--ink);
  background:
    radial-gradient(1200px 600px at 100% -10%, rgba(22,87,78,.06), transparent 60%),
    radial-gradient(900px 500px at -10% 110%, rgba(192,106,54,.05), transparent 60%),
    var(--paper);
  background-attachment:fixed;
}

/* ---------- typografia ---------- */
h1, h2, h3 {
  font-family:"Fraunces", Georgia, "Times New Roman", serif;
  font-weight:600; line-height:1.18; color:var(--brand-deep);
  letter-spacing:-.01em; margin:0 0 .5em;
}
h1 { font-size:2rem; font-weight:700; }
h2 { font-size:1.4rem; margin-top:1.6em; }
h3 { font-size:1.12rem; color:var(--ink); }
p { margin:.6em 0; }
a { color:var(--brand); text-decoration:none; border-bottom:1px solid rgba(22,87,78,.28); transition:.15s; }
a:hover { color:var(--accent-deep); border-color:var(--accent); }
strong { font-weight:700; }
em { color:var(--ink-soft); }
hr { border:0; border-top:1px solid var(--line); margin:2rem 0; }
code { font-family:ui-monospace, Menlo, monospace; background:var(--paper-2); padding:.1em .4em; border-radius:4px; font-size:.9em; }

/* ---------- topbar ---------- */
.topbar {
  position:sticky; top:0; z-index:20;
  display:flex; align-items:center; gap:.3rem; flex-wrap:wrap;
  padding:.55rem 1.4rem;
  background:linear-gradient(180deg, var(--brand) 0%, var(--brand-deep) 100%);
  box-shadow:0 6px 22px -14px rgba(13,59,52,.8);
}
.topbar .brand {
  font-family:"Fraunces", serif; font-weight:700; font-size:1.12rem;
  color:#fdfaf2; letter-spacing:.005em; margin-right:1rem; white-space:nowrap;
  border:0;
}
.topbar .brand span { color:var(--accent); }
.topbar nav { display:flex; gap:.15rem; flex-wrap:wrap; flex:1; }
.topbar nav a {
  color:#dfe9e3; border:0; padding:.4rem .7rem; border-radius:7px;
  font-size:.92rem; font-weight:500; white-space:nowrap;
}
.topbar nav a:hover { background:rgba(255,255,255,.10); color:#fff; }
.topbar form { margin:0; }
.topbar .who { color:#9fb8af; font-size:.85rem; }
.topbar button {
  background:rgba(255,255,255,.08); color:#eaf2ee;
  border:1px solid rgba(255,255,255,.18); padding:.4rem .8rem;
  border-radius:7px; font-size:.88rem; cursor:pointer; font-family:inherit;
}
.topbar button:hover { background:rgba(255,255,255,.16); }

/* ---------- layout ---------- */
.container { max-width:1060px; margin:0 auto; padding:2.2rem 1.4rem 4rem; }
.lede { color:var(--ink-soft); max-width:62ch; }

/* ---------- flashes ---------- */
.flashes { list-style:none; margin:0 0 1.4rem; padding:0; }
.flashes li {
  background:var(--surface); border:1px solid var(--line-strong);
  border-left:4px solid var(--accent);
  padding:.7rem 1rem; border-radius:var(--radius-sm); margin-bottom:.5rem;
  box-shadow:var(--shadow); color:var(--ink);
}

/* ---------- karty / panele ---------- */
.card, fieldset {
  background:var(--surface); border:1px solid var(--line-strong);
  border-radius:var(--radius); padding:1.2rem 1.3rem; box-shadow:var(--shadow);
  margin:1.2rem 0;
}
fieldset { padding:1rem 1.3rem 1.2rem; }
legend {
  font-family:"Fraunces", serif; font-weight:600; color:var(--brand-deep);
  padding:0 .5rem; font-size:1.02rem;
}

/* ---------- tabele ---------- */
table { width:100%; border-collapse:collapse; background:var(--surface);
  border:1px solid var(--line-strong); border-radius:var(--radius); overflow:hidden;
  box-shadow:var(--shadow); margin:1.2rem 0; }
thead th {
  background:var(--paper-2); text-align:left; font-size:.74rem;
  text-transform:uppercase; letter-spacing:.07em; color:var(--muted);
  font-weight:700; padding:.7rem .9rem; border-bottom:1px solid var(--line-strong);
}
tbody td { padding:.65rem .9rem; border-bottom:1px solid var(--line); vertical-align:middle; }
tbody tr:last-child td { border-bottom:0; }
tbody tr:hover td { background:rgba(22,87,78,.035); }

/* ---------- formularze ---------- */
label { font-weight:500; color:var(--ink-soft); }
.block-label { display:block; margin:.5rem 0; }
input[type=text], input[type=password], input[type=email], input[type=number],
input[type=file], select, textarea {
  font-family:inherit; font-size:.95rem; color:var(--ink);
  background:#fffefb; border:1px solid var(--line-strong);
  border-radius:var(--radius-sm); padding:.5rem .65rem; margin:.15rem .3rem .15rem 0;
}
input:focus, select:focus, textarea:focus { outline:none; border-color:var(--brand); box-shadow:var(--ring); }
input[type=checkbox] { accent-color:var(--brand); width:1rem; height:1rem; vertical-align:-2px; }
.inline-form { display:inline; }

/* ---------- przyciski ---------- */
button, input[type=submit] {
  font-family:"Karla", sans-serif; font-weight:700; font-size:.94rem;
  cursor:pointer; border-radius:var(--radius-sm); padding:.6rem 1.15rem;
  background:var(--brand); color:#fdfaf2; border:1px solid var(--brand-deep);
  box-shadow:0 1px 0 rgba(255,255,255,.15) inset, var(--shadow);
  transition:.15s; letter-spacing:.01em;
}
button:hover, input[type=submit]:hover { background:var(--brand-deep); transform:translateY(-1px); }
button:active { transform:translateY(0); }
button[type=button] {
  background:var(--surface); color:var(--brand-deep); border:1px solid var(--line-strong);
  box-shadow:var(--shadow);
}
button[type=button]:hover { background:var(--paper-2); border-color:var(--brand); }
#stop-btn { background:var(--danger); border-color:#7e271d; }
#stop-btn:hover { background:#8d2c21; }

/* ---------- alerty ---------- */
.alert-danger {
  background:var(--danger-bg); border:1px solid var(--danger-line);
  border-left:4px solid var(--danger); border-radius:var(--radius-sm);
  padding:.9rem 1.1rem; margin:1.1rem 0; color:#5e221a;
}
.alert-danger h2 { color:var(--danger); margin:.1rem 0 .5rem; font-size:1.15rem; }
.text-danger { color:var(--danger); font-weight:700; }

/* ---------- galeria podglądu ---------- */
.combo-card { background:var(--surface); border:1px solid var(--line-strong);
  border-radius:var(--radius); padding:1rem 1.2rem 1.2rem; margin:1.2rem 0; box-shadow:var(--shadow); }
.combo-card h3 { margin:0 0 .3rem; }
.combo-card .muted { font-weight:400; color:var(--muted); font-family:"Karla",sans-serif; font-size:.9rem; }
.preview-frame { width:100%; height:520px; border:1px solid var(--line); border-radius:var(--radius-sm); background:#fff; margin-top:.4rem; }
.badge { display:inline-block; background:var(--brand-tint); color:var(--brand-deep);
  border-radius:999px; padding:.12rem .6rem; font-size:.8rem; font-weight:700; }

/* ---------- pasek postępu ---------- */
.progress-track { height:26px; width:100%; background:var(--paper-2);
  border:1px solid var(--line-strong); border-radius:999px; overflow:hidden; margin:.7rem 0; }
.progress-bar { height:100%; width:0%; border-radius:999px;
  background:linear-gradient(90deg, var(--brand), #2f8a6f); transition:width .35s ease; }
#progress-dead { display:none; color:var(--danger); font-weight:700; }
#progress-counts { color:var(--ink-soft); }

/* ---------- drzewo wyboru ---------- */
#tree { background:var(--surface); border:1px solid var(--line-strong);
  border-radius:var(--radius); padding:1rem 1.2rem; box-shadow:var(--shadow);
  max-height:560px; overflow:auto; margin:1.1rem 0; }
#tree ul { list-style:none; margin:0; padding:0 0 0 1.3rem; }
#tree > ul { padding-left:0; }
#tree li { margin:.12rem 0; }
#tree label { display:inline-flex; align-items:center; gap:.45rem; cursor:pointer;
  padding:.18rem .45rem; border-radius:6px; font-weight:500; color:var(--ink); }
#tree label:hover { background:var(--brand-tint); }
#tree .tree-region + span { font-family:"Fraunces",serif; font-weight:600; color:var(--brand-deep); }
#tree .tree-powiat + span { color:var(--ink-soft); }
#tree .tree-miasto + span { color:var(--muted); font-size:.93rem; }
#tree li.tree-collapsed > ul { display:none; }
.tree-toggle { display:inline-block; width:1.3em; text-align:center; cursor:pointer;
  color:var(--muted); user-select:none; font-size:.75rem; vertical-align:1px; }
.tree-toggle:hover { color:var(--brand); }

/* ---------- login ---------- */
.login-wrap { max-width:380px; margin:9vh auto 0; padding:0 1.2rem; }
.login-card { background:var(--surface); border:1px solid var(--line-strong);
  border-radius:var(--radius); padding:2rem 1.8rem; box-shadow:var(--shadow); }
.login-card h1 { font-size:1.5rem; margin-bottom:.2rem; }
.login-card .sub { color:var(--muted); margin:0 0 1.4rem; }
.login-card label { display:block; margin:.7rem 0 .2rem; font-size:.9rem; }
.login-card input { width:100%; margin:0; }
.login-card button { width:100%; margin-top:1.2rem; padding:.7rem; }
.brand-mark { text-align:center; font-family:"Fraunces",serif; font-weight:700;
  color:var(--brand-deep); font-size:1.05rem; margin-bottom:1rem; }
.brand-mark span { color:var(--accent); }

/* ---------- paginacja (lista placówek) ---------- */
.pager { display:flex; align-items:center; justify-content:center; gap:1rem;
  flex-wrap:wrap; margin:1.2rem 0 .4rem; }
.pager a { padding:.35rem .8rem; border:1px solid var(--line-strong);
  border-radius:var(--radius-sm); background:var(--surface); font-weight:600;
  color:var(--brand); }
.pager a:hover { background:var(--brand-tint); border-color:var(--brand); }
.pager-disabled { padding:.35rem .8rem; border:1px solid var(--line);
  border-radius:var(--radius-sm); color:var(--muted); }
.pager-info { color:var(--ink-soft); font-size:.92rem; }
