/* =====================================================================
   Vrchnostenští úředníci — „Kartotéka" UI
   paper/ink/wax palette, Fraunces + IBM Plex Sans + IBM Plex Mono
   ===================================================================== */

:root{
  --paper:#F4F3EE;
  --card:#FBFAF7;
  --wash:#ECEAE1;
  --ink:#1E1B18;
  --slate:#6E675C;
  --rule:#D9D5CA;
  --wax:#9A2F1E;
  --wax-soft:#B4553F;
  --d-indigo:#3F5573;
  --d-moss:#5C6B44;
  --d-plum:#6D4A5E;
  --d-ochre:#A87B2D;
  --d-slate:#7A7264;
  --ff-disp:'IBM Plex Serif', Georgia, serif;
  --ff-ui:'IBM Plex Sans', system-ui, sans-serif;
  --ff-mono:'IBM Plex Mono', Consolas, monospace;
}

*{margin:0;padding:0;box-sizing:border-box;}
html{background:var(--paper);}
body{font-family:var(--ff-ui);color:var(--ink);font-size:15px;line-height:1.55;
  display:flex;flex-direction:column;min-height:100vh;}
main{flex:1;}
a{color:var(--wax);text-decoration:none;}
a:hover{text-decoration:underline;}
:focus-visible{outline:2px solid var(--wax);outline-offset:2px;}
.wrap{max-width:1160px;margin:0 auto;padding:0 28px;width:100%;}
button{font:inherit;}

/* ---------- labels & headings ---------- */
.eyebrow{font-family:var(--ff-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--slate);}
.eyebrow b{color:var(--wax);font-weight:400;}
h1,h2,h3{font-family:var(--ff-disp);font-weight:600;text-wrap:balance;margin:0;}
.sec-head{display:flex;align-items:baseline;gap:14px;border-top:1px solid var(--ink);padding-top:10px;margin:44px 0 18px;}
.sec-head h2{font-size:24px;}
.sec-head .eyebrow{margin-left:auto;text-align:right;}

/* ---------- masthead ---------- */
.masthead{border-bottom:1px solid var(--ink);padding:30px 0 20px;}
.masthead .inner{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;}
.masthead h1{font-size:46px;line-height:1.04;letter-spacing:-.01em;margin-top:8px;}
.masthead h1 a{color:inherit;}
.masthead h1 a:hover{text-decoration:none;color:var(--wax);}
.masthead .sub{color:var(--slate);max-width:56ch;margin-top:10px;}
.mast-art{flex:none;}
.mast-art img{display:block;height:150px;width:auto;max-width:240px;object-fit:cover;
  border:1px solid var(--ink);padding:5px;background:var(--card);}
@media (max-width:760px){
  .masthead h1{font-size:34px;}
  .mast-art{display:none;}
}

