/* ====== TOKENY ======
   Značka: lipová zelená na teplém papírovém podkladu (Česká Lípa má lípu
   v názvu i ve znaku), modrá (Ploučnice) zůstává pro odkazy a kino.
   Názvy starých tokenů zachované, ať se nic nerozbije. */
:root{
  /* základ */
  --bg:#f6f4ec;        /* papír */
  --card:#fffefa;
  --text:#1e211b;      /* inkoust */
  --muted:#5f6359;     /* ztmaveno z #73736d kvůli kontrastu (5,6 : 1 na --bg) */
  --line:rgba(30,33,27,.12);
  --r:14px;
  /* značka */
  --brand:#2f5d2a;     --brand-soft:#e4ecdb;   /* lípa */
  --blue:#2a5f8f;      --blue-soft:#e3edf6;    /* Ploučnice: odkazy, kino */
  --teal:#1f6b52;      --teal-soft:#dff0e8;    /* ceny obědů */
  --amber:#8a5212;     --amber-soft:#f6ead6;
  --purple:#4b3f8f;    --purple-soft:#ecebf8;
  --coral:#9e4f1a;     --coral-soft:#f7e6d8;   /* cihla */
  --danger:#b03a2e;    --success:#2f6f3e;
  /* typografická stupnice — nic menšího než --fs-xs */
  --fs-xs:12px;        /* štítky, čipy, metadata */
  --fs-s:13.5px;       /* podtituly, adresy, čas */
  --fs-m:15px;         /* text karty, názvy jídel */
  --fs-l:17px;         /* název akce / restaurace v kartě */
  --fs-xl:22px;        /* nadpis sekce */
  --fs-2xl:24px;       /* H1 stránky (PC 28) */
  --f-text:"IBM Plex Sans",-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-nadpis:"Bricolage Grotesque","IBM Plex Sans",-apple-system,"Segoe UI",sans-serif;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#151813; --card:#1e231b; --text:#e9eae2; --muted:#a3a79a; --line:rgba(233,234,226,.13);
    --brand:#8fc07a; --brand-soft:#243320;
    --blue:#7fb0de;  --blue-soft:#1b2c3c;
    --teal:#6fcfae;  --teal-soft:#16302a;
    --amber:#e3ac5c; --amber-soft:#36291a;
    --purple:#b3adf5;--purple-soft:#25223f;
    --coral:#ee9b72; --coral-soft:#3a2319;
    --danger:#e8806f;--success:#7cc48c;
  }
}
@media (min-width:860px){ :root{ --fs-2xl:28px; } }

