/* Страницы «Виза в <страну>» (site/_visa.py): поверх routes.css, токены — tokens.css (светлая и темная тема) */
.vz-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 18px 0 6px; }
.vz-card { display: flex; flex-direction: column; gap: 8px; padding: 18px; border-radius: var(--r-xl); }
.vz-card__h { display: flex; align-items: center; gap: 10px; }
.vz-card__h h3 { margin: 0; font-size: var(--fs-md); font-weight: var(--fw-semibold); }
.vz-flag { font-size: 26px; line-height: 1; font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; }
.vz-pill { align-self: flex-start; margin: 2px 0 0; padding: 6px 12px; border-radius: var(--r-pill); font-weight: var(--fw-bold); font-size: var(--fs-md); }
.vz-free { background: var(--good-soft); color: var(--good-text); }
.vz-voa, .vz-evisa { background: var(--info-soft); color: var(--info); }
.vz-req { background: var(--warn-soft); color: var(--warn-text); }
.vz-unk { background: var(--card-2); color: var(--muted); }
.vz-stay { margin: 0; font-size: var(--fs-xl); font-weight: var(--fw-bold); letter-spacing: var(--ls-tight); color: var(--ink); }
.vz-src { margin: auto 0 0; font-size: var(--fs-sm); color: var(--muted); }
.vz-warn { margin: 0; font-size: var(--fs-sm); color: var(--warn-text); }
.vz-tblw { overflow-x: auto; border-radius: var(--r-lg); border: 1px solid var(--line); background: var(--card); }
.vz-tbl { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); }
.vz-tbl th, .vz-tbl td { padding: 12px 14px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--line); }
.vz-tbl thead th { font-weight: var(--fw-semibold); color: var(--muted); background: var(--card-2); }
.vz-tbl tbody tr:last-child th, .vz-tbl tbody tr:last-child td { border-bottom: 0; }
.vz-tbl tbody th { font-weight: var(--fw-semibold); white-space: nowrap; }
.vz-dot { display: inline-block; padding: 2px 10px; border-radius: var(--r-pill); font-weight: var(--fw-semibold); white-space: nowrap; }
.vz-deals { grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); margin-bottom: 8px; }
.vz-deals .tkw { color: inherit; }
.vz-deals .tkw:hover { text-decoration: none; }
.vz-disc { margin: 8px 0 32px; }
@media (max-width: 860px) { .vz-cards { grid-template-columns: minmax(0, 1fr); } }
.vz > *, .vz .rt-sec { min-width: 0; }
.vz-tblw { max-width: 100%; }
@media (max-width: 640px) {                                   /* телефон: строки таблицы — карточки (паспорт и виза сверху, срок и источник ниже) */
  .vz-tbl thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .vz-tbl tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 10px; align-items: center; padding: 12px 14px; border-bottom: 1px solid var(--line); }
  .vz-tbl tbody tr:last-child { border-bottom: 0; }
  .vz-tbl th, .vz-tbl td { padding: 0; border: 0; }
  .vz-tbl tbody th { white-space: normal; }
  .vz-tbl td:nth-child(3) { grid-column: 1 / -1; font-weight: var(--fw-semibold); }
  .vz-tbl td:nth-child(3):empty, .vz-tbl td.vz-nostay { display: none; }
  .vz-tbl td:nth-child(4) { grid-column: 1 / -1; color: var(--muted); font-size: var(--fs-xs); }
}
/* страница «паспорт × страна» */
.vz-status { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; padding: 18px 20px; border-radius: var(--r-xl); }
.vz-status .vz-src { flex-basis: 100%; margin: 0; }
.vz-reqs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0; padding: 0; list-style: none; }
.vz-req { padding: 14px 16px; border-radius: var(--r-lg); background: var(--card); border: 1px solid var(--line); }
.vz-req b { display: block; margin-bottom: 4px; color: var(--ink); }
.vz-req--wide { grid-column: 1 / -1; }
.vz-req p { margin: 0; color: var(--ink-2); }
.vz-req small { display: block; margin-top: 6px; color: var(--muted); font-size: var(--fs-xs); }
.vz-req--ok { border-left: 4px solid var(--good); }
.vz-req--none { border-left: 4px solid var(--line-2); }
.vz-req--none p { color: var(--muted); font-size: var(--fs-sm); }
.vz-dirs { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); gap: 10px; }
.vz-dir { display: flex; flex-direction: column; gap: 4px; padding: 14px 16px; border-radius: var(--r-lg); color: var(--ink); }
.vz-dir:hover { text-decoration: none; background: var(--card-2); }
.vz-dir__p { font-weight: var(--fw-bold); color: var(--accent-text); font-variant-numeric: tabular-nums; }
.vz-dir small { color: var(--muted); font-size: var(--fs-xs); }
.vz-wx th, .vz-wx td { text-align: left; white-space: nowrap; font-variant-numeric: tabular-nums; }
.vz-wx td small { color: var(--muted); font-size: var(--fs-xs); margin-left: 4px; }
.vz-wx tbody th { text-align: left; }
@media (max-width: 640px) {
  .vz-reqs { grid-template-columns: minmax(0, 1fr); }
  .vz-tbl.vz-wx thead { position: static; width: auto; height: auto; overflow: visible; clip: auto; }
  .vz-tbl.vz-wx tr { display: table-row; padding: 0; }
  .vz-tbl.vz-wx th, .vz-tbl.vz-wx td { display: table-cell; padding: 8px 10px; border-bottom: 1px solid var(--line); }
  .vz-tbl.vz-wx td:nth-child(3), .vz-tbl.vz-wx td:nth-child(4) { grid-column: auto; font-weight: var(--fw-regular); color: inherit; font-size: inherit; min-width: 0; }
}
.vz-attr { margin: 0 0 32px; font-size: var(--fs-xs); }
.vz-back { margin: 4px 0 8px; font-weight: var(--fw-semibold); }
.vz-chip--unv { color: var(--muted); background: transparent; border: 1px dashed var(--line-2); }
/* 07.11.2026 (владелец): компоненты главной (nums, chc, spd, band2) — тут только связки и погода */
.vz-pills { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 4px; }
.vz-pills .vz-pill { margin: 0; }
.vz-pill.vz-stay { background: var(--accent-soft); color: var(--accent-text); }
.vz-nums { margin: clamp(18px, 4vw, 40px) 0; }
.vz-chcs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 24px; align-items: start; margin-top: 18px; }
.vz-chc .chc__l li { min-height: 0; align-items: flex-start; }
.vz-chc .chc__l span { font-size: 16px; font-weight: 500; }
.vz-chc .chc__v { margin-top: 2px; }
a.vz-spd { color: inherit; text-decoration: none; transition: transform var(--dur, .2s) var(--ease, ease); }
a.vz-spd:hover { transform: translateY(-3px); }
.vz-spd span { color: var(--ink-2); }
.vz-spd strong { color: var(--ink); }
.vz-more { margin-top: 16px; }
.vz-wx { margin-top: 14px; }
.vz-wx h3 { margin: 0 0 8px; font-size: var(--fs-md); }
.vz-wxg { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 6px; margin: 0; padding: 0; list-style: none; }
.vz-wxg li { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 10px 2px; border-radius: 14px; font-variant-numeric: tabular-nums; }
.vz-wxg small { font-size: 11px; opacity: 0.8; }
.vz-wxg b { font-size: 16px; }
.vz-wxg span { font-size: 11px; opacity: 0.75; }
.vz-h3 { background: var(--heat-3-soft); color: var(--heat-3-ink); }
.vz-h2 { background: var(--heat-2-soft); color: var(--heat-2-ink); }
.vz-h1 { background: var(--heat-1-soft); color: var(--heat-1-ink); }
.vz-h0 { background: var(--card-2); color: var(--ink-2); }
.vz-data { margin: 26px 0 40px; font-size: 12px; color: var(--muted); }
.vz-data a { color: inherit; text-decoration: underline; text-decoration-color: var(--line-2); }
@media (max-width: 900px) { .vz-chcs { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 640px) { .vz-wxg { grid-template-columns: repeat(6, minmax(0, 1fr)); } .vz-chc { padding: 24px 18px 8px; } }
.vz-nums .num b { font-size: clamp(40px, 9vw, 104px); white-space: normal; overflow-wrap: anywhere; }
.vz-nums .num--a b { font-size: clamp(56px, 12vw, 150px); }
@media (max-width: 640px) { .vz-nums .nums__g { grid-template-columns: minmax(0, 1fr); gap: 22px; } .vz-nums .num span { max-width: none; } }
/* 07.11.2026: чек-лист документов на страницах «паспорт × страна» и разделы site/_insights.py (отчет «Индекс цен», данные, сравнения, изменения виз) */
.vz-check { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0; padding: 0; list-style: none; counter-reset: none; }
.vz-check label { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border-radius: var(--r-lg); background: var(--card); border: 1px solid var(--line); cursor: pointer; min-height: 44px; }
.vz-check input { flex: none; width: 22px; height: 22px; margin: 1px 0 0; accent-color: var(--accent); }
.vz-check b { display: block; margin-bottom: 2px; color: var(--ink); }
.vz-check span { color: var(--ink-2); font-size: var(--fs-sm); }
.vz-check input:checked + span b { text-decoration: line-through; text-decoration-color: var(--line-2); }
.in-p { margin: 0; max-width: 72ch; color: var(--ink-2); font-size: 16px; line-height: 1.6; }
.in-p a, .in-files a { color: var(--accent-text); }
.in-tbl td a, .in-tbl th a { color: var(--accent-text); font-weight: var(--fw-semibold); }
.in-tbl td { font-variant-numeric: tabular-nums; }
.in-files { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.in-files li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; padding: 14px 16px; border-radius: var(--r-lg); background: var(--card); border: 1px solid var(--line); }
.in-files a { font-weight: var(--fw-bold); }
.in-files small { color: var(--muted); font-size: var(--fs-xs); }
.in-chart { max-width: 520px; }
.in-feed { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.in-ch { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 16px; padding: 18px 20px; border-radius: var(--r-xl); background: var(--card); border: 1px solid var(--line); }
.in-ch time { font-weight: var(--fw-bold); color: var(--accent-text); font-variant-numeric: tabular-nums; }
.in-ch h3 { margin: 0 0 4px; font-size: var(--fs-md); }
.in-ch p { margin: 0 0 6px; color: var(--ink-2); }
.in-ch .in-ch__who { color: var(--muted); font-size: var(--fs-sm); }
.in-ch .in-ch__src { font-size: var(--fs-xs); }
.in-ch .in-ch__src a { color: var(--muted); text-decoration: underline; text-decoration-color: var(--line-2); }
.in-ch .rt-chips { margin-top: 8px; }
@media (max-width: 640px) {
  .vz-check { grid-template-columns: minmax(0, 1fr); }
  .in-ch { grid-template-columns: minmax(0, 1fr); gap: 6px; padding: 16px; }
  .in-tbl--wide thead { position: static; width: auto; height: auto; overflow: visible; clip: auto; }
  .in-tbl--wide tr { display: table-row; padding: 0; }
  .in-tbl--wide th, .in-tbl--wide td { display: table-cell; padding: 8px 10px; border-bottom: 1px solid var(--line); white-space: nowrap; }
  .in-tbl--wide td:nth-child(3), .in-tbl--wide td:nth-child(4) { grid-column: auto; font-weight: inherit; color: inherit; font-size: inherit; }
}