/* ---------- register nav ---------- */
.regnav{position:sticky;top:0;background:var(--paper);border-bottom:1px solid var(--rule);z-index:50;}
.regnav .wrap{display:flex;gap:2px;overflow-x:auto;}
.regnav a{font-family:var(--ff-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;
  border-bottom:3px solid transparent;color:var(--slate);
  padding:13px 16px 10px;white-space:nowrap;}
.regnav a:hover{color:var(--ink);text-decoration:none;}
.regnav a.on{color:var(--ink);border-bottom-color:var(--wax);}

/* ---------- generic page blocks ---------- */
.page{padding-bottom:70px;}
.loading{font-family:var(--ff-mono);font-size:13px;color:var(--slate);padding:30px 0;text-align:center;}
.lead{max-width:72ch;color:var(--slate);}
.note{font-size:13px;color:var(--slate);}
.prose{max-width:74ch;margin-top:14px;color:var(--slate);}

/* ---------- home ---------- */
.hero-search{margin-top:38px;}
.hero-search .box{display:flex;background:var(--card);border:1px solid var(--ink);}
.hero-search input{flex:1;border:none;background:none;font-family:var(--ff-ui);font-size:19px;padding:16px 18px;color:var(--ink);min-width:0;}
.hero-search input::placeholder{color:var(--slate);opacity:.7;}
.hero-search button{font-family:var(--ff-mono);font-size:13px;letter-spacing:.08em;text-transform:uppercase;
  background:var(--ink);color:var(--paper);border:none;padding:0 26px;cursor:pointer;}
.hero-search button:hover{background:var(--wax);}
.hero-hints{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.hint-chip{font-family:var(--ff-mono);font-size:12px;border:1px solid var(--rule);background:var(--card);
  padding:3px 10px;color:var(--slate);cursor:pointer;}
.hint-chip:hover{border-color:var(--wax);color:var(--wax);text-decoration:none;}

.statband{display:grid;grid-template-columns:repeat(6,1fr);border:1px solid var(--ink);background:var(--card);margin-top:34px;}
.statband .cell{padding:18px 20px 14px;border-left:1px solid var(--rule);}
.statband .cell:first-child{border-left:none;}
.statband .num{font-family:var(--ff-disp);font-size:34px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.1;}
.statband .lbl{font-family:var(--ff-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate);margin-top:2px;}
@media (max-width:900px){.statband{grid-template-columns:repeat(3,1fr);}.statband .cell{border-top:1px solid var(--rule);}}
@media (max-width:480px){.statband{grid-template-columns:repeat(2,1fr);}.statband .cell{padding:12px 12px 10px;}.statband .num{font-size:26px;}}

.histo{background:var(--card);border:1px solid var(--rule);padding:22px 22px 8px;}
.histo-bars{display:flex;align-items:flex-end;gap:3px;height:170px;}
.histo-bar{flex:1;position:relative;background:var(--d-slate);opacity:.85;min-height:2px;cursor:pointer;border:none;padding:0;}
.histo-bar:hover{background:var(--ink);opacity:1;}
.histo-bar.peak{background:var(--wax);opacity:1;}
.histo-bar .tip{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);
  background:var(--ink);color:var(--paper);font-family:var(--ff-mono);font-size:11px;padding:3px 8px;white-space:nowrap;z-index:5;}
.histo-bar:hover .tip,.histo-bar:focus .tip{display:block;}
.histo-axis{display:flex;gap:3px;margin-top:6px;padding-bottom:10px;}
.histo-axis span{flex:1;font-family:var(--ff-mono);font-size:10px;color:var(--slate);text-align:center;}
.histo-note{font-size:13px;color:var(--slate);margin-top:12px;padding-bottom:12px;}

.home-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;margin-top:8px;}
@media (max-width:900px){.home-cols{grid-template-columns:minmax(0,1fr);}}
.toplist{list-style:none;}
.toplist li{display:flex;align-items:baseline;gap:10px;padding:8px 2px;border-bottom:1px solid var(--rule);}
.toplist .nm{font-weight:600;white-space:nowrap;}
.toplist .meta{color:var(--slate);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:0 1 auto;}
.toplist .cnt{margin-left:auto;font-family:var(--ff-mono);font-size:13px;font-variant-numeric:tabular-nums;}
.toplist .bar{flex:0 1 110px;min-width:30px;height:8px;background:var(--wash);width:110px;position:relative;margin-left:auto;}
.toplist .bar i{position:absolute;top:0;left:0;bottom:0;background:var(--d-slate);}
.toplist .bar + .cnt{margin-left:0;}

/* ---------- ledger tables ---------- */
.ledger-scroll{overflow-x:auto;background:var(--card);border:1px solid var(--rule);}
table.ledger{width:100%;border-collapse:collapse;font-size:14px;}
.ledger th{font-family:var(--ff-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--slate);
  text-align:left;font-weight:400;padding:12px 14px 8px;border-bottom:1px solid var(--ink);white-space:nowrap;}
