:root{
  --bg:#0b1220;
  --panel:rgba(255,255,255,.06);
  --panel2:rgba(255,255,255,.09);
  --text:rgba(255,255,255,.92);
  --muted:rgba(255,255,255,.70);
  --border:rgba(255,255,255,.14);
  --brand:#6ee7ff;
  --brand2:#a78bfa;
  --danger:#fb7185;
  --shadow:0 10px 35px rgba(0,0,0,.45);
  --radius:16px;
  --radius2:22px;
  --font:system-ui,-apple-system,"Segoe UI",Roboto,Arial,"Noto Sans",sans-serif;
  --z-backdrop:1200;
  --z-drawer:1210;
}

*{box-sizing:border-box}
html{
  height:100%;
  overflow-x:hidden;
}
body{
  margin:0;
  min-height:100%;
  min-height:100dvh;
  display:flex;
  flex-direction:column;
  overflow-x:hidden;
  font-family:var(--font);
  color:var(--text);
  background:var(--bg);
}

/* Спокойный фон на телефонах: без тяжёлых радиальных слоёв (меньше артефактов при скролле). */
@media (min-width: 980px){
  body{
    background:
      radial-gradient(1200px 700px at 10% 0%, rgba(110,231,255,.20), transparent 60%),
      radial-gradient(900px 700px at 90% 20%, rgba(167,139,250,.18), transparent 60%),
      radial-gradient(900px 700px at 40% 100%, rgba(34,197,94,.10), transparent 60%),
      var(--bg);
    background-attachment:scroll;
  }
}

a{color:inherit}

.drawerBackdrop{
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  top:56px;
  z-index:var(--z-backdrop);
  background:rgba(0,0,0,.45);
  border:0;
  padding:0;
  margin:0;
}
.drawerBackdrop[hidden]{display:none}

