/* «География побед» — собственный стиль сайта.
   Файл ничего не наследует у potaman.ru: сайт отдельный, и правка здесь
   не должна уметь сломать основной. Палитра и шрифт — те же намеренно. */

@font-face{font-family:"PT Sans";src:url("/fonts/PT_Sans-Web-Regular.woff2") format("woff2");
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"PT Sans";src:url("/fonts/PT_Sans-Web-Bold.woff2") format("woff2");
  font-weight:700;font-style:normal;font-display:swap}

:root{
  --snow:#FAF8F6; --paper:#FFFFFF; --ink:#241A18; --steel:#5C4F4B;
  --aurora:#0F8A6D; --amber:#C77E1F; --line:#E9E4E2; --red:#B3402E; --plan:#2B5D8C;
  --brand:#A81C2C; --brand2:#7E1120; --goldd:#B07A1E;
  --grad:linear-gradient(135deg,#A81C2C,#C25E1E);
  --grad-btn:linear-gradient(135deg,#A81C2C,#7E1120);
  --r-ctl:8px; --r-card:10px;
  --sans:"PT Sans";
  --stamp:"PT Sans";
  --th:var(--brand);            /* цвет направления, подставляется в разметке */
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:20px}
body{margin:0;background:var(--snow);color:var(--ink);font:17px/1.55 var(--sans)}
.wrap{max-width:1000px;margin:0 auto;padding:0 20px}
a{color:var(--ink);text-underline-offset:3px}
a:hover{color:var(--brand)}
:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
.mono{font-family:var(--stamp);font-variant-numeric:tabular-nums}
.muted{color:var(--steel)}
small.muted{display:block;font-weight:400;margin-top:4px;line-height:1.35}
h1{font-size:clamp(1.7rem,5vw,2.6rem);line-height:1.12;letter-spacing:-.01em;margin:.35em 0}
h2{font-size:1.3rem;margin:1.8em 0 .5em}
h3{font-size:1.05rem;margin:.5em 0 .3em}
.lead{font-size:1.08rem;color:#3B4854;max-width:44em}

/* Шапка и подвал */
.site-head{background:var(--paper);border-bottom:1px solid var(--line)}
.head-in{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px 20px;flex-wrap:wrap}
.brand{display:flex;gap:12px;align-items:center;text-decoration:none}
.brand-mark{width:46px;height:37px;flex:0 0 46px;color:var(--brand);display:block}
.brand-mark svg{width:100%;height:100%;display:block}
.brand:hover .brand-mark{filter:brightness(1.15)}
.brand-txt{font-size:.8rem;line-height:1.25;color:var(--steel)}
.brand-txt b{color:var(--ink);font-size:.95rem}
.nav{display:flex;gap:18px;flex-wrap:wrap;align-items:center}
.nav a{text-decoration:none;font-weight:700;font-size:.95rem}
.site-foot{margin-top:56px;border-top:1px solid var(--line);background:var(--paper);padding:20px 0 28px}
.imprint{font-size:.8rem;color:var(--steel);max-width:60em}
.foot-links{font-size:.8rem;color:var(--steel);max-width:60em}

/* Герой */
.hero{padding:44px 0 8px}
.hero h1{background:linear-gradient(100deg,var(--ink) 30%,var(--brand) 70%,var(--goldd));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.eyebrow{font-family:var(--stamp);font-size:.75rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--goldd);margin-bottom:0}

/* Лента счётчиков */
.funnel{margin:28px 0 8px}
.tape{display:grid;grid-template-columns:repeat(4,1fr);background:var(--paper);
  border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden}
.tape .cell{padding:16px 10px;text-align:center;border-top:3px solid var(--brand)}
.tape .cell.ok{border-top-color:var(--aurora)}
.tape .cell.plan{border-top-color:var(--plan)}
.tape b{display:block;font-family:var(--stamp);font-size:1.7rem;font-weight:700}
.tape span{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--steel)}
.tape .ok b{color:var(--aurora)} .tape .plan b{color:var(--plan)}

/* Фильтр направлений — ссылки, не кнопки скрипта */
.themes{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 6px}
.themes .th{display:inline-flex;align-items:center;gap:7px;text-decoration:none;
  background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--th,var(--steel));
  border-radius:var(--r-ctl);padding:7px 13px;font-size:.9rem;font-weight:700;line-height:1.2}
.themes .th i{font-style:normal;font-family:var(--stamp);font-weight:700;font-size:.8rem;
  color:var(--steel);background:var(--snow);border-radius:20px;padding:1px 8px}
.themes .th:hover{border-color:var(--th,var(--brand));color:var(--th,var(--brand))}
.themes .th.on{background:var(--th,var(--brand));border-color:var(--th,var(--brand));color:#fff}
.themes .th.on i{color:var(--ink);background:#fff}

/* Строка применённого отбора */
.applied{font-size:.92rem;color:var(--steel);margin:12px 0}
.applied .tag{display:inline-block;background:var(--paper);border:1px solid var(--line);
  border-radius:20px;padding:2px 6px 2px 11px;margin:0 4px}
.applied .tag a{text-decoration:none;font-weight:700;padding:0 6px;color:var(--red)}
.applied .reset{margin-left:6px;font-weight:700}
.years{font-size:.92rem;color:var(--steel)}
.years a{display:inline-block;font-family:var(--stamp);font-weight:700;margin-right:10px}

/* Карта */
.map{margin:18px 0 6px;padding:10px 6px 4px;background:var(--paper);
  border:1px solid var(--line);border-radius:var(--r-card);box-shadow:0 1px 3px rgba(22,35,44,.06)}
.map svg{width:100%;height:auto;display:block}
.map .region{fill:#F1EDEA;stroke:#D9CFCA;stroke-width:2;stroke-linejoin:round}
.map figcaption{font-size:.85rem;color:var(--steel);padding:6px 12px 8px;max-width:46em}

.map .pin{cursor:pointer}
/* Поводок от сдвинутого кружка к истинному месту города. */
.map .pin .leader{stroke:#B3A9A4;stroke-width:1.2}
.map .pin .anchor{fill:#B3A9A4}
.map .pin:hover .leader,.map .pin.on .leader{stroke:var(--brand)}
.map .pin:hover .anchor,.map .pin.on .anchor{fill:var(--brand)}
.map .pin .halo{fill:#fff;opacity:.75}
.map .pin .dot{fill:var(--brand);opacity:.88;stroke:#fff;stroke-width:1.5;transition:opacity .12s}
.map .pin .cnt{font-family:var(--stamp);font-weight:700;font-size:15px;fill:#fff;
  text-anchor:middle;pointer-events:none}
/* Подпись в два слоя: подложка обводкой, поверх — сплошной текст.
   См. комментарий в views/home.php: paint-order здесь не используется намеренно. */
.map .pin .lbl{font-family:var(--sans);font-size:15px;font-weight:700;fill:var(--ink);
  text-anchor:middle;pointer-events:none}
.map .pin .lbl-halo{fill:none;stroke:#F1EDEA;stroke-width:4;stroke-linejoin:round;opacity:.95}
.map .pin:hover .dot{opacity:1}
.map .pin:hover .lbl{fill:var(--brand)}
.map .pin:hover .lbl-halo{fill:none}
.map .pin.on .dot{fill:var(--ink)}
.map .pin.on .lbl{fill:var(--ink)}
.map .pin:focus-visible .dot{stroke:var(--ink);stroke-width:3}

/* Карточки реестра */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin:14px 0}
.card{background:var(--paper);border:1px solid var(--line);border-top:3px solid var(--th,var(--brand));
  border-radius:var(--r-card);padding:14px 16px;box-shadow:0 1px 3px rgba(22,35,44,.06)}
.card-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.card h3 a{text-decoration:none}
.card h3 a:hover{text-decoration:underline}
.num{font-weight:700;color:var(--steel);font-size:.85rem}
.chip{display:inline-block;font-family:var(--stamp);font-size:.68rem;font-weight:700;
  letter-spacing:.04em;text-transform:uppercase;padding:2px 9px;border-radius:20px;
  border:1.5px solid var(--th,var(--steel));color:var(--th,var(--steel))}
.place{color:var(--steel);font-size:.9rem;margin:.4em 0}
.prob{font-size:.95rem;margin:.5em 0}
.more{font-weight:700;text-decoration:none}
.more:hover{text-decoration:underline}

/* Страница одной победы */
.single{background:var(--paper);border:1px solid var(--line);border-top:4px solid var(--th,var(--brand));
  border-radius:var(--r-card);padding:22px 26px 20px;margin-top:14px;
  box-shadow:0 1px 3px rgba(22,35,44,.06)}
.single h1{font-size:clamp(1.35rem,3.4vw,1.9rem);max-width:26em}
.crumbs{font-size:.9rem;color:var(--steel);margin-top:18px}
.trail{list-style:none;padding:0;margin:18px 0 8px}
.trail li{padding:2px 0 14px 20px;border-left:2px solid var(--line);position:relative}
.trail li:last-child{border-left-color:transparent}
.trail li::before{content:"";position:absolute;left:-6px;top:7px;width:10px;height:10px;
  background:var(--paper);border:2px solid var(--th,var(--brand));border-radius:50%}
.trail li.done::before{background:var(--aurora);border-color:var(--aurora)}
.trail .step{font-family:var(--stamp);font-size:.7rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--steel)}
.trail li.done .step{color:var(--aurora)}
.trail p{margin:.25em 0 0;max-width:44em}
.author{font-size:.92rem;color:var(--steel);margin-top:16px}
.req{font-size:.8rem;color:var(--steel);border-top:1px dashed var(--line);padding-top:10px;margin-top:14px}
.nextto{display:flex;gap:12px;flex-wrap:wrap;margin:22px 0}

/* Кнопки, формы, админка */
.btn{display:inline-block;background:var(--grad-btn);color:#fff;padding:12px 24px;
  font-weight:700;text-decoration:none;border-radius:var(--r-ctl);border:0}
.btn:hover{color:#fff;filter:brightness(1.08)}
.btn.ghost{background:var(--paper);color:var(--ink);border:1px solid #C4D0D9;padding:11px 23px}
.btn.ghost:hover{color:var(--brand);border-color:var(--brand);filter:none}
.empty{color:var(--steel);padding:24px;background:var(--paper);border:1px dashed var(--line);
  border-radius:var(--r-card)}
input,select,textarea,button{font:inherit;color:inherit}
input,select,textarea{width:100%;padding:9px 12px;border:1px solid #C4D0D9;
  border-radius:var(--r-ctl);background:var(--paper)}
input:focus,select:focus,textarea:focus{border-color:var(--brand)}
label{display:block;margin:10px 0;font-size:.92rem;font-weight:700}
label input,label select,label textarea{margin-top:4px;font-weight:400}
.chk{font-weight:400}
.chk input{width:auto;margin-right:6px}
button{background:var(--grad-btn);color:#fff;border:0;padding:10px 20px;font-weight:700;
  cursor:pointer;border-radius:var(--r-ctl)}
button:hover{filter:brightness(1.08)}
button.danger{background:var(--red)}
.form{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);
  padding:16px 18px;margin:14px 0;box-shadow:0 1px 3px rgba(22,35,44,.06)}
.form.narrow{max-width:360px}
.flash{background:#E7F3EE;border:1px solid var(--aurora);border-radius:var(--r-ctl);padding:10px 14px}
.flash.err{background:#F6E9E6;border-color:var(--red)}
.adm-nav{font-size:.9rem}
.search{display:flex;gap:8px;margin:16px 0;flex-wrap:wrap;align-items:center}
.search input[type=search]{flex:1;min-width:220px}
.tbl{width:100%;border-collapse:collapse;background:var(--paper);font-size:.9rem}
.tbl th,.tbl td{border:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top}
.tbl th{font-family:var(--stamp);font-size:.7rem;text-transform:uppercase;
  letter-spacing:.05em;color:var(--steel)}
.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.inline{display:flex;gap:10px;align-items:center}

@media (max-width:860px){.head-in{flex-direction:column;align-items:flex-start}}
@media (max-width:700px){
  .tape{grid-template-columns:repeat(2,1fr)}
  /* На узком экране подписи городов сливаются в кашу: оставляем кружки
     с числами, названия читаются по нажатию и в списке под картой. */
  .map .pin .lbl{display:none}
  .single{padding:18px 16px}
}
@media print{
  .site-head,.nav,.themes,.applied,.nextto,.no-print{display:none!important}
  body{background:#fff}
  .map,.card,.single{box-shadow:none;break-inside:avoid}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
}
