:root{
  --bg:#0f1216; --panel:#171b21; --panel2:#1e242c; --line:#282f39;
  --fg:#e6e9ee; --dim:#8d97a5; --dimmer:#5e6875;
  --good:#3fb27f; --bad:#e2624f; --flat:#7b8794;
  --accent:#5aa9e6; --warn:#e8a44c;
}
*{box-sizing:border-box}
body{
  margin:0; background:var(--bg); color:var(--fg);
  font:14px/1.5 ui-sans-serif,system-ui,"Segoe UI",Roboto,sans-serif;
}
a{color:var(--accent); text-decoration:none}
a:hover{text-decoration:underline}

header{
  display:flex; align-items:center; gap:26px; padding:0 20px;
  height:52px; background:var(--panel); border-bottom:1px solid var(--line);
  position:sticky; top:0; z-index:400;
}
.brand{font-size:17px; font-weight:700; color:var(--fg); letter-spacing:-.3px}
.brand span{color:var(--good)}
nav{display:flex; gap:4px; flex-wrap:wrap}
nav a{color:var(--dim); padding:6px 12px; border-radius:6px; font-size:13px}
nav a:hover{background:var(--panel2); color:var(--fg); text-decoration:none}
nav a.on{background:var(--panel2); color:var(--fg)}

main{max-width:1560px; margin:0 auto; padding:20px}
footer{max-width:1560px; margin:0 auto; padding:24px 20px 40px;
       color:var(--dimmer); font-size:12px; border-top:1px solid var(--line)}

h1{font-size:21px; margin:0 0 4px}
h2{font-size:14px; margin:26px 0 10px; color:var(--dim);
   text-transform:uppercase; letter-spacing:.7px; font-weight:600}
h3{font-size:15px; margin:18px 0 8px}
.sub{color:var(--dim); font-size:13px; margin:0 0 16px}
.panel{background:var(--panel); border:1px solid var(--line);
       border-radius:9px; padding:16px; margin-bottom:16px}

/* dlaždice se statistikami */
.tiles{display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px; margin-bottom:20px}
.tile{background:var(--panel); border:1px solid var(--line); border-radius:9px; padding:12px 14px}
.tile .k{color:var(--dim); font-size:11px; text-transform:uppercase; letter-spacing:.6px}
.tile .v{font-size:22px; font-weight:600; margin-top:2px; font-variant-numeric:tabular-nums}

/* ── Karty nemovitostí ─────────────────────────────────────────── */
.grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(285px,1fr)); gap:14px}
.card{background:var(--panel); border:1px solid var(--line); border-radius:10px;
      overflow:hidden; display:flex; flex-direction:column}
.card:hover{border-color:var(--dimmer)}
.card .foto{position:relative; aspect-ratio:4/3; background:var(--panel2);
            display:block; overflow:hidden}
.card .foto img{width:100%; height:100%; object-fit:cover; display:block}
.card .foto .chybi{display:flex; align-items:center; justify-content:center;
                   height:100%; color:var(--dimmer); font-size:12px}
.card .body{padding:11px 13px 13px; display:flex; flex-direction:column; gap:5px; flex:1}
.card .nazev{font-size:13.5px; font-weight:600; line-height:1.35;
             display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
             overflow:hidden}
.card .misto{color:var(--dim); font-size:12px}
.card .cena{font-size:17px; font-weight:700; font-variant-numeric:tabular-nums;
            margin-top:auto; padding-top:6px}
.card .cena small{font-size:11.5px; color:var(--dim); font-weight:400; margin-left:6px}
.card .radek{display:flex; gap:8px; align-items:center; justify-content:space-between}