/* Písma hostovaná lokálně (/fonts, WOFF2, latin + latin-ext pro češtinu).
   Ne z Google Fonts: přenos IP návštěvníka na servery Googlu byl v EU
   předmětem soudních sporů a u městského portálu to nechceme. Licence OFL
   je v /fonts. */
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;
  src:url(/fonts/ibm-plex-sans-latin-400-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;
  src:url(/fonts/ibm-plex-sans-latin-ext-400-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:600;font-display:swap;
  src:url(/fonts/ibm-plex-sans-latin-600-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:600;font-display:swap;
  src:url(/fonts/ibm-plex-sans-latin-ext-600-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:"Bricolage Grotesque";font-style:normal;font-weight:700;font-display:swap;
  src:url(/fonts/bricolage-grotesque-latin-700-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Bricolage Grotesque";font-style:normal;font-weight:700;font-display:swap;
  src:url(/fonts/bricolage-grotesque-latin-ext-700-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
/* titulky v Bricolage Grotesque (značka, H1, nadpisy sekcí, názvy v kartách) */
.brand,.hh-title,.hs-title,h1,h2,.rname,.ev-title,.hero-h,.kinohdr{font-family:var(--f-nadpis);font-weight:700;}
/* čísla (ceny, časy) se nemají „vlnit" */
.pbadge,.hi-price,.hit-price,.price,.k-cas,.ev-time,.d-dalsi-cas,.fchip-n{font-variant-numeric:tabular-nums;}
body{margin:0;font-family:var(--f-text);
  background:var(--bg);color:var(--text);line-height:1.4;}

.topbar{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  padding:10px 16px 8px;padding-top:calc(10px + env(safe-area-inset-top));
  background:var(--card);border-bottom:1px solid var(--line);}
.brand{display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-l);font-weight:700;letter-spacing:-.01em;
  color:var(--text);text-decoration:none;}
.brand-list{flex:none;width:20px;height:20px;color:var(--brand);}
.date{font-size:var(--fs-s);color:var(--muted);text-transform:capitalize;}

.view{max-width:680px;margin:0 auto;}
.loading,.empty{text-align:center;color:var(--muted);padding:48px 16px;font-size:var(--fs-m);}

/* filtry */
.filters{display:flex;gap:8px;overflow-x:auto;padding:12px 14px 6px;scrollbar-width:none;
  position:sticky;top:var(--topbar-h,53px);z-index:15;background:var(--bg);}
.filters::-webkit-scrollbar{display:none;}
.fchip{flex:none;font-size:var(--fs-s);font-weight:600;padding:7px 14px;border-radius:20px;
  border:1px solid var(--line);background:var(--card);color:var(--muted);cursor:pointer;white-space:nowrap;}
.fchip{display:inline-flex;align-items:center;gap:6px;}
.fchip-n{font-size:var(--fs-xs);font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums;}
.fchip.is-active{background:var(--brand);color:var(--bg);border-color:var(--brand);}
.fchip.is-active .fchip-n{color:inherit;opacity:.8;}
.fchip:disabled{opacity:.45;cursor:default;}
.fchip-kom{border-style:dashed;}
/* oddělovač skupin čas │ kategorie */
.fsep{flex:none;width:1px;align-self:stretch;margin:4px 2px;background:var(--line);}

/* sekce dne */
.dayhdr{font-size:var(--fs-s);font-weight:700;color:var(--text);padding:18px 18px 8px;
  display:flex;align-items:baseline;gap:8px;}
.dayhdr .cnt{font-size:var(--fs-xs);font-weight:600;color:var(--muted);}
/* kino — kompaktní program (řádek = čas · plakát · název) místo karet */
.kino{background:var(--card);border:1px solid var(--line);border-radius:14px;margin:0 12px 12px;overflow:hidden;}
.kinohdr{display:flex;align-items:center;gap:7px;margin:0;padding:11px 14px;font-size:var(--fs-s);font-weight:700;
  color:var(--blue);border-bottom:1px solid var(--line);}
.kinohdr .ico{width:18px;height:18px;}
.kinohdr .cnt{font-weight:600;color:var(--muted);}
.k-rows>.krow+.krow{border-top:1px solid var(--line);}
.krow-head{display:grid;grid-template-columns:52px auto 1fr 18px;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;}
.krow-head:not(:has(.k-plakat)){grid-template-columns:52px 1fr 18px;}
.k-cas{font-weight:700;font-variant-numeric:tabular-nums;color:var(--blue);line-height:1.2;}
.k-cas small{display:block;font-size:var(--fs-xs);font-weight:600;color:var(--muted);}
.k-plakat{width:34px;height:48px;object-fit:cover;border-radius:4px;background:var(--line);}
.k-nazev{font-weight:600;font-size:var(--fs-m);line-height:1.3;min-width:0;}
.krow .ev-caret{padding:0;}
.krow.open .ev-caret{transform:rotate(180deg);}
.krow.open .ev-detail{display:block;}
.krow .ev-detail{padding:0 14px 14px 78px;}
.hwrap-kino .kino{margin:0;}

/* karta akce */
.evlist{padding:0 12px;}
.ev{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  margin-bottom:10px;overflow:hidden;cursor:pointer;}
.ev-head{display:flex;gap:0;align-items:stretch;}
.ev-img{flex:none;width:104px;height:104px;object-fit:cover;object-position:center top;background:var(--blue-soft);
  display:flex;align-items:center;justify-content:center;font-size:var(--fs-l);}
.ev-ph .ico{width:34px;height:34px;opacity:.9;}
.ev-head{min-height:0;}
.ev-main{padding:11px 13px;min-width:0;flex:1;}
.ev-caret{flex:none;align-self:center;padding:0 13px;color:var(--muted);font-style:normal;display:inline-flex;transition:transform .2s;}
.ev-caret .ico{width:18px;height:18px;}
.ev.open .ev-caret,.hrow.open .ev-caret{transform:rotate(180deg);}
.ev-detail{display:none;padding:2px 14px 14px;}
.ev.open .ev-detail,.hero-card.open .ev-detail,.hrow.open .ev-detail{display:block;}
.ev-desc{font-size:var(--fs-s);line-height:1.5;margin:10px 0 8px;color:var(--text);}
.ev-info{font-size:var(--fs-s);color:var(--muted);margin-bottom:10px;}
.ev-link{display:inline-block;font-size:var(--fs-s);font-weight:600;color:var(--blue);text-decoration:none;}
.ev-top{display:flex;align-items:center;gap:8px;margin-bottom:5px;}
.chip{font-size:var(--fs-xs);font-weight:700;padding:2px 9px;border-radius:8px;background:var(--purple-soft);color:var(--purple);white-space:nowrap;}
.ev-time{font-size:var(--fs-xs);font-weight:600;color:var(--muted);}
.ev-title{font-size:var(--fs-m);font-weight:600;line-height:1.25;margin-bottom:5px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.ev-loc{font-size:var(--fs-s);color:var(--muted);display:flex;align-items:center;gap:4px;}
.ev-loc .ico{width:15px;height:15px;}

/* obed — rozklikávací karty */
.daybar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;
  background:var(--card);border-bottom:1px solid var(--line);}
.daynav{flex:none;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);
  background:var(--card);color:var(--text);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;}
.daynav .ico{width:20px;height:20px;}
.daynav:active{background:var(--bg);}
.dayinfo{text-align:center;}
.dayname{font-size:var(--fs-m);font-weight:600;}
.daydate{font-size:var(--fs-s);color:var(--muted);}
.menuhead{padding:14px 18px 4px;font-size:var(--fs-m);color:var(--muted);}
.menuhead b{color:var(--text);font-weight:700;}
.rlist{padding:8px 12px;}
.rcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);margin-bottom:9px;overflow:hidden;}
.rhead{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px;cursor:pointer;}
.rhead-l{min-width:0;}
.rname{font-size:var(--fs-m);font-weight:600;}
.rsub{font-size:var(--fs-s);color:var(--muted);margin-top:2px;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;}
.rprice{flex:none;display:flex;align-items:center;gap:8px;}
.pbadge{font-size:var(--fs-s);font-weight:700;color:var(--teal);background:var(--teal-soft);
  padding:4px 10px;border-radius:9px;white-space:nowrap;}
.chev{display:inline-flex;width:18px;height:18px;color:var(--muted);transition:transform .2s;flex:none;}
.chev .ico{width:18px;height:18px;}
.rcard.open .chev{transform:rotate(180deg);}
.rbody{display:none;padding:0 14px 6px;}
.rcard.open .rbody{display:block;}
.dish{display:flex;justify-content:space-between;gap:10px;font-size:var(--fs-s);padding:8px 0;border-top:1px solid var(--line);}
.dish .price{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;}
.dflag{display:inline-flex;margin-right:5px;cursor:help;vertical-align:-2px;color:var(--teal);}
.dflag .ico{width:15px;height:15px;}
/* alergeny za názvem jídla — informace pro alergiky, ne součást názvu */
.alg{font-size:var(--fs-xs);font-weight:400;color:var(--muted);white-space:nowrap;}
.rsub-new{color:var(--teal);font-weight:600;}
.rd-addphoto{display:inline-block;background:var(--brand);color:var(--bg);font-weight:600;
  padding:10px 16px;border-radius:10px;text-decoration:none;margin:6px 0 12px;}
.rd-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;}
.rd-photos a{aspect-ratio:1;border-radius:9px;overflow:hidden;background:var(--line);}
.rd-photos img{width:100%;height:100%;object-fit:cover;display:block;}
.rsoup{font-size:var(--fs-s);color:var(--teal);padding:8px 0 0;}
.rsoup .ico,.hit-dish .ico-polevka{width:16px;height:16px;vertical-align:-3px;margin-right:6px;}
.rfresh{font-size:var(--fs-xs);color:var(--muted);padding:9px 0 2px;margin-top:8px;border-top:1px solid var(--line);}

/* zpravy */
.nlist{padding:10px 12px;}
.aihint{display:flex;align-items:center;gap:7px;margin:8px 14px 4px;padding:8px 12px;
  font-size:var(--fs-s);color:var(--blue);background:var(--blue-soft);border-radius:10px;}
.news{display:flex;gap:11px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:11px;margin-bottom:9px;text-decoration:none;color:inherit;}
.news-thumb{flex:none;width:74px;height:74px;border-radius:11px;object-fit:cover;background:var(--blue-soft);}
.news-body{min-width:0;}
.news-src{font-size:var(--fs-xs);color:var(--muted);font-weight:600;display:flex;align-items:center;gap:6px;}
.ncat{font-size:var(--fs-xs);font-weight:700;color:var(--blue);background:var(--blue-soft);
  padding:2px 7px;border-radius:6px;text-transform:uppercase;letter-spacing:.02em;}
.news-title{font-size:var(--fs-m);font-weight:600;margin:3px 0;line-height:1.3;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.news-sum{font-size:var(--fs-s);color:var(--muted);line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}

/* Hlavní navigace je NAHOŘE (přání uživatele 2026-08-30) — druhý řádek
   hlavičky. Dole zůstal jen filtr kategorií, dvě lišty pod sebou byly moc. */
.tabbar{order:3;width:100%;display:flex;gap:4px;margin-top:6px;
  overflow-x:auto;scrollbar-width:none;background:transparent;}
.tabbar::-webkit-scrollbar{display:none;}
.tab{flex:1 1 auto;justify-content:center;background:none;border:0;padding:7px 10px;border-radius:10px;
  color:var(--muted);font:inherit;font-size:var(--fs-s);font-weight:600;white-space:nowrap;text-decoration:none;
  display:flex;flex-direction:row;align-items:center;gap:6px;cursor:pointer;}
.tab svg{flex:none;width:18px;height:18px;}
.tab{min-height:44px;}
.tab.is-active{color:var(--brand);background:var(--brand-soft);}

/* SEO / SSR obsah (crawler + no-JS; u uživatele přepíše JS) */
.ssr,.seo-page{max-width:760px;margin:0 auto;padding:16px 20px 40px;}
.seo-page h1,.ssr h1{font-size:var(--fs-xl);font-weight:700;margin:.4em 0;}
.seo-page h2{font-size:var(--fs-l);font-weight:600;margin:1.2em 0 .3em;}
.ssr h2{font-size:var(--fs-m);font-weight:600;color:var(--muted);margin:1.2em 0 .3em;text-transform:uppercase;letter-spacing:.03em;}
.ssr h3{font-size:var(--fs-m);font-weight:600;margin:.8em 0 .2em;}
.ssr ul,.seo-page ul{padding-left:20px;margin:.3em 0;}
.ssr li,.seo-page li{margin:5px 0;font-size:var(--fs-m);}
.seo-page a,.ssr a{color:var(--blue);text-decoration:none;}
.seo-page p{font-size:var(--fs-m);color:var(--muted);}
.rd-addr{font-size:var(--fs-m);font-weight:600;color:var(--text);margin:10px 0 2px;}
.rd-phone{font-size:var(--fs-m);margin:2px 0 12px;}
.rd-map{height:300px;width:100%;border-radius:12px;overflow:hidden;margin:10px 0 18px;border:1px solid var(--line);}
.rd-hours{border-collapse:collapse;font-size:var(--fs-m);margin:6px 0 8px;}
.rd-hours td{padding:5px 18px 5px 0;border-bottom:1px solid var(--line);}
.rd-hours td:last-child{color:var(--muted);}
.rdetail h2{font-size:var(--fs-l);font-weight:600;margin:20px 0 8px;}
.rdetail h3{font-size:var(--fs-m);font-weight:600;margin:14px 0 4px;}
.rdetlink{display:inline-block;font-size:var(--fs-s);font-weight:600;color:var(--blue);text-decoration:none;margin-top:10px;}

/* ====== DNES (přehled) + KATALOG (mapa) ====== */
.home{padding:4px 0 22px;}
.hhead{padding:14px 16px 8px;}
.hh-title{font-size:var(--fs-2xl);line-height:1.15;letter-spacing:-.015em;}
.hh-date{font-size:var(--fs-s);color:var(--muted);text-transform:capitalize;margin-top:1px;}
/* hero akce s fotkou (rozbalovací) */
.hero-card{display:block;margin:6px 12px 6px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  overflow:hidden;text-decoration:none;color:#fff;}
.hero{display:block;position:relative;aspect-ratio:16/9;}
.hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;display:block;}
.hero-ph{display:flex;align-items:center;justify-content:center;}
.hero-ph .ico{width:72px;height:72px;opacity:.55;margin-bottom:60px;}
.hero-ov{position:absolute;left:0;right:0;bottom:0;display:block;padding:48px 16px 14px;color:#fff;
  background:linear-gradient(to top,rgba(0,0,0,.82),rgba(0,0,0,0));}
.hero-chip{display:inline-block;font-size:var(--fs-xs);font-weight:600;padding:3px 9px;border-radius:7px;
  background:rgba(255,255,255,.92);color:#1e211b;}
.hero-h{display:block;font-size:var(--fs-xl);line-height:1.2;margin:8px 0 4px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.hero-d{display:flex;align-items:center;gap:4px;font-size:var(--fs-s);opacity:.95;}
.hero-d .ico{width:15px;height:15px;}
/* obrázkové řádky akcí */
.hrow{background:var(--card);border:1px solid var(--line);border-radius:11px;margin-bottom:7px;overflow:hidden;cursor:pointer;}
.hrow-head{display:flex;gap:11px;align-items:center;padding:9px 11px;}
.hr-thumb{flex:none;width:60px;height:60px;border-radius:9px;object-fit:cover;object-position:center top;}
.hr-thumb.hr-ph{display:flex;align-items:center;justify-content:center;}
.hr-ph .ico{width:26px;height:26px;}
.hr-b{min-width:0;flex:1;}
.hr-t{font-size:var(--fs-m);font-weight:600;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
/* tipy na výlet — horizontální scroll */
.tscroll{display:flex;gap:10px;overflow-x:auto;padding:2px 12px 10px;scrollbar-width:thin;scrollbar-color:var(--teal) var(--line);}
.tscroll::-webkit-scrollbar{height:8px;}
.tscroll::-webkit-scrollbar-thumb{background:var(--teal);border-radius:4px;}
.tscroll::-webkit-scrollbar-track{background:var(--line);border-radius:4px;}
.tcard{flex:none;width:164px;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;text-decoration:none;color:inherit;}
.tc-img{position:relative;height:100px;overflow:hidden;background:var(--blue-soft);}
.tc-photo{width:100%;height:100%;object-fit:cover;display:block;}
.tc-kind{position:absolute;left:6px;bottom:6px;font-size:var(--fs-xs);font-weight:700;padding:2px 7px;border-radius:6px;}
.tc-b{padding:8px 10px 10px;}
.tc-n{font-size:var(--fs-s);font-weight:600;line-height:1.25;}
.tc-d{font-size:var(--fs-xs);color:var(--muted);margin-top:2px;}
.searchwrap{position:relative;padding:6px 12px 2px;}
.search-ico{position:absolute;left:26px;top:50%;margin-top:2px;transform:translateY(-50%);display:inline-flex;color:var(--muted);pointer-events:none;}
.search-ico .ico{width:18px;height:18px;}
.searchbox{width:100%;font:inherit;font-size:var(--fs-m);padding:12px 16px 12px 44px;border-radius:13px;
  border:1px solid var(--line);background:var(--card);color:var(--text);outline:none;}
.searchbox:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft);}
.hsec{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:18px 16px 8px;}
.hs-title{font-size:var(--fs-xl);margin:0;line-height:1.2;letter-spacing:-.01em;}
.hs-note{font-size:var(--fs-xs);color:var(--muted);font-weight:400;}
/* nadpis sekce jako odkaz: celý řádek klikací, vpravo výrazné tlačítko
   „Zobrazit vše" (dřív nenápadné modré „vše →", na monitoru se přehlédlo) */
.hsec-odkaz{color:inherit;text-decoration:none;cursor:pointer;border-radius:12px;}
.hsec-odkaz .hs-title{text-decoration:underline;text-decoration-color:transparent;
  text-decoration-thickness:2px;text-underline-offset:5px;transition:color .12s,text-decoration-color .12s;}
.hsec-odkaz:hover .hs-title{color:var(--brand);text-decoration-color:currentColor;}
.hs-more{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:7px 14px;
  border-radius:999px;background:var(--brand-soft);color:var(--brand);font-size:var(--fs-s);
  font-weight:600;white-space:nowrap;transition:background .12s,color .12s;}
.hs-more .ico{width:17px;height:17px;transition:transform .12s;}
.hsec-odkaz:hover .hs-more{background:var(--brand);color:var(--bg);}
.hsec-odkaz:hover .hs-more .ico{transform:translateX(3px);}
/* seznam = jedna karta, řádky oddělené linkou bez vlastního rámečku (úroveň 2
   hierarchie; karty s rámečkem mají jen položky s fotkou) */
.hwrap{margin:0 12px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;}
.hwrap>.hitem,.hwrap>.hrow,.hwrap>.rekocard{margin:0;border:0;border-radius:0;background:transparent;border-top:1px solid var(--line);}
.hwrap>:first-child{border-top:0;}
.hwrap>a:hover{background:var(--bg);}
.hwrap>.hempty{padding:12px 14px;margin:0;}
.hwrap-kino{background:none;border:0;border-radius:0;overflow:visible;}
.hitem{display:flex;gap:10px;align-items:baseline;background:var(--card);border:1px solid var(--line);
  border-radius:11px;padding:10px 13px;margin-bottom:7px;font-size:var(--fs-m);}
a.hlink{text-decoration:none;color:inherit;justify-content:space-between;cursor:pointer;}
a.hlink .ev-caret{color:var(--muted);transform:none;}
.hi-when{flex:none;width:48px;color:var(--blue);font-weight:600;font-size:var(--fs-s);}
.hi-main{flex:1;min-width:0;font-weight:500;line-height:1.35;}
.hi-sub{color:var(--muted);font-weight:400;}
.hi-price{flex:none;color:var(--teal);font-weight:700;font-size:var(--fs-s);white-space:nowrap;}
.hi-cat{font-size:var(--fs-xs);font-weight:700;color:var(--blue);background:var(--blue-soft);padding:1px 6px;border-radius:5px;}
.hempty{color:var(--muted);font-size:var(--fs-s);padding:4px 4px 8px;}
.map{height:340px;width:100%;background:var(--blue-soft);}
.leaflet-container a{color:var(--blue);}
.mpin{width:15px;height:15px;border-radius:50%;background:var(--blue);border:21px solid #fff;
  box-shadow:0 1px 4px rgba(0,0,0,.45);}
.mpin-on{background:var(--success);}
.catrow{display:flex;justify-content:space-between;gap:12px;align-items:center;background:var(--card);
  border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:8px;
  text-decoration:none;color:inherit;font-size:var(--fs-m);}
.catrow .cat-main{font-weight:600;min-width:0;}
.catrow .hi-sub{text-align:right;}
.catrow .cat-l{display:flex;align-items:center;gap:11px;min-width:0;}
/* monogram avatar (restaurace bez fotky) */
.avatar{flex:none;width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-size:var(--fs-l);font-weight:700;color:var(--purple);background:var(--purple-soft);}
/* doporučené restaurace — bohatší karta */
.rekocard{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:12px;padding:11px 13px;margin-bottom:8px;text-decoration:none;color:inherit;}
.rekocard .rk-b{min-width:0;flex:1;}
.rekocard .rk-n{font-size:var(--fs-m);font-weight:600;}
.rekocard .rk-a{font-size:var(--fs-s);color:var(--muted);margin-top:1px;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;}
.rekocard .rk-go{flex:none;display:inline-flex;color:var(--muted);}
.rk-go .ico{width:18px;height:18px;}
/* „menu dnes" badge (katalog) */
.menu-badge{flex:none;font-size:var(--fs-xs);font-weight:700;color:var(--teal);background:var(--teal-soft);
  padding:3px 9px;border-radius:7px;white-space:nowrap;}
.new-badge{flex:none;font-size:var(--fs-xs);font-weight:700;color:var(--teal);background:var(--teal-soft);
  padding:2px 8px;border-radius:6px;margin-left:7px;white-space:nowrap;}
.recard{display:flex;justify-content:space-between;gap:12px;align-items:center;background:var(--card);
  border:1px solid var(--line);border-radius:12px;padding:13px 14px;margin-bottom:9px;text-decoration:none;color:inherit;}
.re-body{min-width:0;}
.re-top{display:flex;align-items:center;gap:8px;margin-bottom:4px;}
.re-kind{font-size:var(--fs-xs);font-weight:700;color:var(--amber);background:var(--amber-soft);padding:2px 8px;border-radius:7px;}
.re-src{font-size:var(--fs-xs);color:var(--muted);}
.re-title{font-size:var(--fs-m);font-weight:600;line-height:1.3;}
.re-meta{font-size:var(--fs-s);color:var(--muted);margin-top:2px;}
.re-price{flex:none;font-size:var(--fs-m);font-weight:700;color:var(--teal);white-space:nowrap;}
/* business karty (ubytování + kam na jídlo na kole) */
.bizcard{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:14px 16px;margin-bottom:10px;text-decoration:none;color:inherit;}
.bizcard.biz-hl{border:2px solid var(--amber);background:var(--amber-soft);}
.biz-top{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.biz-kind{font-size:var(--fs-xs);font-weight:700;color:var(--blue);background:var(--blue-soft);padding:2px 8px;border-radius:6px;}
.bizcard.biz-hl .biz-kind{background:var(--card);}
.biz-tag{font-size:var(--fs-xs);font-weight:700;color:var(--amber);background:var(--card);
  border:1px solid var(--amber);padding:2px 9px;border-radius:6px;}
.biz-name{font-size:var(--fs-l);font-weight:700;}
.biz-meta{font-size:var(--fs-s);color:var(--muted);margin:3px 0 6px;}
.biz-desc{font-size:var(--fs-s);line-height:1.5;}
.biz-link{font-size:var(--fs-s);font-weight:600;color:var(--blue);margin-top:8px;}
.more-src{padding:4px 14px 16px;font-size:var(--fs-s);}
.more-src a{color:var(--blue);text-decoration:none;font-weight:600;}

/* ====== ADMIN DASHBOARD ====== */
.admin{max-width:920px;margin:0 auto;padding:16px 20px 56px;}
.ahdr{display:flex;justify-content:space-between;align-items:center;padding:8px 0 14px;border-bottom:1px solid var(--line);margin-bottom:14px;}
.ahdr b{font-size:var(--fs-l);} .ahdr a{color:var(--blue);text-decoration:none;font-size:var(--fs-m);}
.admin h2{font-size:var(--fs-m);font-weight:600;margin:26px 0 10px;}
.mcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:10px;}
.mcard{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;text-align:center;}
.mval{font-size:var(--fs-2xl);font-weight:700;} .mlab{font-size:var(--fs-xs);color:var(--muted);margin-top:2px;}
.atable{width:100%;border-collapse:collapse;font-size:var(--fs-s);background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.atable th,.atable td{text-align:left;padding:8px 12px;border-bottom:1px solid var(--line);}
.atable th{font-size:var(--fs-xs);text-transform:uppercase;color:var(--muted);font-weight:600;}
.atable td.ok{color:var(--teal);font-weight:600;} .atable td.bad{color:var(--danger);font-weight:600;}
.bars{display:flex;flex-direction:column;gap:5px;}
.brow{display:flex;align-items:center;gap:10px;font-size:var(--fs-s);}
.blab{flex:none;width:130px;color:var(--muted);} .blab a{color:var(--blue);text-decoration:none;}
.btrack{flex:1;height:14px;background:var(--blue-soft);border-radius:7px;overflow:hidden;}
.bfill{display:block;height:100%;background:var(--blue);}
.bval{flex:none;width:34px;text-align:right;font-variant-numeric:tabular-nums;font-weight:600;}
.amuted{font-size:var(--fs-s);color:var(--muted);margin:6px 0;}
.admin input[type=date],.admin button{padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--text);font:inherit;}
.admin button{cursor:pointer;}

/* ====== ZLOMY ======
   do 599 px 1 sloupec · 600–859 tablet 2 sloupce (nový zlom — dřív tu běželo
   mobilní rozložení v úzkém sloupci 680 px uprostřed) · 860–1199 2 sloupce ·
   od 1200 3 sloupce. Šířka obsahu 1200 px pro VŠECHNY záložky (dřív Dnes
   1200 a ostatní 1320). */

/* ≥600: rozložení do šířky (tablet i PC) */
@media (min-width:600px){
  .view{max-width:1240px;padding:0 20px 40px;}
  /* boční okraj teď dává .view — vnitřní bloky ho už nepotřebují */
  .evlist,.hits{padding:0;}
  .rlist{padding:8px 0;}
  .nlist{padding:12px 0;}
  .kino,.hwrap,.hero-card{margin-left:0;margin-right:0;}
  .searchwrap,.msearch,.filters,.tscroll{padding-left:0;padding-right:0;}
  .search-ico{left:14px;} .msearch-ico{left:12px;} .msearch-x{right:4px;}
  .hsec,.hhead,.dayhdr,.menuhead,.hitnote{padding-left:2px;padding-right:2px;}
  /* mřížky ve dvou sloupcích */
  .evlist,.nlist,.rlist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start;}
  .ev,.news,.rcard{margin-bottom:0;}
  .ev-img{width:92px;height:92px;}
  /* rozbalená restaurace přes celou šířku, ať nerozhází mřížku */
  .rcard.open{grid-column:1/-1;}
  /* seznam: jedna karta, dva sloupce řádků */
  .hwrap{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;}
  .hwrap>*{border-top:1px solid var(--line);}
  .hwrap>:nth-child(-n+2){border-top:0;}
  .hwrap>:nth-child(odd):not(:last-child){border-right:1px solid var(--line);}
  .hwrap>.hempty{grid-column:1/-1;}
  .hwrap-kino{display:block;}
  /* kino: řádky ve dvou sloupcích */
  .k-rows{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));}
  .k-rows>.krow{border-top:1px solid var(--line);}
  .k-rows>.krow:nth-child(-n+2){border-top:0;}
  .k-rows>.krow:nth-child(odd):not(:last-child){border-right:1px solid var(--line);}
  /* tipy na výlet: 3 karty na šířku */
  .tcard{width:calc((100% - 20px) / 3);}
}