.topbar{
  position:sticky;
  top:0;
  z-index:2000;
  flex-shrink:0;
  backdrop-filter:saturate(140%) blur(10px);
  -webkit-backdrop-filter:saturate(140%) blur(10px);
  background:rgba(11,18,32,.94);
  border-bottom:1px solid var(--border);
}
.topbar__inner{
  width:100%;
  max-width:100%;
  margin:0 auto;
  padding:10px 12px;
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:nowrap;
}
.menuToggle{
  display:none;
  flex-direction:column;
  justify-content:center;
  gap:5px;
  width:44px;
  height:44px;
  padding:0 10px;
  border-radius:12px;
  border:1px solid var(--border);
  background:rgba(255,255,255,.06);
  color:var(--text);
  cursor:pointer;
  flex:0 0 auto;
}
.menuToggle:hover{background:rgba(255,255,255,.10)}
.menuToggle__bar{
  display:block;
  height:2px;
  width:100%;
  border-radius:2px;
  background:rgba(255,255,255,.88);
}
.brand{
  display:flex;
  flex-direction:column;
  gap:2px;
  min-width:0;
  flex:1;
}
.brand__title{
  font-weight:800;
  letter-spacing:.2px;
  line-height:1.15;
  font-size:clamp(15px, 2.8vw, 18px);
}
.brand__subtitle{
  font-size:11px;
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.drawer{
  flex:1;
  min-width:0;
  display:flex;
  align-items:center;
}

.search{
  width:100%;
  flex:1;
  display:flex;
  gap:8px;
  align-items:center;
  flex-wrap:wrap;
  min-width:0;
}
.field{
  flex:1 1 200px;
  min-width:0;
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 12px;
  border:1px solid var(--border);
  background:rgba(255,255,255,.06);
  border-radius:999px;
}
.field input{
  width:100%;
  border:0;
  outline:0;
  background:transparent;
  color:var(--text);
  font-size:14px;
}
.field input::placeholder{color:rgba(255,255,255,.55)}
.select{
  border:1px solid var(--border);
  background:rgba(255,255,255,.06);
  color:var(--text);
  border-radius:999px;
  padding:10px 12px;
  font-size:14px;
  max-width:100%;
}
.btn{
  border:1px solid var(--border);
  background:rgba(255,255,255,.06);
  color:var(--text);
  padding:10px 12px;
  border-radius:999px;
  cursor:pointer;
  font-size:14px;
  display:inline-flex;
  gap:8px;
  align-items:center;
  justify-content:center;
  white-space:nowrap;
}
.btn:hover{background:rgba(255,255,255,.10)}
.btn:active{transform:translateY(1px)}
.btn--primary{
  border-color:rgba(110,231,255,.40);
  background:linear-gradient(180deg, rgba(110,231,255,.18), rgba(110,231,255,.08));
}
.btn--danger{
  border-color:rgba(251,113,133,.45);
  background:rgba(251,113,133,.12);
  color:#fecdd3;
}
.btn--danger:hover{background:rgba(251,113,133,.18)}

.layout{
  width:100%;
  max-width:100%;
  margin:0 auto;
  padding:12px;
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
  flex:1;
  min-height:0;
}

.card{
  border:1px solid var(--border);
  background:rgba(255,255,255,.06);
  border-radius:var(--radius2);
  box-shadow: var(--shadow);
  overflow:hidden;
  min-width:0;
}
.card--side{
  overflow:visible;
}
.card--side .list{
  border-radius:0 0 calc(var(--radius2) - 1px) calc(var(--radius2) - 1px);
}

.map{
  width:100%;
  height:48vh;
  min-height:260px;
}

.panel{
  padding:12px;
  border-bottom:1px solid rgba(255,255,255,.08);
}

.metaRow{
  display:flex;
  flex-wrap:wrap;
  gap:8px 10px;
  align-items:center;
  color:var(--muted);
  font-size:13px;
}
.pill{
  border:1px solid var(--border);
  background:rgba(255,255,255,.05);
  padding:6px 10px;
  border-radius:999px;
  max-width:100%;
  word-break:break-word;
}
.pill--id{font-size:12px}
.pill--hideNarrow{display:none}
@media (min-width:620px){
  .pill--hideNarrow{display:inline}
}

.travelPanel{
  margin-top:10px;
  padding-top:10px;
  border-top:1px dashed rgba(255,255,255,.12);
  display:flex;
  flex-direction:column;
  gap:10px;
}
.travelPanel__head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.travelPanel__switchRow{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  flex:1;
  min-width:0;
}
.travelPanel__label{
  font-size:15px;
  font-weight:650;
  color:var(--text);
  letter-spacing:.01em;
}
.travelPanel__overflow{
  position:relative;
  flex-shrink:0;
}
.iconBtn{
  width:44px;
  height:44px;
  border-radius:12px;
  border:1px solid var(--border);
  background:rgba(255,255,255,.06);
  color:var(--text);
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
}
.iconBtn:hover{background:rgba(255,255,255,.10)}
.iconBtn:focus-visible{outline:2px solid var(--brand); outline-offset:2px}
.iconBtn__dots::before{
  content:"⋮";
  font-size:22px;
  line-height:1;
  display:block;
  margin-top:-2px;
}
.overflowMenu{
  position:absolute;
  right:0;
  top:calc(100% + 6px);
  min-width:200px;
  padding:6px 0;
  border-radius:14px;
  border:1px solid var(--border);
  background:rgba(18,26,43,.98);
  box-shadow:var(--shadow);
  z-index:600;
}
.overflowMenu[hidden]{display:none!important}
.overflowMenu__item{
  display:block;
  width:100%;
  text-align:left;
  padding:12px 16px;
  border:0;
  background:transparent;
  color:var(--text);
  font-size:15px;
  cursor:pointer;
  font-family:inherit;
}
.overflowMenu__item:hover,
.overflowMenu__item:focus-visible{
  background:rgba(255,255,255,.08);
}

/* Переключатель в духе Android / Material */
.switch{
  position:relative;
  display:inline-flex;
  align-items:center;
  cursor:pointer;
  flex-shrink:0;
  padding:10px;
  margin:-10px;
  -webkit-tap-highlight-color:transparent;
}
/* Важно: не width/height:0 — иначе часть браузеров не переключает чекбокс по клику на label. */
.switch input{
  position:absolute;
  top:50%;
  left:50%;
  width:52px;
  height:32px;
  margin:0;
  padding:0;
  transform:translate(-50%, -50%);
  opacity:0.02;
  cursor:pointer;
  z-index:2;
  flex-shrink:0;
}
.switch__track{
  width:52px;
  height:32px;
  border-radius:16px;
  background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.2);
  position:relative;
  transition:background .2s,border-color .2s;
  pointer-events:none;
}
.switch__thumb{
  position:absolute;
  width:26px;
  height:26px;
  left:3px;
  top:50%;
  margin-top:-13px;
  background:#f1f5f9;
  border-radius:50%;
  box-shadow:0 1px 4px rgba(0,0,0,.4);
  transition:left .2s ease;
  pointer-events:none;
}
.switch input:checked + .switch__track{
  background:rgba(110,231,255,.38);
  border-color:rgba(110,231,255,.55);
}
.switch input:checked + .switch__track .switch__thumb{
  left:23px;
}
.switch input:focus-visible + .switch__track{
  outline:2px solid var(--brand);
  outline-offset:3px;
}