.ledger th.sortable{cursor:pointer;}
.ledger th.sortable:hover{color:var(--ink);}
.ledger th .dir{color:var(--wax);}
.ledger td{padding:9px 14px;border-bottom:1px solid var(--rule);vertical-align:baseline;}
.ledger tbody tr:last-child td{border-bottom:none;}
.ledger .folio{font-family:var(--ff-mono);font-size:12px;color:var(--slate);font-variant-numeric:tabular-nums;}
.ledger .dt{font-family:var(--ff-mono);font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap;}
.ledger .nm{font-weight:600;}
.ledger tr.grp td{background:rgba(154,47,30,.045);}
.ledger .num{font-family:var(--ff-mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;}
.ledger th.num{text-align:right;}
.ledger .dim{color:var(--slate);font-weight:400;}
.ledger .ger{color:var(--slate);font-style:italic;}
.src-chip{font-family:var(--ff-mono);font-size:11px;border:1px solid var(--rule);padding:1px 7px;white-space:nowrap;color:var(--slate);background:var(--paper);}
.lnk{font-family:var(--ff-mono);font-size:12px;white-space:nowrap;}
.countbar{display:inline-block;height:8px;background:var(--d-slate);vertical-align:baseline;margin-right:8px;}

.mini-span{position:relative;height:8px;background:var(--wash);width:150px;display:inline-block;vertical-align:middle;}
.mini-span i{position:absolute;top:0;bottom:0;background:var(--wax-soft);}
.mini-lbl{font-family:var(--ff-mono);font-size:12px;font-variant-numeric:tabular-nums;color:var(--slate);margin-left:8px;white-space:nowrap;}

/* ---------- filters ---------- */
.filterbar{background:var(--card);border:1px solid var(--ink);padding:18px 20px;display:grid;
  grid-template-columns:1.3fr 1fr 1fr 1fr 1.1fr auto;gap:14px;align-items:end;margin-top:30px;}
.filterbar.compact{grid-template-columns:1.5fr 1fr auto auto;}
@media (max-width:900px){.filterbar,.filterbar.compact{grid-template-columns:1fr 1fr;}}
.f-group label{display:block;font-family:var(--ff-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate);margin-bottom:4px;}
.f-group input,.f-group select{width:100%;border:none;border-bottom:1px solid var(--ink);background:none;font-family:var(--ff-ui);font-size:15px;padding:4px 2px;color:var(--ink);border-radius:0;}
.f-years{display:flex;gap:8px;align-items:center;}
.f-years input{width:64px;font-variant-numeric:tabular-nums;}
.f-mode{display:inline-flex;border:1px solid var(--rule);margin-left:8px;vertical-align:middle;}
.f-mode span{font-family:var(--ff-mono);font-size:10px;padding:2px 7px;cursor:pointer;color:var(--slate);}
.f-mode span.on{background:var(--ink);color:var(--paper);}
.f-actions{display:flex;gap:10px;}
.btn{font-family:var(--ff-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  background:var(--ink);color:var(--paper);border:none;padding:10px 20px;cursor:pointer;}
.btn:hover{background:var(--wax);}
.btn.ghost{background:none;color:var(--slate);border:1px solid var(--rule);}
.btn.ghost:hover{color:var(--wax);border-color:var(--wax);}

.abc{display:flex;flex-wrap:wrap;gap:2px;margin:16px 0;}
.abc span{font-family:var(--ff-mono);font-size:12px;padding:3px 8px;cursor:pointer;color:var(--slate);border:1px solid transparent;}
.abc span:hover{border-color:var(--rule);color:var(--ink);}
.abc span.on{background:var(--ink);color:var(--paper);}
.result-note{font-family:var(--ff-mono);font-size:12px;color:var(--slate);margin:14px 0 10px;}

/* ---------- pagination ---------- */
.pagination{display:flex;gap:4px;justify-content:center;margin:26px 0 0;flex-wrap:wrap;}
.pagination button{font-family:var(--ff-mono);font-size:12px;border:1px solid var(--rule);background:var(--card);
  color:var(--slate);padding:6px 12px;cursor:pointer;}
.pagination button:hover:not(:disabled){border-color:var(--ink);color:var(--ink);}
.pagination button.on{background:var(--ink);color:var(--paper);border-color:var(--ink);}
.pagination button:disabled{opacity:.4;cursor:default;}
.pagination .gap{font-family:var(--ff-mono);color:var(--slate);align-self:center;padding:0 2px;}

/* ---------- entity headers ---------- */
.entity-head{margin-top:36px;display:flex;justify-content:space-between;gap:30px;align-items:flex-start;flex-wrap:wrap;}
.entity-head h2{font-size:40px;line-height:1.05;}
.entity-head .names{color:var(--slate);margin-top:6px;font-size:15px;}
.entity-head .names i{font-style:italic;}
.vitals{display:flex;border:1px solid var(--ink);background:var(--card);flex:none;flex-wrap:wrap;max-width:100%;}
.entity-head > div:first-child{min-width:0;}
.life{overflow-wrap:anywhere;}
.vitals .cell{padding:12px 18px 10px;border-left:1px solid var(--rule);}
.vitals .cell:first-child{border-left:none;}
.vitals .num{font-family:var(--ff-disp);font-size:24px;font-weight:600;font-variant-numeric:tabular-nums;}
.vitals .lbl{font-family:var(--ff-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--slate);}
.life{font-family:var(--ff-mono);font-size:13px;color:var(--slate);margin-top:10px;}
.tagrow{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap;}
.tag{font-family:var(--ff-mono);font-size:11px;letter-spacing:.06em;border:1px solid var(--rule);background:var(--card);padding:2px 9px;color:var(--slate);}
.tag.wax{border-color:var(--wax);color:var(--wax);}
.backlink{font-family:var(--ff-mono);font-size:12px;letter-spacing:.06em;margin-top:26px;display:inline-block;color:var(--slate);}
.backlink:hover{color:var(--wax);text-decoration:none;}

/* ---------- timeline component ---------- */
.tl{background:var(--card);border:1px solid var(--rule);padding:18px 20px 20px;}
.tl-axis{display:grid;grid-template-columns:190px 1fr;margin-bottom:6px;}
.tl-axis .track{position:relative;height:18px;}
.tl-axis .tick{position:absolute;top:0;font-family:var(--ff-mono);font-size:10px;color:var(--slate);transform:translateX(-50%);}
.tl-row{display:grid;grid-template-columns:190px 1fr;align-items:center;}
.tl-row + .tl-row{margin-top:8px;}
.tl-label{font-size:13.5px;font-weight:600;padding-right:14px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;}
.tl-label small{display:block;font-weight:400;color:var(--slate);font-family:var(--ff-mono);font-size:11px;}
.tl-track{position:relative;height:26px;background:linear-gradient(to bottom, transparent 12px, var(--rule) 12px, var(--rule) 13px, transparent 13px);}
.tl-grid{position:absolute;top:-4px;bottom:-4px;width:1px;background:var(--rule);opacity:.6;}
.tl-bar{position:absolute;top:4px;height:18px;border-radius:2px;opacity:.92;color:#fff;
  font-family:var(--ff-mono);font-size:10.5px;line-height:18px;padding:0 6px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;cursor:default;}
.tl-bar:hover{opacity:1;box-shadow:0 0 0 1px var(--ink);z-index:2;}
a.tl-bar{color:#fff;cursor:pointer;}
a.tl-bar:hover{text-decoration:none;}
a.tl-dot{cursor:pointer;}
.tl-dot{position:absolute;top:9px;width:8px;height:8px;border-radius:50%;transform:translateX(-4px);cursor:default;}
.tl-dot:hover{box-shadow:0 0 0 2px var(--ink);z-index:2;}
.tl-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:16px;padding-top:12px;border-top:1px solid var(--rule);}
.tl-legend .it{display:flex;align-items:center;gap:6px;font-family:var(--ff-mono);font-size:11.5px;color:var(--slate);}
.tl-legend .sw{width:11px;height:11px;border-radius:2px;flex:none;}
@media (max-width:760px){.tl-axis,.tl-row{grid-template-columns:110px 1fr;}}

/* ownership band */
.own-band{position:relative;height:44px;background:var(--wash);border:1px solid var(--rule);}
.own-seg{position:absolute;top:0;bottom:0;border-right:1px solid var(--paper);overflow:hidden;
  font-family:var(--ff-mono);font-size:11px;color:#fff;display:flex;align-items:center;padding:0 8px;white-space:nowrap;cursor:default;}
.own-seg:hover{filter:brightness(1.12);}
.own-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;}
.own-legend .it{display:flex;align-items:baseline;gap:6px;font-size:13px;color:var(--slate);}
.own-legend .sw{width:10px;height:10px;border-radius:2px;position:relative;top:1px;flex:none;}
.own-legend b{color:var(--ink);font-weight:600;}
.own-legend .yrs{font-family:var(--ff-mono);font-size:12px;font-variant-numeric:tabular-nums;}

/* ---------- family tree ---------- */
.fam{background:var(--card);border:1px solid var(--rule);padding:26px 20px;overflow-x:auto;position:relative;}
.fam-gen{display:flex;justify-content:center;gap:18px;}
.fam-gen + .fam-gen{margin-top:38px;}
.fam-card{border:1px solid var(--rule);background:var(--paper);padding:8px 14px;min-width:150px;text-align:center;position:relative;z-index:1;}
.fam-card .who{font-weight:600;font-size:14px;}
.fam-card .yrs{font-family:var(--ff-mono);font-size:11.5px;color:var(--slate);font-variant-numeric:tabular-nums;}
.fam-card .role{font-size:12px;color:var(--slate);}
.fam-card.ego{border:2px solid var(--wax);background:rgba(154,47,30,.08);}
.fam-card.ego .who{color:var(--wax);}
.fam-join{align-self:center;font-family:var(--ff-mono);color:var(--slate);font-size:13px;position:relative;z-index:1;}
.fam-note{font-size:13px;color:var(--slate);margin-top:14px;}
svg.fam-lines{position:absolute;top:0;left:0;z-index:0;pointer-events:none;}
svg.fam-lines path{fill:none;stroke:var(--slate);stroke-opacity:.5;stroke-width:1.2;}

/* ---------- panství type dot ---------- */
.tdot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;position:relative;top:-1px;}
.t-panstvi{background:var(--d-indigo);}
.t-statek{background:var(--d-moss);}
.t-mesto{background:var(--d-ochre);}
.t-jiny{background:var(--d-slate);}

/* ---------- sources ---------- */
.src-groups{display:grid;grid-template-columns:1fr 1fr;gap:26px 40px;margin-top:10px;}
@media (max-width:800px){.src-groups{grid-template-columns:1fr;}}
.src-group h3{font-size:17px;margin-bottom:8px;margin-top:22px;}
.src-group h3:first-child{margin-top:0;}
.src-group ul{list-style:none;}
.src-group li{display:flex;gap:10px;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--rule);font-size:14px;}
.src-group .cnt{margin-left:auto;font-family:var(--ff-mono);font-size:12.5px;color:var(--slate);font-variant-numeric:tabular-nums;white-space:nowrap;}

/* ---------- footer ---------- */
footer.colophon{border-top:1px solid var(--ink);margin-top:20px;padding:22px 0 40px;}
footer.colophon .wrap{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;color:var(--slate);font-size:13px;}
footer.colophon .mono{font-family:var(--ff-mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;}
footer.colophon a{color:var(--slate);}
footer.colophon a:hover{color:var(--wax);}

@media (prefers-reduced-motion: reduce){
  *{animation:none !important;transition:none !important;}
}