/* ≥860: PC — navigace v prvním řádku hlavičky vedle značky */
@media (min-width:860px){
  .topbar{padding:14px 32px;gap:28px;}
  .brand{font-size:var(--fs-xl);}
  .brand-list{width:23px;height:23px;}
  .date{font-size:var(--fs-s);}
  .tabbar{order:0;width:auto;margin-top:0;flex:1;justify-content:center;gap:6px;background:transparent;
    border:0;padding:0;overflow:visible;}
  .tab{flex:0 0 auto;flex-direction:row;gap:8px;font-size:var(--fs-m);padding:9px 18px;border-radius:11px;}
  .tab svg{width:19px;height:19px;}
  .view{padding:0 32px 40px;max-width:1264px;}
  /* filtry — na PC zalomit do více řádků, ať jsou všechny vidět */
  .filters{position:static;padding:20px 0 10px;background:transparent;flex-wrap:wrap;overflow:visible;}
  .dayhdr{padding:24px 2px 12px;font-size:var(--fs-m);}
  .evlist{gap:16px;}
  .ev-img{width:128px;height:116px;}
  .menuhead{padding:22px 2px 4px;font-size:var(--fs-m);}
  .rlist{gap:14px;}
  .rcard.open .rbody{column-count:2;column-gap:28px;padding-bottom:10px;}
  .rcard.open .rsoup,.rcard.open .rdetlink,.rcard.open .rfresh{column-span:all;}
  .nlist{gap:14px;padding:14px 0;}
  .kino{margin:0 0 12px;}
  .hero-card{margin:6px 0 8px;}
  /* 16:9 by na PC měřilo až 675 px — omezit výšku, fotka se jen ořízne */
  .hero{aspect-ratio:auto;height:380px;}
  .map{height:480px;border-radius:14px;margin-top:10px;}
  /* hover „klikatelnost" — jen u karet (s fotkou) a jen když uživatel
     nechce omezit pohyb; řádky seznamů se jen podbarví */
  @media (prefers-reduced-motion:no-preference){
    .ev,.rcard,.tcard,.news,.hero-card{transition:transform .12s,box-shadow .12s;}
    .ev:hover,.rcard:hover,.tcard:hover,.news:hover,.hero-card:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.08);}
  }
}

