/* ── ГеоКадастр24 · Кадастровый анализ ─────────────────────────────
   Общий стиль всех страниц (редизайн 26.09.2026).
   Фирменная гамма geo-cadastr.ru: зелёный #64BE00 (кнопки), лайм #B0DB0F,
   тёмно-зелёный #1A5C3A (заголовки, акценты), светлые зеленоватые фоны.
   Шрифт системный (Inter — если стоит у посетителя; Google Fonts не
   подключаем: 152-ФЗ). Карточки 12–20 px, мягкие тени. Топографическая
   подложка — SVG в data URI (body::before): горизонтали, пункт ГГС и
   кресты координатной сетки. Условные знаки на главной (карта, иконки,
   разделители) — по ГКИНП-02-049-86 «Условные знаки для топопланов
   1:5000–1:500»; номера знаков — в комментариях index.html.
   Текст на зелёных кнопках — тёмно-зелёный: белый на #64BE00 не проходит
   по контрасту (2,4 : 1), тёмный — 6 : 1.
   ------------------------------------------------------------------ */
:root {
  --green:      #64BE00;
  --green-brd:  #5aab00;
  --green-3d:   #55AD0F;
  --green-dk:   #1A5C3A;
  --green-deep: #10301f;
  --green-ink:  #0b2e1b;
  --green-lt:   #f0f9e6;
  --green-lt2:  #e3f4d1;
  --lime:       #B0DB0F;
  --blue:       #47B0D3;
  --ink:        #1b2a22;
  --ink-2:      #3c4a42;
  --muted:      #5b6a61;
  --line:       #dbe6d6;
  --line-2:     #e9f0e6;
  --bg:         #f4f8f1;
  --card:       rgba(255,255,255,.95);
  --err:        #c0392b;
  --warn:       #9a6512;
  --warn-bg:    #fdf6e3;
  --focus:      #1A5C3A;
  --radius:     18px;
  --radius-sm:  12px;
  --pill:       50px;
  --shadow:     0 1px 2px rgba(26,92,58,.05), 0 10px 28px rgba(26,92,58,.08);
  --shadow-lg:  0 2px 4px rgba(26,92,58,.06), 0 18px 44px rgba(26,92,58,.14);
  --font:       "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue",
                Arial, "Noto Sans", sans-serif;
  --container:  1160px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; scroll-padding-top: 84px; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
}

body {
  margin: 0; min-width: 320px;
  font-family: var(--font); font-size: 16px; line-height: 1.55;
  color: var(--ink); background: var(--bg);
  -webkit-font-smoothing: antialiased;
  display: flex; flex-direction: column; min-height: 100vh;   /* подвал — внизу окна */
}
body > main { flex: 1 0 auto; }
/* Топографическая подложка: горизонтали, отметки высот, пункты. Неподвижна,
   под всем содержимым; мягкие цветные пятна поверх — для глубины. */
