html,body{height:100%;margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:#f4f5f7;color:#1f2937}
*{box-sizing:border-box}.hidden{display:none!important}
.app{height:100%;display:grid;grid-template-columns:340px 1fr}.sidebar{height:100%;overflow-y:auto;padding:18px;background:#fff;border-right:1px solid #d9dde3}
.brand{margin-bottom:18px}.brand h1{margin:0;font-size:24px}.muted{color:#6b7280;margin-top:4px}.small{font-size:12px}
.user-box{display:flex;gap:10px;align-items:center;margin-bottom:18px;padding:10px;border-radius:8px;background:#f6f7f9}.user-box>div{flex:1}.user-box button{width:auto}
.panel{margin-bottom:18px}.panel label,.modal label,.login-card label{display:block;margin:10px 0 5px;font-weight:600;font-size:14px}
select,button,input,textarea{width:100%;padding:9px 10px;border-radius:8px;border:1px solid #cfd4dc;background:#fff;font-size:14px;font-family:inherit}
textarea{resize:vertical}button{cursor:pointer}button:hover{background:#f3f4f6}button.primary{background:#1f6feb;color:#fff;border-color:#1f6feb}button.primary:hover{background:#195fc8}
button.danger{background:#b42318;color:#fff;border-color:#b42318}.compact{width:auto!important;margin-top:10px}
#fitButton,#addButton,.panel button{margin-top:10px}#map{height:100%}#status{font-size:14px;color:#4b5563}
.mode-hint{margin-top:10px;padding:10px;border-radius:8px;background:#eef6ff;font-size:13px}.link-button{width:auto;padding:0;margin-left:6px;border:0;background:transparent;color:#1f6feb;text-decoration:underline}
.list-title{font-weight:700;margin-bottom:8px}.place-row{padding:9px 8px;border-bottom:1px solid #eceff3;cursor:pointer}.place-row:hover{background:#f6f7f9}.place-name{font-weight:600}.place-meta{margin-top:3px;font-size:12px;color:#6b7280}
.tag{display:inline-block;margin-right:4px;margin-top:4px;padding:2px 6px;border-radius:10px;background:#eef1f5;font-size:11px}
.custom-marker{width:28px;height:28px;border-radius:50%;background:#fff;border:2px solid #111827;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.popup-actions{margin-top:8px}.popup-actions button{width:auto;padding:5px 8px;font-size:12px}
.popup-photo-slot{width:100%;margin:0 0 10px;padding:5px;border:1px solid #e5e7eb;border-radius:10px;background:#fff;cursor:pointer;box-shadow:inset 0 0 0 1px #f3f4f6}
.popup-photo-slot img{width:100%;height:auto;display:block;border-radius:7px;background:#f3f4f6}
.leaflet-popup-content{width:280px!important;min-width:280px;margin:14px 14px 12px}.leaflet-popup-content .muted{margin-top:2px}.leaflet-popup-content .popup-actions{margin-top:8px}.leaflet-popup-content .popup-actions button{margin-top:0}
.login-screen,.modal-backdrop{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:20px}.login-screen{z-index:3000;background:#eef1f5}.modal-backdrop{z-index:2000;background:rgba(0,0,0,.35)}
.login-card{width:min(420px,100%);padding:28px;border-radius:12px;background:#fff;box-shadow:0 20px 60px rgba(0,0,0,.15)}.login-card button{margin-top:16px}
.modal{width:min(620px,100%);max-height:92vh;overflow-y:auto;padding:20px;border-radius:12px;background:#fff;box-shadow:0 20px 60px rgba(0,0,0,.25)}.wide-modal{width:min(900px,100%)}.categories-modal{width:min(1050px,100%)}
.modal-header{display:flex;align-items:center;gap:12px}.modal-header h2{margin:0;flex:1}.icon-button{width:38px;padding:5px;border:0;background:transparent;font-size:24px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modal-actions{display:flex;gap:8px;margin-top:18px}.modal-actions button{width:auto}.spacer{flex:1}
.form-error{margin-top:12px;padding:10px;border-radius:8px;background:#fff1f0;color:#b42318;font-size:13px}
.card{margin-top:16px;padding:14px;border:1px solid #e1e5ea;border-radius:10px;background:#fafbfc}.card h3{margin:0 0 10px}
.checkbox-wrap{display:flex;align-items:end;padding-bottom:4px}.checkbox-wrap label,.checkbox-line{display:flex!important;align-items:center;gap:8px}.checkbox-wrap input,.checkbox-line input{width:auto}
.user-row,.member-row{display:grid;grid-template-columns:1.6fr 1fr auto auto;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid #e6e9ed}.row-actions{display:flex;gap:6px}.row-actions button{width:auto;padding:6px 8px;font-size:12px}
.badge{display:inline-block;padding:2px 7px;border-radius:999px;background:#eef1f5;font-size:12px}.badge.admin{background:#fff0c2}.badge.inactive{background:#ffe3e3}.info-box{margin-top:12px;padding:10px;border-radius:8px;background:#eef6ff;font-size:13px}
.photos{margin-top:24px;border-top:1px solid #ddd;padding-top:18px}.section-head{display:flex;align-items:center;gap:8px}.section-head h3{flex:1;margin:0}
.upload{display:grid;grid-template-columns:1.2fr 1fr auto;gap:8px;align-items:end;margin-top:10px}.upload button{width:auto}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-top:14px}.photo-card{border:1px solid #ddd;border-radius:10px;overflow:hidden;background:#fff}.thumb-wrap{aspect-ratio:4/3;background:#eee;cursor:pointer;display:flex;align-items:center;justify-content:center}.thumb-wrap img{width:100%;height:100%;object-fit:cover}.photo-body{padding:8px}.photo-actions{display:flex;gap:6px}.photo-actions button{width:auto;padding:5px 7px;font-size:12px}
.lightbox{position:fixed;inset:0;z-index:5000;background:#000e;display:flex;align-items:center;justify-content:center;padding:30px;color:#fff;text-align:center}.lightbox img{max-width:94vw;max-height:84vh;object-fit:contain}.lightbox-close{position:fixed;right:20px;top:15px;width:44px;height:44px;border:0;border-radius:50%;font-size:28px;background:#ffffff22;color:#fff}.lightbox-caption{margin-top:8px}
.category-create-grid{display:grid;grid-template-columns:1.2fr 2fr .7fr .8fr;gap:10px}.categories-list{margin-top:12px}.category-row{display:grid;grid-template-columns:1.1fr 1.8fr .55fr .7fr .7fr auto;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid #e6e9ed}.category-code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px}.category-icon-input{text-align:center;font-size:18px}.category-active-wrap{display:flex;align-items:center;justify-content:center}.category-active-wrap input{width:auto}.category-actions{display:flex;gap:6px}.category-actions button{width:auto;padding:6px 8px;font-size:12px}
@media(max-width:800px){.app{grid-template-columns:1fr;grid-template-rows:44% 56%}.form-grid,.user-row,.member-row,.category-create-grid,.category-row,.upload{grid-template-columns:1fr}.category-active-wrap{justify-content:flex-start}}

.gpx-actions{display:flex;gap:8px;margin:12px 0 8px}.gpx-actions button{width:auto}
.gpx-result{margin-top:12px;padding:12px;border-radius:8px;background:#ecfdf3;border:1px solid #abefc6;font-size:13px}
.gpx-result strong{display:block;margin-bottom:5px}

.collections-list{margin-top:12px}.collection-row{display:grid;grid-template-columns:1.2fr 1.8fr .8fr .8fr auto;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid #e6e9ed}.collection-row .readonly{padding:9px 10px;border-radius:8px;background:#f3f4f6;color:#6b7280}.collection-public{display:flex;align-items:center;justify-content:center}.collection-public input{width:auto}.collection-actions{display:flex;gap:6px}.collection-actions button{width:auto;padding:6px 8px;font-size:12px}.gpx-preview-table{margin-top:10px;max-height:280px;overflow:auto;border:1px solid #e5e7eb;border-radius:8px}.gpx-preview-row{display:grid;grid-template-columns:1fr auto auto;gap:8px;padding:7px 9px;border-bottom:1px solid #eef0f2;font-size:12px}.gpx-status-new{color:#067647}.gpx-status-duplicate{color:#b54708}.gpx-status-invalid{color:#b42318}@media(max-width:800px){.collection-row{grid-template-columns:1fr}}

.mapy-logo-control{
  background:rgba(255,255,255,.92);
  padding:4px 6px;
  border-radius:5px;
  box-shadow:0 1px 5px rgba(0,0,0,.25)
}
.mapy-logo-control a{display:block;line-height:0}
.mapy-logo-control img{display:block;height:auto}

.user-actions{display:flex;gap:6px;flex-direction:column}.user-actions button{margin:0}
.success-box{margin-top:12px;padding:10px;border-radius:8px;background:#ecfdf3;color:#067647;border:1px solid #abefc6;font-size:13px}
.temporary-credentials{margin-top:16px;padding:14px;border-radius:10px;background:#fffaeb;border:1px solid #fedf89}
.temporary-credentials code{font-size:14px;font-weight:700;user-select:all}
.temporary-credentials button{width:auto;margin-top:10px}
.access-request-row{display:grid;grid-template-columns:1.2fr 1.4fr .8fr auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #e6e9ed}
.access-request-message{font-size:12px;color:#6b7280;margin-top:3px;white-space:pre-wrap}
.access-request-actions{display:flex;gap:6px}.access-request-actions button{width:auto;padding:6px 8px;font-size:12px}
.request-status-pending{background:#fff0c2}.request-status-approved{background:#d1fadf}.request-status-rejected{background:#fee4e2}
@media(max-width:800px){.access-request-row{grid-template-columns:1fr}}

#accessRequestBackdrop{z-index:3100}

.lightbox-inner{max-width:94vw;max-height:92vh;display:flex;flex-direction:column;align-items:center;justify-content:center}
.lightbox-nav{position:fixed;top:50%;transform:translateY(-50%);width:54px;height:72px;border:0;border-radius:12px;background:rgba(255,255,255,.16);color:#fff;font-size:48px;line-height:1;padding:0;z-index:5001}
.lightbox-nav:hover{background:rgba(255,255,255,.28)}
.lightbox-prev{left:18px}.lightbox-next{right:18px}
.lightbox-counter{margin-top:8px;color:#d1d5db;font-size:13px}
@media(max-width:800px){
  .lightbox-nav{width:44px;height:60px;font-size:38px}
  .lightbox-prev{left:8px}.lightbox-next{right:8px}
}

.osm-poi-panel .checkbox-line{margin:5px 0}
.osm-poi-panel button{margin-top:7px}
.tiny{font-size:11px}
.osm-attribution{margin-top:8px}
.osm-poi-marker{
  width:24px;height:24px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  border:2px solid #ffffff;
  color:#111827;
  box-shadow:0 1px 5px rgba(0,0,0,.38);
  font-size:13px;font-weight:700
}
.osm-poi-marker.osm{background:#f59e0b}
.osm-poi-marker.geoapify{background:#22c55e}
.osm-poi-popup .poi-source{margin-top:6px;font-size:11px;color:#6b7280}
.osm-poi-popup .poi-details{margin-top:5px;font-size:12px}
.osm-poi-popup button{width:auto;margin-top:8px;padding:5px 8px;font-size:12px}

.custom-marker{
  width:28px;height:28px;border-radius:50%;
  background:#1d4ed8;
  border:2px solid #ffffff;
  color:#ffffff;
  display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:14px;
  box-shadow:0 1px 5px rgba(0,0,0,.38)
}

.marker-legend{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:8px}
.marker-legend-item{display:flex;align-items:center;gap:6px;font-size:11px;color:#6b7280}
.marker-legend-dot{width:14px;height:14px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.marker-legend-dot.collection{background:#1d4ed8}
.marker-legend-dot.osm{background:#f59e0b}
.marker-legend-dot.geoapify{background:#22c55e}

.component-versions{
  margin-top:3px;
  font-size:10px;
  line-height:1.25;
  color:#98a2b3;
  letter-spacing:.01em;
}

.management-panel{padding-top:8px;padding-bottom:8px}
.management-toggle{
  display:flex;
  width:100%;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:8px 4px;
  margin:0;
  border:0;
  background:transparent;
  color:inherit;
  font:inherit;
  font-weight:700;
  text-align:left;
  cursor:pointer;
}
.management-toggle:hover{background:#f8fafc}
.management-toggle-main{display:flex;align-items:center;gap:7px}
.management-chevron{
  display:inline-block;
  width:14px;
  font-size:14px;
  transition:transform .12s ease;
}
.management-toggle[aria-expanded="true"] .management-chevron{transform:rotate(90deg)}
.management-request-badge{
  min-width:20px;
  height:20px;
  padding:0 6px;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:#f04438;
  color:#fff;
  font-size:11px;
  font-weight:700;
}
.management-content{
  padding-top:4px;
}
.management-content button{
  margin-top:6px;
}

/* 0.9.6 – střídání podbarvení seznamu bodů */
#placeList{
  display:flex;
  flex-direction:column;
  gap:4px;
}
#placeList .place-row{
  margin:0;
  padding:10px 10px;
  border-bottom:0;
  border-radius:8px;
}
#placeList .place-row:nth-child(odd){
  background:#f5f6f8;
}
#placeList .place-row:nth-child(even){
  background:#eceff3;
}
#placeList .place-row:hover{
  background:#e5e7eb;
}

.poi-subtitle{margin-top:8px;margin-bottom:3px;font-size:11px;font-weight:700;color:#667085;text-transform:uppercase;letter-spacing:.03em}

/* 0.9.9 – průběh vyhledávání POI */
.poi-progress-title{
  margin-bottom:6px;
  font-weight:600;
}
.poi-progress-list{
  display:flex;
  flex-direction:column;
  gap:4px;
}
.poi-progress-row{
  display:flex;
  align-items:center;
  gap:7px;
  min-height:20px;
}
.poi-progress-icon{
  display:inline-flex;
  width:16px;
  height:16px;
  align-items:center;
  justify-content:center;
  font-weight:700;
}
.poi-progress-ok .poi-progress-icon{color:#15803d}
.poi-progress-error .poi-progress-icon{color:#b42318}
.poi-spinner{
  width:14px;
  height:14px;
  border:2px solid #d0d5dd;
  border-top-color:#667085;
  border-radius:50%;
  animation:poi-spin .8s linear infinite;
  flex:0 0 auto;
}
@keyframes poi-spin{
  to{transform:rotate(360deg)}
}

/* 0.9.10 – vizuální seskupení postranního panelu */
.sidebar{
  padding:18px 14px;
}

.grouped-panel{
  padding:12px;
  border:1px solid #e1e5ea;
  border-radius:10px;
  background:#fafbfc;
}

.grouped-panel + .grouped-panel{
  margin-top:12px;
}

.filters-panel label:first-child{
  margin-top:0;
}

.osm-poi-panel .list-title,
.points-panel .list-title{
  margin-bottom:10px;
}

.management-panel{
  padding:7px 10px;
}

.management-panel .management-toggle{
  padding:7px 2px;
}

.status-panel{
  padding:10px 12px;
}

.points-panel{
  padding:12px 8px 8px;
}

.points-panel .list-title{
  padding:0 4px;
}

/* Uvnitř karet necháváme jednotlivé ovládací prvky vizuálně lehké. */
.grouped-panel select,
.grouped-panel input,
.grouped-panel textarea{
  background:#fff;
}

/* Účet má stejnou optickou rodinu jako nové skupiny. */
.user-box{
  border:1px solid #e1e5ea;
  background:#fafbfc;
}

/* 0.9.11 – automatická obnova a tisk */
.refresh-data-button{
  margin-top:8px!important;
  padding:7px 9px;
  font-size:12px;
}
.print-settings-modal{
  width:min(520px,100%);
}
.print-settings-section{
  margin-top:16px;
  padding-top:12px;
  border-top:1px solid #e5e7eb;
}
.print-settings-section:first-of-type{
  margin-top:8px;
  padding-top:0;
  border-top:0;
}
.radio-line{
  display:flex!important;
  align-items:center;
  gap:8px;
  font-weight:400!important;
}
.radio-line input{
  width:auto;
}

/* 0.9.12 – stav automatické obnovy během rozpracovaných úprav */
.refresh-data-button:disabled{
  opacity:.7;
}