/* ≥1200: tři sloupce karet (seznamy zůstávají ve dvou — čtou se lépe) */
@media (min-width:1200px){
  .evlist,.rlist,.nlist{grid-template-columns:repeat(3,minmax(0,1fr));}
}

/* ====== PŘÍSTUPNOST ======
   Viditelný fokus pro klávesnici (dřív v CSS jen dvě pravidla pro :focus
   a rozbalovací karty nešly zaměřit tabulátorem vůbec). */
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px;}
.searchbox:focus-visible,.msearch input:focus-visible{outline-offset:0;}
@media (prefers-reduced-motion:reduce){ *{transition:none!important;animation:none!important;} }

/* H1 stránky jen pro vyhledávače a čtečky — vizuálně ho kreslil šedý popisek
   nad každou záložkou a na Dnes pod ním stál druhý nadpis „Dnes v České Lípě". */
.srhead,.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);
  white-space:nowrap;margin:0;padding:0;}
/* skeleton při přepínání záložek (místo textu „Načítám…") */
.skel{display:grid;gap:10px;padding:14px 12px;}
.skel-k{height:92px;border-radius:14px;border:1px solid var(--line);
  background:linear-gradient(90deg,var(--card) 25%,var(--bg) 50%,var(--card) 75%) 0 0/200% 100%;
  animation:skel 1.3s linear infinite;}
