:root {
  --bg: #f3f7f2;
  --bg-muted: #e8efe5;
  --text: #1f2d24;
  --text-muted: #5d6f62;
  --primary: #2d6a4f;
  --primary-dark: #1b4332;
  --border: #d6e0d8;
  --weekend: #fde8e8;
  --shadow: 0 10px 30px rgba(31, 45, 36, 0.08);
}

* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: 'Montserrat', system-ui, sans-serif;
  color: var(--text);
  background: radial-gradient(circle at top right, rgba(82,183,136,.12), transparent 30%), linear-gradient(180deg, #f8fbf7 0%, var(--bg) 100%);
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
main { flex: 1; }
a { color: var(--primary); }
.container { max-width: 72rem; margin: 0 auto; padding: 0 1rem; }
.container-narrow { max-width: 48rem; margin: 0 auto; padding: 0 1rem; }
.section { padding: 3rem 0; }
.section-muted { background: rgba(255,255,255,.6); }
.muted { color: var(--text-muted); }
.hidden { display: none !important; }
.mt-4 { margin-top: 1rem; }
.mt-6 { margin-top: 1.5rem; }
.mt-8 { margin-top: 2rem; }

.site-header { position: sticky; top: 0; z-index: 50; border-bottom: 1px solid var(--border); background: rgba(255,255,255,.9); backdrop-filter: blur(8px); }
.header-inner { display: flex; align-items: center; justify-content: space-between; min-height: 72px; gap: 1rem; }
.logo { display: flex; align-items: center; gap: .75rem; text-decoration: none; color: inherit; }
.logo strong { display: block; color: var(--primary-dark); }
.logo small { color: var(--text-muted); }
.logo-icon { font-size: 1.75rem; }
.menu-toggle { display: none; border: 1px solid var(--border); border-radius: .5rem; background: #fff; padding: .5rem .75rem; }
.site-nav { display: flex; gap: .25rem; align-items: center; }
.site-nav a { text-decoration: none; padding: .5rem .75rem; border-radius: 999px; font-size: .875rem; font-weight: 500; color: var(--text); }
.site-nav a.active, .site-nav a:hover { background: var(--bg-muted); color: var(--primary-dark); }
.vk-link { background: #0077ff !important; color: #fff !important; }

.site-footer { margin-top: 3rem; background: var(--primary-dark); color: #dce9e1; }
.footer-grid { display: grid; gap: 1.5rem; padding: 2.5rem 1rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.site-footer h3, .site-footer h4 { color: #fff; margin-top: 0; }
.site-footer a { color: #b7e4c7; }
.footer-copy { border-top: 1px solid rgba(255,255,255,.1); padding: 1rem; font-size: .875rem; color: #a7c4b5; }

.card { background: #fff; border: 1px solid var(--border); border-radius: 1rem; padding: 1.5rem; box-shadow: var(--shadow); }
.card-warn { border-color: #f0c987; background: #fffaf2; }
.field { display: flex; flex-direction: column; gap: .25rem; font-size: .875rem; font-weight: 500; }
.field input, .field textarea, .field select { border: 1px solid var(--border); border-radius: .75rem; padding: .625rem .75rem; font: inherit; }
.field textarea::placeholder { color: var(--text-muted); opacity: 1; }
.btn-primary, .btn-secondary, .btn-danger { display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; padding: .75rem 1.25rem; font-weight: 600; text-decoration: none; border: none; cursor: pointer; font: inherit; }
.btn-primary { background: var(--primary); color: #fff; box-shadow: 0 10px 15px rgba(27,67,50,.2); }
.btn-secondary { background: #fff; color: var(--primary-dark); border: 1px solid var(--border); }
.btn-danger { background: #fef2f2; color: #b91c1c; border: 1px solid #fecaca; }
.btn-sm { padding: .35rem .75rem; font-size: .75rem; }
.btn-block { width: 100%; }
.btn-row { display: flex; flex-wrap: wrap; gap: .75rem; }

.hero-grid { display: grid; gap: 2rem; align-items: center; grid-template-columns: 1.2fr .8fr; }
.eyebrow { font-size: .75rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--primary); }
.hero-title, .page-title, .section-title { font-family: 'PT Serif', Georgia, serif; color: var(--primary-dark); }
.hero-title { font-size: clamp(2.5rem, 6vw, 3.75rem); margin: 0; }
.page-title { font-size: 2.25rem; margin: 0 0 .5rem; }
.section-title { font-size: 1.875rem; }
.lead { font-size: 1.125rem; color: var(--text-muted); max-width: 36rem; }

.map-wrap { max-width: 50%; min-width: 260px; margin: 0 auto 1.5rem; overflow: hidden; border-radius: 1rem; border: 1px solid var(--border); background: #fff; box-shadow: var(--shadow); }
.map-wrap img { width: 100%; height: auto; display: block; }
.map-wrap--wide { max-width: 100%; }

.two-col { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.check-list { padding-left: 0; list-style: none; }
.price-list { list-style: none; padding: 0; margin: 0; }
.price-list li { display: flex; justify-content: space-between; gap: 1rem; padding: .5rem 0; border-bottom: 1px solid var(--border); }

.sector-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.sector-card { display: flex; gap: 1rem; border: 1px solid var(--border); border-radius: .75rem; padding: 1rem; background: #fff; }
.sector-card--link { text-decoration: none; color: inherit; transition: transform .15s ease, box-shadow .15s ease; }
.sector-card--link:hover { transform: translateY(-2px); box-shadow: var(--shadow); }
.sector-card__more { display: inline-block; margin-top: .5rem; font-size: .8125rem; font-weight: 600; color: var(--primary); }
.sector-card--premium { border-color: #f0c987; background: linear-gradient(180deg, #fffaf2, #fff); }
.sector-num { width: 2.75rem; height: 2.75rem; border-radius: 50%; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; flex-shrink: 0; }
.sector-rate { font-weight: 600; color: var(--primary-dark); margin: .5rem 0 0; }
.visit-info { margin-top: 1.5rem; }
.section-title-sm { font-family: 'PT Serif', Georgia, serif; color: var(--primary-dark); font-size: 1.25rem; margin: 0 0 .75rem; }
.visit-info p { margin: 0 0 .75rem; line-height: 1.6; }
.visit-info p:last-child { margin-bottom: 0; }

.book-grid { display: grid; gap: 1.25rem; grid-template-columns: 1.3fr .7fr; }
.sector-fieldset { border: 1px solid var(--border); border-radius: .75rem; padding: 1rem; }
.sector-picker { display: grid; grid-template-columns: repeat(6, 1fr); gap: .5rem; }
.sector-btn { min-height: 3.5rem; border: 1px solid var(--border); border-radius: .75rem; background: #fff; cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.sector-btn.selected { border-color: var(--primary); background: #e9f5ee; box-shadow: inset 0 0 0 1px var(--primary); }
.sector-btn--premium { background: #fffaf2; }
.two-col-form, .three-col-form { display: grid; gap: .75rem; }
.two-col-form { grid-template-columns: 1fr 1fr; }
.three-col-form { grid-template-columns: repeat(3, 1fr); }
.checkbox-row { display: flex; flex-direction: column; gap: .5rem; font-size: .875rem; }
.half-day-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); margin-top: 1rem; }
.half-day-fieldset { border: 1px solid var(--border); border-radius: .75rem; padding: .75rem 1rem; margin: 0; }
.half-day-fieldset:disabled { opacity: .55; }
.half-day-fieldset legend { font-size: .875rem; font-weight: 600; padding: 0 .25rem; }
.half-day-option { display: flex; align-items: center; gap: .5rem; margin: .35rem 0; font-size: .875rem; cursor: pointer; }
.half-day-option.is-disabled { opacity: .45; cursor: not-allowed; }
.half-day-option input { margin: 0; }

.payment-card { background: var(--bg-muted); border-radius: .75rem; padding: 1rem; }
.payment-number { font-size: 1.125rem; font-weight: 700; letter-spacing: .05em; }
.payment-notice { border: 2px solid #fbbf24; background: #fffbeb; border-radius: .75rem; padding: 1rem; }
.payment-notice h4 { margin: 0 0 .5rem; color: #92400e; }
.link-arrow { font-weight: 600; text-decoration: none; }

.alert-success, .alert-error { border-radius: .75rem; padding: 1rem; }
.alert-success { background: #f0fdf4; border: 1px solid #86efac; color: #14532d; }
.alert-error { background: #fef2f2; border: 1px solid #fecaca; color: #7f1d1d; }
.error-text { color: #b91c1c; font-size: .875rem; }

.calendar-nav { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; }
.legend { display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: 1rem; font-size: .875rem; color: var(--text-muted); }
.legend-dot { display: inline-block; width: .75rem; height: .75rem; border-radius: .125rem; margin-right: .25rem; vertical-align: middle; }
.legend-dot.weekend { background: var(--weekend); border: 1px solid #f5bcbc; }
.legend-dot.house { background: #fff0d6; border: 1px solid #e8c98d; }
.legend-dot.pending { background: #fef3c7; border: 1px dashed #d97706; }
.legend-dot.confirmed { background: #4ade80; }
.legend-dot.half-left { background: linear-gradient(to right, #4ade80 50%, #fff 50%); border: 1px solid var(--border); }
.legend-dot.half-right { background: linear-gradient(to right, #fff 50%, #4ade80 50%); border: 1px solid var(--border); }

.calendar-wrap { overflow: auto; border-radius: 1rem; border: 1px solid var(--border); background: #fff; box-shadow: var(--shadow); }
.calendar-table { width: 100%; min-width: 980px; border-collapse: collapse; font-size: .75rem; }
.calendar-table th, .calendar-table td { border: 1px solid var(--border); }
.calendar-table thead th { padding: .5rem; color: #fff; background: var(--primary-dark); position: sticky; top: 0; }
.calendar-table thead th.house-col { background: #8a5a00; }
.sticky-date { position: sticky; left: 0; z-index: 2; background: #f8faf8; padding: .5rem; }
.sticky-date.weekend { background: var(--weekend); color: #991b1b; }
.cal-empty { height: 2.5rem; }
.cal-cell { position: relative; height: 2.5rem; padding: 0; }
.cal-bg { position: absolute; inset: 0; }
.cal-label { position: relative; z-index: 1; height: 100%; display: flex; align-items: center; font-size: 11px; font-weight: 600; padding: 0 2px; }
.cal-label--center { justify-content: center; text-align: center; }
.cal-label--left { justify-content: flex-start; }
.cal-label--right { justify-content: flex-end; }

.prose h2 { font-family: 'PT Serif', Georgia, serif; color: var(--primary-dark); }
.routes-grid { display: grid; gap: 1.25rem; grid-template-columns: 1fr 1fr; }
.routes-list { display: flex; flex-direction: column; gap: 1rem; }

.admin-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: 1.5rem; flex-wrap: wrap; }
.table-wrap { overflow: auto; }
.admin-table { width: 100%; border-collapse: collapse; font-size: .875rem; }
.admin-table th, .admin-table td { padding: .75rem; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }
.admin-actions { display: flex; flex-wrap: wrap; gap: .35rem; }
.status-pending { background: #fef3c7; color: #92400e; border-radius: 999px; padding: .125rem .5rem; font-size: .7rem; font-weight: 700; }
.status-confirmed { background: #dcfce7; color: #166534; border-radius: 999px; padding: .125rem .5rem; font-size: .7rem; font-weight: 700; }
.status-cancelled { background: #fee2e2; color: #991b1b; border-radius: 999px; padding: .125rem .5rem; font-size: .7rem; font-weight: 700; }

.edit-dialog { border: none; border-radius: 1rem; padding: 0; max-width: 560px; width: calc(100% - 2rem); }
.edit-dialog::backdrop { background: rgba(0,0,0,.4); }

.visits-grid { display: grid; gap: 1rem; grid-template-columns: repeat(2, 1fr); }
.visits-full { grid-column: 1 / -1; }
.summary-box { margin-top: 1rem; padding: 1rem; background: var(--bg-muted); border-radius: .75rem; }
.pending-item { border: 1px solid #fde68a; background: #fffbeb; border-radius: .75rem; padding: .75rem; margin-bottom: .5rem; display: flex; justify-content: space-between; gap: .5rem; align-items: flex-start; }
.visit-item { display: flex; justify-content: space-between; gap: .5rem; padding: .75rem 0; border-bottom: 1px solid var(--border); }

.date-picker { position: relative; }
.date-picker-trigger { width: 100%; display: flex; justify-content: space-between; align-items: center; border: 1px solid var(--border); border-radius: .75rem; padding: .625rem .75rem; background: #fff; cursor: pointer; font: inherit; text-align: left; }
.date-picker-popup { position: absolute; top: calc(100% + 4px); left: 0; z-index: 50; width: min(100%, 18rem); background: #fff; border: 1px solid var(--border); border-radius: .75rem; padding: .75rem; box-shadow: var(--shadow); }
.date-picker-nav { width: 2rem; height: 2rem; border: 1px solid var(--border); border-radius: .5rem; background: #fff; cursor: pointer; }
.date-picker-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: .5rem; font-size: .875rem; font-weight: 600; }
.date-picker-weekdays, .date-picker-week { display: grid; grid-template-columns: repeat(7, 1fr); gap: .25rem; }
.date-picker-weekdays { margin-bottom: .25rem; font-size: .75rem; color: var(--text-muted); text-align: center; }
.date-picker-day { height: 2.25rem; border: none; border-radius: .5rem; background: transparent; cursor: pointer; font-size: .875rem; }
.date-picker-day:hover:not(:disabled) { background: var(--bg-muted); }
.date-picker-day.selected { background: #2563eb; color: #fff; font-weight: 600; }
.date-picker-day.unavailable { color: #9ca3af; text-decoration: line-through; background: #f3f4f6; }
.date-picker-day.partial-morning:not(:disabled):not(.selected) {
  background: linear-gradient(to right, #fde8e8 50%, #fff 50%);
}
.date-picker-day.partial-afternoon:not(:disabled):not(.selected) {
  background: linear-gradient(to right, #fff 50%, #fde8e8 50%);
}
.date-picker-day.partial-morning.selected,
.date-picker-day.partial-afternoon.selected {
  box-shadow: inset 0 0 0 2px #f59e0b;
}
.date-picker-legend {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem .75rem;
  margin-top: .5rem;
  padding-top: .5rem;
  border-top: 1px solid var(--border);
  font-size: .7rem;
  color: var(--text-muted);
}
.date-picker-legend span { display: inline-flex; align-items: center; gap: .35rem; }
.date-picker-day:disabled { opacity: .5; cursor: not-allowed; }
.date-picker-footer { display: flex; justify-content: space-between; margin-top: .5rem; padding-top: .5rem; border-top: 1px solid var(--border); font-size: .875rem; }
.date-picker-footer button { background: none; border: none; color: var(--primary); cursor: pointer; font-weight: 600; }

.fish-grid, .trophy-grid { display: grid; gap: 1.25rem; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.fish-card, .trophy-card { background: #fff; border: 1px solid var(--border); border-radius: 1rem; overflow: hidden; box-shadow: var(--shadow); }
.fish-card__media, .trophy-card__media { aspect-ratio: 4 / 3; background: var(--bg-muted); }
.fish-card__media-btn, .trophy-card__media-btn {
  display: block;
  width: 100%;
  height: 100%;
  padding: 0;
  border: none;
  background: none;
  cursor: zoom-in;
}
.fish-card__media img, .trophy-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fish-card__placeholder, .trophy-card__placeholder { height: 100%; display: flex; align-items: center; justify-content: center; font-size: 3rem; opacity: .35; }
.fish-card__body, .trophy-card__body { padding: 1rem; }
.fish-card__body h3, .trophy-card__body h3 { margin: 0 0 .5rem; font-size: 1rem; color: var(--primary-dark); }
.fish-card__meta, .trophy-card__meta { display: flex; justify-content: space-between; gap: .75rem; margin: 0; font-size: .875rem; }
.fish-card__link { display: inline-block; margin-top: .5rem; font-size: .8125rem; font-weight: 600; }
.empty-state { text-align: center; padding: 2rem; }

.sector-hero { border-radius: 1rem; overflow: hidden; border: 1px solid var(--border); background: #fff; box-shadow: var(--shadow); margin-bottom: 1.5rem; }
.sector-hero img { width: 100%; max-height: 420px; object-fit: cover; display: block; }
.sector-hero--empty { background: linear-gradient(180deg, var(--bg-muted), #fff); }
.sector-hero__placeholder { min-height: 240px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .5rem; }
.sector-hero__num { width: 4rem; height: 4rem; border-radius: 50%; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; font-weight: 700; }
.sector-gallery-wrap { position: relative; display: grid; grid-template-columns: auto 1fr auto; gap: .5rem; align-items: center; margin-bottom: .5rem; }
.sector-gallery-wrap--single { grid-template-columns: 1fr; max-width: 480px; }
.sector-gallery-nav { width: 2.25rem; height: 2.25rem; border: 1px solid var(--border); border-radius: 50%; background: #fff; color: var(--primary-dark); font-size: 1.25rem; line-height: 1; cursor: pointer; box-shadow: var(--shadow); }
.sector-gallery-nav:hover { background: var(--bg-muted); }
.sector-gallery { display: flex; gap: .75rem; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; padding: .25rem 0 1rem; scrollbar-width: thin; min-width: 0; }
.sector-gallery::-webkit-scrollbar { height: 6px; }
.sector-gallery::-webkit-scrollbar-thumb { background: #c5d4cb; border-radius: 999px; }
.sector-gallery__slide { flex: 0 0 min(78%, 480px); max-width: 480px; min-width: 0; scroll-snap-align: start; margin: 0; border-radius: 1rem; overflow: hidden; border: 1px solid var(--border); background: #fff; box-shadow: var(--shadow); }
.sector-gallery__zoom {
  display: block;
  width: 100%;
  padding: 0;
  border: none;
  background: none;
  cursor: zoom-in;
  aspect-ratio: 4 / 3;
  overflow: hidden;
}
.sector-gallery__zoom img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sector-gallery__slide figcaption { padding: .5rem .75rem; font-size: .8125rem; color: var(--text-muted); }
.sector-gallery-hint { margin: 0 0 1.25rem; font-size: .8125rem; text-align: center; }
.sector-badge { display: inline-block; margin: 0 0 1rem; padding: .25rem .75rem; border-radius: 999px; background: #fffaf2; border: 1px solid #f0c987; color: #9a6700; font-size: .8125rem; font-weight: 600; }
.sector-page-lead { max-width: 42rem; line-height: 1.7; color: var(--text-muted); }
.sector-features { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; padding: 0; margin: 1.25rem 0; }
.sector-features li { padding: .35rem .75rem; border-radius: 999px; background: var(--bg-muted); font-size: .8125rem; }

.lightbox {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2.5rem 3.5rem;
  background: rgba(10, 20, 14, .92);
}
.lightbox[hidden] { display: none !important; }
body.lightbox-open { overflow: hidden; }
.lightbox__figure { margin: 0; max-width: min(1100px, 100%); text-align: center; }
.lightbox__img {
  max-width: 100%;
  max-height: calc(100vh - 7rem);
  object-fit: contain;
  border-radius: .5rem;
  box-shadow: 0 20px 60px rgba(0, 0, 0, .45);
}
.lightbox__caption { margin-top: .75rem; color: #e8f0ea; font-size: .9375rem; }
.lightbox__close,
.lightbox__prev,
.lightbox__next {
  position: absolute;
  border: none;
  background: rgba(255, 255, 255, .12);
  color: #fff;
  cursor: pointer;
  line-height: 1;
  transition: background .15s;
}
.lightbox__close:hover,
.lightbox__prev:hover,
.lightbox__next:hover { background: rgba(255, 255, 255, .22); }
.lightbox__close {
  top: 1rem;
  right: 1rem;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  font-size: 1.75rem;
}
.lightbox__prev,
.lightbox__next {
  top: 50%;
  transform: translateY(-50%);
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  font-size: 2rem;
}
.lightbox__prev { left: 1rem; }
.lightbox__next { right: 1rem; }

@media (max-width: 640px) {
  .lightbox { padding: 3rem 1rem 1.5rem; }
  .lightbox__prev { left: .5rem; }
  .lightbox__next { right: .5rem; }
}

@media (max-width: 900px) {
  .hero-grid, .book-grid, .routes-grid, .visits-grid, .two-col-form, .three-col-form { grid-template-columns: 1fr; }
  .sector-picker { grid-template-columns: repeat(4, 1fr); }
  .menu-toggle { display: block; }
  .site-nav { display: none; position: absolute; left: 0; right: 0; top: 72px; flex-direction: column; background: #fff; border-bottom: 1px solid var(--border); padding: 1rem; }
  .site-nav.open { display: flex; }
}