.travelPanel__row{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}
.travelPanel__row--actions .btn{
  flex:1 1 auto;
  min-width:min(100%, 200px);
}
.travelPanel__help{
  margin:4px 0 0;
  font-size:12px;
  color:var(--muted);
  line-height:1.45;
}
.legend{
  font-weight:650;
  color:var(--text);
}
.legend--done{color:#86efac}
.legend--todo{color:#fca5a5}
.legend--new{color:#93c5fd}

.list{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
  padding:12px;
}
.place{
  border:1px solid rgba(255,255,255,.10);
  background:rgba(255,255,255,.05);
  border-radius:16px;
  padding:12px;
  display:flex;
  gap:12px;
  align-items:flex-start;
  justify-content:space-between;
}
.place:hover{background:rgba(255,255,255,.08)}
.place__main{min-width:0}
.place__title{
  font-weight:750;
  line-height:1.25;
}
.place__sub{
  margin-top:6px;
  color:var(--muted);
  font-size:13px;
  display:flex;
  flex-wrap:wrap;
  gap:8px 10px;
}
.place__actions{
  display:flex;
  flex-direction:column;
  gap:8px;
  align-items:flex-end;
  flex:0 0 auto;
}
.place__travel{
  margin-top:10px;
  padding-top:10px;
  border-top:1px dashed rgba(255,255,255,.10);
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
}
.place__travel .btn{
  font-size:12px;
  padding:6px 10px;
  border-radius:12px;
  white-space:normal;
  text-align:center;
}

.chip{
  font-size:12px;
  color:var(--muted);
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.04);
  padding:4px 8px;
  border-radius:999px;
}
.chip--done{border-color:rgba(34,197,94,.35);color:#bbf7d0}
.chip--todo{border-color:rgba(248,113,113,.4);color:#fecaca}
.link{
  text-decoration:none;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.06);
  padding:8px 10px;
  border-radius:999px;
  font-size:13px;
}
.link:hover{background:rgba(255,255,255,.10)}
.warn{
  color:rgba(255,255,255,.78);
  font-size:13px;
  padding:10px 12px;
  border:1px dashed rgba(251,113,133,.45);
  border-radius:14px;
  background:rgba(251,113,133,.08);
}

.footer{
  width:100%;
  max-width:100%;
  flex-shrink:0;
  position:relative;
  z-index:2;
  padding:12px 14px 22px;
  color:rgba(255,255,255,.55);
  font-size:12px;
  background:var(--bg);
}

/* Нижние / центральные «шиты» как в Android */
.sheet[hidden]{display:none!important}
.sheet:not([hidden]){
  position:fixed;
  inset:0;
  z-index:3500;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  padding:0;
  padding-bottom:env(safe-area-inset-bottom, 0);
}
.sheet__backdrop{
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.52);
  border:0;
  padding:0;
  cursor:pointer;
}
.sheet__panel{
  position:relative;
  width:100%;
  max-width:520px;
  max-height:min(88vh, 640px);
  overflow:auto;
  margin:0 10px 0;
  border-radius:20px 20px 0 0;
  border:1px solid var(--border);
  border-bottom:0;
  background:rgba(15,23,42,.98);
  box-shadow:0 -8px 40px rgba(0,0,0,.5);
  -webkit-overflow-scrolling:touch;
}
.sheet__panel--settings{max-height:min(92vh, 720px)}
.sheet__head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:16px 18px 12px;
  border-bottom:1px solid rgba(255,255,255,.08);
  position:sticky;
  top:0;
  background:rgba(15,23,42,.98);
  z-index:1;
}
.sheet__title{
  margin:0;
  font-size:18px;
  font-weight:750;
}
.sheet__close{
  width:40px;
  height:40px;
  border-radius:12px;
  border:1px solid var(--border);
  background:rgba(255,255,255,.06);
  color:var(--text);
  font-size:22px;
  line-height:1;
  cursor:pointer;
}
.sheet__close:hover{background:rgba(255,255,255,.10)}
.sheet__body{padding:14px 18px 22px}
.sheet__muted{
  margin:0 0 14px;
  font-size:13px;
  color:var(--muted);
  line-height:1.45;
}
.techDl{
  margin:0 0 16px;
  font-size:13px;
}
.techDl dt{
  color:var(--muted);
  font-weight:600;
  margin-top:10px;
}
.techDl dt:first-child{margin-top:0}
.techDl dd{
  margin:4px 0 0;
  word-break:break-all;
}
.techCode{
  display:block;
  padding:8px 10px;
  border-radius:10px;
  background:rgba(0,0,0,.25);
  border:1px solid rgba(255,255,255,.1);
  font-size:12px;
  color:#e2e8f0;
}
.settingsBlock{
  margin-bottom:18px;
}
.settingsBlock:last-child{margin-bottom:0}
.settingsBlock__title{
  margin:0 0 8px;
  font-size:14px;
  font-weight:700;
  color:rgba(255,255,255,.88);
}
.settingsBlock__text{
  margin:0;
  font-size:13px;
  color:var(--muted);
  line-height:1.5;
}
.settingsBlock--dangerZone{
  padding-top:8px;
  border-top:1px dashed rgba(255,255,255,.12);
}
.settingsDelete{
  display:inline-block;
  margin-top:10px;
  padding:0;
  border:0;
  background:none;
  cursor:pointer;
  font-size:13px;
  font-family:inherit;
  color:rgba(255,255,255,.55);
  text-decoration:underline;
  text-underline-offset:3px;
}
.settingsDelete:hover{color:rgba(255,255,255,.78)}
.settingsDelete:focus-visible{
  outline:2px solid var(--brand);
  outline-offset:3px;
  border-radius:4px;
}

@media (min-width: 600px){
  .sheet:not([hidden]){
    align-items:center;
    padding:20px;
  }
  .sheet__panel{
    margin:0;
    border-radius:var(--radius2);
    border-bottom:1px solid var(--border);
  }
}

@media (max-width: 979px){
  .menuToggle{display:flex}
  .drawer{
    position:fixed;
    top:56px;
    left:0;
    bottom:0;
    width:min(420px, 100%);
    max-width:100%;
    padding:14px 14px 20px;
    flex-direction:column;
    align-items:stretch;
    justify-content:flex-start;
    gap:12px;
    background:rgba(11,18,32,.98);
    border-right:1px solid var(--border);
    box-shadow:12px 0 40px rgba(0,0,0,.55);
    transform:translate3d(-105%,0,0);
    transition:transform .22s ease;
    z-index:var(--z-drawer);
    overflow-y:auto;
    overflow-x:hidden;
    -webkit-overflow-scrolling:touch;
  }
  .drawer.is-open{
    transform:translate3d(0,0,0);
  }
  .search{
    flex-direction:column;
    align-items:stretch;
  }
  .search .field{border-radius:14px}
  .search .select,
  .search .btn{width:100%}
  .brand{
    flex:1;
    padding-right:4px;
  }
}

@media (min-width: 980px){
  .topbar__inner{
    padding:14px 14px;
    flex-wrap:wrap;
    row-gap:10px;
  }
  .brand{
    flex:0 0 auto;
    min-width:200px;
    max-width:280px;
  }
  .drawer{
    flex:1;
    min-width:320px;
  }
  .layout{
    grid-template-columns:2fr 1fr;
    align-items:stretch;
    gap:14px;
    padding:14px;
    height:calc(100svh - 72px - 44px);
    max-height:calc(100svh - 72px - 44px);
  }
  .card--map{
    display:flex;
    flex-direction:column;
    min-height:0;
  }
  .map{
    flex:1;
    height:auto;
    min-height:400px;
  }
  .card--side{
    display:flex;
    flex-direction:column;
    min-height:0;
    min-width:0;
  }
  .card--side .list{
    flex:1;
    min-height:0;
    overflow:auto;
    max-height:none;
  }
}

.progressCard{
  margin-top:18px;
  padding:16px 14px;
  border-radius:16px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.04);
  scroll-margin-top:80px;
}
.progressCard__title{
  margin:0 0 8px;
  font-size:18px;
  font-weight:750;
  line-height:1.25;
}
.progressCard__lead{
  margin:0 0 14px;
  font-size:13px;
  color:var(--muted);
  line-height:1.45;
}
.progressCard__intro{
  margin:0 0 14px;
  font-size:13px;
  color:var(--muted);
  line-height:1.45;
}
.progressRow{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding:12px 0;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.progressRow:last-child{border-bottom:0}
.progressRow__text{flex:1;min-width:0}
.progressRow__num{
  font-size:11px;
  font-weight:750;
  color:var(--brand);
  letter-spacing:.03em;
  margin-bottom:4px;
}
.progressRow__title{font-size:15px;font-weight:650;color:var(--text)}
.progressRow__desc{
  font-size:12px;
  color:var(--muted);
  line-height:1.4;
  margin-top:4px;
}
.switch--progress{flex-shrink:0}
.chip--stage{
  border-color:rgba(110,231,255,.35);
  color:#bae6fd;
  background:rgba(110,231,255,.08);
}
.link--tiny{
  font-size:12px;
  padding:5px 10px;
  border-radius:999px;
}

/* Страница одного храма: полная прокрутка, без обрезки карточки как у карты */
body.page--place{
  display:block;
  min-height:100%;
  background-color:var(--bg);
  background-image:none;
}
@media (min-width: 980px){
  body.page--place{
    background-color:var(--bg);
    background-image:none;
  }
}
html.page--place{
  background-color:var(--bg);
  min-height:100%;
}
body.page--place .layout{
  flex:none;
  min-height:0;
  max-height:none;
  height:auto;
}
body.page--place .card{
  overflow:visible;
}

.extendedPanel{
  margin-top:24px;
  padding-top:18px;
  border-top:1px solid rgba(255,255,255,.12);
}
.extendedPanel__bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  flex-wrap:wrap;
}
.extendedPanel__barText{
  flex:1;
  min-width:0;
}
.extendedPanel__label{
  display:block;
  font-size:16px;
  font-weight:700;
  color:var(--text);
}
.extendedPanel__hint{
  display:block;
  font-size:12px;
  color:var(--muted);
  margin-top:4px;
  line-height:1.35;
}
.extendedPanel__body{
  margin-top:12px;
}
.visitStagesError{
  margin:0 0 12px;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(251,113,133,.45);
  background:rgba(251,113,133,.10);
  color:#fecdd3;
  font-size:13px;
  line-height:1.4;
}

/* Leaflet tweaks */
.leaflet-container{
  font: 14px/1.2 var(--font);
}
.leaflet-popup-content-wrapper{
  border-radius:16px;
  background:rgba(11,18,32,.95);
  color:var(--text);
  border:1px solid rgba(255,255,255,.12);
}
.leaflet-popup-tip{
  background:rgba(11,18,32,.95);
}
