/* Vzhled je převzatý z prototypu cesta-za-pozitky.html beze změny.
   Doplňky pro appku (stavy načítání, akce, vzdálenost) jsou dole v sekci APLIKACE. */

/* ---- základ ---- */
*{box-sizing:border-box} :root{--paper:#faf9f6;--ink:#3C2415;--muted:#7b807a;--orange:#009445;--line:#e5e5df}body{margin:0;background:#eaf1eb;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--ink);font-size:16px;line-height:1.45}button,input{font:inherit}button{cursor:pointer;border:0;color:inherit;-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:3px solid var(--orange);outline-offset:4px}svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.app{max-width:480px;margin:auto;background:var(--paper);min-height:100dvh;position:relative;overflow:hidden}header{display:flex;align-items:center;justify-content:space-between;padding:26px 25px 12px}.brand{display:flex;align-items:center;gap:9px;line-height:1;font-size:16px;font-weight:750;letter-spacing:-.6px}.brandmark{display:grid;place-items:center;width:39px;height:39px;border-radius:50%;background:var(--orange);color:white;transform:rotate(-15deg)}.region-button{background:white;border:1px solid var(--line);border-radius:30px;padding:10px;display:flex;align-items:center;gap:6px;font-size:12px;max-width:190px}.region-button svg{width:17px;height:17px}.region-button span{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.intro{padding:8px 25px 0}.eyebrow{font-size:12px;color:var(--muted);letter-spacing:1.5px;text-transform:uppercase;font-weight:600}h1{font-family:Georgia,serif;font-weight:400;font-size:42px;line-height:1.04;letter-spacing:-1.8px;margin:12px 0 24px}h1 em{color:var(--orange);font-weight:400}.search-row{display:flex;align-items:center;gap:10px}.search{display:flex;align-items:center;gap:10px;background:white;border-radius:30px;padding:0 17px;border:1px solid #ecece6;flex:1;min-width:0}.search input{width:100%;min-width:0;border:0;outline:none;height:49px;background:none;font-size:14px;color:var(--ink)}.search svg{color:var(--muted);width:20px}.search:focus-within{outline:2px solid var(--orange)}.filter{border-radius:50%;height:49px;width:49px;background:var(--ink);color:white;display:grid;place-items:center}.categories{display:flex;gap:8px;overflow:auto;scrollbar-width:none;padding:20px 25px 7px}.chip{padding:10px 18px;background:none;border:1px solid #dddeda;border-radius:30px;font-size:14px;flex-shrink:0;white-space:nowrap}.chip.active{color:white;background:var(--orange);border-color:var(--orange)}.section-heading{display:flex;align-items:center;justify-content:space-between;padding:20px 25px 15px;gap:10px}.section-heading h2{font-size:21px;font-weight:600;letter-spacing:-.7px;margin:0}.section-heading span{font-size:12px;color:var(--muted)}.carousel{display:flex;gap:16px;overflow:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:0 25px 4px;scroll-padding:25px}.story{flex:0 0 86%;height:350px;border-radius:29px;overflow:hidden;position:relative;scroll-snap-align:start;isolation:isolate;background:#d8dcd6}.story>img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;z-index:-2}.story:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#122019e0,transparent 68%);z-index:-1;pointer-events:none}.story-open{position:absolute;inset:0;width:100%;background:transparent;color:white;text-align:left;padding:24px;display:flex;flex-direction:column;justify-content:end}.story-open h3{font:34px/1.04 Georgia,serif;letter-spacing:-1px;margin:10px 0}.story-open p{font-size:13px;margin:0;display:flex;align-items:center;gap:5px}.story-open p svg{width:15px;height:15px}.story-type{font-size:11px;letter-spacing:1.6px;text-transform:uppercase;color:#ffffffc9}.save{position:absolute;right:16px;top:16px;display:grid;place-items:center;background:white;color:var(--ink);border-radius:50%;height:45px;width:45px;z-index:2}.save[aria-pressed=true]{color:var(--orange)}.save[aria-pressed=true] svg{fill:currentColor}.story-arrow{position:absolute;right:18px;bottom:21px;color:white}.story-arrow svg{width:20px}.story-open h3,.story-open p{max-width:calc(100% - 20px)}.carousel-progress{display:flex;gap:5px;justify-content:center;margin:15px 0 0}.dot{height:5px;width:5px;border-radius:5px;background:#d7d9d3}.dot.active{width:23px;background:var(--orange)}.list{padding:0 25px;display:grid;gap:13px}.place-card{position:relative;display:flex;gap:15px;align-items:center}.place-card .place-open{background:transparent;display:flex;align-items:center;gap:15px;text-align:left;width:100%;padding:0 40px 0 0}.thumb{width:96px;height:101px;object-fit:cover;border-radius:20px;flex-shrink:0}.place-text{min-width:0}.place-text small{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#8b8075}.place-text h3{font-size:17px;line-height:1.18;margin:5px 0 6px;letter-spacing:-.5px}.place-text p{font-size:13px;margin:0;color:var(--muted)}.place-card .save{right:0;top:31px;width:34px;height:34px;background:transparent}.place-card .save svg{width:20px}.empty{padding:30px 25px 40px;text-align:center}.empty h3{font:28px/1.15 Georgia,serif}.empty p{color:var(--muted);font-size:14px}.empty button,.primary{background:var(--orange);color:white;border-radius:40px;padding:15px 25px;text-decoration:none;text-align:center}.footer{font-size:11px;color:#81857c;padding:34px 25px 120px}.footer a{color:inherit}nav{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);width:calc(100% - 48px);max-width:432px;border-radius:45px;padding:9px;display:flex;justify-content:space-between;background:#009445;box-shadow:0 9px 35px #17231d30;z-index:10}nav button{height:52px;border-radius:35px;background:none;color:#d2d6d1;display:flex;align-items:center;justify-content:center;gap:8px;width:59px;font-size:12px}nav button span{display:none}nav button.active{width:141px;background:var(--orange);color:white}nav button.active span{display:inline}dialog{color:var(--ink);border:0;padding:0;width:100%;height:100dvh;max-height:100dvh;max-width:480px;margin:0 auto;background:var(--paper);overscroll-behavior:contain}dialog::backdrop{background:#243d2c60;backdrop-filter:blur(8px)}.detail-hero{height:58dvh;min-height:390px;position:relative;isolation:isolate;color:white}.detail-hero>img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;z-index:-2}.detail-hero:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#14221bbc,transparent 70%);z-index:-1}.back{position:absolute;top:24px;left:24px;background:white;color:var(--ink);height:44px;width:44px;display:grid;place-items:center;border-radius:50%;z-index:4}.detail-hero .save{top:24px;right:24px}.detail-title{position:absolute;bottom:58px;padding:0 27px}.detail-title h2{font:43px/1.03 Georgia,serif;letter-spacing:-1.4px;margin:10px 0}.detail-title p{font-size:14px;margin:0;display:flex;align-items:center;gap:6px}.detail-title svg{width:17px}.detail-panel{position:relative;background:var(--paper);border-radius:32px 32px 0 0;margin-top:-30px;padding:16px 27px 38px;min-height:45dvh}.handle{height:4px;width:40px;border-radius:10px;background:#d5d8d1;margin:0 auto 27px}.detail-panel h3{font-size:20px;font-weight:600;margin:0 0 12px}.detail-panel p{font-size:15px;line-height:1.7;color:var(--muted)}.address{display:flex;align-items:center;gap:13px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:17px 0;margin:23px 0}.address p{margin:0;font-size:14px}.primary{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;font-weight:600}.region-sheet{max-height:80dvh;height:auto;margin:auto auto 0;border-radius:32px 32px 0 0;padding:30px 25px}.region-sheet h2{font:32px Georgia,serif;margin:15px 0 8px}.region-sheet>p{color:var(--muted);font-size:14px;margin-bottom:25px}.region-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:17px 16px;border:1px solid var(--line);border-radius:17px;background:white;margin:10px 0;text-align:left}.region-option.active{border-color:var(--orange);background:#fff7dc}.region-option small{font-size:12px;color:var(--muted)}.sheet-close{float:right;background:none;font-size:24px}.toast{position:fixed;bottom:115px;left:50%;transform:translateX(-50%);max-width:90%;white-space:nowrap;border-radius:24px;background:#283e31;color:white;padding:12px 22px;font-size:13px;z-index:50}.hidden{display:none!important}@media(min-width:600px){body{padding:32px 0}.app{border-radius:40px;box-shadow:0 30px 100px #263b2926;min-height:calc(100dvh - 64px)}dialog{margin:auto;border-radius:38px;height:calc(100dvh - 50px);max-height:calc(100dvh - 50px)}.region-sheet{height:auto}nav{bottom:42px}.story{height:420px}}@media(max-width:360px){header,.intro{padding-left:20px;padding-right:20px}.brand{font-size:14px}.region-button{max-width:155px}h1{font-size:38px}.story{height:350px}.story-open h3{font-size:29px}.section-heading h2{font-size:19px}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s,color .15s}dialog[open]{animation:reveal .25s ease-out}@keyframes reveal{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}}

/* ---- mapa, hlavička, doladění ---- */
nav button{color:white}nav button.active{background:#FFC20E;color:#3C2415}.brandmark{background:#FFC20E;color:#3C2415}.chip.active{background:#FFC20E;border-color:#FFC20E;color:#3C2415}.filter{background:#009445}.region-option.active{border-color:#009445}.map-mode #featured,.map-mode .list,.map-mode main>.section-heading,.map-mode .footer{display:none}.map-mode h1{font-size:32px;margin:8px 0 17px}.map-mode .intro{padding-top:0}#map-section{position:relative;padding:10px 16px 120px}#places-map{height:calc(100dvh - 405px);min-height:320px;border-radius:25px;z-index:1;background:#e6ece3}#map-status{font-size:13px;padding:0 8px 8px;color:#625b51}.place-pin{background:#009445;color:white;border:3px solid white;border-radius:50% 50% 50% 5px;transform:rotate(-45deg);box-shadow:0 3px 9px #0003;display:grid;place-items:center}.place-pin svg{width:20px;height:20px;transform:rotate(45deg)}.leaflet-popup-content{font:14px/1.4 -apple-system,sans-serif;color:#3C2415}.map-detail{background:#009445;color:white;padding:9px 13px;border-radius:20px;margin-top:8px;display:block}.leaflet-control-attribution{font-size:10px!important}.leaflet-control-zoom a{color:#009445!important}.map-mode .categories{padding-top:10px}.map-mode .app{min-height:100dvh}header{background:#009445;padding-top:23px;padding-bottom:23px;margin-bottom:16px}.original-logo{display:block;width:160px;height:auto;max-width:100%}.brand{flex-shrink:0}@media(max-width:360px){.original-logo{width:135px}.region-button{max-width:140px}} 

/* ---- finální vrstva z prototypu ---- */
:root{--muted:#64675f;--green:#009445;--dark-green:#006b32;--yellow:#FFC20E;--ink:#3C2415}html{scroll-padding-bottom:110px}body{line-height:1.5}.app{overflow:clip}header{padding:21px 24px;margin-bottom:14px}.original-logo{width:174px}.intro{padding:7px 24px 0}h1{font-size:36px;line-height:1.1;letter-spacing:-1.1px;margin:6px 0 22px}h1 em{color:var(--dark-green)}.search-row{gap:8px}.search{padding:0 11px;gap:8px}.search input{font-size:16px;height:52px}.search input::-webkit-search-cancel-button{display:none}.search>i{display:flex}.icon-button{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border-radius:50%;flex-shrink:0}.icon-button svg{width:21px}.filter{position:relative;width:auto;min-width:96px;height:54px;padding:7px 11px;border-radius:17px;gap:3px;display:flex;flex-direction:column;background:var(--dark-green);font-size:12px;line-height:1.15;flex-shrink:0}.filter i{display:flex}.filter svg{width:19px;height:19px}.filter b{position:absolute;top:-5px;right:-3px;border-radius:50%;width:21px;height:21px;background:var(--yellow);color:var(--ink);border:2px solid var(--paper);display:grid;place-items:center;font-size:11px}.categories{padding:18px 24px 4px;gap:8px}.chip{min-height:44px;padding:10px 16px;font-size:14px}.chip.active{font-weight:650}.context-row{display:flex;gap:8px;align-items:center;justify-content:space-between;margin:9px 24px 0}.context-row:has(#active-region:empty):has(.hidden){margin-top:0}#active-region{min-width:0}.active-tag{background:#e9f3e9;border:1px solid #bddbc4;border-radius:15px;display:inline-flex;gap:7px;align-items:center;padding:8px 11px;text-align:left;font-size:13px;min-height:44px}.active-tag svg{width:16px;height:16px}.text-button{background:transparent;color:var(--dark-green);font-size:13px;text-decoration:underline;text-underline-offset:3px;padding:10px 0;min-height:44px;flex-shrink:0}.result-summary{font-size:13px;color:var(--muted);margin:13px 24px 0}.section-heading{padding:17px 24px 13px}.section-heading h2{font-size:21px}.carousel-controls{display:flex;gap:2px}.carousel-controls .icon-button{background:#edf0e9;min-width:37px;min-height:44px}.carousel-controls [data-slide="-1"] svg{transform:rotate(180deg)}button:disabled{cursor:default;opacity:.35}.carousel{padding:0 24px 4px;scroll-padding:24px}.story{height:335px;flex-basis:87%;border-radius:25px}.story-open{padding:21px}.story-open h3{font-size:32px}.story-open p{font-size:14px}.story-type{font-size:12px;letter-spacing:1px}.save{width:46px;height:46px}.save[aria-pressed=true]{color:var(--dark-green);background:#fff4cb}.carousel-progress{margin:10px 0 4px}.dot.active{background:var(--green)}.list{padding:0 24px;gap:19px}.place-card .place-open{padding-right:48px;gap:13px}.place-card .save{width:44px;height:44px;top:27px;background:var(--paper)}.place-card .save[aria-pressed=true]{background:#fff4cb}.thumb{width:94px;height:102px}.place-text small{font-size:12px;color:#686253;letter-spacing:.5px}.place-text h3{font-size:18px;line-height:1.25}.place-text p{font-size:14px}.footer{padding:28px 24px 135px;font-size:12px;color:var(--muted)}nav{width:calc(100% - 32px);max-width:448px;bottom:max(14px,env(safe-area-inset-bottom));padding:7px;border-radius:30px;gap:5px;background:var(--dark-green)}nav button,nav button.active{width:33.333%;height:61px;flex-direction:column;gap:2px;border-radius:24px;font-size:12px;font-weight:600}nav button span{display:block!important}nav button.active{background:var(--yellow);color:var(--ink)}nav i{display:flex}nav small{font-size:11px}dialog{overscroll-behavior:contain}body:has(dialog[open]){overflow:hidden}.detail-hero{min-height:310px;height:48dvh}.detail-title{bottom:51px}.detail-title h2{font-size:36px;line-height:1.1}.detail-title p{font-size:14px}.detail-panel{padding:18px 25px 22px;min-height:0}.detail-panel p{font-size:16px;color:#626459}.detail-panel .handle{margin-bottom:22px}.detail-actions{position:sticky;bottom:0;padding:12px 24px max(18px,env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--line)}.primary{background:var(--dark-green);font-size:16px;min-height:52px;border:0}.address{margin:20px 0 6px}.address p{font-size:14px}.detail-note{font-size:12px!important;margin:16px 0 0;line-height:1.5!important}.region-sheet{padding:24px;max-height:90dvh}.sheet-header{display:flex;align-items:center;justify-content:space-between;gap:14px}.sheet-header h2{font:28px/1.1 Georgia,serif;margin:0}.region-sheet>p{font-size:14px;margin:12px 0 20px;color:var(--muted)}#region-options{border:0;margin:0;padding:0;display:grid;gap:9px}.region-radio{display:flex;align-items:center;gap:12px;border:1px solid var(--line);background:white;border-radius:17px;padding:15px 12px;cursor:pointer;min-height:62px}.region-radio:has(input:checked){border-color:var(--green);background:#f1f8ee}.region-radio:has(input:disabled){color:#6d7069;background:#f1f2ef;cursor:default}.region-radio input{accent-color:var(--dark-green);width:19px;height:19px;flex-shrink:0}.region-radio span{font-size:15px;line-height:1.3;flex:1}.region-radio small{display:block;font-size:12px;color:var(--muted);margin-top:3px}.sheet-actions{position:sticky;bottom:-24px;background:var(--paper);padding:18px 0 4px}.empty{padding:20px 0 35px;grid-column:1/-1}.empty h3{font-size:27px;margin:12px 0}.empty p{font-size:15px}.empty button{background:var(--dark-green);min-height:48px;font-size:15px}.toast{bottom:105px;display:flex;align-items:center;gap:12px;white-space:normal;max-width:calc(100% - 32px);width:max-content;padding:10px 15px;border-radius:18px;font-size:14px;background:var(--ink)}.toast button{min-width:44px;min-height:44px;color:var(--yellow);background:none;text-decoration:underline}.map-mode .intro{padding-top:7px}.map-mode h1{font-size:32px;margin:6px 0 18px}.map-mode .categories{padding-top:18px}.map-mode .footer{display:none}#map-section{padding:5px 16px 125px}.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;padding:0 8px 7px;color:var(--muted)}#places-map{height:calc(100dvh - 395px);min-height:300px;border-radius:23px}.leaflet-control-attribution{max-width:100%;white-space:normal}.leaflet-control-zoom a{width:44px!important;height:44px!important;line-height:44px!important}.leaflet-popup-content{font-size:15px!important}.map-detail{background:var(--dark-green);min-height:44px;font-size:14px}#map-error{font-size:14px;padding:12px;background:#fff4cb;margin-bottom:8px;border-radius:12px}#map-error button{background:none;text-decoration:underline;min-height:44px}#map-empty{padding:20px 12px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #006b32;outline-offset:3px}nav button:focus-visible{outline-color:var(--yellow)}@media(min-width:600px){.story{height:360px}nav{bottom:40px}.detail-hero{height:44dvh}}@media(max-width:360px){header{padding-left:20px;padding-right:20px}.intro{padding-left:20px;padding-right:20px}h1{font-size:32px}.filter{min-width:84px}.search{gap:4px;padding-left:10px}.search>i{display:none}.story{height:310px}.story-open h3{font-size:29px}.place-open{gap:10px}.thumb{width:78px;height:92px}.place-text h3{font-size:16px}.context-row{flex-wrap:wrap}.section-heading{gap:5px}.section-heading h2{font-size:20px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

.search input:focus-visible{outline:none}.search:focus-within{outline:2px solid var(--dark-green);outline-offset:2px}@media(max-width:360px){.story{height:260px}.story-open h3{font-size:27px}}

/* ---- APLIKACE: doplňky proti prototypu ---- */

/* „Blízko mě" je chip mezi kategoriemi, ale s ikonou — řadí, nefiltruje. */
.chip-near { display: inline-flex; align-items: center; gap: 6px; }
.chip-near svg { width: 16px; height: 16px; }

/* Sekce Akce a chybová hláška patří jen na objevovací obrazovku. */
.map-mode #events, .map-mode #load-error { display: none; }

/* Detail: datum akce, popis a odkaz na web — v prototypu ještě nebyly. */
.detail-date {
    display: flex; align-items: center; gap: 10px;
    background: #eaf1eb; border-radius: 14px;
    padding: 12px 14px; margin: 0 0 18px;
    font-size: 14px; font-weight: 600;
}
.detail-date svg { width: 19px; height: 19px; color: var(--green); }

.detail-desc { font-size: 15px; line-height: 1.7; color: var(--muted); margin: 0 0 24px; }
.detail-desc p { margin: 0 0 12px; }
.detail-desc p:last-child { margin-bottom: 0; }

.detail-web {
    display: flex; align-items: center; gap: 12px;
    border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
    padding: 17px 0; margin: 23px 0;
    color: var(--ink); text-decoration: none;
    font-size: 14px; font-weight: 600;
}
.detail-web svg { width: 19px; height: 19px; color: var(--green); }

/* Místa bez fotky dostanou zástupný obrázek — ať se karty nerozjedou. */
.thumb, .story > img, .detail-hero > img { background: #e6ece3; }

/* ---- shlukování značek na mapě ----
   S 338 místy by mapa při oddálení byla jedna hromada špendlíků, takže se slučují
   do bublin. Výchozí zelenožluté barvy pluginu nahrazujeme značkovými. */
.marker-cluster {
    background: #ffffffb3;
    border-radius: 50%;
    display: grid;
    place-items: center;
}
.marker-cluster div {
    width: 38px; height: 38px;
    border-radius: 50%;
    background: var(--green);
    color: white;
    display: grid; place-items: center;
    font-size: 14px; font-weight: 700;
    box-shadow: 0 3px 9px #0003;
}
.marker-cluster-large div { background: var(--dark-green); }
.leaflet-cluster-anim .leaflet-marker-icon,
.leaflet-cluster-anim .leaflet-marker-shadow {
    transition: transform .3s ease-out, opacity .3s ease-in;
}

/* Mapa sahá až pod plovoucí navigaci — vypadá to líp, ale povinná atribuce
   OpenStreetMap by zmizela pod ní, tak ji o kus zvedneme. */
.map-mode .leaflet-bottom { bottom: 84px; }