body::before {
  content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background-image:
    radial-gradient(900px 520px at -6% -8%, rgba(176,219,15,.14), transparent 62%),
    radial-gradient(820px 480px at 106% 6%, rgba(71,176,211,.10), transparent 60%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='640' height='640' viewBox='0 0 640 640'%3E%3Cg fill='none' stroke='%239dbca3' stroke-linejoin='round'%3E%3Cpath stroke-width='.9' stroke-opacity='.42' d='M292 208L294 221 298 229 304 236 310 240 320 241 330 240 339 235 347 227 351 218 353 208 354 198 352 186 349 175 343 163 336 154 330 149 320 146 314 147 307 150 301 157 296 166 293 179 291 193 292 208M277 205L279 230 284 246 292 256 304 261 314 262 326 261 339 257 349 253 362 242 368 227 370 214 369 198 365 179 359 163 352 150 342 138 333 130 323 126 314 125 304 127 298 132 290 141 285 152 281 166 278 186 277 205M330 96L320 92 310 91 294 93 285 99 278 105 268 122 263 138 259 157 247 269 246 285 249 294 256 300 266 301 349 288 368 287 381 289 390 293 400 302 422 336 433 349 445 355 454 354 461 349 467 340 475 320 478 298 477 287 474 277 468 269 461 263 429 247 416 237 406 221 385 166 370 138 351 112 339 102 330 96M158 589L160 595 163 599 170 601 176 599 182 595 186 589 187 582 186 576 179 571 170 573 162 579 158 589M282 80L298 75 314 76 330 81 346 92 362 108 376 128 389 150 410 191 422 210 435 221 474 240 486 251 494 266 497 282 495 304 488 333 480 353 470 371 461 380 454 383 448 383 438 380 429 372 391 320 381 311 368 305 358 303 346 302 330 303 314 307 285 317 246 336 230 339 221 337 214 332 210 323 210 310M282 80L273 86 266 94 261 102 256 115 250 141 244 202 239 230 232 256 215 294 210 310M127 605L129 614 134 621 147 629 160 631 173 631 182 629 192 625 198 620 206 611 214 592 216 579 216 570 210 554 202 545 192 541 179 541 163 548 150 558 138 573 130 589 127 605M131 9L115 5 107 0M131 560L115 586 104 611 102 621 102 630 104 637 107 640M212 640L220 630 226 618 231 602 234 582 235 566 232 550 227 538 221 530 211 523 202 520 192 520 179 523 166 528 154 536 142 547 131 560M147 11L131 9M160 12L147 11M202 7L186 11 160 12M208 3L202 7M185 326L188 342 196 355 208 364 214 366 224 367 234 365 243 362 285 333 307 322 323 317 336 315 349 316 358 317 374 325 386 336 397 350 419 384 432 399 445 406 451 407 458 406 467 402 477 391 484 378 492 358 505 317 513 288 515 269 514 253 506 237 494 224 480 216 445 202 429 190 416 174 374 109 358 89 346 77 333 68 317 61 301 58 282 60 269 65 259 72 252 80 246 93 241 118 235 189 229 221 218 250 192 298 186 314 185 326M192 36L163 33 141 32 122 34 109 38 98 45 89 54 64 95 61 98 54 99 45 93 32 77 26 64 23 51 25 38 31 29 39 19 54 6M81 618L64 637M243 640L251 579 252 560 249 541 244 525 235 512 224 503 211 500 195 501 179 506 160 516 144 529 131 542 118 559 81 618M442 176L458 184 493 196 509 205 520 214 527 224 532 234 536 246 536 259 532 275 496 384 486 405 474 421 464 427 451 429 442 427 432 422 419 408 391 362 378 346 362 333 346 328 336 328 323 330 301 339 282 352 250 380 234 389 218 391 208 389 198 384 182 372 173 358 168 342 167 323 171 307 176 291 208 237 215 221 220 205 224 170 228 58 227 48 221 42 211 39 192 36M442 176L432 168 419 155 371 89 346 61 330 50 314 43 294 39 256 35 246 32 243 29 241 22 243 0M13 1L0 13M0 150L1 160M1 163L1 173M1 173L2 182M2 182L4 189M4 189L8 195 16 200 38 203 80 201 99 197 112 192 127 182 137 170 144 154 152 122 156 115 160 113 166 115 173 122 179 135 182 146 186 173 183 195 177 211 158 253 148 282 139 317 136 346 137 362 141 374 150 390 170 416 179 429 183 442 182 451 173 467 131 512 80 582 67 597 54 609M39 621L13 640M54 609L39 621M265 422L261 438 262 454 267 470 285 512 293 534 296 557 297 598M390 410L378 384 365 368 357 362 349 358 333 356 323 357 314 362 296 374 278 397 265 422M297 598L299 608 304 618 312 627 326 640M326 1L349 26 400 97 426 124 438 133 451 138 464 142 501 147 522 156 586 208 595 218 597 224 596 237 589 253 554 303 539 330 528 358 512 419 506 433 496 445 480 456 461 464 442 467 426 465 416 459 409 451 402 438 390 410M640 13L632 22 626 35 622 48 621 61 624 80 637 122 640 143M8 237L0 242M106 531L80 568 61 591 42 607 0 637M8 237L22 231 38 226 61 223 83 221 99 222 113 224 122 227 129 234 133 246 134 262 120 339 120 365 122 378 126 387 151 429M116 515L106 531M151 429L155 445 152 461 143 477 116 515M302 490L317 508 326 516 346 528 353 538 354 554 348 589 347 605 348 621 354 640M640 242L624 255 579 298 566 312 557 325 547 342 541 360 530 413 525 429 516 445 502 458 480 471 445 482 416 487 406 486 400 484 396 480 392 474 380 422 374 406 368 394 358 382 349 375 339 372 330 372 317 377 304 388 294 403 286 422 284 438 286 454 291 470 302 490M518 128L502 126 458 123 442 118 426 108 406 89 387 64 366 29 354 0M634 3L624 13 615 26 609 38 604 54 603 67 603 80 611 116 613 131 611 147 605 159 598 164 592 166 579 164 566 157 538 136 518 128M15 259L0 271M15 259L29 251 42 246 54 243 70 242 83 242 96 246 102 251 109 259 113 272 113 288 111 307 101 352 100 374 106 394 128 432 131 442 132 451 129 467 120 490 94 534 74 563 60 579 45 594 1 624M621 0L607 16 597 32 587 54 575 90 572 96 566 102 554 106 474 109 458 108 442 103 426 93 413 82 398 64 385 42 375 19 370 0M624 285L582 321 572 333 564 346 553 371 543 429 537 442 528 455 515 466 499 476 442 498 422 507 406 518 397 529 383 554 371 589 368 614 370 640M640 625L621 640M640 271L624 285M307 432L308 445 312 454 318 464 326 471 336 474 346 473 352 470 358 463 362 454 364 445 362 426 355 408 346 398 339 395 333 394 326 396 320 400 315 406 310 414 307 432M0 301L26 278 35 272 48 266 61 264 70 264 80 268 88 275 93 288 93 304 89 323 76 362 74 371 74 381 77 390 82 400 107 438 111 448 112 461 110 477 103 499 88 528 72 554 59 570 45 583 29 595 0 614M605 3L590 22 566 60 557 70 550 76 538 83 518 89 493 94 470 96 454 94 442 90 429 82 416 71 403 55 394 38 386 19 382 0M598 339L587 352 579 365 573 381 563 429 556 445 544 461 534 470 518 480 460 502 438 513 422 525 408 541 395 563 385 592 381 618 382 640M640 301L598 339M640 614L621 627 607 640M0 424L13 423 26 424 38 427 51 434 61 440 70 450 77 459 81 470 82 480 81 493 78 506 72 522 57 547 36 570M18 582L0 593M36 570L23 579M472 518L454 527 442 536 429 549 419 563 410 582 404 602 401 621 402 640M402 0L407 22 416 40M451 69L442 65 432 58 422 49 416 40M491 70L470 72 451 69M640 424L624 429 611 437 598 448 570 477 550 492 531 500 472 518M582 0L557 32 538 50 515 63 491 70M640 593L607 614 595 625 582 640M0 444L13 443 26 444 38 447 48 452 58 461 64 470 68 480 69 490 68 502 64 515 57 531 49 544 29 564 0 583M411 0L414 13 419 26 424 35 432 45M640 444L627 449 614 456 576 490 557 503 538 510 480 525 461 534 447 544 430 563 418 586 414 598 411 614 411 640M570 0L552 22 538 37 522 48 502 56 483 61 464 61 448 56 432 45M640 583L618 595 602 606 586 621 570 640M55 502L55 493 53 483 48 475 42 469 32 463 22 461 13 460 0 462M39 541L22 557 0 572M55 502L50 522 39 541M640 462L630 465 618 473 579 505 563 515 544 521 506 528 486 532 470 539 454 549 438 566 426 589 420 614 419 627 420 640M528 32L512 42 493 49 474 51 458 48 445 42 434 32 426 18 420 0M547 14L528 32M558 0L547 14M640 572L611 586 595 598 579 614 558 640M40 499L35 489 26 481 13 478 0 480M17 547L0 558M40 499L39 512 35 525 27 538 17 547M541 7L525 22 509 32 490 39 474 40 458 36 446 29 436 16 430 0M640 480L630 483 621 489 586 520 570 529 554 534 512 537 496 539 477 546 461 556 445 572 434 592 430 605 428 618 430 640M546 0L541 7M640 558L605 574 589 585 576 600 546 640M519 640L530 627 540 611 546 595 546 582 542 573 535 566 522 562 509 560 493 562 480 567 467 576 459 586 452 598 448 614 449 627 453 640M490 16L480 17 470 15 461 10 454 2M515 3L502 12 490 16M495 640L506 634 514 627 522 616 526 605 527 595 524 586 518 579 509 576 496 575 483 580 474 587 466 598 462 611 462 624 467 634 475 640M483 2L477 1M490 1L483 2'/%3E%3Cpath stroke-width='1.5' stroke-opacity='.55' d='M358 138L349 126 339 117 330 111 317 107 304 108 295 112 287 118 280 128 274 144 270 163 266 192 265 227 265 246 267 259 272 269 278 275 288 279 301 280 336 275 368 266 378 259 383 253 387 243 388 234 387 218 383 198 373 166 358 138M0 64L1 70M3 35L0 45M107 115L105 144 102 154 95 163 86 170 74 175 61 176 48 174 38 168 31 157 18 115 1 70M32 1L13 19 3 35M262 515L256 502 246 487 237 477 230 473 224 471 214 471 202 475 189 482 160 500 138 520 118 543 86 589 74 605 58 621 34 640M470 443L458 448 445 449 435 446 426 441 413 425 389 381 378 363 362 348 346 342 336 341 323 343 310 348 301 354 284 368 246 408 237 416 230 419 221 420 211 418 195 408 179 395 166 381 156 365 152 349 151 330 155 307 163 285 173 264 196 224 202 211 206 195 209 176 210 150 207 122 203 96 195 77 190 70 182 65 173 60 163 57 150 56 141 58 131 61 125 65 114 77 109 93 107 115M262 515L267 531 270 547 271 566 269 618 271 630 275 640M320 25L288 11 281 6 275 0M320 25L336 35 352 51 410 124 432 147 442 154 454 160 493 170 512 178 525 187 537 198 548 211 555 221 561 237 561 246 559 256 553 272 528 324 512 371M512 371L504 400 496 419 486 432 470 443M640 46L640 64M54 410L38 398 22 389 13 386 0 385M8 598L0 603M54 410L77 429 91 448 94 458 96 467 94 490 89 506 82 522 71 541 61 555 38 578 8 598M640 385L624 390 608 401 598 413 568 458 557 470 547 478 525 490 477 507 458 515 440 525 426 538 410 560 399 586 392 614 392 640M589 7L558 48 547 58 538 65 525 72 506 79 486 82 467 83 454 82 442 77 429 69 419 60 410 47 401 32 395 16 392 0M594 0L589 7M640 603L614 621 594 640M38 323L42 326 47 323 51 317 51 313 48 311 42 314 39 320 38 323M0 504L10 504 13 506 16 512 16 518 13 525 4 534M534 0L522 12 509 21 496 26 480 29 467 27 454 21 447 13 440 0M534 640L548 621 562 595 571 576 572 563 566 557 559 554 538 549 518 548 499 549 483 554 467 562 456 573 445 589 440 605 438 624 440 640M640 504L630 508 622 515 614 525 610 534 610 538 613 541 618 543 630 541 640 537'/%3E%3C/g%3E%3Cg fill='%239ab39f' fill-opacity='.8' font-family='Arial,sans-serif' font-size='10.5'%3E%3Cpath d='M489 611l4-7 4 7z'/%3E%3Ctext x='500' y='612'%3E164,6%3C/text%3E%3C/g%3E%3C/svg%3E"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cpath d='M74 80h12M80 74v12' stroke='%239dbca3' stroke-opacity='.7' stroke-width='1'/%3E%3C/svg%3E");
  background-size: auto, auto, 640px 640px, 160px 160px;
  background-position: 0 0, 0 0, 0 0, 0 0;
}

