  :root{
    --ink:#0E1B26;          /* Půlnoc — panel */
    --ink2:#16283A;         /* Hlubina — karty v panelu */
    --line:rgba(255,255,255,.10);
    --txt:#EAF1F6;
    --muted:#8FA6B8;
    --coral:#FF6B4A;        /* Korál — shody, CTA */
    --lagoon:#1FB8A6;       /* Laguna — moře */
    --sun:#FFB020;          /* Slunce */
    --radius:14px;
    --mono:ui-monospace,"SF Mono","Cascadia Mono",Menlo,Consolas,monospace;
    --disp:"Futura","Avenir Next","Trebuchet MS","Segoe UI",sans-serif;
    --body:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  }
  *{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
  html,body{height:100%}
  body{font-family:var(--body);background:var(--ink);color:var(--txt);overflow:hidden}

  #app{display:flex;height:100dvh;width:100vw}
  #panel{width:370px;min-width:370px;background:var(--ink);display:flex;flex-direction:column;z-index:1200;box-shadow:4px 0 24px rgba(0,0,0,.35)}
  #mapwrap{flex:1;position:relative;min-width:0}
  #map{position:absolute;inset:0;background:#D6E4EC}

  /* ---------- hlavička ---------- */
  header{padding:18px 20px 12px}
  .brand{font-family:var(--disp);font-weight:700;font-size:22px;letter-spacing:.06em;text-transform:uppercase}
  .brand em{font-style:normal;color:var(--coral)}
  .tag{color:var(--muted);font-size:12.5px;margin-top:3px}
  /* signatura: teplotní stuha */
  .ribbon{height:6px;border-radius:3px;margin:12px 0 2px;background:linear-gradient(90deg,#4A7BD0 0%,#3FA7C4 18%,#35B89B 33%,#8CC63F 46%,#F2C230 60%,#F58B2E 74%,#E85335 87%,#B62B2B 100%)}
  .ribbon-lab{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--muted)}

  /* ---------- filtry ---------- */
  #filters{flex:1;overflow-y:auto;padding:6px 20px 16px;scrollbar-width:thin}
  .grp{padding:13px 0;border-top:1px solid var(--line)}
  .grp:first-child{border-top:0}
  .lab{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:9px}
  .val{font-family:var(--mono);font-size:13px;color:var(--txt);letter-spacing:0;text-transform:none}
  .val b{color:var(--coral);font-weight:600}

  .chips{display:flex;flex-wrap:wrap;gap:6px}
  .chip{border:1px solid var(--line);background:var(--ink2);color:var(--txt);border-radius:999px;padding:7px 12px;font-size:13px;cursor:pointer;transition:.15s}
  .chip:hover{border-color:var(--muted)}
  .chip.on{background:var(--coral);border-color:var(--coral);color:#fff;font-weight:600}
  .chip.on.sea{background:var(--lagoon);border-color:var(--lagoon)}

  select{width:100%;background:var(--ink2);color:var(--txt);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:14px;appearance:auto}

  input[type=range]{width:100%;height:26px;background:transparent;appearance:none;cursor:pointer}
  input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:var(--tr,var(--ink2));border:1px solid var(--line)}
  input[type=range]::-webkit-slider-thumb{appearance:none;width:18px;height:18px;border-radius:50%;background:#fff;border:3px solid var(--coral);margin-top:-8px;box-shadow:0 1px 4px rgba(0,0,0,.4)}
  input[type=range].sea::-webkit-slider-thumb{border-color:var(--lagoon)}
  input[type=range]::-moz-range-track{height:4px;border-radius:2px;background:var(--tr,var(--ink2));border:1px solid var(--line)}
  input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--coral)}
  .temp-range input{--tr:linear-gradient(90deg,#4A7BD0,#35B89B,#F2C230,#E85335)}

  .steppers{display:flex;gap:10px}
  .step{flex:1;display:flex;align-items:center;justify-content:space-between;background:var(--ink2);border:1px solid var(--line);border-radius:10px;padding:6px 8px}
  .step span{font-size:12.5px;color:var(--muted)}
  .step b{font-family:var(--mono);font-size:15px;min-width:16px;text-align:center}
  .step button{width:26px;height:26px;border-radius:8px;border:1px solid var(--line);background:transparent;color:var(--txt);font-size:15px;cursor:pointer}
  .step button:hover{background:var(--coral);border-color:var(--coral)}

  .switchrow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 0}
  .switchrow small{color:var(--muted);font-size:12px;display:block;margin-top:1px}
  .sw{position:relative;width:42px;height:24px;flex:none}
  .sw input{opacity:0;width:100%;height:100%;position:absolute;cursor:pointer;z-index:2}
  .sw i{position:absolute;inset:0;background:var(--ink2);border:1px solid var(--line);border-radius:999px;transition:.15s}
  .sw i::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.15s}
  .sw input:checked+i{background:var(--coral);border-color:var(--coral)}
  .sw input:checked+i::after{left:20px}

  .presets{display:flex;flex-direction:column;gap:6px;margin-top:2px}
  .preset{text-align:left;border:1px dashed var(--line);background:transparent;color:var(--muted);border-radius:10px;padding:8px 11px;font-size:12.5px;cursor:pointer;line-height:1.35}
  .preset:hover{color:var(--txt);border-color:var(--coral)}
  .preset b{color:var(--txt)}

  /* ---------- výsledky ---------- */
  #results{display:flex;flex-direction:column;background:var(--ink)}
  #rchev{color:var(--muted);font-size:12px;transition:transform .18s;margin-left:4px}
  #results.min #rchev{transform:rotate(-90deg)}
  #results.min #rlist{display:none}
  #tabs{display:none}
  .srow{display:flex;align-items:center;gap:10px}
  .slab{font-family:var(--mono);font-size:10px;color:var(--muted);width:26px;text-transform:uppercase;letter-spacing:.06em;flex:none}
  #rhead{display:flex;justify-content:space-between;align-items:baseline;padding:11px 20px 7px}
  #rhead .n{font-family:var(--disp);font-size:13px;letter-spacing:.08em;text-transform:uppercase}
  #rhead .n b{color:var(--coral)}
  #rhead small{color:var(--muted);font-size:11px}
  #rlist{overflow-y:auto;padding:0 12px 12px;scrollbar-width:thin}
  .rit{display:flex;align-items:center;gap:11px;padding:9px 8px;border-radius:10px;cursor:pointer}
  .rit:hover{background:var(--ink2)}
  .dot{width:14px;height:14px;border-radius:50%;flex:none;box-shadow:0 0 0 2px rgba(255,255,255,.25)}
  .rit .nm{flex:1;min-width:0}
  .rit .nm b{font-size:14px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .rit .nm span{font-size:11.5px;color:var(--muted)}
  .rit .pr{text-align:right;font-family:var(--mono);font-size:12.5px;line-height:1.45}
  .rit .pr b{color:var(--sun);font-size:13.5px}
  .empty{color:var(--muted);font-size:13px;padding:10px 10px 4px;line-height:1.5}

  footer{padding:8px 20px 10px;border-top:1px solid var(--line);color:var(--muted);font-size:10.5px;line-height:1.45}

  /* ---------- mapa: legenda, ovládání ---------- */
  .maplegend{position:absolute;right:12px;bottom:26px;z-index:1000;background:rgba(14,27,38,.88);backdrop-filter:blur(6px);border-radius:12px;padding:10px 12px;color:var(--txt);font-size:11px;box-shadow:0 4px 18px rgba(0,0,0,.3)}
  .maplegend .ribbon{width:150px;margin:6px 0 2px}
  .maplegend .row{display:flex;align-items:center;gap:7px;margin-top:7px}
  .mini{width:12px;height:12px;border-radius:50%;flex:none}
  #zonebtn{position:absolute;left:12px;top:12px;z-index:1000;border:0;border-radius:999px;padding:9px 14px;font-size:12.5px;font-weight:600;cursor:pointer;background:rgba(14,27,38,.88);color:var(--txt);backdrop-filter:blur(6px);box-shadow:0 4px 14px rgba(0,0,0,.3)}
  #zonebtn.on{background:var(--coral);color:#fff}

  /* ---------- popup ---------- */
  .leaflet-popup-content-wrapper{background:var(--ink);color:var(--txt);border-radius:14px;box-shadow:0 8px 30px rgba(0,0,0,.45)}
  .leaflet-popup-tip{background:var(--ink)}
  .leaflet-popup-content{margin:14px 16px;font-family:var(--body)}
  .pp-t{font-family:var(--disp);font-size:16px;font-weight:700}
  .pp-c{color:var(--muted);font-size:11.5px;margin-bottom:8px}
  .pp-g{display:grid;grid-template-columns:1fr 1fr;gap:5px 14px;font-size:12.5px}
  .pp-g em{font-style:normal;color:var(--muted);display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em}
  .pp-g b{font-family:var(--mono);font-weight:600}
  .pp-price{margin-top:9px;padding-top:8px;border-top:1px solid var(--line);font-size:12.5px}
  .pp-price b{color:var(--sun);font-family:var(--mono);font-size:14px}
  .pp-cta{display:block;margin-top:10px;text-align:center;background:var(--coral);color:#fff !important;text-decoration:none;border-radius:9px;padding:8px 0;font-size:12.5px;font-weight:700;letter-spacing:.02em}
  .pp-cta:hover{filter:brightness(1.08)}
  .badge{display:inline-block;margin-top:7px;background:rgba(31,184,166,.16);color:var(--lagoon);border:1px solid rgba(31,184,166,.4);border-radius:999px;font-size:10.5px;padding:2px 8px;letter-spacing:.03em}

  /* ---------- mobil ---------- */
  #fab,#sheetgrab{display:none}
  @media (max-width:820px){
    #app{flex-direction:column}
    #mapwrap{order:1}
    #panel{order:2;position:fixed;left:0;right:0;bottom:0;top:auto;width:100%;min-width:0;max-height:78dvh;border-radius:18px 18px 0 0;transform:translateY(calc(100% - 118px));transition:transform .28s cubic-bezier(.4,0,.2,1);box-shadow:0 -8px 30px rgba(0,0,0,.5)}
    #panel.open{transform:translateY(0)}
    #sheetgrab{display:block;padding:12px 0 4px;cursor:pointer;touch-action:none}
    #panel header{touch-action:none;cursor:pointer}
    #sheetgrab::before{content:"";display:block;width:42px;height:4px;border-radius:2px;background:var(--muted);margin:0 auto;opacity:.6}
    header{padding:6px 18px 8px}
    .brand{font-size:18px}
    #filters{max-height:38dvh}
    #results{max-height:26dvh}
    .maplegend{bottom:132px;right:10px;transform:scale(.92);transform-origin:bottom right}
    footer{display:none}
  }


  /* Desktop: výsledky jako plovoucí karta nad mapou */
  @media (min-width:821px){
    #results{position:fixed;top:12px;right:12px;width:332px;max-height:min(64vh,calc(100dvh - 200px));
      background:rgba(14,27,38,.93);backdrop-filter:blur(8px);border:1px solid var(--line);
      border-radius:14px;box-shadow:0 10px 34px rgba(0,0,0,.4);z-index:1100;overflow:hidden}
    #rhead{cursor:pointer;user-select:none}
    #rhead:hover #rchev{color:var(--txt)}
  }
  #msum{display:none}
  .chips .chip{min-height:38px}
  @media (max-width:1020px) and (min-width:821px){#panel{width:320px;min-width:320px}}
  @media (max-width:820px){
    #msum{display:block;margin-top:8px;font-family:var(--mono);font-size:11.5px;color:var(--sun);letter-spacing:.02em}
    #panel{transform:translateY(calc(100% - 148px));padding-bottom:env(safe-area-inset-bottom)}
    #panel.open #msum{display:none}
    .grp{padding:15px 0}
    select,.chip{font-size:15px}
    .chip{padding:9px 14px}
    input[type=range]{height:34px}
    input[type=range]::-webkit-slider-thumb{width:24px;height:24px;margin-top:-11px}
    .step button{width:36px;height:36px;font-size:18px}
    .rit{padding:12px 8px}
    #tabs{display:flex;gap:8px;padding:4px 18px 10px}
    #tabs button{flex:1;border:1px solid var(--line);background:var(--ink2);color:var(--muted);border-radius:999px;padding:9px 0;font-size:14px;font-weight:600;cursor:pointer}
    #tabs button.on{background:var(--coral);border-color:var(--coral);color:#fff}
    #tabs button b{font-weight:700}
    #filters{max-height:46dvh;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
    #results{border-top:1px solid var(--line)}
    #rlist{max-height:44dvh;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
    #rhead{padding:12px 20px 8px}
    #rchev{display:none}
    #panel.showres #filters{display:none}
    #panel:not(.showres) #results{display:none}
    #zonebtn{top:calc(10px + env(safe-area-inset-top));font-size:13px;padding:10px 15px}
    .leaflet-control-zoom{display:none}
    .maplegend{bottom:162px}
  }
  @media (prefers-reduced-motion:reduce){#panel{transition:none}}
  .leaflet-popup-close-button{font-size:20px !important;width:26px !important;height:26px !important;color:var(--muted) !important}
  .leaflet-popup-close-button:hover{color:#fff !important}
  .leaflet-container{font-family:var(--body)}

  .sw.sm{width:34px;height:20px}
  .sw.sm i::after{width:14px;height:14px}
  .sw.sm input:checked+i::after{left:16px}
  .lab .sw{margin-left:auto}
  .lab{gap:8px}
  .gbody{transition:opacity .15s}
  .off .gbody{opacity:.35;pointer-events:none;filter:saturate(.4)}
  .off .val{opacity:.5}

/* ---------- v2: presety ---------- */
.presetrow{display:flex;flex-wrap:wrap;gap:6px}
.presetrow .preset{flex:0 0 auto;border:1px dashed var(--line);background:transparent;color:var(--muted);border-radius:999px;padding:7px 12px;font-size:12.5px;cursor:pointer}
.presetrow .preset:hover{color:var(--txt);border-color:var(--coral)}

/* ---------- v2: řazení výsledků ---------- */
#rsort{display:flex;gap:6px;padding:0 20px 8px;flex-wrap:wrap}
#rsort button{border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:999px;padding:4px 10px;font-size:11px;cursor:pointer}
#rsort button.on{background:var(--ink2);color:var(--txt);border-color:var(--muted)}

/* ---------- v2: oblíbené ---------- */
.fav{flex:none;width:26px;height:26px;border:0;background:transparent;font-size:15px;cursor:pointer;color:var(--muted);opacity:.55;transition:.15s}
.fav:hover{opacity:1;transform:scale(1.15)}
.fav.on{opacity:1;color:var(--coral)}
.pp-fav{position:absolute;top:10px;right:34px;border:0;background:transparent;font-size:17px;cursor:pointer;opacity:.6}
.pp-fav.on{opacity:1}

/* ---------- v2: měsíční pás v popupu ---------- */
.pp-months{display:flex;gap:2px;margin-top:9px}
.pp-months i{flex:1;height:14px;border-radius:3px;cursor:pointer;position:relative;opacity:.85}
.pp-months i:hover{opacity:1;transform:scaleY(1.25)}
.pp-months i.cur{outline:2px solid #fff;outline-offset:1px;opacity:1}
.pp-mlab{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9px;color:var(--muted);margin-top:3px}

/* ---------- v2: sdílení + toast ---------- */
#sharebtn{position:absolute;left:12px;top:56px;z-index:1000;border:0;border-radius:999px;padding:9px 14px;font-size:12.5px;font-weight:600;cursor:pointer;background:rgba(14,27,38,.88);color:var(--txt);backdrop-filter:blur(6px);box-shadow:0 4px 14px rgba(0,0,0,.3)}
#sharebtn:hover{background:var(--coral)}
#toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(80px);background:var(--coral);color:#fff;font-size:13px;font-weight:600;padding:10px 18px;border-radius:999px;box-shadow:0 6px 24px rgba(0,0,0,.4);transition:transform .25s;z-index:3000;pointer-events:none}
#toast.show{transform:translateX(-50%) translateY(0)}
@media (max-width:820px){#sharebtn{top:calc(52px + env(safe-area-inset-top))}}

footer a{color:var(--muted)}

/* ---------- v2: reset filtrů ---------- */
.presetrow .resetbtn{border-style:solid;color:var(--txt)}
.presetrow .resetbtn:hover{border-color:var(--coral);color:var(--coral)}
