/* Jen světlý vzhled jako tištěné noviny: tmavý režim je zrušený (pravidla
   [data-theme="dark"] níže se už nepoužijí) a prohlížeč nemá stránku ztmavovat. */
:root{color-scheme:light}

/* Písmo Inter je uložené přímo na webu (dřív z Google Fonts): návštěva tak
   neposílá IP adresu Googlu (u politického webu GDPR) a web je rychlejší.
   Proměnný řez 100–900, sady latin + latin-ext (čeština). Licence SIL OFL. */
@font-face{font-family:"Inter";font-style:italic;font-weight:100 900;font-display:swap;
  src:url("../fonts/inter-latin-italic.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:"Inter";font-style:italic;font-weight:100 900;font-display:swap;
  src:url("../fonts/inter-latin-ext-italic.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:"Inter";font-style:normal;font-weight:100 900;font-display:swap;
  src:url("../fonts/inter-latin.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:"Inter";font-style:normal;font-weight:100 900;font-display:swap;
  src:url("../fonts/inter-latin-ext.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}

/* ===========================================================
   JEDNO MĚSTO — design system
   Barvy a typografie dle oficiálního DS (claude.ai/design)
   =========================================================== */
:root{
  /* značka — oficiální paleta */
  --jm-mint:#f1fbef;  --jm-sand:#dbab6c;  --jm-sand-light:#efdac0;  --jm-crimson:#d40d47;
  --jm-sky:#a3dadf;   --jm-blue:#1651b9;  --jm-navy:#001749;

  --ink:#001749;
  --ink-soft:#4a5a80;
  --blue-900:#001749;
  --blue-700:#0e3f95;
  --blue-600:#1651b9;
  --blue-500:#1651b9;
  --blue-400:#3a7ce0;
  --gold:#dbab6c;
  --crimson:#d40d47;
  --grad:linear-gradient(135deg,#3a7ce0 0%,#1651b9 60%,#0b2e7a 100%);
  --grad-soft:linear-gradient(135deg,#1651b9,#3a7ce0);

  /* plochy */
  --paper:#ffffff;
  --mist:#f1fbef;
  --mist-2:#e2f2f4;
  --line:#c9d4e8;
  --line-strong:#a9bcdd;
  --surface-ink:#001749;

  /* typografie */
  --font-body:"Inter",Verdana,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-display:var(--font-body);

  /* tvary */
  --r-sm:8px; --r:14px; --r-lg:24px; --r-xl:32px;
  --shadow-sm:0 1px 2px rgba(0,23,73,.08);
  --shadow:0 4px 12px rgba(0,23,73,.10);
  --shadow-lg:0 12px 32px rgba(0,23,73,.18);

  --maxw:1200px;
  --header-h:88px;
}

*,*::before,*::after{box-sizing:border-box}
/* prvek s atributem hidden musí zmizet i tehdy, když má vlastní display
   (jinak ho autorské pravidlo jako .ptile{display:flex} přebije) */
[hidden]{display:none!important}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--paper);
  line-height:1.65;
  font-size:clamp(15.5px,1vw + 13px,17px);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer}
h1,h2,h3,h4{font-family:var(--font-display);line-height:1.12;letter-spacing:.01em;margin:0;font-weight:700}
.hero h1,.section-title,.cp-main h1,.tn-hero h1,.vote h2,.contact-info h2,.social-copy h2{font-weight:900;text-transform:uppercase;letter-spacing:.01em;line-height:1.05}
p{margin:0 0 1rem}
:focus-visible{outline:3px solid var(--blue-400);outline-offset:3px;border-radius:6px}

/* ---------- layout helpers ---------- */
.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:clamp(18px,5vw,40px)}
.section{padding-block:clamp(46px,6vw,86px)}
.section--mist{background:var(--mist)}
.section-head{max-width:680px;margin-bottom:clamp(26px,3.4vw,42px)}
.section-head.center{margin-inline:auto;text-align:center}
.section-title{font-size:clamp(1.9rem,4.2vw,3rem);margin:0 0 .7rem}
.section-sub{color:var(--ink-soft);font-size:1.05rem;margin:0}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.55em;
  font-family:var(--font-display);font-weight:600;font-size:.98rem;
  padding:.92em 1.6em;border-radius:999px;border:1.5px solid transparent;
  transition:transform .2s ease,box-shadow .25s ease,background .25s ease,color .2s ease;
  white-space:nowrap;
}
.btn svg{width:1.05em;height:1.05em}
.btn--primary{background:var(--crimson);color:#fff;box-shadow:0 4px 12px rgba(212,13,71,.28)}
.btn--primary:hover{background:#aa0a39;transform:translateY(-2px);box-shadow:0 8px 20px rgba(212,13,71,.36)}
.btn--ghost{background:transparent;border-color:var(--line-strong);color:var(--ink)}
.btn--ghost:hover{border-color:var(--blue-500);color:var(--blue-600);transform:translateY(-2px)}
.btn--light{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.4);backdrop-filter:blur(6px)}
.btn--light:hover{background:rgba(255,255,255,.24);transform:translateY(-2px)}

/* ===========================================================
   HEADER
   =========================================================== */
.header{
  position:fixed;inset:0 0 auto 0;z-index:60;height:var(--header-h);
  display:flex;align-items:center;
  transition:background .3s ease,box-shadow .3s ease,height .3s ease;
}
.header::before{
  content:"";position:absolute;inset:0;background:rgba(255,255,255,.82);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  opacity:0;transition:opacity .3s ease;border-bottom:1px solid transparent;
}
.header.scrolled{height:70px}
.header.scrolled::before{opacity:1;border-bottom-color:var(--line)}
.header .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;position:relative;z-index:1}
.brand{display:flex;align-items:center;gap:.7rem}
.brand img{height:52px;width:auto;transition:height .3s ease}
.header.scrolled .brand img{height:40px}
.brand .brand-fallback{display:flex;align-items:center;gap:.6rem;font-family:var(--font-display);font-weight:800;letter-spacing:-.02em}
.nav{display:flex;align-items:center;gap:.4rem}
.nav a{
  font-family:var(--font-display);font-weight:500;font-size:.95rem;color:var(--ink);
  padding:.55em .85em;border-radius:999px;transition:background .2s,color .2s;
}
.nav a:hover{background:var(--mist-2);color:var(--blue-600)}
.nav .nav-cta{margin:0 .4rem}   /* tlačítko je uprostřed menu (pořadí jako na stránce) */
/* bílý text a vlastní najetí – obecné .nav a by jinak přebilo tlačítko (tmavý text na červené) */
.nav a.nav-cta{color:#fff;font-weight:600}
.nav a.nav-cta:hover{background:#aa0a39;color:#fff}
.header-tools{display:flex;align-items:center;gap:.5rem}

/* burger */
.burger{
  display:none;width:46px;height:46px;border-radius:12px;border:1px solid var(--line);
  background:var(--paper);position:relative;flex:0 0 auto;
}
.burger span{position:absolute;left:12px;right:12px;height:2px;background:var(--ink);border-radius:2px;transition:.3s;top:50%}
.burger span:nth-child(1){transform:translateY(-7px)}
.burger span:nth-child(3){transform:translateY(7px)}
body.menu-open .burger span:nth-child(1){transform:rotate(45deg)}
body.menu-open .burger span:nth-child(2){opacity:0}
body.menu-open .burger span:nth-child(3){transform:rotate(-45deg)}
body.menu-open .header::before{opacity:0}
body.menu-open .header .brand img{filter:brightness(0) invert(1)}

/* mobile menu */
.mobile-menu{
  position:fixed;inset:0;z-index:55;background:var(--grad);
  display:flex;flex-direction:column;justify-content:center;gap:.4rem;
  padding:6rem clamp(24px,8vw,60px) 3rem;
  transform:translateY(-100%);opacity:0;pointer-events:none;
  transition:transform .45s cubic-bezier(.65,0,.35,1),opacity .3s;
}
body.menu-open .mobile-menu{transform:translateY(0);opacity:1;pointer-events:auto}
.mobile-menu a{
  font-family:var(--font-display);font-weight:600;color:#fff;font-size:clamp(1.6rem,7vw,2.4rem);
  padding:.35em 0;border-bottom:1px solid rgba(255,255,255,.16);display:flex;justify-content:space-between;align-items:center;
}
.mobile-menu a span{opacity:.5;font-size:.5em;font-weight:500}
.mobile-menu .mm-social{display:flex;gap:1rem;margin-top:2rem}
.mobile-menu .mm-social a{border:none;width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.16);display:grid;place-items:center;padding:0}
.mobile-menu .mm-social svg{width:22px;height:22px;fill:#fff}

/* ===========================================================
   HERO
   =========================================================== */
.hero{position:relative;padding-top:var(--header-h);padding-bottom:clamp(14px,2vw,28px);overflow:hidden}
.hero-bg{position:absolute;inset:0;z-index:-2;background:
  radial-gradient(1100px 700px at 78% -10%,#e2f2f4 0%,transparent 55%),
  radial-gradient(900px 600px at -10% 30%,#f1fbef 0%,transparent 60%),
  var(--paper);
}
.hero-blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.4;z-index:-1}
.hero-blob.b1{width:380px;height:380px;background:#a3dadf;top:-80px;right:6%}
.hero-blob.b2{width:300px;height:300px;background:#a3dadf;bottom:-60px;left:-40px;animation-delay:-6s}
@keyframes float{0%,100%{transform:translateY(0) translateX(0)}50%{transform:translateY(26px) translateX(-18px)}}
@media (prefers-reduced-motion:reduce){.hero-blob{animation:none}}

.hero h1{font-size:clamp(3.1rem,9.5vw,7.4rem);font-weight:900;margin:0;letter-spacing:-.01em;
  line-height:1.08;padding-top:.08em}
.hero h1.grad,.hero h1 .grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-lede{font-size:clamp(1.02rem,1.4vw,1.18rem);color:var(--ink-soft);max-width:60ch;margin:1rem auto 0;line-height:1.6}
.hero-lede:first-of-type{font-size:clamp(1.08rem,1.6vw,1.3rem);color:var(--ink);margin-top:1.3rem}
.hero-lede b{color:var(--crimson);font-weight:700}
[data-theme="dark"] .hero-lede b{color:#ff6a8f}
/* mobil: „Právě teď je čas na změnu na radnici.“ na vlastním řádku a vcelku;
   na úzkém displeji (nebo se zvětšeným písmem v telefonu) se písmo zmenší, aby se vešlo */
@media (max-width:760px){
  .hero-lede:last-of-type b{display:block;white-space:nowrap;font-size:min(1em,calc((100vw - 40px) / 19))}
}
.hero-meta{display:flex;gap:clamp(1.6rem,4vw,3rem);margin-top:2.4rem;flex-wrap:wrap;justify-content:center}
.hero-meta .m{display:flex;flex-direction:column;align-items:center}
.hero-meta .m b{font-family:var(--font-display);font-size:clamp(1.5rem,3vw,2rem);font-weight:800;line-height:1;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-meta .m span{font-size:.84rem;color:var(--ink-soft);margin-top:.35rem}

/* hero visual */

.hero-text{text-align:center;max-width:900px;margin-inline:auto;margin-top:clamp(-40px,-3vw,-14px);position:relative;z-index:1}
.hero-photo-wide{position:relative;width:100%;margin-top:0}
.hero-photo-wide>img{
  width:100%;height:clamp(340px,54vh,620px);object-fit:cover;object-position:center top;display:block;
  -webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 68%,rgba(0,0,0,.55) 86%,transparent 100%);
          mask-image:linear-gradient(to bottom,#000 0%,#000 68%,rgba(0,0,0,.55) 86%,transparent 100%);
}

@media (max-width:760px){
  .hero-photo-wide>img{height:clamp(260px,38vh,380px)}
        }

/* marquee strip */
.strip{background:var(--surface-ink);color:#fff;overflow:hidden;padding:.9rem 0}
.strip-track{display:flex;gap:3rem;width:max-content;animation:marquee 32s linear infinite}
.strip-track span{font-family:var(--font-display);font-weight:600;letter-spacing:.02em;opacity:.92;display:flex;align-items:center;gap:3rem;font-size:.92rem}
.strip-track span::after{content:"●";color:var(--gold);font-size:.6em}
@keyframes marquee{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.strip-track{animation:none}}

/* ===========================================================
   ABOUT / MANIFESTO
   =========================================================== */
.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,6vw,80px);align-items:center}
.about-copy h2{font-size:clamp(1.8rem,4vw,2.8rem);margin-bottom:1.2rem}
.about-copy p{color:var(--ink-soft);font-size:1.08rem}
.about-copy .lead{color:var(--ink);font-size:1.22rem;font-weight:500}
.pledges{list-style:none;margin:1.8rem 0 0;padding:0;display:grid;gap:.9rem}
.pledges li{display:flex;gap:.9rem;align-items:flex-start;font-weight:500}
.pledges .ic{flex:0 0 auto;width:30px;height:30px;border-radius:9px;background:var(--mist-2);display:grid;place-items:center;color:var(--blue-600)}
.pledges .ic svg{width:17px;height:17px}
.about-visual{position:relative}
.about-visual .frame{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow)}
.about-visual .frame img{width:100%;aspect-ratio:4/3;object-fit:cover}
.about-visual .quote{
  position:absolute;right:-14px;bottom:-22px;max-width:280px;background:var(--grad);color:#fff;
  border-radius:var(--r);padding:1.3rem 1.4rem;box-shadow:var(--shadow);font-family:var(--font-display);
  font-weight:500;font-size:1rem;line-height:1.4;
}
.about-visual .quote small{display:block;margin-top:.7rem;opacity:.8;font-weight:400;font-size:.8rem}

/* ===========================================================
   CANDIDATES
   =========================================================== */
/* na mobilu ať se do filtrů a rozbalení úvodníku dá pohodlně trefit prstem */
@media (max-width:760px){
  .pintro-more>summary{min-height:44px;padding-block:.4rem}
}

.cand-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:clamp(16px,2vw,24px)}
.cand{
  position:relative;border-radius:var(--r-lg);overflow:hidden;background:var(--mist);
  border:1px solid var(--line);text-align:left;padding:0;width:100%;color:inherit;
  transition:transform .32s cubic-bezier(.2,.7,.2,1),box-shadow .32s,border-color .3s;
  display:flex;flex-direction:column;
}
.cand:hover{transform:translateY(-7px);box-shadow:var(--shadow);border-color:transparent}
.cand-photo{position:relative;aspect-ratio:5/6;overflow:hidden;background:var(--mist-2)}
.cand-photo img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.cand:hover .cand-photo img{transform:scale(1.05)}
.cand-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(11,19,48,.78) 0%,rgba(11,19,48,.05) 42%,transparent 60%)}
.cand-num{
  position:absolute;top:12px;left:12px;z-index:2;width:38px;height:38px;border-radius:12px;
  background:rgba(255,255,255,.92);backdrop-filter:blur(4px);display:grid;place-items:center;
  font-family:var(--font-display);font-weight:800;font-size:1.05rem;color:var(--blue-700);box-shadow:var(--shadow-sm);
}
.cand-info{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:14px 16px 16px;color:#fff}
.cand-info h3{font-size:1.12rem;line-height:1.15;margin:0 0 .2rem}
.cand-info .role{font-size:.82rem;opacity:.92;font-weight:500;display:block}
.cand-open{
  position:absolute;top:12px;right:12px;z-index:2;width:36px;height:36px;border-radius:50%;
  background:rgba(255,255,255,.18);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.3);
  display:grid;place-items:center;opacity:0;transform:scale(.7);transition:.28s;
}
.cand:hover .cand-open{opacity:1;transform:scale(1)}
.cand-open svg{width:16px;height:16px;stroke:#fff}
.cand[hidden]{display:none}

/* leaders accent (first 5) */

/* ===========================================================
   MODAL
   =========================================================== */
.modal{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:clamp(14px,4vw,40px);visibility:hidden;opacity:0;transition:opacity .3s,visibility .3s}
.modal.open{visibility:visible;opacity:1}
.modal-backdrop{position:absolute;inset:0;background:rgba(8,14,40,.6);backdrop-filter:blur(6px)}
.modal-card{
  position:relative;background:var(--paper);border-radius:var(--r-lg);width:min(780px,100%);
  max-height:min(88vh,820px);overflow:hidden;box-shadow:var(--shadow-lg);
  display:flex;flex-direction:row;transform:translateY(24px) scale(.98);transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.modal.open .modal-card{transform:none}
.modal-photo{position:relative;background:var(--mist-2);flex:0 0 300px}
.modal-photo img{width:100%;height:100%;object-fit:cover}
.modal-photo .mnum{position:absolute;top:14px;left:14px;width:42px;height:42px;border-radius:12px;background:var(--grad);color:#fff;display:grid;place-items:center;font-family:var(--font-display);font-weight:800;font-size:1.1rem;box-shadow:var(--shadow-sm)}
.modal-body{padding:clamp(24px,3vw,38px);flex:1 1 auto;min-width:0;min-height:0;overflow-y:auto}
.modal-body .role{color:var(--blue-600);font-family:var(--font-display);font-weight:600;font-size:.82rem;letter-spacing:.1em;text-transform:uppercase}
.modal-body h3{font-size:clamp(1.5rem,3vw,2rem);margin:.4rem 0 1rem}
.modal-body p{color:var(--ink-soft);font-size:1.02rem;white-space:pre-line}
.modal-quote{margin:1.3rem 0 0;padding:1rem 0 0 1.2rem;border-left:3px solid var(--blue-400);font-family:var(--font-display);font-weight:500;font-style:italic;color:var(--ink);font-size:1.08rem;line-height:1.45}
.modal-quote::before{content:"„"}
.modal-quote::after{content:"“"}
.modal-close{position:absolute;top:14px;right:14px;z-index:3;width:42px;height:42px;border-radius:50%;background:var(--paper);border:1px solid var(--line);display:grid;place-items:center;box-shadow:var(--shadow-sm);transition:.2s}
.modal-close:hover{transform:rotate(90deg);color:var(--blue-600)}
.modal-close svg{width:18px;height:18px}
.modal-nav{display:flex;gap:.6rem;margin-top:1.8rem;padding-top:1.4rem;border-top:1px solid var(--line)}
.modal-nav button{display:inline-flex;align-items:center;gap:.5em;font-family:var(--font-display);font-weight:600;font-size:.9rem;color:var(--ink-soft);background:var(--mist);border:1px solid var(--line);border-radius:999px;padding:.6em 1.1em;transition:.2s}
.modal-nav button:hover{color:var(--blue-600);border-color:var(--blue-400)}
.modal-nav button svg{width:16px;height:16px}
.modal-nav .spacer{flex:1}

/* ===========================================================
   CANDIDATE DETAIL PAGE
   =========================================================== */
.cp{padding-top:calc(var(--header-h) + clamp(24px,4vw,46px));padding-bottom:clamp(50px,8vw,100px)}
.cp-back{display:inline-flex;align-items:center;gap:.5em;font-family:var(--font-display);font-weight:600;font-size:.92rem;color:var(--ink-soft);margin-bottom:clamp(22px,3vw,36px);transition:color .2s,transform .2s}
.cp-back:hover{color:var(--blue-600)}
.cp-back:hover svg{transform:translateX(-3px)}
.cp-back svg{width:18px;height:18px;transition:transform .2s}
.cp-grid{display:grid;grid-template-columns:380px 1fr;gap:clamp(34px,5vw,76px);align-items:start}
.cp-aside{position:sticky;top:calc(var(--header-h) + 22px)}
.cp-main{min-width:0}
.cp-lead,.cp-bio p{overflow-wrap:break-word}
.cp-photo{position:relative;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow);aspect-ratio:5/6;background:var(--mist-2)}
.cp-photo img{width:100%;height:100%;object-fit:cover}
.cp-num{position:absolute;top:16px;left:16px;width:48px;height:48px;border-radius:15px;background:var(--grad);color:#fff;display:grid;place-items:center;font-family:var(--font-display);font-weight:800;font-size:1.2rem;box-shadow:var(--shadow-sm)}
.cp-share{margin-top:1.2rem;display:flex;gap:.55rem;align-items:center;flex-wrap:wrap}
.cp-share .lbl{font-size:.78rem;color:var(--ink-soft);font-weight:600;font-family:var(--font-display);text-transform:uppercase;letter-spacing:.08em;margin-right:.2rem}
.cp-share a,.cp-share button{display:inline-flex;align-items:center;gap:.45em;height:40px;padding:0 .9em;border:1px solid var(--line);border-radius:11px;background:var(--paper);color:var(--ink-soft);font-family:var(--font-display);font-weight:600;font-size:.85rem;transition:.2s}
.cp-share a:hover,.cp-share button:hover{border-color:var(--blue-400);color:var(--blue-600);transform:translateY(-2px)}
.cp-share svg{width:17px;height:17px;fill:currentColor}
.cp-share .copied{color:#1a9e57;border-color:#1a9e57}
.cp-main>.role{color:var(--blue-600);font-family:var(--font-display);font-weight:600;font-size:.85rem;letter-spacing:.12em;text-transform:uppercase}
.cp-main h1{font-size:clamp(2.1rem,5vw,3.3rem);margin:.55rem 0 1.2rem;letter-spacing:-.02em}
.cp-lead{font-size:clamp(1.18rem,1.8vw,1.46rem);color:var(--ink);font-weight:500;line-height:1.55;margin:.2rem 0 2.1rem;padding:.2rem 0 .2rem 1.4rem;border-left:4px solid var(--blue-500)}
.cp-bio{max-width:64ch}
.cp-bio p{color:var(--ink-soft);font-size:1.09rem;line-height:1.78;margin:0 0 1.2rem}
.cp-bio>p:first-of-type::first-letter{float:left;font-weight:800;font-size:3.3em;line-height:.74;margin:.02em .14em 0 0;color:var(--blue-600)}
.cp-bio>p:first-of-type{color:var(--ink)}
.cp-quote{margin:2.2rem 0 0;padding:1.5rem 1.8rem;background:var(--mist);border-left:4px solid var(--blue-500);border-radius:0 var(--r) var(--r) 0;font-family:var(--font-display);font-style:italic;font-weight:500;font-size:1.22rem;line-height:1.5;color:var(--ink)}
.cp-quote::before{content:"„"}.cp-quote::after{content:"“"}
.cp-nav{margin-top:clamp(40px,6vw,76px);padding-top:1.8rem;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:1rem}
.cp-nav a{display:flex;align-items:center;gap:.9rem;padding:.75rem 1.1rem;border:1px solid var(--line);border-radius:var(--r);transition:transform .25s,box-shadow .25s,border-color .25s;background:var(--paper);flex:1 1 0;min-width:0;max-width:340px}
.cp-nav a:hover{border-color:transparent;box-shadow:var(--shadow);transform:translateY(-2px)}
.cp-nav img{width:50px;height:56px;border-radius:10px;object-fit:cover;flex:0 0 auto}
.cp-nav .meta{min-width:0}
.cp-nav .dir{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);font-weight:600;font-family:var(--font-display)}
.cp-nav b{font-family:var(--font-display);font-size:.98rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-nav .next{flex-direction:row-reverse;text-align:right;margin-left:auto}
@media (max-width:860px){
  .cp-grid{grid-template-columns:1fr;gap:28px}
  .cp-aside{position:static}
  .cp-photo{max-width:300px;aspect-ratio:1/1}
  .cp-bio{max-width:none}
  .cp-nav{flex-direction:column}
  .cp-nav a{max-width:none}
  .cp-nav b{font-size:.92rem;white-space:normal}
}

/* ===========================================================
   ELECTION / CTA band
   =========================================================== */
.vote{position:relative;overflow:hidden;background:var(--grad);color:#fff}
.vote::before{content:"";position:absolute;inset:0;background:
  radial-gradient(600px 400px at 88% 10%,rgba(255,255,255,.18),transparent 60%),
  radial-gradient(500px 400px at 5% 100%,rgba(0,0,0,.18),transparent 55%);}
.vote .wrap{position:relative}
.vote-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(30px,5vw,60px);align-items:start}
.vote h2{font-size:clamp(1.9rem,4.4vw,3rem);margin-bottom:1rem}
.vote p{color:rgba(255,255,255,.86);font-size:1.08rem;max-width:46ch}
.vote .when{display:flex;gap:1rem;flex-wrap:wrap;margin:1.8rem 0}
.vote .when .d{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);border-radius:var(--r);padding:1.1rem 1.4rem;backdrop-filter:blur(6px)}
.vote .when .d b{display:block;font-family:var(--font-display);font-size:1.7rem;font-weight:800;line-height:1}
.vote .when .d span{font-size:.85rem;opacity:.82}
.vote-steps{display:grid;gap:1rem}
.vote-steps .vs{display:flex;gap:1rem;align-items:flex-start;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);border-radius:var(--r);padding:1.1rem 1.3rem;backdrop-filter:blur(6px)}
.vote-steps .vs .n{flex:0 0 auto;width:34px;height:34px;border-radius:10px;background:#fff;color:var(--blue-700);display:grid;place-items:center;font-family:var(--font-display);font-weight:800}
.vote-steps .vs h4{font-size:1.05rem;margin:0 0 .2rem}
.vote-steps .vs p{margin:0;font-size:.92rem;color:rgba(255,255,255,.82)}

/* ===========================================================
   CONTACT
   =========================================================== */
.contact-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(34px,5vw,64px)}
.contact-info h2{font-size:clamp(1.8rem,4vw,2.7rem);margin-bottom:1rem}
.contact-info p{color:var(--ink-soft)}
.contact-list{list-style:none;padding:0;margin:1.8rem 0 0;display:grid;gap:1rem}
.contact-list li{display:flex;gap:.9rem;align-items:center}
.contact-list .ic{width:46px;height:46px;border-radius:14px;background:var(--mist-2);display:grid;place-items:center;color:var(--blue-600);flex:0 0 auto}
.contact-list .ic svg{width:20px;height:20px}
.contact-list b{display:block;font-family:var(--font-display);font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);font-weight:600}
.contact-list a,.contact-list span{color:var(--ink);font-weight:500}
.socials{display:flex;gap:.7rem;margin-top:1.8rem}
.socials a{width:48px;height:48px;border-radius:14px;background:var(--surface-ink);display:grid;place-items:center;transition:.25s}
.socials a:hover{background:var(--blue-600);transform:translateY(-3px)}
.socials svg{width:22px;height:22px;fill:#fff}

.form{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(24px,3vw,38px);box-shadow:var(--shadow-sm)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.field{margin-bottom:1.1rem;display:flex;flex-direction:column}
.field label{font-family:var(--font-display);font-weight:600;font-size:.85rem;margin-bottom:.45rem}
.field input,.field textarea{
  font-family:inherit;font-size:1rem;color:var(--ink);background:var(--mist);
  border:1.5px solid transparent;border-radius:var(--r-sm);padding:.85em 1em;transition:.2s;width:100%;resize:vertical;
}
.field input:focus,.field textarea:focus{outline:none;background:var(--paper);border-color:var(--blue-400);box-shadow:0 0 0 4px rgba(86,128,255,.16)}
.form .btn{width:100%;margin-top:.4rem}
.form-note{font-size:.82rem;color:var(--ink-soft);margin:.9rem 0 0;text-align:center}
.form{position:relative}
.form .btn:disabled{opacity:.7;cursor:progress}
/* skryté pole proti robotům (člověk ho nevidí ani čtečkou) */
.hp{position:absolute!important;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
/* výsledek odeslání pod tlačítkem */
.form-status{margin:.9rem 0 0;padding:.75rem .95rem;border-radius:var(--r-sm);
  font-size:.92rem;line-height:1.45;font-weight:600;outline:none}
.form-status.is-ok{background:#e3f5e8;color:#0f5a2a}
.form-status.is-err{background:#fde8ee;color:#8a0c30}
.form-status a{color:inherit;text-decoration:underline;text-underline-offset:2px}
[data-theme="dark"] .form-status.is-ok{background:rgba(76,175,80,.16);color:#bdf0c8}
[data-theme="dark"] .form-status.is-err{background:rgba(212,13,71,.2);color:#ffc4d2}

/* ===========================================================
   SOCIAL / FACEBOOK FEED
   =========================================================== */
.social-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(34px,5vw,64px);align-items:center}
.social-copy h2{font-size:clamp(1.8rem,4vw,2.7rem);margin:.6rem 0 1rem}
.social-copy p{color:var(--ink-soft)}
.follow-row{display:grid;gap:1rem;margin-top:1.9rem}
.follow-card{display:flex;align-items:center;gap:1rem;padding:1rem 1.2rem;border:1px solid var(--line);border-radius:var(--r);background:var(--paper);transition:transform .25s,box-shadow .25s,border-color .25s;box-shadow:var(--shadow-sm)}
.follow-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:transparent}
.follow-card .ic{width:50px;height:50px;border-radius:14px;display:grid;place-items:center;flex:0 0 auto}
.follow-card .ic svg{width:26px;height:26px;fill:#fff}
.follow-card.fb .ic{background:#1877f2}
.follow-card.ig .ic{background:linear-gradient(45deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888)}
.follow-card .t b{display:block;font-family:var(--font-display);font-size:1.05rem;line-height:1.2}
.follow-card .t span{color:var(--ink-soft);font-size:.9rem}
.follow-card .go{margin-left:auto;color:var(--ink-soft);transition:transform .2s,color .2s}
.follow-card .go svg{width:20px;height:20px}
.follow-card:hover .go{color:var(--blue-600);transform:translateX(4px)}

.social-feed{display:flex;justify-content:center}
.fb-loader{width:100%;max-width:500px;min-height:540px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--mist);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2.6rem 1.6rem;gap:1.1rem}
.fb-loader .fbmark{width:66px;height:66px;border-radius:20px;background:#1877f2;display:grid;place-items:center;box-shadow:0 14px 30px -12px rgba(24,119,242,.7)}
.fb-loader .fbmark svg{width:38px;height:38px;fill:#fff}
.fb-loader h3{font-size:1.25rem;margin:0}
.fb-loader p{color:var(--ink-soft);font-size:.96rem;max-width:32ch;margin:0}
.fb-loader .note{font-size:.78rem;color:var(--ink-soft);opacity:.85;max-width:34ch;margin:.2rem 0 0}
.fb-loader.loaded{display:block;min-height:0;background:transparent;border:none;padding:0;text-align:left}
@media (max-width:1024px){.social-grid{grid-template-columns:1fr;gap:42px}}

/* ===========================================================
   FOOTER
   =========================================================== */
.footer{background:var(--surface-ink);color:#c7d4ee;padding-block:clamp(48px,6vw,72px) 2rem}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:clamp(30px,4vw,60px);align-items:start}
.footer .brand img{height:40px;filter:brightness(0) invert(1)}
.footer p{color:#a9bcdd;font-size:.95rem;max-width:38ch}
.footer h4{color:#fff;font-size:.82rem;text-transform:uppercase;letter-spacing:.12em;margin-bottom:1.1rem}
.footer ul{list-style:none;padding:0;margin:0;display:grid;gap:.65rem}
.footer ul a{color:#c7d4ee;transition:.2s;font-size:.96rem}
.footer ul a:hover{color:#fff}
.footer-bottom{margin-top:clamp(36px,5vw,56px);padding-top:1.6rem;border-top:1px solid rgba(255,255,255,.12);display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.85rem;color:#a9bcdd}
.footer-bottom a{color:#c7d4ee}
.footer-bottom a:hover{color:#fff}

/* ===========================================================
   TRANSPARENCY PAGE
   =========================================================== */
.tn-hero{padding-top:calc(var(--header-h) + clamp(40px,6vw,70px));padding-bottom:clamp(30px,5vw,50px);background:var(--mist);position:relative}
.tn-hero h1{font-size:clamp(2rem,5vw,3.2rem);margin:0 0 .8rem}
.tn-hero p{color:var(--ink-soft);max-width:60ch;margin:0}
.tn-updated{margin-top:1.2rem;font-size:.88rem;color:var(--ink-soft)}
.tn-updated b{color:var(--ink)}

.tn-layout{display:grid;grid-template-columns:240px 1fr;gap:clamp(28px,4vw,56px);align-items:start}
.tn-toc{position:sticky;top:90px;background:var(--mist);border:1px solid var(--line);border-radius:var(--r);padding:1.2rem;font-size:.9rem}
.tn-toc h4{font-family:var(--font-display);font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);margin-bottom:.8rem}
.tn-toc ol{list-style:none;padding:0;margin:0;counter-reset:t;display:grid;gap:.15rem}
.tn-toc a{display:flex;gap:.6rem;padding:.4rem .5rem;border-radius:8px;color:var(--ink-soft);transition:.2s;line-height:1.3}
.tn-toc a:hover{background:var(--mist-2);color:var(--blue-600)}
.tn-toc a .tn-i{font-family:var(--font-display);font-weight:700;color:var(--blue-500);flex:0 0 auto}

.tn-items{display:grid;gap:1rem}
.tn-item{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--paper);scroll-margin-top:88px}
.tn-item summary{
  list-style:none;cursor:pointer;display:flex;align-items:center;gap:1rem;padding:1.1rem 1.3rem;
  font-family:var(--font-display);font-weight:600;font-size:1.05rem;transition:background .2s;
}
.tn-item summary::-webkit-details-marker{display:none}
.tn-item summary:hover{background:var(--mist)}
.tn-item .tn-no{flex:0 0 auto;width:34px;height:34px;border-radius:10px;background:var(--mist-2);color:var(--blue-700);display:grid;place-items:center;font-weight:800;font-size:.92rem}
.tn-item[open] .tn-no{background:var(--grad);color:#fff}
.tn-item summary .chev{margin-left:auto;transition:transform .3s;color:var(--ink-soft)}
.tn-item[open] summary .chev{transform:rotate(180deg)}
.tn-content{padding:0 1.3rem 1.3rem 4.3rem;color:var(--ink-soft)}
.tn-content p{margin:.2rem 0 .6rem}
.tn-content strong{color:var(--ink)}
.tn-content a{color:var(--blue-600);font-weight:500;text-decoration:underline;text-underline-offset:2px}
.tn-kv{display:grid;gap:.5rem;margin:0}
.tn-kv div{display:grid;grid-template-columns:170px 1fr;gap:.5rem}
.tn-kv dt{font-weight:600;color:var(--ink)}
.tn-kv dd{margin:0}
.tn-amount{display:flex;align-items:baseline;gap:.6rem;background:var(--mist);border:1px solid var(--line);border-radius:var(--r-sm);padding:1rem 1.2rem;margin-top:.6rem}
.tn-amount b{font-family:var(--font-display);font-size:1.7rem;color:var(--blue-700);line-height:1}
.tn-amount span{color:var(--ink-soft);font-size:.9rem}

@media (max-width:760px){.tn-kv div{grid-template-columns:1fr}.tn-content{padding-left:1.3rem}}

/* ===========================================================
   reveal animation
   =========================================================== */
[data-reveal]{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}
[data-reveal].in{opacity:1;transform:none}
[data-reveal][data-delay="1"]{transition-delay:.08s}
[data-reveal][data-delay="2"]{transition-delay:.16s}
[data-reveal][data-delay="3"]{transition-delay:.24s}
@media (prefers-reduced-motion:reduce){[data-reveal]{opacity:1!important;transform:none!important;transition:none}}

/* ===========================================================
   RESPONSIVE
   =========================================================== */
@media (max-width:1024px){
      .hero-lede{max-width:none}
  .about-grid,.vote-grid,.contact-grid{grid-template-columns:1fr;gap:44px}
  .vote-grid .vote-copy{order:-1}
  .tn-layout{grid-template-columns:1fr}
  .tn-toc{display:none}
}
@media (max-width:760px){
  .nav{display:none}
  .nav-cta{display:none}
  .burger{display:block}
  .modal-card{flex-direction:column}
  .modal-photo{flex:0 0 auto;width:100%;aspect-ratio:16/10}
  .modal-photo img{aspect-ratio:16/10}
  .form-row{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr;gap:36px}
    }
@media (max-width:480px){
  .cand-grid{grid-template-columns:1fr 1fr;gap:12px}
  .cand-info h3{font-size:.98rem}
  .cand-info .role{font-size:.74rem}
  .cand-num{width:32px;height:32px;font-size:.92rem}
  .hero-meta{gap:1.4rem}
}

/* ===========================================================
   MODERN 2026 — scroll progress, bento, counters, tilt
   =========================================================== */
.scroll-progress{position:fixed;top:0;left:0;height:3px;width:0;background:var(--grad);z-index:100;transition:width .12s linear;border-radius:0 3px 3px 0}

/* --- BENTO GRID --- */
.bento{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:minmax(186px,1fr);gap:clamp(12px,1.3vw,18px)}
.bento-tile{position:relative;border-radius:var(--r-lg);padding:clamp(22px,2.4vw,32px);overflow:hidden;border:1px solid var(--line);background:var(--paper);display:flex;flex-direction:column;justify-content:flex-end;transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s,border-color .35s}
.bento-tile:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:transparent}
.b-lg{grid-column:span 2;grid-row:span 2}
.b-wide{grid-column:span 2}
.bento-manifesto{justify-content:flex-start}
.bento-manifesto h3{font-size:clamp(1.45rem,2.4vw,2.1rem);margin-bottom:.7rem;letter-spacing:-.02em}
.bento-manifesto p{color:var(--ink-soft);margin:0}
.bento-manifesto .pledges{margin-top:1.3rem}
.bento-photo{padding:0;border:none}
.bento-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.bento-photo:hover img{transform:scale(1.07)}
.bento-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(11,19,48,.62),transparent 55%)}
.bento-cap{position:relative;z-index:1;color:#fff;font-family:var(--font-display);font-weight:600;display:flex;align-items:center;gap:.5em}
.bento-cap .dot{width:8px;height:8px;border-radius:50%;background:var(--gold)}
.bento-stat{justify-content:center;background:var(--mist)}
.bento-stat b{font-family:var(--font-display);font-weight:800;font-size:clamp(2.8rem,5.5vw,4.4rem);line-height:.9;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.bento-stat span{color:var(--ink-soft);font-weight:500;margin-top:.55rem;font-size:.95rem}
.bento-stat.dark{background:var(--surface-ink)}
.bento-stat.dark b{background:linear-gradient(120deg,#ffffff,#a3dadf);-webkit-background-clip:text;background-clip:text;color:transparent}
.bento-stat.dark span{color:rgba(255,255,255,.72)}
.bento-quote{background:var(--mist-2);justify-content:center}
.bento-quote .qm{font-family:var(--font-display);font-size:3rem;line-height:.4;color:var(--blue-400);height:1.2rem}
.bento-quote p{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:clamp(1.15rem,1.9vw,1.55rem);line-height:1.4;color:var(--ink);margin:.6rem 0 0}
.bento-quote small{color:var(--ink-soft);margin-top:.8rem}
.bento-cta{background:var(--grad);color:#fff;justify-content:center;overflow:hidden}
.bento-cta::after{content:"";position:absolute;inset:auto -30% -50% auto;width:200px;height:200px;background:rgba(255,255,255,.16);filter:blur(50px);border-radius:50%}
.bento-cta h3{color:#fff;font-size:clamp(1.3rem,2.2vw,1.85rem);margin:0 0 .4rem;position:relative}
.bento-cta p{color:rgba(255,255,255,.85);margin:0 0 1.2rem;position:relative}
.bento-cta .arrow{position:relative;display:inline-flex;align-items:center;gap:.5em;font-family:var(--font-display);font-weight:600;transition:gap .25s}
.bento-cta:hover .arrow{gap:.9em}
.bento-cta .arrow svg{width:1.1em;height:1.1em}

@media (max-width:900px){
  .bento{grid-template-columns:repeat(2,1fr)}
  .b-lg{grid-column:span 2;grid-row:span 1}
}
@media (max-width:560px){
  .bento{grid-template-columns:1fr;grid-auto-rows:minmax(150px,auto)}
  .b-lg,.b-wide{grid-column:span 1}
}

/* ===========================================================
   THEME TOGGLE + DARK MODE
   =========================================================== */
.theme-toggle{
  width:46px;height:46px;border-radius:12px;border:1px solid var(--line);
  background:var(--paper);display:grid;place-items:center;color:var(--ink);
  flex:0 0 auto;transition:background .2s,color .2s,border-color .2s,transform .2s;
}
.theme-toggle:hover{color:var(--blue-600);border-color:var(--blue-400);transform:translateY(-1px)}
.theme-toggle svg{width:20px;height:20px}
.theme-toggle .ic-sun{display:none}
.header.scrolled .theme-toggle{height:46px}
/* in mobile menu */
.mobile-menu .theme-toggle{width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.16);border:none;color:#fff}
.mobile-menu .theme-toggle:hover{background:rgba(255,255,255,.26);color:#fff}

[data-theme="dark"]{
  --ink:#f1fbef;
  --ink-soft:#a9bcdd;
  --blue-600:#a3dadf;
  --blue-400:#a3dadf;
  --paper:#001749;
  --mist:#04205c;
  --mist-2:#0a2c6f;
  --line:rgba(241,251,239,.14);
  --line-strong:rgba(241,251,239,.26);
  --surface-ink:#000d2b;
  --shadow-sm:0 2px 10px rgba(0,0,0,.4);
  --shadow:0 8px 24px rgba(0,0,0,.5);
  --shadow-lg:0 24px 60px rgba(0,0,0,.6);
}
[data-theme="dark"] .theme-toggle .ic-moon{display:none}
[data-theme="dark"] .theme-toggle .ic-sun{display:block}
[data-theme="dark"] .brand img{filter:brightness(0) invert(1)}
[data-theme="dark"] .header::before{background:rgba(8,12,28,.82)}
[data-theme="dark"] .header.scrolled::before{border-bottom-color:var(--line)}
[data-theme="dark"] .hero-bg{background:
  radial-gradient(1100px 700px at 78% -10%,rgba(42,89,238,.26) 0%,transparent 55%),
  radial-gradient(900px 600px at -10% 30%,rgba(86,128,255,.14) 0%,transparent 60%),
  var(--paper);}
[data-theme="dark"] .hero-blob{opacity:.22}
[data-theme="dark"] [data-theme="dark"] .cand-num{color:#fff}
[data-theme="dark"] .pledges .ic,[data-theme="dark"] .contact-list .ic{color:var(--blue-400)}
[data-theme="dark"] .field input,[data-theme="dark"] .field textarea{color:var(--ink)}
[data-theme="dark"] .cand-num{background:rgba(20,26,49,.92)}
[data-theme="dark"] .burger span{background:var(--ink)}
[data-theme="dark"] .fb-loader{background:var(--mist)}

/* ===========================================================
   CANDIDATE HOVER PREVIEW CARD (desktop, no click needed)
   =========================================================== */
.hovercard{
  position:fixed;z-index:90;width:380px;max-width:92vw;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--shadow-lg);overflow:hidden;
  opacity:0;transform:scale(.9);transform-origin:center;visibility:hidden;pointer-events:none;
  transition:opacity .22s ease,transform .28s cubic-bezier(.2,.8,.2,1);
}
.hovercard.show{opacity:1;transform:scale(1);visibility:visible;pointer-events:auto}
.hc-photo{position:relative;aspect-ratio:16/11;overflow:hidden;background:var(--mist-2)}
.hc-photo img{width:100%;height:100%;object-fit:cover}
.hc-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(11,19,48,.85) 0%,rgba(11,19,48,.06) 52%,transparent 66%)}
.hc-num{position:absolute;top:14px;left:14px;z-index:2;width:40px;height:40px;border-radius:12px;background:var(--grad);color:#fff;display:grid;place-items:center;font-weight:800;font-size:1.05rem;box-shadow:var(--shadow-sm)}
.hc-cap{position:absolute;left:18px;right:18px;bottom:14px;z-index:2;color:#fff}
.hc-cap h3{font-size:1.32rem;margin:0;line-height:1.12}
.hc-cap .hc-role{font-size:.85rem;opacity:.92;font-weight:500}
.hc-body{padding:17px 20px 20px}
.hc-bio{color:var(--ink-soft);font-size:.96rem;line-height:1.6;margin:0 0 1.1rem;
  display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.hc-link{display:inline-flex;align-items:center;gap:.5em;font-family:var(--font-display);font-weight:600;font-size:.93rem;color:var(--blue-600);transition:gap .2s}
.hc-link:hover{gap:.85em}
.hc-link svg{width:1.05em;height:1.05em}
@media (hover:none),(pointer:coarse){.hovercard{display:none!important}}
@media (prefers-reduced-motion:reduce){.hovercard{transform:none!important;transition:opacity .15s}}

/* Rozmazané fotky („tváře se odkrývají“) jsou pryč: v komunálních volbách je
   poznání tváře souseda nejsilnější argument, fotky jsou vidět hned. */

/* ===========================================================
   MOCK BALLOT — "what you'll see at the polls"
   =========================================================== */
.vote-howto{display:grid;gap:.65rem;margin:1.6rem 0}
.vote-howto .vh{display:flex;align-items:center;gap:.85rem}
.vote-howto .n{flex:0 0 auto;width:30px;height:30px;border-radius:9px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:.9rem;color:#fff}
.vote-howto p{margin:0;color:rgba(255,255,255,.9)}
.vote-howto b{color:#fff}

.vote-ballot{display:flex;flex-direction:column;align-items:center;gap:1rem}
.ballot{width:100%;max-width:380px;background:#fff;color:#001749;border-radius:14px;overflow:hidden;box-shadow:var(--shadow-lg)}
.ballot-top{background:#eef0f6;color:#5a6178;font-family:var(--font-display);font-weight:600;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;text-align:center;padding:.55rem;border-bottom:1px solid rgba(0,0,0,.08)}
.ballot-head{display:flex;align-items:center;gap:.85rem;padding:1.4rem 1rem .9rem;border-bottom:2px solid #001749;position:relative}
.ballot-box{flex:0 0 auto;width:46px;height:46px;border:3px solid #001749;border-radius:5px;display:grid;place-items:center}
.ballot-x{font-size:2.2rem;line-height:1;font-weight:800;color:#d40d47}
.ballot-name{font-family:var(--font-display);font-weight:800;font-size:1.18rem;letter-spacing:-.02em}
.ballot-flag{position:absolute;left:10px;top:-2px;background:#d40d47;color:#fff;font-family:var(--font-display);font-weight:700;font-size:.64rem;letter-spacing:.05em;text-transform:uppercase;padding:.22em .6em;border-radius:6px;white-space:nowrap;box-shadow:0 4px 10px -3px rgba(224,38,65,.7)}
.ballot-flag::after{content:"";position:absolute;left:16px;bottom:-4px;width:9px;height:9px;background:#d40d47;transform:rotate(45deg)}
.ballot-list{list-style:none;margin:0;padding:.4rem 0 .6rem}
.ballot-list li{display:flex;align-items:center;gap:.6rem;padding:.26rem 1rem;font-size:.88rem}
.bbox{flex:0 0 auto;width:15px;height:15px;border:1.5px solid rgba(0,23,73,.28);border-radius:3px}
.bnum{color:#868daa;font-weight:600;font-variant-numeric:tabular-nums;min-width:1.6em;text-align:right}
.bname{color:#001749}
.ballot-note{color:rgba(255,255,255,.9);font-size:.92rem;text-align:center;max-width:380px;margin:0}
.ballot-note b{color:#fff}
@media (max-width:1024px){.vote-ballot{order:-1}}

/* ===========================================================
   AUTHENTIC BALLOT LOOK (grey paper, framed column, official feel)
   =========================================================== */
.ballot-real{background:transparent;box-shadow:none;max-width:420px;border-radius:0}

/* Sazba podle fotek skutečně vytištěných lístků (Bílina 2018, Praha 10 2010):
   bezpatkové písmo, každá strana ve vlastním orámovaném sloupci s mezerou,
   tučný název strany i jméno kandidáta, část obce a příslušnost na novém
   řádku. Lístek do zastupitelstva obce je šedý (senátní žlutý). */
.bl-paper{
  background:#dcdcd8;color:#161616;
  font-family:Arial,"Helvetica Neue",Helvetica,"Liberation Sans",sans-serif;
  border-radius:2px;box-shadow:var(--shadow-lg);overflow:hidden}
.bl-head{text-align:center;padding:16px 14px 0}
.bl-head strong{display:block;font-size:1.18rem;font-weight:700;letter-spacing:.01em;line-height:1.1}
.bl-head .bl-sub{display:block;font-size:.74rem;line-height:1.3;margin-top:.3rem}
/* město a počet volených členů vlevo nad sloupci */
.bl-meta{display:block;padding:10px 14px 0;font-size:.72rem;line-height:1.4}
.bl-meta span{display:block}
/* sloupce stran vedle sebe, každý s vlastním rámečkem; sousedé vybíhají z listu */
.bl-sheet{display:grid;grid-template-columns:22px minmax(0,1fr) 22px;column-gap:8px;
  margin:32px -1px 14px;align-items:start}
.bl-col{border:1px solid #161616;position:relative;padding:10px 0 8px;min-width:0}
.bl-col-head{display:flex;align-items:flex-start;gap:10px;padding:0 10px 8px}
.bl-square{flex:0 0 auto;width:42px;height:42px;border:1.2px solid #161616;
  background:#fff;position:relative}
/* křížek vyplní okénko s malým odstupem od linky */
.bl-x{position:absolute;left:3px;top:3px;width:calc(100% - 6px);height:calc(100% - 6px);
  fill:none;stroke:#d40d47;stroke-width:3.2;stroke-linecap:round}
/* Kreslení řídí skript: jedna tužka objede oba křížky, nakreslí je a po chvíli
   se k nim vrátí. Bez skriptu jsou křížky prostě vidět. */
.bl-x path{stroke-dasharray:none;stroke-dashoffset:0}
.bl-strana{display:flex;flex-direction:column;padding-top:2px;min-width:0}
.bl-strana b{font-size:.88rem;font-weight:700;line-height:1.2}
.bl-cislo{display:block;font-size:.68rem;font-weight:700;margin-top:.35rem}
/* šipka cedulky míří na střed okénka: odsazení sloupce 10 px + půl okénka 21 px
   minus půl šipky 8 px minus odsazení šipky v cedulce 9 px */
.bl-flag{position:absolute;left:14px;top:-26px;z-index:2;background:#d40d47;color:#fff;font-family:var(--font-display);font-weight:700;font-size:.62rem;letter-spacing:.04em;text-transform:uppercase;padding:.25em .55em;border-radius:5px;white-space:nowrap;box-shadow:0 5px 12px -3px rgba(212,13,71,.7)}
.bl-flag::after{content:"";position:absolute;left:9px;bottom:-15px;width:16px;height:16px;
  background:#d40d47;clip-path:polygon(0 0,100% 0,50% 100%)}
.bl-cands{list-style:none;margin:0;padding:0}
/* kandidát: okénko | číslo | text; jméno tučně, část obce a příslušnost pod tím */
.bl-cands li{display:grid;grid-template-columns:42px 1.5em minmax(0,1fr);column-gap:6px;
  align-items:start;padding:4px 10px;font-size:.69rem;line-height:1.32}
.bl-cn{text-align:right;padding-top:5px}
.bl-ctext{min-width:0;padding-top:5px}
.bl-ctext b{font-weight:700}
.bl-cmisto{display:block}
/* jména vedou na profil kandidáta – nenápadně, lístek má dál vypadat jako
   skutečný: bez podtržení a barvy, jen při najetí se řádek jemně zvýrazní */
.bl-cands li{position:relative;transition:background-color .9s ease}
/* řádek zvýrazněný po příchodu z profilu kandidáta (pak pomalu zmizí) */
.bl-cands li.is-hl{background:rgba(212,13,71,.16);transition:none}
.bl-clink{color:inherit;text-decoration:none}
.bl-clink::after{content:"";position:absolute;inset:0}
.bl-clink:focus-visible{outline:none}
.bl-cands li:has(.bl-clink:focus-visible){outline:2px solid #1651b9;outline-offset:-2px}
@media (hover:hover){
  .bl-cands li:has(.bl-clink):hover{background:rgba(22,81,185,.09)}
  .bl-cands li:hover .bl-clink{text-decoration:underline;text-underline-offset:2px}
}
/* useknuté sousední kandidátky: jen okénka a čáry, žádná jména */
.bl-col--jine{overflow:hidden;opacity:.4}
.bl-col--vlevo{border-left:0}
.bl-col--vpravo{border-right:0}
.bl-col--jine .bl-cands li{padding-top:13px;padding-bottom:13px}
.bl-col--jine i{display:block;height:1px;background:#161616;margin-top:9px;min-width:30px}
.bl-col--vlevo .bl-col-head,.bl-col--vlevo .bl-cands li{display:block;padding-left:0;padding-right:5px}
.bl-col--vlevo .bl-square,.bl-col--vlevo .bl-csq{display:none}
.bl-col--vlevo i{margin-left:0;box-shadow:0 7px 0 #161616}
/* okénko u kandidáta: stejně široké jako u strany, zhruba poloviční výška */
.bl-csq{width:42px;height:22px;border:1.2px solid #161616;background:#fff}

/* ===========================================================
   TRANSPARENCY HUB (/tn) + FLAT NOTICE PAGES
   =========================================================== */
.tn-wrap{max-width:800px}
.tn-intro{color:var(--ink-soft);font-size:1.05rem;max-width:66ch;margin:0 0 2rem}
.tn-cards{display:grid;gap:.9rem;margin:0 0 1.6rem}
.tn-card{display:block;background:var(--mist);border:1px solid var(--line);border-left:4px solid var(--blue-500);
  border-radius:var(--r);padding:1.15rem 1.35rem;transition:transform .22s,box-shadow .22s,border-color .22s}
.tn-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-left-color:var(--blue-600)}
.tn-card b{display:block;font-family:var(--font-display);font-weight:700;font-size:1.08rem;color:var(--blue-700);letter-spacing:-.01em}
[data-theme="dark"] .tn-card b{color:var(--blue-400)}
.tn-card b .arr{transition:margin-left .2s}
.tn-card:hover b .arr{margin-left:.25em}
.tn-card span{display:block;color:var(--ink-soft);font-size:.94rem;margin-top:.3rem}
.tn-foot{color:var(--ink-soft);font-size:.9rem;font-style:italic;margin:0}

/* flat legal notice */
.tn-meta{color:var(--ink-soft);font-size:.92rem;line-height:1.6;padding-bottom:1.5rem;margin-bottom:.5rem;border-bottom:1px solid var(--line)}
.tn-sec{padding:1.35rem 0;border-bottom:1px solid var(--line)}
.tn-sec:last-of-type{border-bottom:none}
.tn-sec h2{font-family:var(--font-display);font-weight:700;font-size:.82rem;letter-spacing:.09em;text-transform:uppercase;color:var(--blue-600);margin:0 0 .55rem;display:flex;gap:.6rem}
[data-theme="dark"] .tn-sec h2{color:var(--blue-400)}
.tn-sec h2 .no{color:var(--ink-soft);font-variant-numeric:tabular-nums}
.tn-sec p{margin:0 0 .5rem;color:var(--ink)}
.tn-sec p:last-child{margin-bottom:0}
.tn-sec .muted{color:var(--ink-soft)}
.tn-sec a{color:var(--blue-600);text-decoration:underline;text-underline-offset:2px}
[data-theme="dark"] .tn-sec a{color:var(--blue-400)}
.tn-sum{display:inline-flex;align-items:baseline;gap:.55rem;background:var(--mist);border:1px solid var(--line);border-radius:var(--r-sm);padding:.7rem 1rem;margin-bottom:.6rem}
.tn-sum b{font-family:var(--font-display);font-size:1.4rem;font-weight:800;color:var(--blue-700);line-height:1}
[data-theme="dark"] .tn-sum b{color:var(--blue-400)}
.tn-sum span{color:var(--ink-soft);font-size:.9rem}
/* částka zatím není vyfakturovaná */
.tn-sum b .tn-ceka{display:inline-block;font-size:1.02rem;font-weight:700;color:var(--ink-soft)}
.tn-legal{color:var(--ink-soft);font-size:.86rem;margin-top:2rem;padding-top:1.3rem;border-top:1px solid var(--line)}
.b-full{grid-column:1 / -1}
@media (max-width:560px){.b-full{grid-column:span 1}}
.cp-facts{color:var(--ink-soft);font-size:.93rem;margin:-.6rem 0 1.4rem}
.cp-facts b{color:var(--ink)}
.tn-card b{display:flex;align-items:center;gap:.4em}
.tn-card b .arr{flex:0 0 auto}




/* ===========================================================
   SROVNÁNÍ — co se stane s vašimi 23 hlasy
   =========================================================== */
.votecmp{display:grid;grid-template-columns:1fr 1fr;gap:clamp(12px,1.6vw,20px);margin:1.8rem 0 1.4rem}
.vc{background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.20);border-radius:var(--r-lg);
  padding:clamp(16px,2vw,22px);backdrop-filter:blur(6px)}
.vc-good{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.5)}
/* okénko v dlaždici má vlastní tužku, ta se počítá od jeho rohu */
.vc-mark{position:relative}
.vc-top{display:flex;align-items:center;gap:.8rem;margin-bottom:1rem}
.vc-mark{flex:0 0 auto;width:44px;height:44px;border-radius:11px;background:#fff;
  display:grid;place-items:center}
/* jen křížek sám (přímý potomek); tužka uvnitř okénka má vlastní pravidla */
.vc-mark > svg{width:26px;height:26px;fill:none;stroke:var(--crimson);
  stroke-width:4.6;stroke-linecap:round;overflow:visible}
/* druhý křížek kreslí tatáž tužka, jen o půl cyklu později – řídí skript */
.vc-mark > svg path{stroke-dasharray:none;stroke-dashoffset:0}
.vc-mark--x{font-size:.72rem;letter-spacing:-1px;background:rgba(255,255,255,.25);color:rgba(255,255,255,.8)}
.vc-lbl{display:block;font-size:.74rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:rgba(255,255,255,.75)}
.vc-good .vc-lbl{color:#fff}
.vc-h{display:block;font-size:1.02rem;font-weight:800;color:#fff;line-height:1.2}
.vc-dots{display:grid;grid-template-columns:repeat(12,1fr);gap:5px;margin-bottom:.9rem}
.vc-dot{aspect-ratio:1;border-radius:50%;background:rgba(255,255,255,.22)}
.vc-dot.on{background:#fff}
.vc-dot.other{background:rgba(255,255,255,.22);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.35)}
.vc-sum{margin:0 0 .35rem;color:rgba(255,255,255,.9);font-size:1.02rem}
.vc-sum b{color:#fff;font-weight:800}
.vc-note{margin:0;color:rgba(255,255,255,.78);font-size:.9rem;line-height:1.5}
@media (max-width:640px){.votecmp{grid-template-columns:1fr}}


/* ===========================================================
   KANDIDÁTI — mřížka se přeskupí na sloupec + detail
   =========================================================== */
.cands-wrap{display:grid;grid-template-columns:1fr;gap:clamp(16px,2.2vw,28px);align-items:start}
.cands-wrap.is-detail{grid-template-columns:1fr}

.cands-wrap.is-detail .cand-grid::-webkit-scrollbar{width:7px}
.cands-wrap.is-detail .cand-grid::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:99px}
.cands-wrap.is-detail .cand-info .role{display:none}
.cands-wrap.is-detail .cand-info h3{font-size:.78rem;line-height:1.15}
.cands-wrap.is-detail .cand-info{padding:8px 9px 9px}
.cands-wrap.is-detail .cand-num{width:26px;height:26px;font-size:.78rem;border-radius:8px;top:7px;left:7px}
.cands-wrap.is-detail .cand-open{display:none}
.cand.is-open{outline:3px solid var(--blue-500);outline-offset:2px}

/* detail vpravo */
.cand-detail{background:var(--mist);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:clamp(20px,2.6vw,32px);position:relative;
  opacity:0;transform:translateY(8px);transition:opacity .3s ease,transform .3s ease}
.cand-detail.in{opacity:1;transform:none}
.cdx-close{position:absolute;top:14px;right:14px;width:40px;height:40px;border-radius:50%;
  background:var(--paper);border:1px solid var(--line);display:grid;place-items:center;color:var(--ink-soft);transition:.2s}
.cdx-close:hover{color:var(--crimson);transform:rotate(90deg)}
.cdx-close svg{width:18px;height:18px}
.cdx-photo{position:relative;float:left;width:clamp(150px,17vw,225px);aspect-ratio:4/5;border-radius:var(--r);
  overflow:hidden;background:var(--mist-2);box-shadow:var(--shadow);
  margin:0 clamp(18px,2.2vw,28px) clamp(12px,1.6vw,18px) 0;shape-margin:1rem}
.cdx-photo img{width:100%;height:100%;object-fit:cover;object-position:center top}
.cdx-role{display:block;color:var(--blue-600);font-weight:700;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;line-height:1.35}
[data-theme="dark"] .cdx-role{color:var(--jm-sky)}
.cand-detail h3{font-size:clamp(1.3rem,2.4vw,1.8rem);font-weight:900;text-transform:uppercase;letter-spacing:.01em;margin:.3rem 0 .25rem}
.cdx-facts{color:var(--ink-soft);font-size:.88rem;margin:0}
/* odkaz z profilu na řádek kandidáta na ukázce lístku */
/* osobní sítě kandidáta v profilu */
.cdx-site{display:flex;gap:8px;margin:.6rem 0 0}
.cdx-site a{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;
  background:rgba(255,255,255,.75);border:1px solid rgba(0,23,73,.18);color:#0e2f7a;transition:background .15s,color .15s}
.cdx-site a:hover{background:#0e2f7a;color:#fff}
.cdx-site a:focus-visible{outline:3px solid var(--blue-400);outline-offset:2px}
.cdx-site svg{width:17px;height:17px}
.cdx-listek{display:inline-block;margin-top:.45rem;font-size:.84rem;font-weight:700;
  color:#0e2f7a;text-decoration:none}
.cdx-listek::after{content:" →"}
.cdx-listek:hover{text-decoration:underline;text-underline-offset:3px}
.cdx-lead{font-size:1.02rem;font-weight:500;color:var(--ink);line-height:1.55;
  padding-left:1rem;border-left:3px solid var(--blue-500);margin:0 0 1.2rem}
.cdx-bio p{color:var(--ink-soft);font-size:.98rem;line-height:1.72;margin:0 0 .85rem}
.cdx-quote{margin:1.1rem 0 0;padding:.9rem 1.1rem;background:var(--mist-2);border-left:4px solid var(--blue-500);
  border-radius:0 var(--r-sm) var(--r-sm) 0;font-style:italic;font-weight:500;color:var(--ink);line-height:1.5}
.cdx-quote::before{content:"„"}.cdx-quote::after{content:"“"}
.cdx-foot{display:flex;align-items:center;gap:.5rem;margin-top:1.5rem;padding-top:1.2rem;border-top:1px solid var(--line);clear:both}
.cdx-nav{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:50%;
  border:1px solid var(--line);background:var(--paper);color:var(--ink-soft);transition:.2s}
.cdx-nav:hover{color:var(--blue-600);border-color:var(--blue-400)}
.cdx-nav svg{width:17px;height:17px}
.cdx-foot .cdx-link{margin-left:auto}
/* tlačítko Sdílet (profil kandidáta, téma programu) */
.sdilet-btn{display:inline-flex;align-items:center;gap:.45em;font:inherit;font-family:var(--font-display);
  font-weight:700;font-size:.86rem;line-height:1;padding:.62em 1.05em;border-radius:99px;cursor:pointer;
  border:1.5px solid currentColor;background:transparent;color:var(--blue-600);transition:background .15s}
.sdilet-btn svg{width:1.05em;height:1.05em;flex:none}
.sdilet-btn:hover{background:rgba(22,81,185,.08)}
.sdilet-btn:focus-visible{outline:3px solid var(--blue-400);outline-offset:2px}
.sdilet-btn.is-done{color:#0f7a3a}
.cdx-foot .cdx-share{margin-left:auto}
.cand-detail .cdx-share{color:#0e2f7a}
.pdlg-share{display:flex;justify-content:center;margin:1.6rem 0 0}

/* mobil: fotky jako pruh nahoře, detail pod ním */
/* v režimu detailu zrušit stírání – podle fotek se vybírá */
.cands-wrap.is-detail .cand-photo img{filter:none!important;transform:none!important}
.cands-wrap.is-detail .cand-info{filter:none!important;opacity:1!important}

/* termín voleb – jeden kompaktní řádek */
/* --- termín voleb --- */
.when{display:block;width:100%;margin-top:clamp(20px,2.6vw,30px)}
.when-lbl{
  display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;
  margin:0 0 .7rem;font-family:var(--font-display);font-weight:800;
  font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.75)}
.when-left{
  font-size:.72rem;letter-spacing:.08em;padding:.25em .6em;border-radius:99px;
  background:var(--crimson);color:#fff}
.when-days{display:grid;grid-template-columns:1fr 1fr;gap:clamp(10px,1.2vw,14px);width:100%}
.when-day{
  display:grid;gap:.1rem;padding:clamp(13px,1.6vw,18px) clamp(14px,1.8vw,20px);
  border-radius:var(--r);background:rgba(255,255,255,.13);
  border:1px solid rgba(255,255,255,.26);backdrop-filter:blur(6px)}
.when-dow{
  font-size:.74rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;
  color:rgba(255,255,255,.72)}
.when-date{
  font-family:var(--font-display);font-weight:900;color:#fff;
  font-size:clamp(1.3rem,2.4vw,1.75rem);line-height:1.1;letter-spacing:-.02em}
.when-time{
  font-size:.95rem;font-weight:600;color:#fff;font-variant-numeric:tabular-nums;margin-top:.15rem}
@media (max-width:420px){.when-days{grid-template-columns:1fr}}

/* jeden sloupec: čtvercové náhledy, vybraný se vycentruje */

/* --- režim detailu: vodorovný pruh nahoře, text pod ním --- */
.cands-wrap.is-detail{grid-template-columns:1fr}
.cands-wrap.is-detail .cand-grid{
  display:flex;gap:clamp(8px,1vw,14px);grid-template-columns:none;
  overflow-x:auto;overflow-y:visible;max-height:none;
  --strip-pad:16px;
  padding:20px var(--strip-pad) 24px;margin-inline:calc(-1 * var(--strip-pad));
  scroll-padding-inline:var(--strip-pad);
  scroll-snap-type:x proximity;scroll-behavior:smooth;
  scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}
/* poslední karta: v flex kontejneru některé prohlížeče ignorují padding-right */
.cands-wrap.is-detail .cand-grid::after{content:"";flex:0 0 var(--strip-pad);align-self:stretch}
.cands-wrap.is-detail .cand-grid::-webkit-scrollbar{height:8px}
.cands-wrap.is-detail .cand-grid::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:99px}
.cands-wrap.is-detail .cand-grid::-webkit-scrollbar-track{background:transparent}
.cands-wrap.is-detail>.cand-grid>.cand{
  flex:0 0 clamp(104px,11vw,148px);scroll-snap-align:center;
  transform-origin:center;will-change:transform,opacity;
  transform:scale(var(--s,1));
  transition:transform .2s cubic-bezier(.2,.8,.2,1),opacity .2s linear,box-shadow .2s}
.cands-wrap.is-detail>.cand-grid>.cand:hover{
  transform:scale(calc(var(--s,1) * 1.14));opacity:1!important;z-index:3;box-shadow:var(--shadow-lg)}
.cands-wrap.is-detail .cand-photo{aspect-ratio:1/1}
.cands-wrap.is-detail .cand-info{padding:7px 8px 8px}
.cands-wrap.is-detail .cand-info h3{font-size:.72rem;line-height:1.15}
.cands-wrap.is-detail .cand-info .role{display:none}
.cands-wrap.is-detail .cand-num{width:24px;height:24px;font-size:.74rem;border-radius:7px;top:6px;left:6px}
.cands-wrap.is-detail .cand-open{display:none}
.cands-wrap.is-detail .cand-photo img{filter:none!important;transform:none!important}
.cands-wrap.is-detail .cand-info{filter:none!important;opacity:1!important}

/* detail: text obtéká fotku */
/* overflow musí zůstat viditelný, jinak se fotka ani pruh v detailu nepřilepí */
.cand-detail{overflow:visible}
.cand-detail .cdx-role{padding-right:52px}
.cdx-foot{clear:both}
@media (max-width:640px){
  .cdx-photo{float:none;width:min(190px,58%);margin:0 0 1rem}
  .cand-detail .cdx-role{padding-right:44px}
}

/* Mobil: při čtení dlouhého textu je pruh s kandidáty přilepený dole na
   obrazovce, kde se na něj dosáhne palcem. Detail je nad ním; na konci detailu
   se pruh odlepí a zůstane pod textem. */
@media (max-width:760px){
  .cands-wrap.is-detail .cand-detail{order:1}
  .cands-wrap.is-detail>.cand-grid{
    order:2;position:sticky;bottom:0;z-index:30;
    padding:10px var(--strip-pad) calc(10px + env(safe-area-inset-bottom,0px));
    gap:8px;background:var(--paper);
    border-top:1px solid var(--line);box-shadow:0 -10px 26px -8px rgba(0,23,73,.22)}
  .cands-wrap.is-detail>.cand-grid>.cand{flex-basis:62px;border-radius:12px}
  .cands-wrap.is-detail>.cand-grid>.cand:hover{transform:scale(var(--s,1));box-shadow:none}
  .cands-wrap.is-detail .cand-info{display:none}
  .cands-wrap.is-detail .cand-num{width:20px;height:20px;font-size:.66rem;border-radius:6px;top:4px;left:4px}
  .cands-wrap.is-detail .cand.is-open{outline-width:3px;outline-offset:1px}
}

/* --- detail kandidáta na značkové béžové (#dbab6c) --- */
.cand-detail{background:var(--jm-sand-light);border-color:rgba(0,23,73,.16)}
.cand-detail .cdx-role{color:#0e2f7a}
.cand-detail h3{color:var(--jm-navy)}
.cand-detail .cdx-facts{color:rgba(0,23,73,.72)}
.cand-detail .cdx-lead{color:var(--jm-navy);border-left-color:var(--jm-navy)}
.cand-detail .cdx-bio p{color:rgba(0,23,73,.88)}
.cand-detail .cdx-quote{background:rgba(219,171,108,.45);border-left-color:var(--jm-navy);color:var(--jm-navy)}
.cand-detail .cdx-photo{box-shadow:0 10px 26px rgba(0,23,73,.16)}
.cand-detail .cdx-close{background:rgba(255,255,255,.92);border-color:rgba(0,23,73,.18);color:var(--jm-navy)}
.cand-detail .cdx-close:hover{color:var(--crimson)}
.cand-detail .cdx-foot{border-top-color:rgba(0,23,73,.2)}
.cand-detail .cdx-nav{background:rgba(255,255,255,.8);border-color:rgba(0,23,73,.2);color:var(--jm-navy)}
.cand-detail .cdx-nav:hover{background:#fff;border-color:var(--jm-navy);color:var(--jm-navy)}

/* Fotka jede s textem. Na širší obrazovce je ve vlastním sloupci a drží se pod
   hlavičkou, dokud se čte profil. Na mobilu by velká fotka zabrala moc místa,
   proto se po jejím odjetí ukáže pod hlavičkou úzký pruh s malou fotkou a jménem. */
.cdx-mini-wrap{display:none}
@media (min-width:641px){
  .cand-detail{display:grid;grid-template-columns:clamp(170px,19vw,240px) minmax(0,1fr);
    column-gap:clamp(20px,2.4vw,32px);align-items:start}
  .cdx-side{position:sticky;top:calc(70px + 18px);align-self:start}  /* zmenšená hlavička 70 px + mezera */
  .cand-detail .cdx-photo{float:none;width:100%;margin:0}
  .cdx-main{min-width:0}
  /* karta kandidáta: pod fotkou štítky, role, jméno a údaje, jedou spolu */
  .cdx-head{margin-top:14px}
  .cdx-side .cdx-badges{flex-direction:column;margin-bottom:.8rem}   /* úzký sloupec: pod sebou */
  .cdx-side .cdx-badge{white-space:normal}
  .cand-detail .cdx-side .cdx-role{padding-right:0;font-size:.68rem}
  .cand-detail .cdx-side h3{font-size:clamp(1.05rem,1.55vw,1.35rem);line-height:1.12;
    margin:.3rem 0 .35rem;overflow-wrap:anywhere}
  .cand-detail .cdx-side .cdx-facts{font-size:.84rem;line-height:1.45}
  .cand-detail .cdx-lead{padding-right:44px}   /* ať do prvního řádku nezasahuje křížek zavření */
}
/* na hodně nízké obrazovce by se karta neukázala celá – tam se nelepí */
@media (min-width:641px) and (max-height:640px){.cdx-side{position:static}}
@media (max-width:640px){
  .cdx-mini-wrap{display:block;position:sticky;top:70px;height:0;z-index:6;
    margin-inline:calc(-1 * clamp(20px,2.6vw,32px))}
  .cdx-mini{position:absolute;inset:0 0 auto 0;width:100%;display:flex;align-items:center;gap:10px;
    padding:8px 16px;border:0;border-bottom:1px solid rgba(0,23,73,.16);text-align:left;font:inherit;cursor:pointer;
    background:var(--jm-sand-light);color:var(--jm-navy);box-shadow:0 10px 18px -12px rgba(0,23,73,.45);
    opacity:0;transform:translateY(-8px);visibility:hidden;pointer-events:none;
    transition:opacity .2s ease,transform .2s ease,visibility 0s linear .2s}
  .cand-detail.is-mini .cdx-mini{opacity:1;transform:none;visibility:visible;pointer-events:auto;
    transition:opacity .2s ease,transform .2s ease}
  .cdx-mini img{flex:0 0 auto;width:42px;height:42px;border-radius:50%;object-fit:cover;object-position:50% 18%;
    border:2px solid #fff;box-shadow:0 2px 6px rgba(0,23,73,.2)}
  .cdx-mini-num{flex:0 0 auto;min-width:22px;height:22px;padding:0 5px;border-radius:6px;display:grid;place-items:center;
    background:var(--jm-navy);color:#fff;font-family:var(--font-display);font-weight:800;font-size:.72rem}
  .cdx-mini-txt{display:flex;flex-direction:column;min-width:0;line-height:1.2}
  .cdx-mini-txt b{font-family:var(--font-display);font-weight:800;font-size:.95rem;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .cdx-mini-txt span{font-size:.74rem;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
@media (prefers-reduced-motion:reduce){.cdx-mini{transition:none!important}}

/* profil kandidáta: témata programu, ve kterých je citován */
.cdx-prog{margin-top:1.2rem}
.cdx-prog-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.cdx-prog-btn{font:inherit;font-size:.84rem;font-weight:600;line-height:1.3;text-align:left;cursor:pointer;
  padding:.42em .85em;border-radius:99px;border:1px solid rgba(0,23,73,.22);
  background:rgba(255,255,255,.75);color:var(--jm-navy);transition:background .15s,border-color .15s}
.cdx-prog-btn:hover{background:#fff;border-color:var(--jm-navy)}
.cdx-prog-btn:focus-visible{outline:3px solid var(--jm-navy);outline-offset:2px}

/* ===========================================================
   PROGRAM — úvodník, dlaždice témat, okno s detailem
   =========================================================== */

/* --- úvodník lídryně (kompaktní, dvousloupcový) --- */
.pintro{
  display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);
  gap:clamp(20px,2.6vw,38px);align-items:start;
  margin:0 0 clamp(26px,3vw,40px);
  background:var(--jm-sand-light);border:1px solid rgba(0,23,73,.14);
  border-radius:var(--r-lg);padding:clamp(20px,2.6vw,34px)}
.pintro-eyebrow{
  margin:0 0 .4rem;font-size:.7rem;font-weight:800;letter-spacing:.16em;
  text-transform:uppercase;color:var(--blue-600)}
.pintro-quote{
  margin:0;font-family:var(--font-display);font-weight:900;
  font-size:clamp(1.35rem,2.5vw,1.95rem);line-height:1.12;
  letter-spacing:-.01em;color:var(--jm-navy)}
.pintro-sign{display:flex;align-items:center;gap:.85rem;margin:1.1rem 0 0;line-height:1.35}
.pintro-foto{
  flex:0 0 auto;width:64px;height:64px;border-radius:50%;object-fit:cover;object-position:center 22%;
  border:2px solid rgba(0,23,73,.14);box-shadow:0 4px 14px rgba(0,23,73,.16);
  transition:width .45s cubic-bezier(.2,.8,.2,1),height .45s cubic-bezier(.2,.8,.2,1)}
.pintro-kdo{display:grid}
.pintro-kdo b{font-family:var(--font-display);font-weight:900;font-size:1rem;color:var(--jm-navy)}
.pintro-kdo span{font-size:.84rem;color:rgba(0,23,73,.6)}
/* po rozkliknutí úvodníku fotka povyroste */
.pintro.is-open .pintro-foto{width:104px;height:104px}
.pintro-lead{margin:0;font-size:.99rem;line-height:1.7;color:rgba(0,23,73,.88)}
/* iniciála přes tři řádky jako v tištěném úvodníku */
.pintro-lead::first-letter{float:left;font-size:3.6em;line-height:.8;font-weight:400;margin:.1em .1em 0 -.03em;color:var(--ink)}
/* tučné úseky úvodníku, stejné jako v tištěných novinách */
.pintro-lead b,.pintro-body b{font-weight:700;color:var(--ink)}
.pintro-more{margin-top:.8rem}
.pintro-more>summary{
  display:inline-flex;align-items:center;gap:.35rem;cursor:pointer;list-style:none;
  font-weight:700;font-size:.9rem;color:var(--blue-600)}
.pintro-more>summary::-webkit-details-marker{display:none}
.pintro-more>summary:hover{color:var(--blue-700)}
.pintro.is-open .pintro-more>summary{margin-bottom:.8rem}
.pintro.is-open .pintro-more>summary .pi-chev{transform:rotate(180deg)}
.pintro-body p{margin:0 0 .85rem;font-size:.95rem;line-height:1.7;color:rgba(0,23,73,.84)}
.pintro-body p:last-child{margin-bottom:0}
.pi-chev{width:18px;height:18px;flex:0 0 18px;transition:transform .25s cubic-bezier(.2,.8,.2,1)}

/* --- filtr --- */

/* --- mřížka dlaždic --- */
.prog-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));
  grid-auto-rows:1fr;grid-auto-flow:row dense;
  gap:clamp(12px,1.3vw,18px)}

.ptile{
  display:flex;flex-direction:column;text-align:left;gap:0;padding:0;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r);
  overflow:hidden;cursor:pointer;font:inherit;color:inherit;
  transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s,border-color .28s}
.ptile:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:transparent}
.ptile:focus-visible{outline:3px solid var(--blue-400);outline-offset:2px}
.pt-media{display:block;aspect-ratio:16/9;overflow:hidden;background:var(--mist-2)}
.pt-media img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.ptile:hover .pt-media img{transform:scale(1.05)}
.pt-media--icon{
  display:grid;place-items:center;color:var(--blue-600);
  background:linear-gradient(140deg,var(--mist) 0%,var(--mist-2) 100%);
  box-shadow:inset 0 -1px 0 var(--line)}
.pt-media--icon svg{width:32%;max-width:58px;height:auto;opacity:.72;
  transition:transform .4s cubic-bezier(.2,.8,.2,1),opacity .3s}
.ptile:hover .pt-media--icon svg{transform:scale(1.08);opacity:1}
.pt-body{display:grid;gap:.3rem;padding:12px 14px 14px}
.pt-title{
  font-family:var(--font-display);font-weight:800;font-size:.98rem;line-height:1.25;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pt-lede{
  font-size:.83rem;line-height:1.45;color:var(--ink-soft);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* --- okno s detailem --- */
.pdlg{
  border:0;padding:0;background:transparent;max-width:min(760px,94vw);width:100%;
  max-height:90dvh;color:var(--ink);overflow:visible}
.pdlg::backdrop{background:rgba(0,23,73,.62);backdrop-filter:blur(3px)}
.pdlg[open]{animation:pdlg-in .26s cubic-bezier(.2,.8,.2,1) both}
@keyframes pdlg-in{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
.pdlg-card{
  position:relative;background:var(--paper);border-radius:var(--r-lg);
  box-shadow:var(--shadow-lg);max-height:90dvh;display:flex;flex-direction:column;overflow:hidden}
.pdlg-scroll{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.pdlg-close{
  position:absolute;top:12px;right:12px;z-index:3;width:38px;height:38px;
  display:grid;place-items:center;border:0;border-radius:50%;cursor:pointer;
  background:rgba(255,255,255,.92);color:var(--ink);box-shadow:var(--shadow-sm);
  transition:background .2s,transform .2s}
.pdlg-close:hover{background:#fff;transform:scale(1.06)}
.pdlg-close svg{width:19px;height:19px}
.pdlg-cover{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
.pdlg-inner{padding:clamp(20px,2.6vw,32px);container-type:inline-size}
/* fotka přes celou šířku okna: šířka musí zahrnout i odsazení z obou stran,
   jinak zůstane vpravo pruh o šířce dvou odsazení */
.pdlg-inner>.pdlg-cover{margin:calc(-1 * clamp(20px,2.6vw,32px)) calc(-1 * clamp(20px,2.6vw,32px)) clamp(16px,2vw,24px);
  width:calc(100% + 2 * clamp(20px,2.6vw,32px));max-width:none}
/* bez fotky je první titulek nebo nadtitulek – nesmí vjet pod zavírací křížek */
.pdlg-inner>:first-child:not(.pdlg-cover){padding-right:44px}
/* Sazba článku podle finálních Volebních novin: Inter ExtraBold, titulek 38 pt
   verzálkami v modré, oddíl 19 pt verzálkami v karmínové, hlavní teze 19 pt
   v modré, mezititulek a perex 12,7 pt, text 9,5 pt. Nadpisy se škálují podle
   šířky okna (cqi) tak, jako v tisku podle šířky strany – řádky se lámou
   podobně. Text je kvůli čitelnosti na obrazovce o něco větší než v tisku. */
.pdlg-inner h3{
  margin:0 0 .7rem;font-family:var(--font-display);font-weight:800;text-transform:uppercase;
  font-size:max(1.7rem,7.2cqi);line-height:1.08;letter-spacing:-.005em;
  color:var(--blue-600);text-wrap:balance}
.pdlg-kicker{
  margin:0 0 .35rem;font-family:var(--font-display);font-weight:800;text-transform:uppercase;
  font-size:max(.95rem,2.4cqi);line-height:1.2;color:#b87a31}
.pdlg-lede{
  margin:0 0 1.1rem;font-family:var(--font-display);
  font-size:max(1.2rem,3.6cqi);line-height:1.2;font-weight:800;
  color:var(--blue-600);text-wrap:pretty}
.pdlg-nav{
  display:flex;gap:.6rem;justify-content:space-between;
  padding:0 clamp(20px,2.6vw,32px) clamp(20px,2.6vw,32px)}
.pdlg-nav button{
  flex:1 1 0;padding:.7rem 1rem;border:1px solid var(--line);border-radius:var(--r-sm);
  background:var(--paper);color:var(--blue-600);font:inherit;font-weight:700;font-size:.9rem;
  cursor:pointer;transition:background .2s,border-color .2s}
.pdlg-nav button:hover:not(:disabled){background:var(--mist);border-color:var(--line-strong)}
.pdlg-nav button:disabled{opacity:.4;cursor:default}
body.pdlg-open{overflow:hidden}

/* --- text tématu --- */
.pi-body p{margin:0 0 .95rem;font-size:1.0625rem;line-height:1.62;color:var(--ink)}
.pi-body p.pi-perex{font-size:clamp(1.12rem,1rem + .6vw,1.25rem);line-height:1.45;font-weight:500;margin-bottom:1.1rem}
.pi-body b{font-weight:800;color:var(--ink)}
.pi-body b.pi-runin{font-family:var(--font-display);font-size:1.2em;line-height:1.2}
.pi-body b.pi-misto-kde{color:var(--crimson)}
.pi-body p:last-child{margin-bottom:0}
/* dvě úrovně podnadpisů jako v tisku: velký oddíl verzálkami v karmínové,
   menší mezititulek normálně v modré */
.pi-body h4{
  margin:1.5rem 0 .4rem;font-family:var(--font-display);font-weight:800;
  font-size:clamp(1.12rem,1rem + .6vw,1.25rem);line-height:1.25;letter-spacing:0;
  color:var(--blue-600);text-wrap:balance}
.pi-body h4.pi-h3-red{color:var(--crimson)}
.pi-body h4.pi-h2{
  margin:2rem 0 .5rem;font-weight:800;text-transform:uppercase;
  font-size:max(1.3rem,3.6cqi);line-height:1.12;letter-spacing:-.003em;
  color:var(--crimson)}
/* číslo oddílu v pískovém kolečku jako v tisku (odpovídá číslům v mapě) */
.pi-num{
  display:inline-grid;place-items:center;width:1.2em;height:1.2em;margin-right:.35em;
  border-radius:50%;background:var(--jm-sand);color:#fff;font-size:.86em;line-height:1;
  vertical-align:.08em}
.pi-body h4.pi-kicker{
  margin:1.6rem 0 .5rem;font-size:.95rem;letter-spacing:.04em;text-transform:uppercase;color:#b87a31}
.pi-body ul,.pi-body ol{margin:0 0 .95rem;padding-left:1.1rem}
.pi-body ol{padding-left:1.6rem}
.pi-body ol li::marker{font-weight:800;color:#b87a31}
.pi-body ol li{font-size:.94rem;margin-bottom:.25rem}
.pi-body li{margin-bottom:.5rem;font-size:1.0625rem;line-height:1.6;color:var(--ink)}
.pi-fig{margin:1.1rem 0 1.4rem}
.pi-fig img{width:100%;height:auto;display:block;border-radius:var(--r);background:var(--mist-2)}
.pi-fig figcaption{
  margin-top:.5rem;font-size:.82rem;line-height:1.5;color:var(--ink-soft);
  border-left:2px solid var(--line-strong);padding-left:.6rem}
/* galerie v článku: dnes / návrh vedle sebe, kresby celé na bílém */
.pi-gal{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:1.1rem 0 1.4rem;align-items:start}
.pi-gal .pi-fig{margin:0}
/* fotky jsou skoro všechny 16:9 – ve stejném poměru se téměř neořezávají;
   galerie s kresbami zůstává 4:3, aby kresby nebyly drobné */
.pi-gal .pi-fig img{aspect-ratio:16/9;object-fit:cover}
.pi-gal:has(.pi-fig--kresba) .pi-fig img{aspect-ratio:4/3}
.pi-gal>.pi-fig:last-child:nth-child(odd){grid-column:1 / -1}
/* poslední fotka přes celou šířku: přirozený poměr, jen hodně vysokou zkrátíme */
.pi-gal>.pi-fig:last-child:nth-child(odd) img{aspect-ratio:auto;height:auto;max-height:min(520px,70vh);object-position:50% 40%}
/* kresby celé, bez ořezu (musí přebít „cover“ galerie výše) */
.pi-fig--kresba img,.pi-gal .pi-fig--kresba img{object-fit:contain;background:#fff;padding:6px}
/* celý návrh parku přes šířku: přirozený poměr stran, žádné bílé pruhy */
.pi-gal>.pi-fig--kresba:last-child:nth-child(odd) img{aspect-ratio:auto;height:auto;padding:0}
.pi-gal .pi-fig figcaption{font-size:.74rem}
/* citace kandidátů u témat: modrý rámeček s kulatou fotkou, kterou text obtéká */
.pi-quotes{display:grid;gap:12px;margin:1.6rem 0 .3rem}
@media (min-width:640px){
  .pi-quotes--2{grid-template-columns:1fr 1fr}
  /* lichá poslední citace přes celou šířku, ať vedle ní nezůstane prázdné místo */
  .pi-quotes--2>.pi-quote:last-child:nth-child(odd){grid-column:1 / -1}
}
.pi-quote{position:relative;margin:0;padding:14px 16px 12px;
  border-radius:14px;background:var(--jm-blue);color:#fff;display:flow-root}
/* fotka vlevo nahoře; text ji obtéká podle kruhu, ne podle čtverce */
/* obdélníkové obtékání: řádky vedle fotky začínají v jedné svislé linii
   (kruhové shape-outside dávalo každému řádku jiný začátek a působilo rozházeně) */
.pi-quote img{float:left;width:84px;height:84px;margin:2px 14px 6px 0;
  border-radius:50%;object-fit:cover;object-position:50% 16%;
  border:3px solid #fff;background:#fff;box-shadow:0 3px 10px rgba(0,23,73,.25)}
@media (max-width:640px){
  .pi-quote img{width:70px;height:70px}
}
.pi-quote blockquote{margin:0}
.pi-body .pi-quote p{margin:0;font-size:.98rem;line-height:1.5;color:#fff;text-wrap:pretty}
.pi-quote figcaption{margin-top:.4rem;text-align:right;
  font-family:var(--font-display);font-weight:800;font-size:.82rem;letter-spacing:.01em}
/* jméno je odkaz na profil kandidáta a klikací je celá karta */
.pi-quote{transition:transform .18s ease,box-shadow .18s ease}
.pi-quote-who{color:#fff;text-decoration:none}
.pi-quote-who::after{content:"";position:absolute;inset:0;border-radius:inherit}
.pi-quote figcaption::after{content:" →";opacity:.8}
.pi-quote-who:focus-visible{outline:none}
.pi-quote:has(.pi-quote-who:focus-visible){outline:3px solid #fff;outline-offset:2px}
@media (hover:hover){
  .pi-quote:hover{transform:translateY(-2px);box-shadow:0 12px 24px -14px rgba(0,23,73,.7)}
  .pi-quote:hover .pi-quote-who{text-decoration:underline;text-underline-offset:3px}
}
@media (prefers-reduced-motion:reduce){.pi-quote{transition:none}.pi-quote:hover{transform:none}}

@media (max-width:760px){
  .pintro{grid-template-columns:1fr;gap:1rem}
  .pintro-sign{margin-top:.6rem}
}
@media (max-width:560px){
  .prog-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
  .pt-body{padding:10px 11px 12px}
  .pt-title{font-size:.9rem}
  .pt-lede{-webkit-line-clamp:3;font-size:.79rem}
  .pdlg{position:fixed;inset:auto 0 0 0;margin:0;width:100%;max-width:100%;max-height:94dvh}
  .pdlg-card{border-radius:var(--r-lg) var(--r-lg) 0 0;max-height:94dvh}
  .pdlg-nav{flex-direction:column;padding-bottom:calc(clamp(20px,2.6vw,32px) + env(safe-area-inset-bottom,0px))}
  .pi-body p,.pi-body li{font-size:1rem}
}
@media (prefers-reduced-motion:reduce){
  .pdlg[open]{animation:none}
  .ptile,.pt-media img,.pi-chev{transition:none}
}

/* --- tmavý režim --- */
[data-theme="dark"] .pintro{background:rgba(219,171,108,.10);border-color:rgba(219,171,108,.26)}
[data-theme="dark"] .pintro-quote,[data-theme="dark"] .pintro-sign b{color:var(--ink)}
[data-theme="dark"] .pintro-lead,[data-theme="dark"] .pintro-body p{color:var(--ink-soft)}
[data-theme="dark"] .pintro-sign span{color:var(--ink-soft)}
[data-theme="dark"] .pt-media--icon{color:var(--jm-sky);
  background:linear-gradient(140deg,rgba(163,218,223,.10) 0%,rgba(22,81,185,.16) 100%);
  box-shadow:inset 0 -1px 0 rgba(163,218,223,.14)}
[data-theme="dark"] .pdlg-card{background:var(--surface-ink);border:1px solid rgba(163,218,223,.16)}
[data-theme="dark"] .pdlg-close{background:rgba(0,23,73,.9);color:var(--ink)}
[data-theme="dark"] .pdlg-close:hover{background:rgba(0,23,73,1)}
[data-theme="dark"] .pdlg-nav button{background:transparent;color:var(--jm-sky)}
[data-theme="dark"] .pdlg-nav button:hover:not(:disabled){background:rgba(163,218,223,.10)}
/* tmavý režim: text o stupeň měkčí, karmínová zesvětlená kvůli kontrastu */
[data-theme="dark"] .pi-body > p,[data-theme="dark"] .pi-body li{color:var(--ink-soft)}
[data-theme="dark"] .pi-body h4.pi-h2,[data-theme="dark"] .pi-body h4.pi-h3-red,
[data-theme="dark"] .pi-body b.pi-misto-kde{color:#ff6f8f}
[data-theme="dark"] .pdlg-kicker,[data-theme="dark"] .pi-body h4.pi-kicker{color:var(--jm-sand)}
[data-theme="dark"] .pi-body ol li::marker{color:var(--jm-sand)}
[data-theme="dark"] .pi-quote{background:#1651b9}

/* ===========================================================
   PROGRAM — hlavní témata kampaně (velké dlaždice)
   =========================================================== */

/* --- číselná karta místo fotky --- */
.pt-media--stat{
  display:grid;align-content:center;justify-items:start;gap:.15rem;
  padding:clamp(14px,1.8vw,24px);background:var(--grad);color:#fff;text-align:left;
  container-type:inline-size}
.pt-media--stat b{
  font-family:var(--font-display);font-weight:900;line-height:.94;
  letter-spacing:-.03em;max-width:100%;
  /* dlouhý text (např. „Doma") se zmenší, aby se vešel na šířku karty */
  font-size:min(clamp(2.6rem,6vw,4.4rem), calc(100cqi / (var(--n,3) * .72)))}
.pt-media--stat i{
  font-style:normal;font-size:clamp(.78rem,1vw,.9rem);line-height:1.35;
  font-weight:600;color:rgba(255,255,255,.86);max-width:22ch}

/* --- velká dlaždice 2x2: fotka přes celou plochu, text přes ni --- */
.ptile--xl{grid-column:span 2;grid-row:span 2;position:relative;min-height:300px}
.ptile--xl>.pt-media{position:absolute;inset:0;aspect-ratio:auto;height:100%;width:100%}
.ptile--xl>.pt-media--stat{padding:clamp(20px,2.4vw,34px)}
.ptile--xl>.pt-body{
  position:relative;margin-top:auto;gap:.45rem;
  padding:clamp(40px,6vw,72px) clamp(18px,2vw,26px) clamp(18px,2vw,24px);
  background:linear-gradient(to top,rgba(0,23,73,.94) 12%,rgba(0,23,73,.72) 52%,rgba(0,23,73,0) 100%)}
.ptile--xl .pt-title{font-size:clamp(1.3rem,2.3vw,1.85rem);line-height:1.14;color:#fff;-webkit-line-clamp:3}
.ptile--xl .pt-lede{font-size:clamp(.86rem,1.05vw,.98rem);color:rgba(255,255,255,.9);-webkit-line-clamp:3}
.ptile--xl>.pt-media--icon+.pt-body,.ptile--xl>.pt-media--stat+.pt-body{background:none}
.ptile--xl>.pt-media--stat+.pt-body .pt-title,
.ptile--xl>.pt-media--stat+.pt-body .pt-lede{color:#fff}

/* --- široká dlaždice 2x1: vizuál vlevo, text vpravo --- */
.ptile--wide{
  grid-column:span 2;display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);
  align-items:stretch}
.ptile--wide>.pt-media{aspect-ratio:auto;height:100%;min-height:0}
.ptile--wide>.pt-body{
  align-content:center;gap:.4rem;padding:clamp(14px,1.7vw,22px)}
.ptile--wide .pt-title{font-size:clamp(1.02rem,1.5vw,1.24rem);-webkit-line-clamp:3}
.ptile--wide .pt-lede{-webkit-line-clamp:4}

/* odznak „hlavní téma" */
.ptile--wide{position:relative}
.ptile--wide>.pt-media--stat~.pt-body{padding-top:clamp(28px,3vw,34px)}
.ptile--wide>.pt-media--stat b{margin-top:.7rem}

@media (max-width:760px){
  .ptile--xl{min-height:260px}
  .ptile--xl .pt-title{font-size:1.24rem}
}
@media (max-width:560px){
  .ptile--xl,.ptile--wide{grid-column:span 2}
  .ptile--wide{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}
  .ptile--wide .pt-title{font-size:.96rem}
  .ptile--wide .pt-lede{-webkit-line-clamp:3;font-size:.78rem}
  .pt-media--stat b{font-size:min(2.1rem, calc(100cqi / (var(--n,3) * .72)))}
  .pt-media--stat i{font-size:.72rem}
  .ptile--xl::before,.ptile--wide::before{font-size:.58rem;top:9px;left:9px}
}

/* stavový řádek filtru programu: co filtr právě udělal */
@keyframes bg-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* dlaždice „připravujeme" pro témata, která ještě nejsou zveřejněná */
.ptile--soon{
  border-style:dashed;border-color:var(--line-strong);background:transparent;
  text-decoration:none;color:inherit}
.ptile--soon:hover{border-style:solid;background:var(--paper)}
.ptile--soon .pt-media--icon{background:transparent;box-shadow:none;opacity:.55}
.ptile--soon .pt-title{color:var(--ink-soft)}

/* ===========================================================
   SÍTĚ — dva sloupce: živý feed vlevo, výzva ke sledování vpravo
   Feed má od Facebooku pevný strop 500 px, šířku sekce proto
   dorovnává panel vedle něj.
   =========================================================== */
.soc{padding-block:clamp(40px,5vw,70px);background:var(--mist)}
.soc-head{max-width:60ch;margin-bottom:clamp(20px,3vw,32px)}
.soc-head .section-title{margin:0}
.soc-head p{color:var(--ink-soft);margin:.6rem 0 0}

.soc-grid{
  display:grid;grid-template-columns:minmax(0,500px) minmax(0,1fr);
  gap:clamp(16px,2.4vw,32px);align-items:start}

/* --- levý sloupec: feed --- */
.soc-feed{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);
  overflow:hidden;box-shadow:var(--shadow-sm);min-height:320px;
  display:grid;place-items:center}
.soc-feed.is-live{display:block;place-items:stretch;min-height:0}
.soc-feed .fb-page,.soc-feed .fb-page span,.soc-feed iframe{max-width:100%!important}

.soc-ask{padding:clamp(24px,3vw,38px);text-align:center;display:grid;justify-items:center;gap:.55rem}
.soc-ask-ic{
  width:52px;height:52px;border-radius:50%;display:grid;place-items:center;
  background:#1877f2;color:#fff;margin-bottom:.4rem}
.soc-ask-ic svg{width:28px;height:28px}
.soc-ask-h{margin:0;font-family:var(--font-display);font-weight:800;font-size:1.14rem;color:var(--ink)}
.soc-ask-p{margin:0;color:var(--ink-soft);font-size:.95rem;line-height:1.6;max-width:34ch}
.soc-ask .btn{margin-top:.7rem}
.soc-ask-note{margin:.5rem 0 0;font-size:.78rem;line-height:1.5;color:var(--ink-soft);opacity:.85;max-width:38ch}

/* --- pravý sloupec: sledujte nás --- */
.soc-side{
  background:var(--grad);color:#fff;border-radius:var(--r-lg);
  padding:clamp(22px,2.8vw,34px);display:grid;gap:.5rem;align-content:start}
.soc-side-h{
  margin:0;font-family:var(--font-display);font-weight:900;
  font-size:clamp(1.3rem,2.4vw,1.8rem);line-height:1.12;letter-spacing:-.015em}
.soc-side-p{margin:0 0 .8rem;color:rgba(255,255,255,.9);line-height:1.6;max-width:40ch}
.soc-net{
  display:flex;align-items:center;gap:.85rem;text-decoration:none;color:#fff;
  padding:.85rem 1.05rem;border-radius:var(--r);
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.3);
  transition:background .2s,transform .2s}
.soc-net:hover{background:rgba(255,255,255,.26);transform:translateY(-2px)}
.soc-net svg{width:26px;height:26px;flex:0 0 26px}
.soc-net span{display:grid;line-height:1.25;min-width:0}
.soc-net b{font-family:var(--font-display);font-weight:800;font-size:1.02rem}
.soc-net i{font-style:normal;font-size:.85rem;color:rgba(255,255,255,.82)}

@media (max-width:860px){
  .soc-grid{grid-template-columns:1fr}
  .soc-side{order:-1}
}
@media (prefers-reduced-motion:reduce){.soc-net{transition:none}}

/* ===========================================================
   DESATERO — shrnutí programu, stojí za kandidáty
   Dva sloupce, ale text teče SVISLE (1 až 5 vlevo, 6 až 10 vpravo),
   protože se čte odshora dolů, ne zleva doprava.
   =========================================================== */
/* desatero je za volebním oddílem a před sítěmi (ty mají --mist), proto bílé pozadí */
.deset-sec{background:var(--paper)}
.deset{
  background:var(--mist);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:clamp(24px,3.2vw,42px);
  box-shadow:var(--shadow-sm);max-width:1000px;margin-inline:auto}
.deset-head{max-width:58ch;margin-bottom:clamp(18px,2.2vw,26px)}
.deset-eyebrow{
  margin:0 0 .3rem;font-family:var(--font-display);font-weight:800;
  font-size:.7rem;letter-spacing:.19em;text-transform:uppercase;color:var(--blue-600)}
.deset-h{
  margin:0 0 .45rem;font-family:var(--font-display);font-weight:900;
  font-size:clamp(1.35rem,2.6vw,1.9rem);line-height:1.1;letter-spacing:-.018em;color:var(--ink)}
.deset-sub{margin:0;color:var(--ink-soft);font-size:.99rem;line-height:1.6}
.deset-list{
  list-style:none;counter-reset:d;margin:0;padding:0;
  columns:2;column-gap:clamp(24px,3vw,44px)}
.deset-list li{
  counter-increment:d;break-inside:avoid;-webkit-column-break-inside:avoid;
  display:grid;grid-template-columns:30px 1fr;gap:.8rem;align-items:start;
  padding:.62rem 0;font-size:.96rem;line-height:1.6;color:var(--ink-soft);
  border-top:1px solid var(--line)}
.deset-list li::before{
  content:counter(d) ".";font-family:var(--font-display);font-weight:900;font-size:.95rem;
  color:var(--blue-600);text-align:right;font-variant-numeric:tabular-nums}
@media (max-width:760px){
  .deset-list{columns:1}
  .deset-list li{grid-template-columns:26px 1fr;gap:.65rem;font-size:.93rem}
}
/* --- tužka, která křížek nakreslí (spustí se, až sem návštěvník dojede) --- */
.bl-pencil{
  position:absolute;left:0;top:0;width:24px;height:38px;
  margin-left:-8px;margin-top:-34px;      /* hrot tužky posadíme na (0,0) čtverečku */
  transform-origin:8px 34px;
  opacity:0;pointer-events:none;z-index:5;
  filter:drop-shadow(0 3px 5px rgba(0,23,73,.28))}
.bl-pencil svg{width:100%;height:100%;display:block}
/* tužka: jemný obrys, osmistěnné tělo se světlou a tmavou plochou */
.bl-pencil svg path{stroke:#4a0a1f;stroke-width:.4;stroke-linejoin:round}
.bl-pencil .p-wood{fill:#ecd0a4}
.bl-pencil .p-tip{fill:#333}
.bl-pencil .p-body{fill:#d40d47}
.bl-pencil .p-lite{fill:#ee3d6d;stroke:none}
.bl-pencil .p-dark{fill:#a30a37;stroke:none}
.bl-pencil .p-band{fill:#d3d7df}
.bl-pencil .p-ridge{fill:none;stroke:#8e95a3;stroke-width:.35}
.bl-pencil .p-eraser{fill:#f3a3b7}

/* stejná dráha jako dřív, jen vtěsnaná do prvních 25 % sedmisekundové smyčky */


/* --- odznak zastupitele --- */
.cand-badges{
  position:absolute;top:9px;right:9px;z-index:2;
  display:flex;flex-direction:column;align-items:flex-end;gap:4px;max-width:calc(100% - 18px)}
.cand-badge{
  font-family:var(--font-display);font-weight:800;font-size:.6rem;
  letter-spacing:.09em;text-transform:uppercase;text-align:right;
  padding:.34em .62em;border-radius:99px;line-height:1.25;
  background:rgba(0,23,73,.86);color:#fff;backdrop-filter:blur(4px);
  box-shadow:0 2px 8px rgba(0,23,73,.28)}
.cands-wrap.is-detail .cand-badges{display:none}   /* v úzkém pruhu by se nevešel */
/* funkce v profilu: dlouhé názvy komisí se zalamují, proto normální písmo
   (ne verzálky s prostrkáním) a menší zaoblení, aby dvouřádkový štítek
   nevypadal jako nafouklá pilulka */
.cdx-badges{display:flex;flex-wrap:wrap;align-items:flex-start;gap:6px;margin-bottom:.8rem}
.cdx-badge{
  display:inline-block;
  font-family:var(--font-display);font-weight:700;font-size:.76rem;
  letter-spacing:0;line-height:1.3;
  padding:.42em .75em;border-radius:9px;
  background:var(--jm-navy);color:var(--jm-mint)}


@media (prefers-reduced-motion:reduce){
  .bl-pencil{display:none}
}

/* Levý sloupec úvodníku jede s textem: při čtení dlouhého úvodníku zůstane
   citát s fotkou na očích. Drží se uvnitř rámečku, dolů ho pustí jeho konec. */
@media (min-width:761px){
  .pintro-l{
    position:sticky;
    top:calc(var(--header-h) + 20px);
    align-self:start}
}

/* číselná karta na běžné (malé) dlaždici: číslo musí být menší než u velkých */
.ptile:not(.ptile--xl):not(.ptile--wide) .pt-media--stat{
  padding:12px 14px;gap:.1rem}
.ptile:not(.ptile--xl):not(.ptile--wide) .pt-media--stat b{
  font-size:min(clamp(1.7rem,3.4vw,2.3rem), calc(100cqi / (var(--n,3) * .72)));
  letter-spacing:-.025em}
.ptile:not(.ptile--xl):not(.ptile--wide) .pt-media--stat i{
  font-size:.72rem;line-height:1.3;max-width:26ch;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ===========================================================
   POTKEJTE NÁS – akce (proběhlé schová skript podle data-konec)
   =========================================================== */
.akce{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);max-width:1100px;margin:0 auto;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-sm)}
.akce-foto{display:block;width:100%;height:100%;min-height:280px;object-fit:cover;object-position:42% 50%}
.akce-txt{padding:clamp(20px,3vw,36px)}
.akce-kdy{display:flex;align-items:center;gap:.85rem;margin:0 0 .9rem}
.akce-den{display:grid;place-items:center;min-width:4rem;height:4rem;padding:0 .5rem;border-radius:14px;
  background:var(--crimson);color:#fff;font-family:var(--font-display);font-weight:800;font-size:1.35rem;line-height:1}
.akce-kdy>span:last-child{font-family:var(--font-display);font-weight:700;line-height:1.35;color:var(--ink)}
.akce h3{margin:0 0 .55rem;font-family:var(--font-display);font-weight:800;
  font-size:clamp(1.3rem,2.3vw,1.7rem);line-height:1.15;color:var(--blue-600);text-wrap:balance}
.akce-kde{display:flex;align-items:flex-start;gap:.4rem;margin:0 0 .9rem;font-weight:700;color:var(--ink)}
.akce-kde svg{width:1.15em;height:1.15em;flex:none;margin-top:.15em;color:var(--crimson)}
.akce-txt p{line-height:1.6;color:var(--ink)}
.akce-txt p.akce-kdo{font-size:.92rem;color:var(--ink-soft)}
.akce-kdo a{color:inherit;text-decoration:underline;text-decoration-color:rgba(0,23,73,.3);text-underline-offset:2px}
.akce-kdo a:hover{text-decoration-color:currentColor}
.akce-tlacitka{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem;margin-top:1.2rem}
.akce-fb{display:inline-flex;align-items:center;gap:.5rem}
.akce-fb svg{width:1.1em;height:1.1em;flex:none}
@media (max-width:760px){
  .akce{grid-template-columns:1fr}
  .akce-foto{min-height:0;height:auto;aspect-ratio:16/9}
}
[data-theme="dark"] .akce-kdo a{text-decoration-color:rgba(241,251,239,.35)}

/* pozvánka v úvodu stránky */
.hero-akce{display:inline-flex;align-items:center;gap:.6rem;margin-top:1.1rem;padding:.4rem 1rem .4rem .4rem;
  border-radius:99px;background:var(--jm-navy);color:#fff;font-weight:700;font-size:.93rem;line-height:1.2;
  text-decoration:none;box-shadow:0 8px 20px -10px rgba(0,23,73,.6);transition:transform .15s}
.hero-akce:hover{transform:translateY(-1px)}
.hero-akce-den{flex:none;padding:.35rem .6rem;border-radius:99px;background:var(--crimson);font-weight:800}
[data-theme="dark"] .hero-akce{background:#0b2e7a;box-shadow:none;border:1px solid rgba(163,218,223,.25)}

/* poděkování po volbách (skript ho ukáže 10. 10. po 14:00) */
.dekujeme{margin:0 0 1.2rem;padding:14px 18px;border-radius:14px;background:var(--jm-navy);color:#fff;
  font-size:1rem;line-height:1.5}
.dekujeme b{color:#fff}
.dekujeme a{color:#a3dadf;text-decoration:underline}

/* Pošlete to rodině (sekce Volby) */
.posli-rodine{display:inline-flex;align-items:center;gap:.5rem;margin-top:1rem}
.posli-rodine svg{width:1.1em;height:1.1em;flex:none}

/* lišta posledních dní před volbami – jen na mobilu */
.volby-lista{position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom,0px));z-index:60;
  display:flex;align-items:center;gap:8px;padding:8px 6px 8px 10px;border-radius:16px;
  background:var(--jm-navy);color:#fff;box-shadow:0 12px 30px -8px rgba(0,23,73,.6)}
.vl-txt{flex:1;min-width:0;display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;
  font-size:.84rem;line-height:1.25}
.vl-txt b{font-weight:800}
.vl-x{flex:none;width:28px;height:28px;border-radius:4px;background:#fff;position:relative}
.vl-x::before,.vl-x::after{content:"";position:absolute;left:4px;right:4px;top:12px;height:4px;border-radius:2px;background:#d40d47}
.vl-x::before{transform:rotate(45deg)}.vl-x::after{transform:rotate(-45deg)}
.vl-poslat{flex:none;font:inherit;font-family:var(--font-display);font-weight:700;font-size:.8rem;line-height:1;
  padding:.7em .85em;border:0;border-radius:99px;background:var(--crimson);color:#fff;cursor:pointer}
.vl-zavrit{flex:none;width:32px;height:32px;border:0;border-radius:50%;background:transparent;
  color:rgba(255,255,255,.7);font-size:1.35rem;line-height:1;cursor:pointer}
body.menu-open .volby-lista,body:has(.cands-wrap.is-detail) .volby-lista{display:none}
@media (max-width:760px){body.ma-listu{padding-bottom:78px}}
@media (min-width:761px){.volby-lista{display:none!important}}

/* odkaz „Přeskočit na program“ – vidět jen při ovládání klávesnicí */
.skip-link{position:fixed;left:12px;top:-60px;z-index:200;padding:.7rem 1rem;border-radius:10px;
  background:var(--jm-navy);color:#fff;font-weight:700;text-decoration:none;transition:top .15s}
.skip-link:focus{top:12px;outline:3px solid var(--jm-sky);outline-offset:2px}

/* ostrý web před zveřejněním programu: jen oznámení (vkládá build_deploy.py) */
.prog-brzy{display:flex;justify-content:center;flex-wrap:wrap;gap:.7rem;margin:1.4rem 0 0}
