:root {
  --ink: #20241f;
  --muted: #687066;
  --paper: #f4f2eb;
  --panel: #ffffff;
  --line: #d9ddd5;
  --green: #315b45;
  --green-dark: #213d2f;
  --green-soft: #e6efe9;
  --sand: #d7c6a2;
  --sand-soft: #eee6d5;
  --danger-soft: #f4e6e2;
  --shadow: 0 18px 48px rgba(34, 49, 39, .12);
  --radius: 18px;
  --header-height: 156px;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--ink);
  background: var(--paper);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; min-width: 320px; min-height: 100vh; display: flex; flex-direction: column; background: var(--paper); color: var(--ink); }
main { flex: 1 0 auto; }
img { max-width: 100%; display: block; }
a { color: inherit; }
button, input { font: inherit; }
button { color: inherit; }

.site-header {
  min-height: var(--header-height);
  padding: 0 clamp(18px, 4.5vw, 68px);
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: clamp(22px, 3vw, 48px);
  background: rgba(244, 242, 235, .94);
  border-bottom: 1px solid rgba(49, 91, 69, .14);
  position: sticky;
  top: 0;
  z-index: 1000;
  backdrop-filter: blur(14px);
}

.brand {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  min-width: 0;
  height: var(--header-height);
  padding: 10px 0;
  overflow: visible;
  text-decoration: none;
}
.brand img {
  display: block;
  width: auto;
  height: auto;
  max-width: 190px;
  max-height: calc(var(--header-height) - 20px);
  object-fit: contain;
  object-position: left center;
}
.site-title {
  flex: 1 1 360px;
  max-width: 580px;
  margin-right: auto;
  color: var(--green-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(20px, 2.1vw, 31px);
  font-weight: 500;
  line-height: 1.12;
  letter-spacing: -.025em;
  text-align: center;
  text-wrap: balance;
}
.top-nav { display: flex; align-items: center; align-self: stretch; gap: 30px; }
.top-nav a {
  min-height: var(--header-height);
  padding: 0;
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  color: var(--muted);
  font-size: 14px;
  border-bottom: 3px solid transparent;
}
.top-nav a:hover, .top-nav a.active { color: var(--ink); border-bottom-color: var(--green); }
.menu-button { display: none; border: 1px solid var(--line); background: var(--panel); border-radius: 10px; padding: 9px 13px; cursor: pointer; }
.mobile-nav { padding: 10px 18px 14px; background: var(--panel); border-bottom: 1px solid var(--line); position: sticky; top: var(--header-height); z-index: 999; }
.mobile-nav a { display: block; padding: 10px 0; text-decoration: none; }

.page-hero {
  padding: 64px clamp(18px, 5vw, 76px) 54px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 38px;
  background: #182d23;
  color: #ffffff;
  border-bottom: 1px solid rgba(255,255,255,.14);
}
.page-hero.compact { min-height: 260px; }
.page-hero-copy { max-width: 850px; }
.eyebrow { display: block; margin-bottom: 13px; color: var(--green); font-size: 12px; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
h1, .display-title { margin: 0; font-family: Georgia, "Times New Roman", serif; font-size: clamp(40px, 6.5vw, 76px); line-height: .98; font-weight: 500; letter-spacing: -.045em; }
.page-hero p { max-width: 760px; margin: 20px 0 0; color: rgba(255,255,255,.72); font-size: clamp(16px, 2vw, 20px); line-height: 1.55; }
.hero-stat { min-width: 165px; padding: 18px 20px; border-left: 1px solid rgba(255,255,255,.22); }
.hero-stat strong { display: block; color: #dce9e1; font-family: Georgia, serif; font-size: 56px; font-weight: 500; line-height: 1; }
.hero-stat span { display: block; margin-top: 8px; color: rgba(255,255,255,.65); font-size: 13px; }

.hero-actions { display: flex; align-items: flex-end; margin-left: auto; }
.vk-propose-cta { min-height: 46px; padding: 0 18px; border-radius: 12px; border: 1px solid var(--green); display: inline-flex; align-items: center; justify-content: center; gap: 8px; background: rgba(255,255,255,.78); color: var(--green); font-size: 14px; font-weight: 700; text-decoration: none; box-shadow: 0 10px 24px rgba(34, 49, 39, .08); transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s ease; }
.vk-propose-cta:hover { background: var(--green); color: white; border-color: var(--green); transform: translateY(-1px); }
.vk-propose-cta:focus-visible { outline: 3px solid rgba(49, 91, 69, .18); outline-offset: 2px; }
.vk-propose-hero { white-space: nowrap; }

.button { min-height: 42px; padding: 0 15px; border-radius: 11px; border: 1px solid transparent; display: inline-flex; align-items: center; justify-content: center; gap: 7px; cursor: pointer; font-size: 13px; font-weight: 650; text-decoration: none; }
.button.primary { background: var(--green); color: white; }
.button.primary:hover { background: var(--green-dark); }
.button.secondary { background: white; border-color: var(--line); }
.button.secondary:hover { border-color: var(--green); }
.text-link { color: var(--green); text-underline-offset: 3px; }

.map-explorer { --sidebar-width: 440px; height: calc(100vh - var(--header-height)); min-height: 680px; display: grid; grid-template-columns: minmax(360px, var(--sidebar-width)) 12px minmax(0, 1fr); background: var(--panel); }
.map-sidebar { min-width: 0; display: flex; flex-direction: column; border-right: 1px solid var(--line); background: var(--panel); overflow: hidden; grid-column: 1; }
.map-sidebar-controls { padding: 20px 18px 15px; border-bottom: 1px solid var(--line); }
.search-box { display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 13px; border: 1px solid var(--line); border-radius: 12px; background: #fafbf8; }
.search-box:focus-within { border-color: var(--green); box-shadow: 0 0 0 3px rgba(49, 91, 69, .12); }
.search-box span { color: var(--muted); font-size: 23px; }
.search-box input { width: 100%; height: 46px; border: 0; outline: 0; background: transparent; color: var(--ink); }
.control-row { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-top: 13px; }
.control-row h2 { margin: 0; font-size: 14px; }
.text-button { border: 0; background: transparent; padding: 5px; color: var(--green); font-size: 12px; cursor: pointer; }
.filter-chips { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 13px; max-height: 205px; overflow: auto; padding-right: 5px; }
.filter-chip { border: 1px solid var(--line); border-radius: 999px; padding: 10px 14px; background: white; display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-size: 15px; line-height: 1.15; }
.filter-chip[aria-pressed="true"] { border-color: var(--chip-color); background: color-mix(in srgb, var(--chip-color) 13%, white); }
.filter-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--chip-color); flex: 0 0 auto; }
.filter-chip small { min-width: 22px; color: var(--muted); font-size: 13px; }

.photo-filter-button {
  margin-top: 14px;
  min-height: 40px;
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  color: var(--ink);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  transition: border-color .16s ease, background .16s ease, transform .16s ease;
}
.photo-filter-button:hover { border-color: #9db3a6; transform: translateY(-1px); }
.photo-filter-button[aria-pressed="true"] { border-color: var(--green); background: var(--green-soft); color: var(--green-dark); }
.photo-filter-icon { font-size: 15px; line-height: 1; }
.photo-filter-button small {
  min-width: 24px;
  margin-left: 2px;
  padding: 2px 6px;
  border-radius: 999px;
  background: rgba(35, 92, 66, .09);
  color: var(--muted);
  text-align: center;
  font-size: 10px;
}
.photo-filter-button[aria-pressed="true"] small { color: var(--green-dark); background: rgba(35, 92, 66, .13); }
.catalog-controls > .photo-filter-button { margin-top: 16px; }
.map-results-heading { padding: 13px 18px 9px; display: flex; align-items: center; justify-content: space-between; }
.map-results-heading h2 { margin: 0; font-size: 14px; }
.count-badge { min-width: 30px; height: 25px; padding: 0 8px; border-radius: 999px; display: grid; place-items: center; background: var(--green-soft); color: var(--green-dark); font-size: 12px; }
.map-object-list { flex: 1; overflow: auto; padding: 0 10px 18px; }
.map-list-card { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 8px; border-top: 1px solid var(--line); }
.map-list-card:first-child { border-top: 0; }
.map-list-main { width: 100%; padding: 12px 7px; border: 0; background: transparent; display: grid; grid-template-columns: 66px 1fr; align-items: center; gap: 11px; text-align: left; cursor: pointer; }

.map-list-thumb { width: 66px; height: 50px; border-radius: 10px; overflow: hidden; display: grid; place-items: center; background: #e8ebe5; }
.map-list-thumb img { width: 100%; height: 100%; object-fit: cover; }
.map-list-thumb .category-icon { width: 100%; height: 100%; border-radius: 0; }

.map-list-main:hover { background: #f7f8f4; }
.map-list-main strong { display: block; font-size: 14px; line-height: 1.25; }
.map-list-main small { display: block; margin-top: 4px; color: var(--muted); font-size: 11px; line-height: 1.35; }
.map-list-card > a { padding: 8px 6px; color: var(--green); font-size: 11px; text-decoration: none; }
.category-icon { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; color: var(--category-color); background: color-mix(in srgb, var(--category-color) 14%, white); font-size: 18px; }
.empty-state { padding: 25px 12px; color: var(--muted); text-align: center; font-size: 14px; }
.map-canvas-wrap { position: relative; min-width: 0; background: #e8ebe5; grid-column: 3; }

.sidebar-resizer {
  grid-column: 2;
  width: 12px;
  min-width: 12px;
  height: 100%;
  border: 0;
  padding: 0;
  position: relative;
  background: #eef1eb;
  cursor: col-resize;
  z-index: 20;
  touch-action: none;
}
.sidebar-resizer::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 4px;
  height: 78px;
  transform: translate(-50%, -50%);
  border-radius: 999px;
  background: #9eaaa1;
}
.sidebar-resizer:hover, .sidebar-resizer:focus-visible { background: #e1e8e1; outline: none; }
.sidebar-resizer:hover::before, .sidebar-resizer:focus-visible::before { background: var(--green); }
.map-explorer.is-resizing, .map-explorer.is-resizing * { cursor: col-resize !important; user-select: none !important; }
#map { width: 100%; height: 100%; z-index: 1; }
.map-status { position: absolute; z-index: 4; left: 50%; top: 50%; transform: translate(-50%, -50%); max-width: 430px; padding: 18px; border-radius: 12px; background: white; box-shadow: var(--shadow); color: var(--muted); text-align: center; }
.map-tools { position: absolute; z-index: 500; top: 12px; right: 12px; display: flex; gap: 8px; }
.map-tools button { border: 1px solid rgba(30, 50, 38, .18); border-radius: 10px; padding: 9px 12px; background: rgba(255, 255, 255, .96); box-shadow: 0 6px 16px rgba(35, 48, 39, .1); cursor: pointer; }
.map-touch-guard, .map-fullscreen-bar { display: none; }
.map-fullscreen-button { display: inline-flex; }
.map-fullscreen-bar {
  position: absolute;
  z-index: 800;
  left: 0;
  right: 0;
  top: 0;
  min-height: 58px;
  padding: max(10px, env(safe-area-inset-top)) 14px 10px;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  background: rgba(244, 242, 235, .97);
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(12px);
}
.map-fullscreen-bar strong { font-family: Georgia, serif; font-size: 20px; font-weight: 500; }
.map-fullscreen-bar button,
.map-touch-guard-card button {
  border: 0;
  border-radius: 11px;
  padding: 10px 14px;
  background: var(--green);
  color: white;
  font-weight: 700;
  cursor: pointer;
}
.map-touch-guard-card {
  max-width: min(92%, 360px);
  padding: 11px 12px;
  border: 1px solid rgba(30, 50, 38, .16);
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  background: rgba(255,255,255,.96);
  box-shadow: 0 8px 24px rgba(35,48,39,.14);
}
.map-touch-guard-card span { color: var(--muted); font-size: 12px; line-height: 1.35; }
body.map-fullscreen-open { overflow: hidden; overscroll-behavior: none; }
.map-canvas-wrap.is-fullscreen {
  position: fixed;
  z-index: 3000;
  inset: 0;
  width: 100%;
  height: 100dvh;
  min-height: 0;
  background: #e8ebe5;
}
.map-canvas-wrap.is-fullscreen .map-touch-guard { display: none; }
.map-canvas-wrap.is-fullscreen .map-fullscreen-bar { display: flex; }
.map-canvas-wrap.is-fullscreen .map-tools { top: 72px; right: 14px; }
.map-canvas-wrap.is-fullscreen .map-fullscreen-button { display: none; }
.map-canvas-wrap.is-fullscreen .leaflet-control-zoom { margin-top: 68px; }
.map-canvas-wrap.is-fullscreen #map { height: 100%; }

.geo-category-div-icon { background: transparent; border: 0; }
.geo-category-marker {
  width: 40px;
  height: 52px;
  position: relative;
  transition: transform .16s ease, filter .16s ease;
  filter: drop-shadow(0 5px 6px rgba(23, 37, 29, .28));
  transform-origin: 50% 96%;
}
.geo-pin-shape { position: absolute; inset: 0; width: 40px; height: 52px; overflow: visible; }
.geo-pin-shape path {
  fill: var(--marker);
  stroke: rgba(255, 255, 255, .96);
  stroke-width: 2.2;
  vector-effect: non-scaling-stroke;
}
.geo-pin-symbol {
  position: absolute;
  left: 9px;
  top: 8px;
  width: 22px;
  height: 22px;
  display: grid;
  place-items: center;
  color: white;
  pointer-events: none;
}
.geo-pin-symbol svg {
  width: 21px;
  height: 21px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
  overflow: visible;
}
.leaflet-marker-icon:hover .geo-category-marker,
.leaflet-marker-icon:focus .geo-category-marker,
.leaflet-marker-icon.is-selected .geo-category-marker {
  transform: translateY(-3px) scale(1.1);
  filter: drop-shadow(0 7px 8px rgba(23, 37, 29, .34));
}
.leaflet-marker-icon.is-selected .geo-pin-shape path { stroke-width: 3; }
.leaflet-tooltip {
  border: 0;
  border-radius: 8px;
  padding: 6px 9px;
  box-shadow: 0 8px 22px rgba(30, 45, 35, .16);
  color: var(--ink);
  font-size: 12px;
  font-weight: 650;
}
.leaflet-tooltip-top::before { border-top-color: white; }
@media (max-width: 700px) {
  .geo-category-marker { transform: scale(.9); }
  .leaflet-marker-icon:hover .geo-category-marker,
  .leaflet-marker-icon:focus .geo-category-marker,
  .leaflet-marker-icon.is-selected .geo-category-marker { transform: translateY(-2px) scale(.98); }
}
.leaflet-popup-content-wrapper { border-radius: 14px; box-shadow: var(--shadow); }
.map-popup { min-width: 230px; }
.map-popup-image { width: 100%; height: 124px; margin: -5px 0 10px; border-radius: 10px; object-fit: cover; background: #e8ebe5; }
.map-popup > span { display: block; color: var(--green); font-size: 10px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.map-popup strong { display: block; margin-top: 5px; font-size: 15px; }
.map-popup p { margin: 6px 0 11px; color: var(--muted); font-size: 12px; }
.map-popup a { color: var(--green); font-size: 12px; font-weight: 650; }

.project-note { padding: 66px clamp(18px, 5vw, 76px); display: grid; grid-template-columns: minmax(250px, .8fr) 1.4fr; gap: 60px; background: var(--green-dark); color: white; }
.project-note h2 { margin: 0; font-family: Georgia, serif; font-size: clamp(34px, 5vw, 56px); line-height: 1.05; font-weight: 500; letter-spacing: -.035em; }
.project-note .eyebrow { color: #bad3c4; }
.project-note-copy { max-width: 820px; }
.project-note-copy p { margin: 0 0 16px; color: rgba(255,255,255,.78); line-height: 1.7; }
.project-note-copy a { color: white; }

.catalog-shell { padding: 34px clamp(18px, 5vw, 76px) 80px; }
.catalog-controls { margin-bottom: 28px; padding: 18px; border: 1px solid var(--line); border-radius: var(--radius); background: white; }
.catalog-controls-top { display: grid; grid-template-columns: minmax(260px, 1fr) auto; gap: 12px; align-items: center; }
.catalog-controls .filter-chips { max-height: none; margin-top: 16px; }
.catalog-summary { margin: 18px 0 0; color: var(--muted); font-size: 13px; }
.catalog-summary strong { color: var(--ink); }
.objects-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
.catalog-card { min-width: 0; border: 1px solid var(--line); border-radius: var(--radius); background: white; overflow: hidden; display: flex; flex-direction: column; }
.catalog-image { aspect-ratio: 16 / 10; overflow: hidden; background: #e8ebe5; text-decoration: none; }
.catalog-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.catalog-card:hover .catalog-image img { transform: scale(1.025); }
.object-placeholder, .object-hero-placeholder { width: 100%; height: 100%; display: grid; place-items: center; color: var(--category-color); background: linear-gradient(135deg, color-mix(in srgb, var(--category-color) 18%, white), var(--sand-soft)); font-family: Georgia, serif; font-size: 78px; }
.catalog-card-body { padding: 20px; display: flex; flex-direction: column; flex: 1; }
.object-category { display: inline-flex; align-items: center; align-self: flex-start; gap: 6px; color: var(--category-color); font-size: 10px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.catalog-card h2 { margin: 10px 0 5px; font-family: Georgia, serif; font-size: 25px; line-height: 1.08; font-weight: 500; }
.catalog-card h2 a { text-decoration: none; }
.catalog-card h2 a:hover { color: var(--green); }
.object-place { margin: 0 0 13px !important; color: var(--muted) !important; font-size: 12px !important; }
.catalog-card-body > p { margin: 0; color: #515851; font-size: 14px; line-height: 1.58; }
.catalog-actions { margin-top: auto; padding-top: 18px; display: flex; flex-wrap: wrap; gap: 8px; }
.catalog-actions .button { min-height: 38px; }

.breadcrumbs { max-width: 1180px; margin: 0 auto; padding: 26px clamp(18px, 4vw, 42px) 0; display: flex; flex-wrap: wrap; gap: 7px; color: var(--muted); font-size: 12px; }
.breadcrumbs a { color: var(--green); text-decoration: none; }
.object-page { max-width: 1180px; margin: 0 auto; padding: 28px clamp(18px, 4vw, 42px) 84px; display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(340px, .95fr); gap: clamp(30px, 5vw, 68px); align-items: start; }
.object-page-media { min-width: 0; position: sticky; top: calc(var(--header-height) + 18px); }
.object-gallery-main { width: 100%; aspect-ratio: 4 / 3; padding: 0; border: 0; border-radius: 22px; overflow: hidden; background: #e8ebe5; position: relative; display: block; cursor: zoom-in; }
.object-gallery-main img { width: 100%; height: 100%; object-fit: cover; }
.object-gallery-counter { position: absolute; right: 14px; bottom: 14px; min-width: 54px; padding: 7px 10px; border-radius: 999px; background: rgba(24,45,35,.82); color: white; font-size: 12px; line-height: 1; text-align: center; backdrop-filter: blur(8px); }
.object-gallery-zoom { position: absolute; top: 14px; right: 14px; width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,.9); color: var(--green-dark); font-size: 22px; line-height: 1; box-shadow: 0 5px 16px rgba(0,0,0,.12); }
.object-gallery-thumbs { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 9px; margin-top: 10px; }
.object-gallery-thumb { aspect-ratio: 4 / 3; padding: 0; border: 2px solid transparent; border-radius: 10px; overflow: hidden; background: #e8ebe5; cursor: pointer; opacity: .72; transition: opacity .18s ease, border-color .18s ease, transform .18s ease; }
.object-gallery-thumb img { width: 100%; height: 100%; object-fit: cover; }
.object-gallery-thumb:hover { opacity: 1; transform: translateY(-1px); }
.object-gallery-thumb.is-active { opacity: 1; border-color: var(--green); }
.object-lightbox[hidden] { display: none; }
.object-lightbox { position: fixed; z-index: 5000; inset: 0; display: grid; place-items: center; padding: max(24px, env(safe-area-inset-top)) max(70px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(70px, env(safe-area-inset-left)); background: rgba(13,20,16,.94); }
.object-lightbox-figure { margin: 0; max-width: min(1400px, 100%); max-height: 100%; display: grid; justify-items: center; gap: 12px; }
.object-lightbox-figure img { max-width: 100%; max-height: calc(100vh - 100px); width: auto; height: auto; object-fit: contain; border-radius: 8px; box-shadow: 0 24px 70px rgba(0,0,0,.36); }
.object-lightbox-figure figcaption { color: rgba(255,255,255,.72); font-size: 13px; }
.object-lightbox-close, .object-lightbox-nav { position: fixed; z-index: 1; border: 1px solid rgba(255,255,255,.22); background: rgba(255,255,255,.12); color: white; cursor: pointer; backdrop-filter: blur(8px); }
.object-lightbox-close { top: max(18px, env(safe-area-inset-top)); right: max(18px, env(safe-area-inset-right)); width: 46px; height: 46px; border-radius: 50%; font-size: 31px; line-height: 1; }
.object-lightbox-nav { top: 50%; width: 50px; height: 66px; margin-top: -33px; border-radius: 14px; font-size: 42px; line-height: 1; }
.object-lightbox-nav.prev { left: max(14px, env(safe-area-inset-left)); }
.object-lightbox-nav.next { right: max(14px, env(safe-area-inset-right)); }
.object-lightbox-close:hover, .object-lightbox-nav:hover { background: rgba(255,255,255,.2); }
body.gallery-open { overflow: hidden; }
.object-page-content { padding-top: 10px; }
.object-page h1 { margin-top: 12px; font-size: clamp(42px, 6vw, 68px); }
.object-lead { margin: 21px 0 24px; color: #4d554e; font-size: 19px; line-height: 1.55; }
.object-facts { margin: 0; border-top: 1px solid var(--line); }
.object-facts > div { padding: 13px 0; display: grid; grid-template-columns: 135px 1fr; gap: 18px; border-bottom: 1px solid var(--line); }
.object-facts dt { color: var(--muted); font-size: 12px; }
.object-facts dd { margin: 0; font-size: 13px; }
.object-description { padding: 25px 0 5px; color: #444b45; line-height: 1.75; }
.object-description p { margin: 0; }
.object-page-actions { margin-top: 24px; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.object-page-actions .text-link { margin-left: 4px; font-size: 12px; }

.content-shell { max-width: 1180px; margin: 0 auto; padding: 52px clamp(18px, 4vw, 42px) 84px; }
.resource-nav { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 38px; }
.resource-nav a { padding: 8px 12px; border: 1px solid var(--line); border-radius: 999px; background: white; color: var(--green); font-size: 12px; text-decoration: none; }
.resource-section { scroll-margin-top: 105px; padding: 42px 0; border-top: 1px solid var(--line); }
.resource-section:first-of-type { border-top: 0; padding-top: 0; }
.resource-section-head { display: grid; grid-template-columns: minmax(220px, .7fr) 1.5fr; gap: 40px; margin-bottom: 24px; }
.resource-section h2 { margin: 0; font-family: Georgia, serif; font-size: clamp(30px, 4vw, 44px); line-height: 1.07; font-weight: 500; }
.resource-section-head p { margin: 3px 0 0; color: var(--muted); line-height: 1.65; }
.resource-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.resource-card { padding: 18px; border: 1px solid var(--line); border-radius: 14px; background: white; }
.resource-card h3 { margin: 0 0 8px; font-size: 16px; }
.resource-card h3 a { color: var(--green); text-underline-offset: 3px; }
.resource-card p { margin: 0; color: #555c56; font-size: 13px; line-height: 1.58; }
.resource-card.full { grid-column: 1 / -1; }
.resource-list { margin: 0; padding-left: 21px; color: #4e554f; line-height: 1.7; }
.resource-list li + li { margin-top: 9px; }

.contact-layout { max-width: 1120px; margin: 0 auto; padding: 56px clamp(18px, 4vw, 42px) 84px; display: grid; grid-template-columns: minmax(300px, .85fr) 1.15fr; gap: clamp(36px, 6vw, 78px); align-items: start; }
.contact-photo { border-radius: 22px; overflow: hidden; background: #e8ebe5; }
.contact-photo img { width: 100%; height: auto; }
.contact-copy h2 { margin: 0; font-family: Georgia, serif; font-size: clamp(34px, 5vw, 54px); font-weight: 500; line-height: 1.08; }
.contact-copy > p { color: #4f5650; line-height: 1.72; }
.contact-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 28px; }
.contact-card { padding: 18px; border: 1px solid var(--line); border-radius: 14px; background: white; }
.contact-card span { display: block; color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .08em; }
.contact-card a, .contact-card strong { display: block; margin-top: 6px; color: var(--green); font-size: 15px; text-decoration: none; word-break: break-word; }
.contact-note { margin-top: 28px; padding: 20px; border-radius: 14px; background: var(--green-soft); color: var(--green-dark); line-height: 1.6; }

.contact-propose-wrap { margin-top: 28px; display: flex; }
.vk-propose-contact { min-width: min(100%, 360px); }

.data-error { width: 100%; padding: 24px; border: 1px solid #dec7bf; border-radius: 14px; background: var(--danger-soft); color: #65443b; }
.data-error strong { display: block; margin-bottom: 6px; }
.data-error p { margin: 0; line-height: 1.55; }

.site-footer { margin-top: auto; padding: 36px clamp(18px, 5vw, 76px); display: grid; grid-template-columns: 1fr auto; gap: 28px; align-items: end; background: #182d23; color: white; }
.footer-brand img { display: none; }
.footer-brand p { max-width: 560px; margin: 0; color: rgba(255,255,255,.68); font-size: 13px; line-height: 1.55; }
.footer-links { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 16px; }
.footer-links a { color: rgba(255,255,255,.78); font-size: 12px; text-decoration: none; }
.footer-links a:hover { color: white; }
.footer-copy { grid-column: 1 / -1; padding-top: 20px; border-top: 1px solid rgba(255,255,255,.14); color: rgba(255,255,255,.55); font-size: 11px; }

@media (max-width: 1000px) {
  .site-header { gap: 22px; }
  .site-title { max-width: 410px; font-size: 22px; }
  .top-nav { gap: 20px; }
  .objects-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .object-page { grid-template-columns: 1fr; }
  .object-page-media { position: static; max-height: none; }
  .contact-layout { grid-template-columns: .9fr 1.1fr; }
}

@media (max-width: 820px) {
  :root { --header-height: 140px; }
  .site-header { gap: 14px; }
  .brand img { max-width: 138px; }
  .site-title { flex: 1 1 auto; max-width: none; margin-right: 0; font-size: clamp(16px, 3.6vw, 22px); text-align: left; }
  .top-nav { display: none; }
  .menu-button { display: inline-flex; }
  .page-hero { align-items: flex-start; flex-direction: column; }
  .hero-actions { margin-left: 0; align-items: flex-start; }
  .vk-propose-hero { white-space: normal; }
  .hero-stat { border-left: 0; border-top: 1px solid rgba(255,255,255,.22); padding-left: 0; }
  .map-explorer { height: auto; min-height: 0; grid-template-columns: 1fr; }
  .map-sidebar, .map-canvas-wrap { grid-column: 1; }
  .sidebar-resizer { display: none; }
  .map-sidebar { max-height: none; border-right: 0; border-bottom: 1px solid var(--line); }
  .map-object-list { flex: none; max-height: 255px; overscroll-behavior: contain; }
  .map-canvas-wrap { height: min(62svh, 560px); min-height: 420px; }
  .map-fullscreen-button { display: inline-flex; }
  .map-touch-guard {
    position: absolute;
    z-index: 450;
    inset: 0;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    padding: 18px 14px;
    background: linear-gradient(to top, rgba(30,45,35,.12), transparent 38%);
    touch-action: pan-y;
  }
  .map-canvas-wrap.is-fullscreen .map-tools {
    top: calc(max(10px, env(safe-area-inset-top)) + 62px);
    right: 12px;
  }
  .map-canvas-wrap.is-fullscreen .leaflet-control-zoom { margin-top: calc(max(10px, env(safe-area-inset-top)) + 64px); }

  .project-note, .resource-section-head { grid-template-columns: 1fr; gap: 22px; }
  .contact-layout { grid-template-columns: 1fr; }
  .contact-photo { max-width: 620px; }
  .site-footer { grid-template-columns: 1fr; }
  .footer-links { justify-content: flex-start; }
}

@media (max-width: 620px) {
  :root { --header-height: 140px; }
  .site-header { padding: 0 12px; gap: 9px; }
  .brand { height: var(--header-height); padding: 12px 0; }
  .brand img { width: auto; height: auto; max-width: 105px; max-height: calc(var(--header-height) - 24px); object-fit: contain; }
  .site-title { min-width: 0; font-size: clamp(13px, 4vw, 17px); line-height: 1.15; }
  .menu-button { flex: 0 0 auto; padding: 8px 10px; }
  .mobile-nav { top: var(--header-height); }
  .page-hero { padding-top: 44px; }
  .vk-propose-cta { width: 100%; text-align: center; }
  .hero-actions, .contact-propose-wrap { width: 100%; }
  h1, .display-title { font-size: 45px; }
  .map-sidebar-controls { padding: 15px 14px 12px; }
  .filter-chips { max-height: 170px; gap: 7px; }
  .filter-chip { padding: 9px 12px; font-size: 14px; }
  .filter-chip small { font-size: 12px; }
  .map-object-list { max-height: 220px; }
  .map-canvas-wrap { height: 54svh; min-height: 390px; }
  .map-tools { top: 10px; right: 10px; flex-wrap: wrap; justify-content: flex-end; max-width: calc(100% - 76px); }
  .map-tools button { padding: 9px 11px; }
  .map-touch-guard { padding-bottom: max(16px, env(safe-area-inset-bottom)); }
  .map-touch-guard-card { flex-direction: column; align-items: stretch; text-align: center; }

  .object-gallery-thumbs { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
  .object-gallery-thumb { border-radius: 8px; }
  .object-lightbox { padding: 68px 10px 22px; }
  .object-lightbox-figure img { max-height: calc(100svh - 118px); border-radius: 4px; }
  .object-lightbox-nav { top: auto; bottom: max(18px, env(safe-area-inset-bottom)); width: 46px; height: 46px; margin: 0; border-radius: 50%; font-size: 34px; }
  .object-lightbox-nav.prev { left: calc(50% - 58px); }
  .object-lightbox-nav.next { right: calc(50% - 58px); }
  .catalog-controls-top { grid-template-columns: 1fr; }
  .objects-grid, .resource-grid, .contact-cards { grid-template-columns: 1fr; }
  .resource-card.full { grid-column: auto; }
  .catalog-card h2 { font-size: 23px; }
  .object-facts > div { grid-template-columns: 1fr; gap: 5px; }
  .object-page-actions { align-items: stretch; }
  .object-page-actions .button { width: 100%; }
  .site-footer { padding-bottom: 28px; }
}

.footer-copy .leaflet-credit { display: block; margin-top: 6px; }
.footer-copy .leaflet-credit a { color: rgba(255,255,255,.72); text-underline-offset: 2px; }
.footer-copy .leaflet-credit a:hover { color: #fff; }


/* Legal pages */
.legal-shell {
  max-width: 980px;
  margin: 0 auto;
  padding: 54px clamp(18px, 5vw, 76px) 84px;
}
.legal-meta {
  margin: 0 0 30px;
  color: var(--muted);
  font-size: 13px;
}
.legal-document {
  padding: clamp(24px, 4vw, 44px);
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--panel);
  box-shadow: 0 12px 34px rgba(34, 49, 39, .06);
}
.legal-document h2 {
  margin: 38px 0 14px;
  color: var(--green-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(24px, 3vw, 32px);
  font-weight: 500;
  line-height: 1.2;
}
.legal-document h2:first-child { margin-top: 0; }
.legal-document p,
.legal-document li {
  color: #424a43;
  font-size: 15px;
  line-height: 1.72;
}
.legal-document ul { padding-left: 22px; }
.legal-document li + li { margin-top: 7px; }
.legal-document a { color: var(--green); text-underline-offset: 3px; }
.legal-contact {
  margin-top: 34px;
  padding: 20px 22px;
  border-radius: 14px;
  background: var(--green-soft);
}
.legal-contact p { margin: 5px 0; }
@media (max-width: 620px) {
  .legal-shell { padding-top: 34px; padding-bottom: 58px; }
  .legal-document { padding: 22px 18px; border-radius: 14px; }
}

/* Верхние информационные блоки страниц — в цвет футера */
.page-hero .eyebrow { color: #bad3c4; }
.page-hero .vk-propose-cta { background: rgba(255,255,255,.96); border-color: rgba(255,255,255,.7); color: #213d2f; box-shadow: none; }
.page-hero .vk-propose-cta:hover { background: #ffffff; border-color: #ffffff; color: #182d23; }