@keyframes skel{to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.skel-k{animation:none}}
.empty a{color:var(--blue);font-weight:600;}

/* ---------- Hledání jídla v denních menu ---------- */
.msearch{position:relative;display:flex;align-items:center;padding:12px 12px 4px;}
.msearch-ico{position:absolute;left:24px;display:inline-flex;color:var(--muted);pointer-events:none;}
.msearch-ico .ico{width:17px;height:17px;}
.msearch input{width:100%;font:inherit;font-size:var(--fs-m);color:var(--text);background:var(--card);
  border:1px solid var(--line);border-radius:12px;padding:11px 38px 11px 40px;outline:none;
  -webkit-appearance:none;appearance:none;}
.msearch input::placeholder{color:var(--muted);}
.msearch input:focus{border-color:var(--teal);}
/* nativní křížek v type=search by se bil s naším tlačítkem */
.msearch input::-webkit-search-cancel-button{display:none;}
.msearch-x{position:absolute;right:16px;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;
  color:var(--muted);background:transparent;border:0;cursor:pointer;padding:0;border-radius:50%;}
.msearch-x[hidden]{display:none;}
.msearch-x .ico{width:16px;height:16px;}
.menuhead-sub{padding-top:16px;}
.hits{padding:4px 12px 12px;}
.hit{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--card);
  border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:8px;
  text-decoration:none;color:inherit;}