/* odznak výhodnosti — nejdůležitější prvek celého výpisu */
.deal{position:absolute; left:8px; top:8px; padding:3px 8px; border-radius:6px;
      font-size:12px; font-weight:700; letter-spacing:.2px;
      background:rgba(63,178,127,.92); color:#06130d}
.deal.zaporny{background:rgba(226,98,79,.9); color:#180705}
.deal.slaby{background:rgba(123,135,148,.85); color:#0b0f14}
.portal{position:absolute; right:8px; top:8px; padding:2px 7px; border-radius:5px;
        font-size:10.5px; background:rgba(15,18,22,.78); color:var(--dim)}
.chips{display:flex; flex-wrap:wrap; gap:5px}
.chip{background:var(--panel2); color:var(--dim); padding:2px 7px;
      border-radius:5px; font-size:11px}
.chip.a{background:rgba(90,169,230,.14); color:var(--accent)}
.chip.g{background:rgba(63,178,127,.15); color:var(--good)}
.chip.r{background:rgba(226,98,79,.15); color:var(--bad)}
.chip.w{background:rgba(232,164,76,.15); color:var(--warn)}

/* ── Filtry ────────────────────────────────────────────────────── */
form.filtry{display:grid; grid-template-columns:repeat(auto-fit,minmax(155px,1fr));
            gap:10px; align-items:end}
label{display:block; color:var(--dim); font-size:11px; text-transform:uppercase;
      letter-spacing:.5px; margin-bottom:4px}
input,select,button,textarea{
  background:var(--panel2); color:var(--fg); border:1px solid var(--line);
  border-radius:6px; padding:7px 10px; font:inherit; font-size:13px; width:100%;
}
input:focus,select:focus{outline:1px solid var(--accent)}
select[multiple]{height:92px}
button{background:var(--accent); color:#06121d; border-color:var(--accent);
       font-weight:600; cursor:pointer}
button:hover{filter:brightness(1.08)}
button.vedlejsi{background:var(--panel2); color:var(--fg); border-color:var(--line)}
.prepinace{display:flex; flex-wrap:wrap; gap:12px; margin-top:10px}
.prepinace label{display:flex; align-items:center; gap:6px; text-transform:none;
                 font-size:12.5px; letter-spacing:0; color:var(--fg); margin:0}
.prepinace input{width:auto}
details.vic summary{cursor:pointer; color:var(--dim); font-size:12.5px; margin:10px 0 0}
details.vic[open] summary{color:var(--accent)}

/* ── Tabulky ───────────────────────────────────────────────────── */
table{width:100%; border-collapse:collapse; font-size:13px}
th{text-align:left; color:var(--dim); font-weight:600; font-size:11px;
   text-transform:uppercase; letter-spacing:.6px; padding:9px 10px;
   border-bottom:1px solid var(--line); background:var(--panel);
   position:sticky; top:0; z-index:2}
td{padding:8px 10px; border-bottom:1px solid var(--line); vertical-align:top}
tr:hover td{background:var(--panel2)}
td.num,th.num{text-align:right; font-variant-numeric:tabular-nums}
.scroll{overflow:auto; max-height:74vh}
.panel.scroll{padding:0}

.pos{color:var(--good)} .neg{color:var(--bad)} .neu{color:var(--flat)}
.dim{color:var(--dim)} .small{font-size:12px}
.empty{color:var(--dimmer); padding:34px; text-align:center; font-size:13.5px}
.note{background:rgba(232,164,76,.09); border:1px solid rgba(232,164,76,.28);
      color:#f0c88f; padding:11px 14px; border-radius:8px; font-size:12.5px;
      margin-bottom:14px}
.riziko{background:rgba(226,98,79,.1); border:1px solid rgba(226,98,79,.3);
        color:#f0a496; padding:10px 13px; border-radius:8px; font-size:12.5px;
        margin-bottom:10px}

/* ── Detail nemovitosti ────────────────────────────────────────── */
.detail{display:grid; grid-template-columns:minmax(0,2fr) minmax(300px,1fr); gap:16px}
@media (max-width:1000px){.detail{grid-template-columns:1fr}}
.galerie{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:6px}
.galerie img{width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:6px;
             cursor:zoom-in; background:var(--panel2)}
.galerie img.hlavni{grid-column:1/-1; aspect-ratio:16/9; cursor:default}
.parametry{display:grid; grid-template-columns:auto 1fr; gap:6px 14px; font-size:13px}
.parametry dt{color:var(--dim)}
.parametry dd{margin:0; font-variant-numeric:tabular-nums}

.odhad{font-size:26px; font-weight:700; font-variant-numeric:tabular-nums}
.rozpeti{color:var(--dim); font-size:12.5px}
.metoda{display:flex; justify-content:space-between; gap:10px; padding:7px 0;
        border-bottom:1px solid var(--line); font-size:12.5px}
.metoda:last-child{border-bottom:none}
.bar{height:5px; background:var(--panel2); border-radius:3px; overflow:hidden; min-width:52px}
.bar i{display:block; height:100%; background:var(--accent)}

#mapa{width:100%; height:calc(100vh - 210px); min-height:420px; border-radius:9px}
.leaflet-popup-content-wrapper{background:var(--panel); color:var(--fg)}
.leaflet-popup-tip{background:var(--panel)}
.leaflet-container{background:var(--panel2)}

.strankovani{display:flex; gap:6px; align-items:center; justify-content:center;
             margin:20px 0; flex-wrap:wrap}
.strankovani a,.strankovani span{padding:6px 11px; border-radius:6px;
     background:var(--panel); border:1px solid var(--line); font-size:13px}
.strankovani .tady{background:var(--accent); color:#06121d; border-color:var(--accent)}

/* ── Zdůvodnění odhadu ─────────────────────────────────────────── */
ol.duvody{margin:10px 0 0; padding-left:20px; font-size:12.8px; line-height:1.55}
ol.duvody li{margin-bottom:9px; color:var(--fg)}
ol.duvody strong{color:var(--fg)}
ol.duvody li::marker{color:var(--dimmer)}
a.chip:hover{background:var(--panel2); text-decoration:none}

/* ── Reporty ───────────────────────────────────────────────────────
   Report je dokument, ne obrazovka — má proto vlastní, „papírovou"
   paletu a technické písmo, aby se od zbytku aplikace odlišil a dal
   se vytisknout. Barvy jsou uvnitř `.report` lokální, takže tmavý
   zbytek aplikace zůstává beze změny. */
.report{
  --paper:#f7f8f7; --paper-2:#eef0ef; --line-p:#c9d0cf; --line-soft:#dee3e2;
  --ink:#1a2422; --ink-2:#4a5654; --ink-3:#77827f;
  --tyrkys:#0d6a6e; --zisk:#1f6f3d; --ztrata:#8d3324; --pozor:#8a5a12;
  background:var(--paper-2); color:var(--ink); border-radius:10px;
  padding:22px; margin:-4px 0 0;
  font-family:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;
}
.report a{color:var(--tyrkys)}
.report .panel{background:var(--paper); border-color:var(--line-p)}
.report code{background:var(--paper-2); color:var(--ink-2)}

/* rohové razítko jako v technickém výkresu */
.report .titleblock{
  border:1.5px solid var(--ink); background:var(--paper);
  margin-bottom:24px;
}
.report .tb-main{padding:22px 24px 18px; border-bottom:1.5px solid var(--ink)}
.report .tb-eyebrow{
  font-family:"IBM Plex Mono",ui-monospace,monospace; font-size:11px;
  letter-spacing:.16em; text-transform:uppercase; color:var(--tyrkys); margin:0 0 8px;
}
.report h1{
  font-family:"Archivo Narrow","Arial Narrow",sans-serif; font-weight:700;
  font-size:clamp(28px,5vw,46px); line-height:1.02; margin:0 0 10px;
  letter-spacing:-.01em; text-transform:uppercase; text-wrap:balance; color:var(--ink);
}
.report .tb-sub{margin:0; color:var(--ink-2); max-width:66ch; font-size:14px}
.report .tb-meta{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  font-family:"IBM Plex Mono",ui-monospace,monospace; font-size:12px;
}
.report .tb-meta div{padding:10px 24px; border-right:1px solid var(--line-soft); color:var(--ink)}
.report .tb-meta div:last-child{border-right:none}
.report .tb-meta b{
  display:block; color:var(--ink-3); font-weight:400; font-size:10px;
  letter-spacing:.12em; text-transform:uppercase; margin-bottom:2px;
}

.report .stats{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(158px,1fr));
  gap:1px; background:var(--line-p); border:1px solid var(--line-p); margin-bottom:24px;
}
.report .stat{background:var(--paper); padding:14px 16px}
.report .stat .k{
  font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:.12em;
  text-transform:uppercase; color:var(--ink-3);
}
.report .stat .v{
  font-family:"Archivo Narrow",sans-serif; font-size:30px; font-weight:700;
  line-height:1.1; font-variant-numeric:tabular-nums; color:var(--ink);
}
.report .stat .n{font-size:12px; color:var(--ink-2)}

.report .verdict{
  border-left:4px solid var(--tyrkys); background:var(--paper);
  padding:18px 22px; margin:0 0 26px;
}
.report .verdict h2{
  font-family:"Archivo Narrow",sans-serif; text-transform:uppercase;
  letter-spacing:.03em; font-size:17px; margin:0 0 8px; color:var(--ink);
}
.report .verdict p{margin:0 0 8px; max-width:74ch; color:var(--ink)}
.report .verdict p:last-child{margin-bottom:0}
.report h2.sec{
  font-family:"Archivo Narrow",sans-serif; text-transform:uppercase;
  letter-spacing:.04em; font-size:20px; margin:28px 0 12px; color:var(--ink);
}
.report h3{font-family:"Archivo Narrow",sans-serif; text-transform:uppercase;
  letter-spacing:.03em; font-size:14px; margin:16px 0 6px; color:var(--ink)}
.report p.small{color:var(--ink-2); font-size:13px; max-width:76ch}

/* tabulka v reportu je světlá a s tabulkovými číslicemi */
.report table{font-size:13px}
.report th{
  background:var(--paper); color:var(--ink-3); border-bottom:1px solid var(--ink);
  font-family:"IBM Plex Mono",monospace; font-size:10px; letter-spacing:.1em;
}
.report td{border-bottom:1px solid var(--line-soft); color:var(--ink)}
.report tr:hover td{background:var(--paper-2)}
.report td.num, .report th.num{font-variant-numeric:tabular-nums}
.report .dim{color:var(--ink-3)}
.report .pos{color:var(--zisk)} .report .neg{color:var(--ztrata)}
.report .chip{background:var(--paper-2); color:var(--ink-2); border:1px solid var(--line-soft)}
.report .chip.r{background:#f3ded9; color:var(--ztrata); border-color:#e8c8c0}
.report .chip.w{background:#f6e8cd; color:var(--pozor); border-color:#ecd9ac}
.report .empty{color:var(--ink-3)}
.report input, .report select{
  background:var(--paper); color:var(--ink); border-color:var(--line-p);
}
.report label{color:var(--ink-3)}
.report button{background:var(--tyrkys); color:#fff; border-color:var(--tyrkys)}

@media print{
  header, footer, .report form.panel{display:none}
  .report{background:#fff; padding:0}
  .report .scroll{max-height:none; overflow:visible}
}