img, svg { max-width: 100%; }
a { color: var(--green-dk); text-decoration: underline; text-decoration-color: rgba(26,92,58,.35);
    text-underline-offset: 2px; }
a:hover { text-decoration-color: currentColor; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.i { width: 20px; height: 20px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8;
     stroke-linecap: round; stroke-linejoin: round; }
h1, h2, h3 { color: var(--green-deep); }
code { font-family: ui-monospace, Consolas, monospace; font-size: .92em; }

.skip-link {
  position: absolute; left: 12px; top: -80px; z-index: 100;
  background: var(--green-dk); color: #fff; padding: 10px 16px; border-radius: 10px;
  font-weight: 600; text-decoration: none;
}
.skip-link:focus { top: 10px; color: #fff; }

.container { width: 100%; max-width: var(--container); margin: 0 auto; padding: 0 24px; }
.wrap { width: 100%; max-width: var(--container); margin: 0 auto; padding: 8px 24px 56px; }
.wrap.narrow { max-width: 620px; }

/* ── Шапка ────────────────────────────────────────────────────────── */
.site-header {
  position: sticky; top: 0; z-index: 50;
  background: rgba(250,252,248,.88);
  -webkit-backdrop-filter: saturate(1.4) blur(14px); backdrop-filter: saturate(1.4) blur(14px);
  border-bottom: 1px solid rgba(26,92,58,.10);
}
.header-inner { min-height: 72px; display: flex; align-items: center; gap: 24px; padding-top: 10px; padding-bottom: 10px; }
.brand {
  display: inline-flex; align-items: center; gap: 10px; flex: none;
  color: var(--green-deep); text-decoration: none; white-space: nowrap;
  font-weight: 800; font-size: 19px; letter-spacing: -.01em;
}
.brand-name em { font-style: normal; color: var(--green); }
.brand .logo { transition: transform .14s; }
.brand:hover .logo { transform: translateY(-2px); }

.logo {
  width: 44px; height: 44px; flex: none;
  display: grid; place-items: center; font-size: 22px;
  border-radius: 50%;
  background: linear-gradient(160deg, var(--lime), var(--green));
}
/* Фирменная эмблема: кружок белый, знак внутри целиком. */
.logo.brandmark { background: #fff; padding: 4px; box-shadow: 0 2px 8px rgba(26,92,58,.14), 0 0 0 1px rgba(26,92,58,.06); }
.logo.brandmark img { width: 100%; height: 100%; object-fit: contain; display: block; }

.nav { display: flex; align-items: center; justify-content: center; gap: 4px; flex: 1; }
.nav a {
  color: var(--ink-2); font-size: 14.5px; font-weight: 600; text-decoration: none;
  padding: 8px 12px; border-radius: 10px;
}
.nav a:hover { color: var(--green-dk); background: var(--green-lt); }
.header-actions { margin-left: auto; display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.header-actions > div { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }

/* Меню кабинета (главная): роль, ссылки, «Выйти» */
.user-menu { position: relative; }
.user-menu > summary { list-style: none; }
.user-menu > summary::-webkit-details-marker { display: none; }
.user-menu .caret { width: 16px; height: 16px; transition: transform .15s; }
.user-menu[open] .caret { transform: rotate(180deg); }
.menu-panel {
  position: absolute; right: 0; top: calc(100% + 8px); z-index: 60; min-width: 250px;
  display: grid; gap: 2px; padding: 8px;
  background: #fff; border: 1px solid var(--line); border-radius: 14px; box-shadow: var(--shadow-lg);
}
.menu-panel a, .menu-panel button {
  display: block; width: 100%; text-align: left; padding: 10px 12px; border-radius: 10px;
  background: none; border: 0; cursor: pointer; text-decoration: none;
  font: inherit; font-size: 14.5px; font-weight: 500; color: var(--ink);
}
.menu-panel a:hover, .menu-panel button:hover { background: var(--green-lt); color: var(--green-dk); }
.menu-who {
  padding: 6px 12px 10px; margin-bottom: 4px; border-bottom: 1px solid var(--line-2);
  font-size: 13px; color: var(--muted); overflow-wrap: anywhere;
}
.menu-who b { display: block; color: var(--ink); font-size: 14px; font-weight: 600; }

/* ── Заголовок внутренних страниц ─────────────────────────────────── */
.page-head { margin: 28px 0 20px; }
.page-head h1 { margin: 0; font-size: 30px; line-height: 1.2; font-weight: 800; letter-spacing: -.02em; }
.page-head p { margin: 6px 0 0; color: var(--muted); font-size: 15px; overflow-wrap: anywhere; }
.page-head .badge { vertical-align: middle; margin-left: 8px; }

/* ── Карточки ─────────────────────────────────────────────────────── */
.card {
  background: var(--card); border: 1px solid var(--line);
  border-radius: var(--radius); padding: 26px;
  margin-bottom: 18px; box-shadow: var(--shadow);
}
.card.lift { border-color: #c9e4ae; box-shadow: var(--shadow-lg); }
.card h2 { margin: 0 0 10px; font-size: 20px; font-weight: 700; letter-spacing: -.01em; }
.card h3 { margin: 0 0 4px; font-size: 16px; font-weight: 700; }

.section-title {
  display: flex; align-items: center; gap: 12px;
  margin: 34px 0 16px; font-size: 24px; font-weight: 800; letter-spacing: -.01em;
}
.section-title::before {
  content: ""; width: 6px; height: 28px; border-radius: 6px;
  background: linear-gradient(180deg, var(--lime), var(--green));
}

.grid { display: grid; gap: 16px; }
.grid > * { min-width: 0; }
.grid.c2 { grid-template-columns: repeat(2, 1fr); }
.grid.c3 { grid-template-columns: repeat(3, 1fr); }
.grid.c4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 880px) {
  .grid.c4 { grid-template-columns: repeat(2, 1fr); }
  .grid.c3 { grid-template-columns: 1fr; }
}
@media (max-width: 767px) {
  .grid.c2, .grid.c3, .grid.c4 { grid-template-columns: 1fr; }
}

/* ── Кнопки ───────────────────────────────────────────────────────── */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  cursor: pointer; font-family: inherit; font-weight: 700; font-size: 16px; line-height: 1.25;
  padding: 13px 26px; border-radius: var(--radius-sm); text-align: center;
  color: var(--green-ink); text-decoration: none;
  background: linear-gradient(135deg, #95d411 0%, var(--green) 58%, #5cb000 100%);
  border: 1px solid var(--green-brd);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35), 0 6px 16px rgba(100,190,0,.26);
  transition: transform .12s, box-shadow .12s, filter .12s, background-color .12s;
}
.btn:hover { filter: brightness(1.05) saturate(1.05); box-shadow: inset 0 1px 0 rgba(255,255,255,.35), 0 9px 22px rgba(100,190,0,.32); text-decoration: none; color: var(--green-ink); }
.btn:active { transform: translateY(1px); }
.btn:disabled, .btn[disabled] {
  background: #d5dcd2; border-color: #c9d1c6; color: #56615a; box-shadow: none;
  cursor: not-allowed; filter: none;
}
.btn.ghost {
  background: #fff; color: var(--green-dk); border: 1px solid #b7d99b;
  box-shadow: 0 1px 2px rgba(26,92,58,.06); font-weight: 600;
}
.btn.ghost:hover { background: var(--green-lt); border-color: var(--green); color: var(--green-dk); filter: none; }
.btn.accent { background: var(--green-dk); border-color: var(--green-dk); color: #fff; box-shadow: 0 6px 16px rgba(26,92,58,.24); }
.btn.accent:hover { background: #216f47; color: #fff; filter: none; }
.btn.big { padding: 16px 30px; font-size: 18px; width: 100%; }
.btn.small { padding: 8px 14px; font-size: 14px; border-radius: 10px; box-shadow: 0 3px 10px rgba(100,190,0,.2); }
.btn.ghost.small { box-shadow: 0 1px 2px rgba(26,92,58,.06); }
.btn.danger { background: var(--err); border-color: #a93226; color: #fff; box-shadow: 0 6px 16px rgba(192,57,43,.22); }
.btn.danger:hover { background: #d0473a; color: #fff; filter: none; }
.btn .i { width: 18px; height: 18px; }

/* ── Формы ────────────────────────────────────────────────────────── */
.field { margin-bottom: 16px; }
.field label { display: block; margin-bottom: 6px; font-weight: 600; font-size: 14px; }
.field input, .field textarea, .field select {
  width: 100%; padding: 12px 14px; font-size: 15px; font-family: inherit;
  border: 1px solid #cbd9c6; border-radius: var(--radius-sm); background: #fff; color: var(--ink);
}
.field input:focus, .field textarea:focus, .field select:focus {
  outline: 0; border-color: var(--green-dk); box-shadow: 0 0 0 3px rgba(100,190,0,.25);
}
.field input:focus-visible, .field textarea:focus-visible, .field select:focus-visible {
  outline: 2px solid var(--focus); outline-offset: 1px;
}

/* ── Чек-лист ─────────────────────────────────────────────────────── */
ol.checklist { list-style: none; padding: 0; margin: 18px 0; }
ol.checklist li {
  border: 1px solid var(--line); border-radius: 14px; padding: 14px 18px;
  margin-bottom: 10px; background: #fcfffa; transition: .15s;
}
ol.checklist li:hover { border-color: #bfe08f; }
ol.checklist li label { display: flex; align-items: center; gap: 12px; font-size: 15.5px; cursor: pointer; }
ol.checklist li label input { width: 20px; height: 20px; accent-color: var(--green); }
ol.checklist li .muted { margin: 7px 0 0 32px; }
details summary { cursor: pointer; }

/* ── Служебное ────────────────────────────────────────────────────── */
.muted { color: var(--muted); }
.small { font-size: 13.5px; }
.badge {
  display: inline-block; font-size: 12.5px; font-weight: 700;
  padding: 6px 13px; border-radius: var(--pill);
  background: var(--green-lt); color: var(--green-dk); border: 1px solid var(--green-lt2);
}
.badge.paid { background: var(--green-dk); color: #fff; border-color: var(--green-dk); }

.note {
  border: 1px solid var(--line); border-left: 4px solid var(--green);
  background: #fbfef8; border-radius: var(--radius-sm); padding: 13px 18px;
  font-size: 14.5px; margin-bottom: 16px;
}
.note.ok { border-left-color: var(--green); background: var(--green-lt); color: var(--green-deep); }
.note.warn { border-left-color: #d69e2e; background: var(--warn-bg); color: #6b4a07; }
.dev-note {
  border: 1px solid #f0e0b8; background: var(--warn-bg); color: #6b4a07;
  border-radius: var(--radius-sm); padding: 12px 18px; font-size: 14px; margin-bottom: 16px;
}
.err-box {
  border: 1px solid #f2c6c0; background: #fdf1ef; color: var(--err);
  border-radius: var(--radius-sm); padding: 13px 18px; font-size: 14.5px;
}

table.kv { width: 100%; border-collapse: collapse; font-size: 14.5px; }
table.kv td { padding: 10px 0; border-bottom: 1px solid var(--line); }
table.kv td:last-child { text-align: right; font-weight: 600; white-space: nowrap; padding-left: 10px; }
table.kv tr:last-child td { border-bottom: 0; }
table.kv .total-row td { font-size: 19px; font-weight: 800; color: var(--green-dk); padding-top: 14px; }

.status-line { display: flex; justify-content: space-between; gap: 12px; font-size: 14.5px; margin-bottom: 9px; }
.progress { height: 12px; background: #e6eee0; border-radius: var(--pill); overflow: hidden; }
.progress > div {
  height: 100%; border-radius: var(--pill);
  background: linear-gradient(90deg, var(--lime), var(--green));
  transition: width .4s ease;
}
.spin {
  display: inline-block; width: 15px; height: 15px; vertical-align: -2px;
  border: 2.5px solid #d7e6c4; border-top-color: var(--green-dk);
  border-radius: 50%; animation: sp .8s linear infinite; margin-right: 8px;
}
@keyframes sp { to { transform: rotate(360deg); } }

#map { height: 340px; border-radius: 14px; border: 1px solid var(--line); overflow: hidden; }

/* ── Результаты на карте: фильтры, поиск и список объектов ── */
.map-tools { margin-top: 12px; }
.map-filters { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 13px; }
.map-filters label { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; }
.map-search {
  width: 100%; margin: 8px 0; padding: 8px 10px;
  border: 1px solid #cbd9c6; border-radius: 10px; font: inherit; font-size: 13px;
}
.map-list { max-height: 300px; overflow: auto; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.map-row { padding: 8px 11px; border-bottom: 1px solid var(--line); cursor: pointer; }
.map-row:last-child { border-bottom: none; }
.map-row:hover { background: #f6faf4; }
.map-row.on { background: #eaf6e2; box-shadow: inset 3px 0 0 var(--green); }
.map-row b { display: block; font-size: 13px; font-weight: 600; }
.map-row span { color: var(--muted); font-size: 12px; }
/* Замечание «проверить на местности» (flags.py) — отдельной строкой под объектом */
.map-row span.map-warn { display: block; color: #9a4a06; margin-top: 2px; }
/* изыскание трассы: вариант → его участки (04.10.2026) */
.map-sub { padding: 7px 11px; font-size: 12px; font-weight: 600; color: var(--green-dk); background: #f6faf4;
  border-bottom: 1px solid var(--line); }
.map-sub.map-back { cursor: pointer; color: #0b6a80; }
.map-row.trace-zu { padding-left: 26px; }
.trace-edge summary { padding: 7px 11px; font-size: 12px; cursor: pointer; color: var(--muted);
  border-bottom: 1px solid var(--line); }
.map-tip { max-width: 320px; white-space: normal; }
/* «История»: сколько объектов требуют проверки на местности */
.flag-n { color: #9a4a06; font-size: 12px; white-space: nowrap; margin-left: 4px; }
.map-tag {
  display: inline-block; margin-right: 6px; padding: 1px 7px;
  border-radius: 20px; font-size: 11px; color: #fff; font-weight: 600;
}

/* ── Подвал ───────────────────────────────────────────────────────── */
.site-footer {
  margin-top: 40px; border-top: 1px solid rgba(26,92,58,.12);
  background: rgba(250,252,248,.86);
}
.footer-inner {
  display: grid; grid-template-columns: minmax(220px, 1fr) 2fr; gap: 14px 40px;
  align-items: start; padding-top: 28px; padding-bottom: 28px;
}
.footer-brand .brand { font-size: 17px; }
.footer-brand .logo { width: 38px; height: 38px; }
.footer-brand p { margin: 8px 0 0; font-size: 13.5px; color: var(--muted); max-width: 34ch; }
.footer-links { display: flex; flex-wrap: wrap; gap: 6px 22px; padding-top: 8px; }
.footer-links a { color: var(--ink-2); font-size: 14px; font-weight: 500; text-decoration: none; }
.footer-links a:hover { color: var(--green-dk); text-decoration: underline; }
.footer-note { grid-column: 1 / -1; margin: 6px 0 0; padding-top: 14px; border-top: 1px solid var(--line-2); font-size: 13px; color: var(--muted); }

/* ── История анализов ─────────────────────────────────────────────── */
.tbl-wrap { overflow-x: auto; margin: 0 -6px; }
.htable { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.htable th {
  text-align: left; font-size: 11.5px; text-transform: uppercase; letter-spacing: .04em;
  color: var(--muted); font-weight: 700; padding: 9px 10px;
  border-bottom: 2px solid var(--line); white-space: nowrap;
}
.htable th.sortable { cursor: pointer; user-select: none; }
.htable th.sortable:hover { color: var(--green-dk); }
.htable td { padding: 10px; border-bottom: 1px solid var(--line); vertical-align: top; }
.htable tr:hover td { background: var(--green-lt); }
.htable td.num { text-align: right; white-space: nowrap; }
.htable .fname { font-weight: 600; }
.htable .oid { font-family: ui-monospace, Consolas, monospace; font-size: 12px; color: var(--muted); }

.st {
  display: inline-block; padding: 3px 11px; border-radius: var(--pill);
  font-size: 12px; font-weight: 700; white-space: nowrap;
  background: #eef1ee; color: var(--ink-2);
}
.st.ready { background: var(--green-lt2); color: var(--green-dk); }
.st.running { background: #e2f1f8; color: #185d7b; }
.st.error { background: #fdeceb; color: var(--err); }
.st.cancelled { background: #f0f2f0; color: var(--muted); }

.filters { display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end; }
.filters .field { margin-bottom: 0; flex: 1 1 150px; min-width: 130px; }
.filters .field input, .filters .field select { padding: 10px 12px; font-size: 14px; }

.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; }
.stat { border: 1px solid var(--line); border-radius: 14px; padding: 14px 16px; background: #fbfef8; }
.stat b { display: block; font-size: 24px; font-weight: 800; color: var(--green-dk); line-height: 1.2; }
.stat span { font-size: 12.5px; color: var(--muted); }
.stat.cash { border-color: var(--green-dk); border-width: 2px; padding: 13px 15px; }

.card.danger { border-color: #f0b8b4; background: #fffbfb; }
.card.danger h2 { color: var(--err); }

.pager { display: flex; gap: 8px; align-items: center; justify-content: center; margin-top: 16px; flex-wrap: wrap; }
.linkbtn {
  background: none; border: 0; padding: 4px 8px; cursor: pointer;
  font: inherit; font-size: 12.5px; color: var(--err); text-decoration: underline;
}
.linkbtn:hover { color: #a8332a; }

/* Кнопка возврата под основным действием */
.after-action { margin-top: 14px; text-align: center; }

/* ── мессенджеры и оферта ── */
.messengers .msg-links { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 12px; }
.offer-ok { display: flex; gap: 10px; align-items: flex-start; margin: 14px 0 0; font-size: 14px; }
.offer-ok input { margin-top: 3px; width: 18px; height: 18px; flex: none; accent-color: var(--green-dk); }
.offer-text { line-height: 1.65; overflow-wrap: break-word; }
.offer-text h2, .offer-text h3 { margin-top: 1.3em; }
.offer-text h2:first-child, .offer-text > p:first-child + h2 { margin-top: .4em; }
.offer-text .htable { margin: 6px 0 10px; }
/* Таблицы в текстах документов (app/offer/*.html) на телефоне прокручиваются сами, не страница */
@media (max-width: 767px) { .offer-text table { display: block; max-width: 100%; overflow-x: auto; } }
.tabs { display: flex; gap: 8px; flex-wrap: wrap; margin: 6px 0 16px; }
.tab {
  border: 1px solid var(--line); background: #fff; border-radius: var(--radius-sm); padding: 9px 16px;
  font: inherit; font-size: 15px; font-weight: 600; color: var(--green-dk); cursor: pointer;
}
.tab:hover { border-color: var(--green); background: var(--green-lt); }
.tab.active { background: var(--green-dk); border-color: var(--green-dk); color: #fff; }
.kv-form { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
@media (max-width: 640px) { .kv-form { grid-template-columns: 1fr; } }

/* ── карта результатов во всю ширину (26.09.2026) ── */
.map-card { padding: 16px; }
.map-wide { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 16px; align-items: start; }
.map-wide #map { height: 65vh; min-height: 420px; }
.map-wide .map-tools { margin-top: 0; }
.map-wide .map-list { max-height: calc(65vh - 120px); min-height: 280px; }
@media (max-width: 900px) {
  .map-wide { grid-template-columns: 1fr; }
  .map-wide #map { height: 55vh; min-height: 320px; }
}
/* Снимок Esri тусклый — поднимаем яркость, контраст и насыщенность. */
.leaflet-tile.tiles-sat, .tiles-sat .leaflet-tile { filter: brightness(1.12) contrast(1.15) saturate(1.45); }

/* ══════════════════════════════════════════════════════════════════
   ГЛАВНАЯ
   ══════════════════════════════════════════════════════════════════ */
.notes { padding-top: 18px; }
.notes > :last-child { margin-bottom: 0; }

/* Первый экран (редизайн 06.10.2026): слева заголовок и карточка загрузки, справа карта;
   модули подбора — отдельным рядом .start под ним. Было 1260 px в высоту, стало ~700. */
.hero {
  display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
  gap: 44px; align-items: center; padding-top: 40px; padding-bottom: 12px;
}
.eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  margin: 0 0 14px; padding: 5px 12px 5px 10px; border-radius: var(--pill);
  font-size: 12.5px; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--green-dk);
  background: rgba(255,255,255,.8); border: 1px solid var(--green-lt2);
}
.eyebrow::before {
  content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--green);
  box-shadow: 0 0 0 3px rgba(100,190,0,.22);
}
.hero h1 {
  margin: 0 0 16px; font-size: clamp(32px, 3.9vw, 48px); line-height: 1.08;
  letter-spacing: -.03em; font-weight: 800;
}
.lead { margin: 0 0 24px; font-size: 17px; color: var(--ink-2); max-width: 56ch; }

/* Карточка «уже известны?»: вопрос, зона загрузки, три типа объекта */
.upload-card {
  padding: 22px 22px 18px; border-radius: 22px;
  background: rgba(255,255,255,.94); border: 1px solid var(--line);
  box-shadow: var(--shadow-lg);
}
.upload-card .path-q { margin-top: 0; }

/* Зона загрузки: вся — одна большая цель для щелчка и перетаскивания */
.drop {
  position: relative; display: flex; align-items: center; gap: 18px;
  cursor: pointer; padding: 14px 20px 14px 14px;
  border: 2px dashed #a9d77a; border-radius: 18px;
  background: rgba(240,249,230,.82); transition: border-color .15s, background-color .15s;
}
.drop:hover, .drop.hover { border-color: var(--green); background: var(--green-lt2); }
.drop.hover { border-style: solid; }
.drop:focus-within { outline: 3px solid var(--focus); outline-offset: 3px; }
.drop input[type=file] {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; opacity: 0;
}
.drop-cta {
  display: inline-flex; align-items: center; gap: 12px;
  padding: 16px 22px; border-radius: 14px; font-weight: 700; font-size: 17px;
  color: var(--green-ink);
  background: linear-gradient(135deg, #95d411 0%, var(--green) 58%, #5cb000 100%);
  border: 1px solid var(--green-brd);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35), 0 10px 22px rgba(100,190,0,.30);
  transition: filter .12s, box-shadow .12s;
}
.drop-cta .i { width: 22px; height: 22px; }
.drop-cta .arrow { margin-left: 6px; }
.drop:hover .drop-cta { filter: brightness(1.05); box-shadow: inset 0 1px 0 rgba(255,255,255,.35), 0 12px 26px rgba(100,190,0,.36); }
.drop-text { display: grid; gap: 2px; min-width: 0; overflow-wrap: anywhere; }
.drop-cta { flex: none; }
.drop-text b { font-size: 15px; font-weight: 600; }
.upload-msg { margin-top: 10px; color: var(--err); }

/* Два пути на главной: объект известен — загрузить файл; не выбран — модули подбора (06.10.2026) */
/* Правка трассы после анализа (09.10.2026) */
.route-edit { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0 0 10px; }
.route-edit[hidden] { display: none; }
.path-q { margin: 6px 0 6px; font-size: 19px; font-weight: 800; letter-spacing: -.01em; }
.path-sub { margin: 0 0 14px; color: var(--ink-2); font-size: 15px; max-width: 60ch; }
.path-note {
  display: flex; align-items: center; gap: 7px;
  margin: 14px 0 0; padding-top: 12px; border-top: 1px solid var(--line-2);
  font-size: 13.5px; color: var(--green-dk); font-weight: 600;
}
.path-note .i { width: 18px; height: 18px; }

/* Ряд модулей подбора под первым экраном: белые карточки, ведут на /ams, /place, /trace */
.start { padding-top: 28px; }
.start-head { display: grid; grid-template-columns: minmax(0, auto) minmax(0, 1fr); gap: 4px 28px;
  align-items: baseline; margin-bottom: 14px; }
.start-head .path-q { margin: 0; font-size: 22px; }
.start-head .path-sub { margin: 0; }
.modules { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; }
.module {
  display: flex; flex-direction: column; align-items: flex-start; gap: 12px; padding: 20px;
  border-radius: var(--radius); text-decoration: none; color: var(--ink);
  background: var(--card); border: 1px solid var(--line); box-shadow: var(--shadow);
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.module:hover { transform: translateY(-3px); border-color: #b7d99b; box-shadow: var(--shadow-lg); }
.module:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }
.module-t { display: grid; gap: 6px; min-width: 0; }
.module-t b { font-size: 16.5px; font-weight: 700; line-height: 1.3; color: var(--green-deep); }
.module-t small { font-size: 14px; line-height: 1.45; color: var(--muted); }
.module-go {
  margin-top: auto; display: inline-flex; align-items: center; gap: 6px;
  font-size: 14.5px; font-weight: 700; color: var(--green-dk);
}
.module-go .i { width: 18px; height: 18px; transition: transform .15s; }
.module:hover .module-go .i { transform: translateX(3px); }
.upload-msg:empty { display: none; }

.kinds-title { margin: 18px 0 8px; font-size: 13.5px; font-weight: 600; color: var(--muted); letter-spacing: 0; }
.kinds { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.kind-card {
  position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center;
  gap: 0 10px; padding: 10px 10px; border-radius: 14px;
  background: #fbfdf9; border: 1px solid var(--line-2);
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.kind-card .kind-ico { grid-row: span 2; width: 34px; height: 34px; border-radius: 10px; }
.kind-card .kind-ico .i { width: 19px; height: 19px; }
.kind-card b { font-size: 14.5px; color: var(--green-deep); line-height: 1.2; }
.kind-card small { font-size: 12px; color: var(--muted); line-height: 1.3; }
.kind-card.is-detected { border: 2px solid var(--green); background: #fff; box-shadow: 0 8px 22px rgba(100,190,0,.22); transform: translateY(-2px); }
.kind-card.is-detected::after {
  content: "определён"; position: absolute; top: -10px; right: 8px;
  padding: 2px 8px; border-radius: 20px; font-size: 11px; font-weight: 700;
  background: var(--green-dk); color: #fff;
}
.kind-ico { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; flex: none; }
.kind-ico .i { width: 22px; height: 22px; }
.k-poly { background: #e6f5d6; color: #3d7f00; }
.k-line { background: #e4f1ea; color: var(--green-dk); }
.k-pts  { background: #ffe8ee; color: #c8103a; }


/* Разделители разделов — линейные условные знаки ГКИНП-02-049-86:
   граница землепользований (485), ЛЭП (114), ограда металлическая (474),
   железная дорога (155). Только украшение: aria-hidden в разметке. */
.topo-rule {
  height: 16px; margin-top: 40px; opacity: .6;
  background-repeat: repeat-x; background-position: center;
  background-origin: content-box; background-clip: content-box;
}
.topo-rule + .section { padding-top: 26px; }
.topo-rule--border { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='16'%3E%3Cpath d='M0 5h96' stroke='%23577a64' stroke-width='1.2'/%3E%3Cpath d='M43 5h10l-5 7z' fill='none' stroke='%23577a64' stroke-width='1.2' stroke-linejoin='round'/%3E%3C/svg%3E"); background-size: 96px 16px; }
.topo-rule--lep { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='16'%3E%3Cpath d='M0 8h120M52 4.5L48 8l4 3.5M68 4.5L72 8l-4 3.5' fill='none' stroke='%23577a64' stroke-width='1.2'/%3E%3Crect x='57' y='5' width='6' height='6' fill='%23577a64'/%3E%3C/svg%3E"); background-size: 120px 16px; }
.topo-rule--fence { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='16'%3E%3Cpath d='M0 8h24' stroke='%23577a64' stroke-width='1'/%3E%3Ccircle cx='12' cy='8' r='2.2' fill='%23577a64'/%3E%3C/svg%3E"); background-size: 24px 16px; }
.topo-rule--rail { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='16'%3E%3Cpath d='M0 5.5h48M0 10.5h48M24 3v10' fill='none' stroke='%23577a64' stroke-width='1'/%3E%3C/svg%3E"); background-size: 48px 16px; }

/* Разделы главной */
.section { padding-top: 44px; padding-bottom: 12px; }
.section-tight { padding-top: 32px; }
.sec-head { margin-bottom: 22px; }
.sec-head h2 { margin: 0; font-size: 30px; line-height: 1.2; font-weight: 800; letter-spacing: -.02em; }
.sec-head p { margin: 6px 0 0; color: var(--muted); font-size: 15.5px; }

.tile { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; flex: none; }
.tile .i { width: 23px; height: 23px; }
.t-green  { background: #e6f5d6; color: #3d7f00; }
.t-blue   { background: #e4eef8; color: #2b5f93; }
.t-orange { background: #fff0dc; color: #b45309; }
.t-forest { background: #e2f1e7; color: var(--green-dk); }
.t-sky    { background: #e1f3f9; color: #1f6f8b; }

.find-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; }
.find-card {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 20px 18px; box-shadow: var(--shadow); transition: transform .15s, box-shadow .15s, border-color .15s;
}
.find-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); border-color: #c9e4ae; }
.find-card h3 { margin: 14px 0 6px; font-size: 16px; line-height: 1.3; }
.find-card p { margin: 0; font-size: 13.5px; color: var(--muted); }

.layers-layout {
  display: grid; grid-template-columns: 230px minmax(0, 1fr) 290px; gap: 32px; align-items: center;
  background: rgba(255,255,255,.72); border: 1px solid var(--line); border-radius: 22px;
  padding: 26px 28px; box-shadow: var(--shadow);
}
.layer-stack svg { display: block; width: 100%; height: auto; filter: drop-shadow(0 10px 16px rgba(26,92,58,.14)); }
.layer-groups { display: grid; grid-template-columns: 1fr 1fr; gap: 20px 28px; }
.layer-groups h3 { margin: 0 0 10px; font-size: 16px; display: flex; align-items: center; gap: 8px; }
.count {
  display: inline-grid; place-items: center; min-width: 26px; height: 22px; padding: 0 7px;
  border-radius: 20px; background: var(--green-dk); color: #fff; font-size: 12px; font-weight: 700;
}
.dot-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.dot-list li { position: relative; padding-left: 20px; font-size: 14px; color: var(--ink-2); line-height: 1.4; }
.dot-list i {
  position: absolute; left: 0; top: .32em; width: 11px; height: 11px; border-radius: 50%;
  background: var(--c); box-shadow: 0 0 0 3px color-mix(in srgb, var(--c) 22%, transparent);
}
.dot-list .n {
  display: inline-block; margin-left: 4px; padding: 0 6px; border-radius: 10px;
  background: var(--line-2); color: var(--muted); font-size: 11.5px; font-weight: 700;
}
.info-card {
  background: #fff; border: 1px solid var(--line); border-radius: var(--radius);
  padding: 22px; box-shadow: var(--shadow);
}
.info-card h3 { margin: 14px 0 6px; font-size: 18px; line-height: 1.3; }
.info-card p { margin: 0 0 12px; font-size: 14px; color: var(--muted); }
.info-card a { font-weight: 700; font-size: 14px; text-decoration: none; }
.info-card a:hover { text-decoration: underline; }

.steps-row {
  list-style: none; margin: 0; padding: 22px; counter-reset: stp;
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px;
  background: rgba(255,255,255,.8); border: 1px solid var(--line); border-radius: 22px; box-shadow: var(--shadow);
}
.steps-row li { position: relative; counter-increment: stp; padding: 6px 8px 6px 0; }
.steps-row li::before {
  content: counter(stp); position: absolute; left: 0; top: 0;
  width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center;
  font-size: 13px; font-weight: 800; color: var(--green-dk); background: #fff; border: 1.5px solid #9fd06a;
}
.steps-row li:not(:last-child)::after {
  content: ""; position: absolute; right: -14px; top: 30px; width: 10px; height: 10px;
  border-top: 2px solid #a9cf8a; border-right: 2px solid #a9cf8a; transform: rotate(45deg);
}
.step-ico {
  width: 48px; height: 48px; margin: 0 0 12px 38px; border-radius: 50%;
  display: grid; place-items: center; background: var(--green-lt2); color: var(--green-dk);
}
.step-ico .i { width: 24px; height: 24px; }
.steps-row h3 { margin: 0 0 4px; font-size: 16px; }
.steps-row p { margin: 0; font-size: 14px; color: var(--muted); }

.report-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.report-card {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 10px; box-shadow: var(--shadow); display: flex; flex-direction: column;
}
.thumb { border-radius: 12px; overflow: hidden; border: 1px solid var(--line-2); background: #fff; }
.thumb svg { display: block; width: 100%; height: auto; }
.report-body { padding: 14px 8px 8px; }
.report-body h3 { margin: 0 0 6px; font-size: 16px; line-height: 1.35; }
.report-body p { margin: 0; font-size: 14px; color: var(--muted); }
.fmt {
  display: inline-block; vertical-align: 2px; margin-right: 4px; padding: 2px 7px; border-radius: 6px;
  font-size: 10.5px; font-weight: 800; letter-spacing: .04em; color: #fff;
}
.f-xls { background: #1d6f42; }
.f-html { background: #1f6f8b; }
.report-flag {
  margin: 16px 0 0; display: flex; gap: 10px; align-items: flex-start;
  padding: 12px 16px; border-radius: 14px; font-size: 14px;
  background: #fff8ec; border: 1px solid #f3dcb4; color: #6b4a07;
}
.flag-ico { font-size: 16px; line-height: 1.3; }

.price-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.price-card {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 22px; box-shadow: var(--shadow);
}
.price-top { display: flex; align-items: center; gap: 12px; }
.price-top h3 { margin: 0; font-size: 17px; }
.price-top p { margin: 0; font-size: 13px; color: var(--muted); }
.price-val {
  margin: 18px 0 4px; padding-top: 16px; border-top: 1px solid var(--line-2);
  font-size: 30px; font-weight: 800; letter-spacing: -.02em; color: var(--green-deep); line-height: 1.15;
}
.price-val small { font-size: 14px; font-weight: 600; color: var(--muted); letter-spacing: 0; }
.price-note { margin: 0; font-size: 14px; color: var(--ink-2); }
.price-foot { margin: 12px 2px 0; }

.subs-card {
  margin-top: 18px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 20px 32px;
  padding: 24px 26px; border-radius: 20px; color: #eaf6e0;
  background:
    radial-gradient(600px 240px at 100% 100%, rgba(176,219,15,.28), transparent 60%),
    linear-gradient(125deg, #1f6b44 0%, var(--green-dk) 55%, #134a2e 100%);
  box-shadow: 0 16px 40px rgba(26,92,58,.25);
}
.subs-card h3 { margin: 0 0 8px; font-size: 20px; color: #fff; line-height: 1.3; }
.subs-card p { margin: 0 0 16px; font-size: 14.5px; color: #d6ecd0; }
.subs-card a:not(.btn) { color: #fff; }
.subs-card :focus-visible { outline-color: var(--lime); }
.subs-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.subs-card .btn.ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,.55); box-shadow: none; }
.subs-card .btn.ghost:hover { background: rgba(255,255,255,.1); border-color: #fff; color: #fff; }
.subs-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; align-content: center; }
.subs-list li {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0 12px; align-items: baseline;
  padding: 10px 14px; border-radius: 12px; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.14);
}
.subs-list b { color: #fff; font-size: 15px; }
.subs-list span { grid-column: 1; font-size: 13px; color: #cfe6c8; }
.subs-list em { grid-column: 2; grid-row: 1 / span 2; align-self: center; font-style: normal; font-weight: 700; color: var(--lime); white-space: nowrap; }

.card.messengers {
  display: flex; align-items: center; justify-content: space-between; gap: 18px 28px; flex-wrap: wrap;
  margin: 0; padding: 22px 26px;
}
.card.messengers h2 { margin-bottom: 6px; }
.card.messengers p { margin: 0; max-width: 62ch; }
.card.messengers .msg-links { margin-top: 0; }

.faq-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 14px; align-items: start; }
.faq-grid details {
  background: rgba(255,255,255,.92); border: 1px solid var(--line); border-radius: 14px;
  box-shadow: 0 1px 2px rgba(26,92,58,.04);
}
.faq-grid details[open] { border-color: #c9e4ae; box-shadow: var(--shadow); }
.faq-grid summary {
  list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 14px 18px; font-size: 15px; font-weight: 600; color: var(--green-deep); border-radius: 14px;
}
.faq-grid summary::-webkit-details-marker { display: none; }
.faq-grid summary::after {
  content: ""; width: 9px; height: 9px; flex: none; margin-top: -4px;
  border-right: 2px solid var(--muted); border-bottom: 2px solid var(--muted); transform: rotate(45deg);
  transition: transform .15s;
}
.faq-grid details[open] summary::after { transform: rotate(-135deg); margin-top: 4px; }
.faq-grid details p { margin: 0; padding: 0 18px 16px; font-size: 14.5px; color: var(--ink-2); }

/* Призыв в конце главной: обратно к загрузке (#upload) или к подбору (#start) */
.cta-band {
  display: flex; align-items: center; justify-content: space-between; gap: 18px 32px; flex-wrap: wrap;
  padding: 28px 30px; border-radius: 22px; color: #eaf6e0;
  background:
    radial-gradient(520px 220px at 0% 0%, rgba(176,219,15,.26), transparent 62%),
    linear-gradient(125deg, #1f6b44 0%, var(--green-dk) 55%, #134a2e 100%);
  box-shadow: 0 16px 40px rgba(26,92,58,.25);
}
.cta-band h2 { margin: 0 0 6px; font-size: 24px; line-height: 1.25; color: #fff; letter-spacing: -.01em; }
.cta-band p { margin: 0; font-size: 15px; color: #d6ecd0; }
.cta-band :focus-visible { outline-color: var(--lime); }
.cta-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.cta-band .btn.ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,.55); box-shadow: none; }
.cta-band .btn.ghost:hover { background: rgba(255,255,255,.1); border-color: #fff; color: #fff; }

/* ── Адаптивность ─────────────────────────────────────────────────── */
@media (max-width: 1199px) {
  .find-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .layers-layout { grid-template-columns: 200px minmax(0, 1fr); }
  .info-card { grid-column: 1 / -1; }
}
@media (max-width: 1023px) {
  .nav { display: none; }
  .hero { grid-template-columns: 1fr; gap: 36px; padding-top: 36px; }
  .start-head { grid-template-columns: 1fr; }
  .steps-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .steps-row li:nth-child(2)::after { display: none; }
  .report-grid, .price-grid { gap: 12px; }
  .price-card { padding: 18px; }
  .price-val { font-size: 25px; }
  .subs-card { grid-template-columns: 1fr; }
}
@media (max-width: 767px) {
  .container, .wrap { padding-left: 16px; padding-right: 16px; }
  html { scroll-padding-top: 12px; }
  .site-header { position: static; }
  .header-inner { min-height: 60px; gap: 10px 12px; flex-wrap: wrap; }
  .brand { font-size: 17px; }
  .brand .logo { width: 38px; height: 38px; }
  .header-actions .btn.small { padding: 7px 11px; font-size: 13.5px; }
  .page-head { margin: 20px 0 16px; }
  .page-head h1 { font-size: 24px; }
  .card { padding: 20px 18px; }
  .hero { padding-top: 26px; gap: 28px; }
  .hero h1 { font-size: 31px; }
  .lead { font-size: 16px; }
  .drop { flex-direction: column; align-items: stretch; text-align: center; padding: 12px; gap: 10px; }
  .drop-cta { justify-content: center; padding: 14px 16px; gap: 10px; white-space: nowrap; }
  .drop-cta .arrow { margin-left: 0; }
  .upload-card { padding: 16px 14px 14px; border-radius: 18px; }
  .kinds { gap: 6px; }
  .kind-card { grid-template-columns: 1fr; justify-items: center; text-align: center; gap: 4px; padding: 10px 4px 8px; }
  .kind-card .kind-ico { grid-row: auto; }
  .kind-card small { font-size: 11.5px; }
  .start-head .path-q { font-size: 20px; }
  .module { padding: 16px; }
  .cta-band { padding: 22px 18px; }
  .cta-band h2 { font-size: 21px; }
  .cta-actions, .cta-actions .btn { width: 100%; }
  .section { padding-top: 36px; }
  .sec-head h2 { font-size: 25px; }
  .find-grid { grid-template-columns: 1fr; }
  .layers-layout { grid-template-columns: 1fr; padding: 20px 18px; gap: 22px; }
  .layer-stack { max-width: 220px; margin: 0 auto; }
  .layer-groups { grid-template-columns: 1fr; }
  .steps-row { grid-template-columns: 1fr; padding: 18px; }
  .steps-row li::after { display: none; }
  .report-grid, .price-grid { grid-template-columns: 1fr; }
  .price-val { font-size: 27px; }
  .subs-card { padding: 20px 18px; }
  .card.messengers { padding: 20px 18px; }
  .faq-grid { grid-template-columns: 1fr; }
  .footer-inner { grid-template-columns: 1fr; }
}
@media (max-width: 420px) {
  .kinds-title { font-size: 13.5px; }
  .drop-cta { font-size: 16px; white-space: normal; }
}

/* ── Поиск места размещения АМС (/ams) ─────────────────────────────── */
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chips label { position: relative; margin: 0; font-weight: 600; font-size: 14px; cursor: pointer; }
/* скрытая радиокнопка: общий стиль .field input растягивал её на всю ширину окна */
.chips input, .field .chips input { position: absolute; opacity: 0; pointer-events: none;
  width: 1px; height: 1px; margin: 0; padding: 0; left: 0; top: 0; }
.chips span {
  display: inline-block; padding: 8px 14px; border-radius: var(--pill);
  border: 1.5px solid var(--line); background: #fff; color: var(--ink-2);
  transition: background .15s, border-color .15s, color .15s;
}
.chips input:checked + span { background: var(--green-lt2); border-color: var(--green); color: var(--green-deep); }
.chips input:focus-visible + span { outline: 3px solid var(--focus); outline-offset: 2px; }
.ams-grid { display: grid; grid-template-columns: minmax(0, 420px) minmax(0, 1fr); gap: 18px; align-items: start; }
.ams-grid #map { height: 520px; }
.ams-conds { margin: 0; padding-left: 18px; color: var(--ink-2); font-size: 14px; }
.ams-conds li { margin: 3px 0; }
.ams-table { width: 100%; border-collapse: collapse; font-size: 13.5px; margin-top: 12px; }
.ams-table th, .ams-table td { border-bottom: 1px solid var(--line-2); padding: 8px 6px; text-align: left; vertical-align: top; }
.ams-table th { color: var(--muted); font-weight: 600; font-size: 12.5px; }
.ams-table .ok { color: #2f6b00; font-weight: 700; }
.ams-table .warn { color: var(--warn); font-weight: 700; }
.ams-table .coords { white-space: nowrap; font-variant-numeric: tabular-nums; }
.ams-table tr.own-head td { background: #e6f7fb; color: #0b6a80; font-weight: 700; padding-top: 10px; }
.ams-table tr.own td:first-child b { color: #0b6a80; }
@media (max-width: 900px) {
  .ams-grid { grid-template-columns: 1fr; }
  .ams-grid #map { height: 360px; }
  .ams-table { display: block; overflow-x: auto; }
}

/* Карта результатов — на всю ширину окна (решение 28.09.2026): ширину
   окна без полосы прокрутки даёт --vw из скрипта страницы заказа. */
.map-card.fullbleed {
  position: relative; left: 50%; transform: translateX(-50%);
  width: calc(var(--vw, 100vw) - 32px); max-width: none;
}
.map-card.fullbleed .map-wide { grid-template-columns: minmax(0, 1fr) 380px; }
.map-card.fullbleed .map-wide #map { height: 78vh; min-height: 520px; }
@media (max-width: 900px) {
  .map-card.fullbleed .map-wide { grid-template-columns: 1fr; }
  .map-card.fullbleed .map-wide #map { height: 62vh; min-height: 360px; }
}
/* надпись варианта АМС на карте */
.leaflet-tooltip.var-label { background: #e0001a; color: #fff; border: 2px solid #fff; border-radius: 12px;
  padding: 1px 8px; font: 700 12px/18px system-ui, sans-serif; white-space: nowrap;
  box-shadow: 0 1px 4px rgba(0,0,0,.45); }
.leaflet-tooltip.var-label::before { display: none; }
.poles-unsaved { margin: 10px 0 0; }

/* Поиск места площадного объекта: свой размер и радиус */
.size-row { display: flex; align-items: center; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.size-row input { width: 110px; }
.size-row[hidden] { display: none; }

/* Изыскание трассы: приоритет земель стрелками */
.size-row select { width: auto; min-width: 72px; }
.prio-list { list-style: none; margin: 0; padding: 0; counter-reset: none; }
.prio-list li { display: flex; align-items: center; gap: 6px; padding: 6px 8px; margin: 0 0 5px;
  border: 1px solid var(--line-2); border-radius: 8px; background: var(--green-lt); font-size: 14px; }
.prio-list .prio-n { width: 22px; font-weight: 700; color: var(--green-dk); }
.prio-list .prio-t { flex: 1; }
.prio-list .btn.small { padding: 2px 9px; min-width: 0; }

/* Поиск места АМС: галочка «расстояние до соцобъектов» */
.social-toggle { display: flex; gap: 8px; align-items: flex-start; margin-top: 12px; font-weight: 500; font-size: 14px; cursor: pointer; }
.social-toggle input { margin-top: 3px; }

/* Карта результатов: .html, .zip (для MAX), ссылка */
.map-dl { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }
.map-dl-note { margin: 10px 0 0; text-align: left; }
.map-link { margin-top: 8px; width: 100%; }

/* «Заказать кадастровые работы» на странице отчёта */
.works-card { margin-top: 18px; }
.works-card textarea { width: 100%; }

/* Журнал заявок: клиент просит кадастровые работы и заявка ещё новая */
.lead-hot td { background: var(--green-lt2, #eef7e6); }
#rows textarea { width: 100%; min-width: 180px; margin-top: 6px; font-size: 13px; }

/* Cookie-баннер (30.09.2026): не перекрывает сайт, кнопки одинакового вида */
.cookie-banner { position: fixed; left: 16px; right: 16px; bottom: 16px; max-width: 640px; margin: 0 auto;
  padding: 14px 16px; background: #fff; border: 1px solid var(--line, #d9e2d3); border-radius: 12px;
  box-shadow: 0 4px 20px rgba(0,0,0,.12); z-index: 1000; font-size: 14px; }
.cookie-banner p { margin: 0; }
.cookie-actions { margin-top: 12px; display: flex; gap: 8px; flex-wrap: wrap; }

/* Смешанный KMZ: выбор типа и папок перед анализом */
.pick-box { margin-top: 14px; }
.pick-box[hidden] { display: none; }
.pick-folders { max-height: 260px; overflow-y: auto; padding-right: 4px; }
.pick-folders .offer-ok { margin: 4px 0; font-weight: 400; }

/* Крестик плашки о Метрике (_footer.html) */
.cookie-banner { padding-right: 44px; }
.cookie-close { position: absolute; top: 8px; right: 10px; width: 32px; height: 32px; border: 0;
  background: transparent; color: inherit; font-size: 22px; line-height: 1; cursor: pointer; border-radius: 6px; }
.cookie-close:hover { background: rgba(0, 0, 0, .06); }
.cookie-close:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