.hit-l{min-width:0;}
.hit-dish{display:block;font-size:var(--fs-m);font-weight:600;line-height:1.35;}
.hit-rest{display:block;font-size:var(--fs-s);color:var(--muted);margin-top:3px;}
.hit-day{color:var(--teal);font-weight:700;}
.hit-price{flex:none;font-size:var(--fs-s);font-weight:700;color:var(--teal);background:var(--teal-soft);
  padding:4px 10px;border-radius:9px;white-space:nowrap;font-variant-numeric:tabular-nums;}
.hitnote{padding:2px 18px 16px;font-size:var(--fs-s);color:var(--muted);}
/* podnik se stálou nabídkou — odlišit od skutečného denního menu */
.stala-badge{flex:none;font-size:var(--fs-xs);font-weight:700;color:var(--amber);background:var(--amber-soft);
  padding:2px 8px;border-radius:6px;margin-left:7px;white-space:nowrap;}

/* ====== PATIČKA (všechny stránky) ====== */
.footer{margin-top:40px;background:var(--card);border-top:1px solid var(--line);
  padding:28px 16px calc(28px + env(safe-area-inset-bottom));font-size:var(--fs-m);color:var(--muted);}
.ft-in{max-width:1200px;margin:0 auto;display:grid;gap:22px;}
.ft-brand p{margin:4px 0 0;}
.ft-links{display:flex;flex-wrap:wrap;gap:10px 18px;align-content:start;}
.ft-links a,.ft-src a{color:var(--text);text-decoration:none;}
.ft-links a:hover,.ft-src a:hover{text-decoration:underline;}
.ft-src b{color:var(--text);}
.ft-src p{margin:6px 0 0;line-height:1.6;}
@media (min-width:860px){ .ft-in{grid-template-columns:1fr 1.2fr 1.6fr;align-items:start;} }

/* ====== DETAILY (akce, restaurace, výlet, statické stránky) ======
   Dřív měla každá šablona vlastní vložený <style> s jinou paletou (restaurace
   zelená #1f7a4d, akce modrá), bez tmavého režimu. Teď sdílené tokeny. */
.detail{max-width:720px;margin:0 auto;padding:12px 16px 20px;}
.detail h1{font-size:var(--fs-2xl);line-height:1.15;margin:6px 0 10px;letter-spacing:-.015em;}
.detail .lead{font-size:var(--fs-l);color:var(--muted);}
.ico{flex:none;width:20px;height:20px;}
.ico-s{width:16px;height:16px;}
.d-zpet{margin:4px 0 10px;font-size:var(--fs-m);}
.d-zpet a{display:inline-flex;align-items:center;gap:4px;color:var(--blue);text-decoration:none;font-weight:600;}
.d-zpet .ico{width:16px;height:16px;}
.d-chip{display:inline-block;font-size:var(--fs-xs);font-weight:700;padding:3px 10px;border-radius:8px;
  background:var(--blue-soft);color:var(--blue);}
.d-cover{display:block;width:100%;max-height:420px;object-fit:cover;border-radius:14px;margin:6px 0 12px;background:var(--blue-soft);}
.d-meta{list-style:none;padding:0;margin:8px 0 14px;display:grid;gap:8px;}
.d-meta li{display:flex;gap:10px;align-items:flex-start;font-size:var(--fs-m);}
.d-meta .ico{color:var(--muted);margin-top:1px;}
.d-meta a{color:var(--blue);text-decoration:none;}
.d-pozn{color:var(--muted);font-weight:400;}
.d-akce{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 6px;}
.btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:10px 16px;border-radius:12px;
  border:1px solid var(--brand);background:var(--brand);color:var(--bg);font:inherit;font-size:var(--fs-m);
  font-weight:600;text-decoration:none;cursor:pointer;}
.btn .ico{width:19px;height:19px;}
.btn-sec{background:var(--card);color:var(--text);border-color:var(--line);}
.btn[hidden]{display:none;}
.d-hlaska{min-height:1.2em;font-size:var(--fs-m);color:var(--teal);margin:4px 0;}
.d-desc{font-size:var(--fs-l);line-height:1.6;margin:16px 0;white-space:pre-line;}
.d-zdroj{margin:14px 0;}
.odkaz{display:inline-flex;align-items:center;gap:4px;color:var(--blue);font-weight:600;text-decoration:none;}
.d-sekce{margin-top:28px;}
.d-sekce h2{font-size:var(--fs-xl);margin:0 0 10px;}
.d-dalsi{list-style:none;padding:0;margin:0;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;}
.d-dalsi li+li{border-top:1px solid var(--line);}
.d-dalsi a{display:flex;gap:12px;padding:12px 14px;color:inherit;text-decoration:none;}
.d-dalsi-cas{flex:none;min-width:48px;font-weight:700;color:var(--blue);font-variant-numeric:tabular-nums;}
.d-dalsi-n{min-width:0;font-weight:600;}
.d-stav{display:flex;align-items:center;gap:8px;font-size:var(--fs-m);color:var(--muted);margin:0 0 10px;}
.d-tecka{flex:none;width:9px;height:9px;border-radius:50%;background:var(--muted);}
.d-stav.je-otevreno{color:var(--success);}
.d-stav.je-otevreno .d-tecka{background:var(--success);}
.d-den h3{font-size:var(--fs-m);margin:18px 0 4px;}
.d-dnes{font-size:var(--fs-xs);font-weight:700;color:var(--teal);background:var(--teal-soft);padding:2px 8px;
  border-radius:6px;margin-left:6px;vertical-align:middle;}
.d-hodiny{border-collapse:separate;border-spacing:0;width:100%;max-width:420px;background:var(--card);
  border:1px solid var(--line);border-radius:12px;overflow:hidden;font-size:var(--fs-m);}
.d-hodiny th,.d-hodiny td{padding:9px 14px;text-align:left;border-top:1px solid var(--line);font-weight:400;}
.d-hodiny tr:first-child th,.d-hodiny tr:first-child td{border-top:0;}
.d-hodiny td{color:var(--muted);font-variant-numeric:tabular-nums;}
.d-hodiny tr.je-dnes th,.d-hodiny tr.je-dnes td{font-weight:700;color:var(--text);}
.d-mapa{height:260px;border-radius:14px;overflow:hidden;background:var(--blue-soft);border:1px solid var(--line);margin-top:8px;}
.dish-ico{width:17px;height:17px;vertical-align:-3px;margin-right:6px;color:var(--teal);}
.dflag .ico{width:15px;height:15px;vertical-align:-2px;color:var(--teal);}
