/* Расписания.ру — дизайн-система (редакция 3, 20.10.2026).
   Концепция: тёмно-синие только шапка и строка поиска (на главной — hero); заголовок, крошки и
   контент — на светлом фоне (как у Яндекс Расписаний, Туту, Omio). Карточки — белые с тонкой
   рамкой без тяжёлых теней; табло вокзала — светлая таблица. */
/* Шрифты — свои (static/fonts, OFL; с Google Fonts — подмножества cyrillic и latin, переменная толщина): fonts.googleapis.com
   из России медленный и блокировал отрисовку на ~0,8 с (research/b23). */
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500 700;font-display:swap;src:url("fonts/jetbrains-mono-cyr.6465b62dd126.woff2") format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:500 700;font-display:swap;src:url("fonts/jetbrains-mono-lat.570751c5f8b4.woff2") format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Onest';font-style:normal;font-weight:400 800;font-display:swap;src:url("fonts/onest-cyr.d1abf183873c.woff2") format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Onest';font-style:normal;font-weight:400 800;font-display:swap;src:url("fonts/onest-lat.fd7dbbcb3633.woff2") format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
:root{
  --navy:#12285A;        /* бренд: шапка, hero, подвал, заголовки */
  --navy-deep:#0B1A3E;   /* подвал, табло */
  --coral:#F8685A;       /* бренд-акцент: подчёркивания, точки маршрута */
  --cta:#E5483A;         /* кнопка «Купить» — коралл, затемнённый для контраста белого текста */
  --ink:#101B38;         /* основной текст */
  --muted:#5A6583;       /* вторичный текст */
  --line:#E3E7EF;        /* разделители и рамки карточек */
  --bg:#F5F7FB;          /* фон страницы, синий оттенок */
  --surface:#FFFFFF;
  --tint:#E9EEF8;        /* заливка чипов, активных табов */
  --good:#1F8A5B; --good-bg:#E3F4EC;
  --warn:#9A6200; --warn-bg:#FFF3D6;
  --amber:#FFC24B;       /* цифры табло */

  --f-ui:"Onest", "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif;
  --f-mono:"JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;

  --r-lg:16px; --r:12px; --r-sm:8px; --r-pill:999px;
  --sh:0 1px 2px rgba(16,27,56,.04);
  --sh-hover:0 4px 16px rgba(16,27,56,.08);
  --sh-lift:0 10px 30px rgba(11,26,62,.18);
  --wrap:1180px;
  color-scheme:light;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.5 var(--f-ui);font-feature-settings:"tnum" 0}
img{max-width:100%;display:block}
a{color:var(--navy);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
:focus-visible{outline:3px solid var(--coral);outline-offset:2px;border-radius:6px}
h1,h2,h3{font-weight:700;letter-spacing:-.02em;line-height:1.15;text-wrap:balance;margin:0;color:var(--ink)}
h1{font-size:clamp(1.45rem,1.15rem + 1.2vw,2.05rem);font-weight:800}
h2{font-size:clamp(1.15rem,1.05rem + .4vw,1.35rem)}
h3{font-size:1.06rem;letter-spacing:-.01em}
p{margin:0}
.num,.t{font-variant-numeric:tabular-nums}
.muted{color:var(--muted)}
.small{font-size:.875rem}
.wrap{max-width:var(--wrap);margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- Пометка макета ---------- */
.mock-note{background:#FFF8E6;color:#6B4E00;font-size:.8rem;border-bottom:1px solid #F2DFA8}
.mock-note .wrap{padding-block:6px}
.mock-note a{color:inherit;text-decoration:underline}

/* ---------- Иконки (маски из icons.css) ---------- */
.i{display:inline-block;width:1.25em;height:1.25em;flex:none;background:currentColor;-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat;vertical-align:-.25em}

/* ---------- Шапка ---------- */
.top{background:var(--navy);color:#fff;position:sticky;top:env(safe-area-inset-top,0px);z-index:20}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:21;background:var(--navy)}
.top .wrap{display:flex;align-items:center;gap:24px;min-height:58px}
.logo{display:flex;align-items:center;gap:9px;color:#fff;font-weight:800;font-size:1.08rem;letter-spacing:-.02em;white-space:nowrap}
.logo:hover{text-decoration:none}
.logo img{width:32px;height:32px}
.nav{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav a{display:flex;align-items:center;gap:7px;color:#C9D3EC;padding:8px 12px;border-radius:var(--r-pill);font-weight:500;font-size:.92rem;white-space:nowrap}
.nav a:hover{background:rgba(255,255,255,.08);color:#fff;text-decoration:none}
.nav a.on{background:rgba(255,255,255,.14);color:#fff}
.top .aside{margin-left:auto;display:flex;gap:6px;align-items:center;font-size:.9rem;color:#C9D3EC;white-space:nowrap}
.top .aside a{color:#C9D3EC;padding:7px 12px;border-radius:var(--r-pill)}
.top .aside a:hover{color:#fff;background:rgba(255,255,255,.08);text-decoration:none}
@media (max-width:860px){
  .top .wrap{flex-wrap:wrap;gap:0 12px;min-height:0;padding-block:10px 0}
  .top .aside{display:none}
  .nav{order:3;width:100%;margin:6px -6px 0;padding-bottom:6px}
  .nav a{padding:8px 12px;font-size:.9rem}
}

/* ---------- Hero (главная) ---------- */
.hero{background:var(--navy);color:#fff;position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background:
   radial-gradient(circle at 78% 30%,rgba(248,104,90,.22),transparent 40%),
   radial-gradient(circle at 12% 110%,rgba(120,150,230,.25),transparent 45%)}
.hero .wrap{position:relative;z-index:1;padding-block:44px 120px}
.hero h1{color:#fff;font-size:clamp(1.7rem,1.2rem + 2vw,2.6rem);max-width:24ch;line-height:1.1}
.hero h1 em{font-style:normal;color:var(--coral)}
.hero .lead{color:#C9D3EC;font-size:1.1rem;margin-top:14px;max-width:52ch}
.hero-line{position:absolute;right:max(16px,calc((100vw - var(--wrap))/2));top:38px;width:min(460px,42vw);z-index:1}
@media (max-width:860px){.hero-line{display:none}.hero .wrap{padding-block:28px 96px}}

/* ---------- Карточка поиска ---------- */
.searchbox{position:relative;z-index:2;margin-top:-84px}
.modes-pick{display:flex;gap:6px;margin-bottom:10px;overflow-x:auto;scrollbar-width:none}
.modes-pick a{display:flex;gap:8px;align-items:center;color:#fff;padding:8px 14px;border-radius:var(--r-pill);background:rgba(255,255,255,.12);font-weight:500;font-size:.92rem;white-space:nowrap}
.modes-pick a.on{background:#fff;color:var(--navy)}
.modes-pick a:hover{text-decoration:none}
.search{display:grid;grid-template-columns:1fr 44px 1fr .8fr auto;align-items:stretch;background:var(--surface);border-radius:var(--r);box-shadow:var(--sh-lift);padding:5px;gap:0}
.field{display:flex;flex-direction:column;justify-content:center;padding:6px 14px;border-radius:var(--r-sm);min-width:0;position:relative}
.field+.field,.swap+.field{border-left:1px solid var(--line)}
.field:hover{background:var(--bg)}
.field label{font-size:.72rem;font-weight:500;color:var(--muted)}
.field input{border:0;background:transparent;font:600 1rem/1.3 var(--f-ui);color:var(--ink);padding:1px 0 0;width:100%;min-width:0}
.field input::placeholder{color:#9AA3BA;font-weight:500}
.field input:focus{outline:none}
.field:focus-within{box-shadow:inset 0 0 0 2px var(--navy)}
.field .hint{font-size:.78rem;color:var(--muted)}
.swap{align-self:center;justify-self:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--navy);display:grid;place-items:center;cursor:pointer;margin:0 -18px;z-index:1;position:relative}
.swap:hover{background:var(--tint)}
.search .btn{min-height:52px;padding:0 26px;font-size:1rem;border-radius:var(--r-sm)}
@media (max-width:860px){
  .search{grid-template-columns:1fr;padding:6px}
  .field{padding:10px 14px}
  .field+.field,.swap+.field{border-left:0;border-top:1px solid var(--line)}
  .swap{position:absolute;right:20px;top:46px;margin:0}
  .search .btn{min-height:52px;margin-top:6px}
}

/* ---------- Кнопки ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;font:600 .98rem/1 var(--f-ui);padding:12px 20px;border-radius:var(--r-sm);white-space:nowrap;text-decoration:none!important;transition:background .15s,transform .15s}
.btn-primary{background:var(--cta);color:#fff}
.btn-primary:hover{background:#CC3A2D}
.btn-secondary{background:var(--tint);color:var(--navy)}
.btn-secondary:hover{background:#DCE3F3}
.btn-ghost{background:transparent;color:var(--navy);border:1px solid var(--line)}
.btn-sm{padding:9px 14px;font-size:.88rem}
.btn-block{width:100%}
.ad{font-size:.72rem;color:var(--muted);letter-spacing:.01em}

/* ---------- Полоса результатов (внутренние страницы) ---------- */
.band{background:transparent;color:var(--ink)}
.band .wrap{padding-block:18px 4px}
.crumbs{display:flex;flex-wrap:wrap;gap:6px;font-size:.84rem;color:var(--muted);margin-bottom:8px}
.crumbs a{color:var(--muted)}
.crumbs a:hover{color:var(--navy)}
.band h1{color:var(--ink)}
.band .facts{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;color:var(--muted);font-size:.92rem}
.band .facts b{color:var(--ink);font-weight:600}
.band .facts .i{color:var(--navy);opacity:.7;margin-right:4px}
.qsearch{display:flex;align-items:center;gap:10px;margin-top:18px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);border-radius:var(--r-pill);padding:6px 6px 6px 18px;max-width:640px;color:#fff;font-weight:500}
.qsearch .sep{color:#A9B6D8}
.qsearch .when{color:#C9D3EC;font-weight:400}
.qsearch .btn{margin-left:auto;background:#fff;color:var(--navy);border-radius:var(--r-pill);padding:9px 16px}
.qsearch .btn:hover{background:var(--tint)}
.qsearch>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- Табы видов транспорта (лежат на полосе) ---------- */
.modes{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));background:var(--surface);border:1px solid var(--line);border-radius:var(--r);margin-top:18px;position:relative;overflow:hidden}
.modes a{display:grid;grid-template-columns:auto 1fr;gap:0 10px;align-items:center;padding:12px 16px;color:var(--ink);border-right:1px solid var(--line);position:relative;min-width:0}
.modes a:last-child{border-right:0}
.modes a:hover{background:var(--bg);text-decoration:none}
.modes .i{grid-row:span 2;width:22px;height:22px;color:var(--navy)}
.modes .t{font-weight:600;font-size:.95rem}
.modes .c{font-size:.84rem;color:var(--muted);line-height:1.35}
@media (max-width:860px){.modes .c{white-space:nowrap}}
.modes .c b{color:var(--ink);font-weight:700}
.modes a.on{background:#F7F9FD}
.modes a.on::after{content:"";position:absolute;left:14px;right:14px;bottom:0;height:3px;border-radius:3px 3px 0 0;background:var(--coral)}
.modes a.off .t,.modes a.off .c{color:#9AA3BA}
.modes a.off .i{color:#B7BED0}
@media (max-width:860px){
  .modes{display:flex;overflow-x:auto;scrollbar-width:none;border-radius:var(--r)}
  .modes a{flex:0 0 auto;padding:12px 14px}
}

/* ---------- Раскладка ---------- */
main{padding-bottom:56px}
.cols{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:start;margin-top:20px}
.cols>*{min-width:0}
.cols.one{grid-template-columns:minmax(0,1fr)}  /* боковой колонке нечего показать — контент на всю ширину */
.cols>div>section:first-child{margin-top:0}  /* отступ сверху уже есть у .cols */
.side{display:grid;gap:16px;position:sticky;top:calc(env(safe-area-inset-top,0px) + 80px)}
@media (max-width:980px){.cols{grid-template-columns:1fr}.side{position:static}}
.stack{display:grid;gap:12px}
section{margin-top:32px}
.sec-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.sec-head a{font-weight:600;font-size:.95rem;display:inline-flex;gap:4px;align-items:center}
.sec-head p{flex-basis:100%;margin-top:-8px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px}
.about-card{max-width:780px;display:grid;gap:12px}
.about-card h2{margin:8px 0 0}
.about-card p{margin:0}
.contact-form{position:relative;display:grid;gap:12px;margin-top:4px}
.contact-form label{display:grid;gap:4px;font-size:.88rem;font-weight:600}
.contact-form input,.contact-form textarea{font:400 .95rem var(--f-ui);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;color:var(--ink);background:var(--surface);resize:vertical}
.contact-form input:focus,.contact-form textarea:focus{outline:none;border-color:var(--navy)}
.contact-form .btn{justify-self:start}
.panel h3{margin-bottom:8px;font-size:1rem}
.side .linkcols a{font-size:.9rem;padding:8px 0}
.side .kv{grid-template-columns:auto minmax(0,1fr)}
.side .kv dt{padding-right:12px}
.side .kv dd{text-align:right}
.panel+.panel{margin-top:0}

/* ---------- Сводка «быстрее / дешевле / рекомендуем» ---------- */
.verdict{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:var(--surface);border:1px solid var(--line);border-radius:var(--r);margin-top:16px}
.verdict>div{padding:16px 20px;border-right:1px solid var(--line);display:grid;gap:3px;align-content:start}
.verdict>div:last-child{border-right:0}
.verdict .k{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);display:flex;gap:6px;align-items:center}
.verdict .k::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--dot,var(--navy))}
.verdict .v{font-size:1.3rem;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.verdict .d{font-size:.9rem}
.verdict .m{font-size:.82rem;color:var(--muted)}
@media (max-width:760px){.verdict{grid-template-columns:1fr}.verdict>div{border-right:0;border-bottom:1px solid var(--line)}.verdict>div:last-child{border-bottom:0}}

/* ---------- Полоса дат ---------- */
.dates{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px 2px 6px;margin-top:20px}
.dates::-webkit-scrollbar{display:none}
.dates a{flex:0 0 auto;display:grid;gap:1px;text-align:center;min-width:80px;padding:8px 12px;border-radius:var(--r-sm);background:var(--surface);border:1px solid var(--line);color:var(--ink)}
.dates a:hover{border-color:var(--navy);text-decoration:none}
.dates .d{font-weight:600;font-size:.92rem;white-space:nowrap}
.dates .p{font-size:.78rem;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.dates .p.low{color:var(--good);font-weight:600}
.dates a.on{background:var(--navy);border-color:var(--navy);color:#fff}
.dates a.on .p{color:#C9D3EC}
.dates a.cal{display:flex;align-items:center;gap:6px;color:var(--navy)}

/* ---------- Фильтры / сегменты ---------- */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:16px}
.toolbar .spacer{flex:1}
.seg{display:inline-flex;background:var(--tint);border-radius:var(--r-pill);padding:3px}
.seg a,.seg button{border:0;background:transparent;font:500 .9rem/1 var(--f-ui);color:var(--navy);padding:9px 14px;border-radius:var(--r-pill);cursor:pointer;white-space:nowrap}
.seg .on{background:var(--surface);box-shadow:0 1px 3px rgba(16,27,56,.12);font-weight:600}
.seg a:hover{text-decoration:none}
.count{font-size:.9rem;color:var(--muted)}

/* ---------- Карточка поездки (рейса) ---------- */
.trip{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);display:grid;grid-template-columns:minmax(0,1fr) 210px;transition:box-shadow .15s,border-color .15s}
.trip:hover{border-color:#CDD5E4;box-shadow:var(--sh-hover)}
.trip .body{padding:18px 20px;display:grid;gap:12px;min-width:0}
.trip .head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:.9rem;color:var(--muted)}
.trip .head .no{font-weight:700;color:var(--ink);font-size:.95rem;display:inline-flex;gap:6px;align-items:center}
.trip .head .no .i{color:var(--navy)}
.leg{display:grid;grid-template-columns:auto minmax(60px,1fr) auto;gap:4px 14px;align-items:center}
.leg .t{font-size:1.6rem;font-weight:700;letter-spacing:-.02em;line-height:1}
.leg .t sup{font-size:.7rem;font-weight:600;color:var(--coral);margin-left:2px;vertical-align:super}
.leg .dur{display:grid;gap:4px;justify-items:center;font-size:.82rem;color:var(--muted);text-align:center}
.leg .dur .line{width:100%;height:2px;background:var(--line);position:relative;border-radius:2px}
.leg .dur .line::before,.leg .dur .line::after{content:"";position:absolute;top:-3px;width:8px;height:8px;border-radius:50%;border:2px solid var(--navy);background:var(--surface)}
.leg .dur .line::before{left:-2px}
.leg .dur .line::after{right:-2px;background:var(--navy)}
.leg .dur b{color:var(--ink);font-weight:600}
.leg .st{font-size:.88rem;color:var(--muted);grid-row:2;min-width:0}
.leg .st.a{grid-column:3;text-align:right}
.trip .punct{font-size:.85rem;color:var(--ink);display:flex;flex-wrap:wrap;align-items:center;gap:0 4px}
.trip .punct.bad{color:var(--warn)}
.trip .punct .i{width:1em;height:1em;margin-right:4px;opacity:.7}
.trip .foot{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.85rem;color:var(--muted);align-items:center}
.trip .foot a{font-weight:500}
.classes{display:flex;flex-wrap:wrap;gap:6px}
.cls{display:inline-flex;gap:6px;align-items:baseline;padding:6px 10px;border-radius:8px;background:var(--bg);font-size:.85rem;color:var(--muted);border:1px solid transparent}
.cls b{color:var(--ink);font-variant-numeric:tabular-nums}
.cls .seats{font-size:.75rem;color:var(--good)}
.cls.best{border-color:#BFE3D1;background:var(--good-bg)}
.trip .buy{border-left:1px dashed var(--line);padding:18px 20px;display:grid;align-content:center;gap:8px;justify-items:stretch;text-align:right}
.trip .price{font-size:1.35rem;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}
.trip .price small{display:block;font-size:.78rem;font-weight:500;color:var(--muted);letter-spacing:0}
.trip .buy .ad{text-align:center}
@media (max-width:640px){
  .trip{grid-template-columns:1fr}
  .trip .body{padding:16px}
  .trip .buy{border-left:0;border-top:1px dashed var(--line);padding:12px 16px 16px;grid-template-columns:1fr auto;align-items:center;text-align:left}
  .trip .buy .ad{grid-column:1/-1;text-align:left}
  .leg .t{font-size:1.35rem}
}

/* ---------- Бейджи ---------- */
.badge{display:inline-flex;align-items:center;gap:4px;font-size:.74rem;font-weight:600;padding:3px 8px;border-radius:var(--r-pill);background:var(--tint);color:var(--navy);white-space:nowrap}
.badge.fast{background:#E6EEFF;color:#1D4ED8}
.badge.cheap{background:var(--good-bg);color:var(--good)}
.badge.night{background:#ECE9F7;color:#4B3F8F}
.badge.brand{background:#FFE9E6;color:#B4321F}
.badge.warn{background:var(--warn-bg);color:var(--warn)}

/* ---------- Карточка способа (на направлении) ---------- */
.ways{display:grid;gap:12px}
.way{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:4px 16px;padding:18px 20px;align-items:center}
.way .ico{width:48px;height:48px;border-radius:12px;background:var(--tint);color:var(--navy);display:grid;place-items:center;grid-row:span 2}
.way .ico .i{width:26px;height:26px}
.way .title{font-weight:700;font-size:1.08rem;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.way .meta{display:flex;flex-wrap:wrap;gap:2px 14px;font-size:.88rem;color:var(--muted);grid-column:2}
.way .meta b{color:var(--ink);font-weight:600}
.way .right{grid-row:1/span 2;grid-column:3;display:grid;gap:6px;justify-items:end;text-align:right}
.way .price{font-size:1.35rem;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}
.way .price small{display:block;font-size:.76rem;font-weight:500;color:var(--muted)}
.way .acts{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.way.dim{background:transparent;box-shadow:none;border:1px dashed var(--line)}
.way.dim .ico{background:var(--surface)}
.way .legs{grid-column:1/-1;margin-top:6px;font-size:.9rem}
.way .legs summary{cursor:pointer;color:var(--navy);font-weight:600}
.way .legs .stops{margin-top:8px}
.way .legs .nm .i{width:16px;height:16px;vertical-align:-3px;color:var(--navy)}
.stops.scheme li{grid-template-columns:22px minmax(0,1fr)}
.stops.scheme li::before{left:10px}
@media (max-width:700px){
  .way{grid-template-columns:44px minmax(0,1fr);padding:16px}
  .way .ico{width:44px;height:44px;grid-row:auto}
  .way .meta{grid-column:1/-1}
  .way .right{grid-row:auto;grid-column:1/-1;grid-template-columns:1fr auto;justify-items:start;align-items:center;text-align:left}
  .way .acts{justify-content:flex-end}
}

/* ---------- Списки ссылок / чипы ---------- */
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--line);color:var(--ink);font-size:.92rem;font-weight:500}
.chip:hover{border-color:var(--navy);text-decoration:none}
.chip .i{color:var(--navy)}
.linkcols{columns:3 220px;column-gap:28px}
.linkcols a{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);break-inside:avoid;color:var(--ink);font-size:.95rem}
.linkcols a span{color:var(--muted);font-size:.85rem;white-space:nowrap;font-variant-numeric:tabular-nums}
.linkcols a:hover{color:var(--navy)}
.related{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:28px}
.related h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:8px}
.related .linkcols{columns:2 140px;column-gap:20px}  /* на телефоне — две колонки коротких названий городов */

/* ---------- Популярные направления (главная, город) ---------- */
.routes{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr));gap:14px}
.rt{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;display:grid;gap:12px;color:var(--ink);transition:transform .15s,box-shadow .15s}
.rt:hover{text-decoration:none;transform:translateY(-2px);box-shadow:0 2px 4px rgba(16,27,56,.06),0 14px 30px rgba(16,27,56,.12)}
.rt .ab{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;font-weight:700;font-size:1.05rem;letter-spacing:-.01em}
.rt .ab .rail{grid-row:span 2;width:10px;display:grid;justify-items:center;padding-block:7px}
.rt .ab .rail i{width:9px;height:9px;border-radius:50%;border:2px solid var(--navy)}
.rt .ab .rail i:last-child{background:var(--coral);border-color:var(--coral)}
.rt .ab .rail span{width:2px;background:var(--line);height:100%;min-height:14px}
.rt .opts{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:.85rem;color:var(--muted);border-top:1px solid var(--line);padding-top:10px}
.rt .opts span{display:inline-flex;gap:5px;align-items:center}
.rt .opts b{color:var(--ink);font-variant-numeric:tabular-nums}
.rt .opts .i{color:var(--navy);width:1.1em;height:1.1em}

/* ---------- Преимущества (главная) ---------- */
.usps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:28px}
.usp{display:grid;gap:8px;align-content:start}
.usp .ico{width:48px;height:48px;border-radius:14px;background:var(--surface);box-shadow:var(--sh);display:grid;place-items:center;color:var(--coral)}
.usp .ico .i{width:24px;height:24px}
.usp h3{margin-top:6px}
.usp p{color:var(--muted);font-size:.95rem}
.partners{display:flex;flex-wrap:wrap;gap:10px 24px;align-items:center;color:var(--muted);font-weight:700;font-size:1.05rem;letter-spacing:-.01em}
.partners span{opacity:.75}

/* ---------- Табло (фирменный элемент) ---------- */
.board-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);color:var(--ink);overflow:hidden}
.board-top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.board-top h3{font-size:1rem;display:flex;align-items:center;gap:8px}
.board-top .clock{font-variant-numeric:tabular-nums;color:var(--navy);font-size:1.05rem;font-weight:700}
.live{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:#8FE3B9}
.live::before{content:"";width:7px;height:7px;border-radius:50%;background:#3DDC84;box-shadow:0 0 0 3px rgba(61,220,132,.2)}
.board-scroll{overflow-x:auto}
.board{width:100%;border-collapse:collapse;font-size:.93rem}
.board th{font-size:.75rem;color:var(--muted);font-weight:500;text-align:left;padding:10px 16px;background:#F9FAFD;border-bottom:1px solid var(--line)}
.board td{padding:10px 16px;border-top:1px solid #EEF1F6;vertical-align:middle}
.board tbody tr:first-child td{border-top:0}
.board td.t{font-weight:700;color:var(--ink);font-size:1.05rem;font-variant-numeric:tabular-nums;white-space:nowrap;width:1%}
.board td.no{color:var(--muted);font-size:.88rem;font-variant-numeric:tabular-nums;white-space:nowrap;width:1%}
.board a{color:var(--navy)}
.board .sub{color:var(--muted);font-size:.8rem;line-height:1.35}
.board td.pl{text-align:center;color:var(--ink);font-weight:600;width:1%;white-space:nowrap}
.board .st-ok{color:var(--good);font-size:.8rem;font-weight:600;white-space:nowrap}
.board .st-late{color:var(--warn);font-size:.8rem;font-weight:600;white-space:nowrap}
.board tbody tr:hover td{background:#F7F9FD}
.board td.state{font-size:.85rem;font-weight:600;white-space:nowrap;color:var(--muted)}
.st-ok{color:var(--good)!important}.st-late{color:var(--warn)!important}.st-bad{color:#B4321F!important}
.badge.bad{background:#FFE9E6;color:#B4321F}
.late-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:12px}
.late-grid div{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 14px}
.late-grid b{display:block;font-size:1.3rem;font-variant-numeric:tabular-nums}
.late-grid span{color:var(--muted);font-size:.82rem}
.board-foot{padding:10px 16px;border-top:1px solid var(--line);display:flex;gap:12px;flex-wrap:wrap;justify-content:space-between;font-size:.82rem;color:var(--muted)}
.board-foot a{font-weight:600}
@media (max-width:640px){
  .board thead{display:none}
  .board,.board tbody,.board tr,.board td{display:block;width:auto}
  .board tr{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:2px 10px;padding:10px 14px;border-top:1px solid #EEF1F6}
  .board td{padding:0;border:0}
  .board td.t{grid-row:span 3;width:auto}
  .board td.pl{grid-column:3;grid-row:1}
  .board td.pl::before{content:"пл. ";font-weight:400;color:var(--muted);font-size:.75rem}
  .board td.dd,.board td.state{grid-column:2/-1}
}

/* ---------- Вокзалы / узлы города ---------- */
.hubs{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:14px}
.hub{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;display:grid;gap:8px;align-content:start}
.hub .kind{display:flex;gap:8px;align-items:center;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.hub .kind .i{color:var(--coral)}
.hub h3 a{color:var(--ink)}
.hub p{font-size:.9rem;color:var(--muted)}
.hub .stat{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid var(--line);padding-top:10px;margin-top:4px;font-size:.88rem}
.hub .stat a{font-weight:600;display:inline-flex;align-items:center;gap:4px}

/* ---------- Справка: ключ-значение ---------- */
.kv{display:grid;grid-template-columns:minmax(110px,180px) minmax(0,1fr);margin:0}
.kv dt{color:var(--muted);font-size:.9rem;padding:10px 0;border-bottom:1px solid var(--line)}
.kv dd{margin:0;padding:10px 0;border-bottom:1px solid var(--line);font-size:.95rem}
.kv dt:last-of-type,.kv dd:last-of-type{border-bottom:0}
.code{font-family:var(--f-mono);font-size:.85rem;background:var(--bg);padding:2px 6px;border-radius:6px}
@media (max-width:520px){.kv{grid-template-columns:1fr}.kv dt{border:0;padding-bottom:0}}

/* ---------- Остановки поезда ---------- */
.stops{list-style:none;margin:0;padding:0}
.stops li{display:grid;grid-template-columns:58px 22px minmax(0,1fr) auto;gap:0 10px;align-items:start;position:relative;padding:8px 0}
.stops li::before{content:"";position:absolute;left:78px;top:0;bottom:0;width:2px;background:var(--line)}
.stops li:first-child::before{top:50%}
.stops li:last-child::before{bottom:50%}
.stops .tm{font-weight:700;font-variant-numeric:tabular-nums;padding-top:1px}
.stops .tm small{display:block;font-weight:400;color:var(--muted);font-size:.78rem}
.stops .dot{width:12px;height:12px;border-radius:50%;background:var(--surface);border:2px solid var(--navy);margin:5px 0 0 5px;position:relative;z-index:1}
.stops .end .dot{width:16px;height:16px;margin:3px 0 0 3px;background:var(--navy)}
.stops .end:last-child .dot{background:var(--coral);border-color:var(--coral)}
.stops .nm a{color:var(--ink);font-weight:500}
.stops .end .nm a{font-weight:700}
.stops .nm small{display:block;color:var(--muted);font-size:.8rem}
.stops .wait{font-size:.82rem;color:var(--muted);white-space:nowrap;padding-top:2px}
.stops .wait.long{color:var(--navy);font-weight:600}

/* ---------- Карточка поезда / sticky CTA ---------- */
.trainhead{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);margin-top:18px;position:relative;display:grid;grid-template-columns:minmax(0,1fr) 240px}
.trainhead .body{padding:22px 24px;display:grid;gap:14px;min-width:0}
.trainhead .buy{border-left:1px dashed var(--line);padding:22px 24px;display:grid;gap:8px;align-content:center}
.trainhead .price{font-size:1.7rem;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}
.trainhead .price small{display:block;font-size:.8rem;font-weight:500;color:var(--muted)}
@media (max-width:760px){.trainhead{grid-template-columns:1fr}.trainhead .buy{border-left:0;border-top:1px dashed var(--line)}}
.sticky-cta{display:none}
@media (max-width:760px){
  .sticky-cta{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;gap:12px;align-items:center;justify-content:space-between;background:var(--surface);box-shadow:0 -6px 24px rgba(16,27,56,.14);padding:10px max(16px,env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
  .sticky-cta b{font-size:1.15rem;font-variant-numeric:tabular-nums}
  .has-sticky main{padding-bottom:110px}
}
.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;max-width:420px}
.days span{text-align:center;padding:8px 0;border-radius:8px;background:var(--good-bg);color:var(--good);font-weight:600;font-size:.85rem}
.days span.no{background:var(--bg);color:#A0A8BD;text-decoration:line-through}
.services{display:flex;flex-wrap:wrap;gap:8px}
.services span{display:inline-flex;gap:6px;align-items:center;font-size:.88rem;padding:6px 10px;border-radius:8px;background:var(--bg)}
.services .i{color:var(--navy);width:1.1em;height:1.1em}

/* ---------- FAQ ---------- */
.faq{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.faq details{border-bottom:1px solid var(--line)}
.faq details:last-child{border-bottom:0}
.faq summary{cursor:pointer;list-style:none;padding:16px 20px;font-weight:600;display:flex;justify-content:space-between;gap:16px;align-items:center}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";width:10px;height:10px;border-right:2px solid var(--navy);border-bottom:2px solid var(--navy);transform:rotate(45deg) translate(-3px,-3px);flex:none;transition:transform .15s}
.faq details[open] summary::after{transform:rotate(-135deg) translate(-3px,-3px)}
.faq details p{padding:0 20px 18px;color:#2E3A5A;max-width:70ch}

/* ---------- Карта-заглушка ---------- */
.map{height:240px;border-radius:var(--r);position:relative;overflow:hidden;background:
  linear-gradient(0deg,rgba(18,40,90,.04) 1px,transparent 1px) 0 0/28px 28px,
  linear-gradient(90deg,rgba(18,40,90,.04) 1px,transparent 1px) 0 0/28px 28px,#E7ECF5}
.map svg{position:absolute;inset:0;width:100%;height:100%}
.map .lbl{position:absolute;left:12px;bottom:12px;right:12px;background:var(--surface);padding:8px 12px;border-radius:var(--r-sm);font-size:.82rem;color:var(--muted);box-shadow:var(--sh)}

/* ---------- Состояния ---------- */
.notice{display:flex;gap:10px;align-items:flex-start;background:var(--warn-bg);color:#5C3D00;padding:12px 16px;border-radius:var(--r-sm);font-size:.9rem}
.notice .i{color:var(--warn);margin-top:2px}
.notice.info{background:var(--tint);color:var(--navy)}
.notice.info .i{color:var(--navy)}
.empty{background:var(--surface);border:1px dashed #C7CFE0;border-radius:var(--r);padding:22px;display:grid;gap:10px}
.empty h3{font-size:1.1rem}
.empty .chips{margin-top:4px}
.skel{height:132px;border-radius:var(--r);background:linear-gradient(90deg,#E8ECF4 25%,#F3F5FA 50%,#E8ECF4 75%) 0 0/200% 100%;animation:sk 1.2s infinite linear}
@keyframes sk{to{background-position:-200% 0}}
.state-demo{display:grid;gap:12px;padding:20px;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh)}
.state-demo>.lab{font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--coral)}
.state-demo>.why{font-size:.9rem;color:var(--muted);max-width:75ch}
.state-demo .modes{margin-top:0;box-shadow:none;border:1px solid var(--line)}

/* ---------- Подвал ---------- */
.site-foot{background:var(--navy-deep);color:#A9B6D8;font-size:.92rem}
.site-foot .wrap{padding-block:48px 28px}
.site-foot-grid{display:grid;grid-template-columns:1.3fr repeat(5,minmax(0,1fr));gap:32px 24px}
.site-foot .brand{display:grid;gap:12px;align-content:start}
.site-foot .brand p{font-size:.88rem;max-width:30ch}
.site-foot .foot-mail{font-size:.92rem}
.site-foot h4{margin:0 0 12px;color:#fff;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em}
.site-foot ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.site-foot a{color:#C9D3EC}
.site-foot a:hover{color:#fff}
.site-foot .legal{border-top:1px solid rgba(255,255,255,.1);margin-top:36px;padding-top:20px;display:grid;gap:8px;font-size:.8rem;color:#8392BA}
.site-foot .legal a{color:#C9D3EC;text-decoration:underline}
.site-foot .yandex{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center}
.site-foot .yandex b{color:#fff;font-weight:600}
@media (max-width:1000px){.site-foot-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.site-foot .brand{grid-column:1/-1}}
@media (max-width:560px){.site-foot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- Оглавление макетов ---------- */
.toc{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr));gap:16px}
.toc a{background:var(--surface);border-radius:var(--r);box-shadow:var(--sh);padding:20px;display:grid;gap:8px;color:var(--ink);align-content:start}
.toc a:hover{text-decoration:none;box-shadow:0 2px 4px rgba(16,27,56,.06),0 14px 30px rgba(16,27,56,.12)}
.toc .url{font-family:var(--f-mono);font-size:.8rem;color:var(--coral)}
.toc h3{font-size:1.15rem}
.toc p{font-size:.9rem;color:var(--muted)}
.checks{display:grid;gap:10px;padding:0;margin:0;list-style:none;max-width:75ch}
.checks li{display:flex;gap:10px;align-items:flex-start}
.checks .i{color:var(--good);margin-top:2px}

/* ---------- Форма поиска в шапке (все страницы) ---------- */
.sbar{background:var(--navy);color:#fff;padding:2px 0 14px}
.sbar+.band .wrap{padding-top:6px}
.modes-pick label{display:flex;gap:8px;align-items:center;color:#fff;padding:8px 14px;border-radius:var(--r-pill);background:rgba(255,255,255,.12);font-weight:500;font-size:.92rem;white-space:nowrap;cursor:pointer}
.modes-pick label:hover{background:rgba(255,255,255,.2)}
.modes-pick label.on{background:#fff;color:var(--navy)}
.modes-pick input{position:absolute;opacity:0;pointer-events:none}
.modes-pick label:has(input:focus-visible){outline:3px solid var(--coral);outline-offset:2px}
.sbar .search{box-shadow:none}
.sbar .search .btn{min-height:50px}
.field input[type=date]{font-size:1rem;cursor:pointer}
.field .quick{display:flex;gap:2px;position:absolute;top:5px;right:8px}
.field .quick button{border:0;background:transparent;color:var(--navy);font:500 .72rem/1 var(--f-ui);padding:4px 6px;border-radius:var(--r-pill);cursor:pointer}
.field .quick button:hover{background:#DCE4F4}
.suggest{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:40;background:var(--surface);border-radius:var(--r);box-shadow:var(--sh-lift);list-style:none;margin:0;padding:6px;max-height:360px;overflow-y:auto;min-width:260px}
.suggest li{display:flex;justify-content:space-between;gap:10px;padding:9px 12px;border-radius:var(--r-sm);cursor:pointer;color:var(--ink)}
.suggest li span{color:var(--muted);font-size:.82rem;text-align:right}
.suggest li.on,.suggest li:hover{background:var(--tint)}
.upd{margin-top:14px;font-size:.82rem;color:var(--muted)}
.grp h3{font-size:1rem;margin-bottom:6px}
.grp .linkcols{columns:1}
.groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:28px}
.letters{columns:4 200px;column-gap:28px}
.letters a{display:block;padding:5px 0;color:var(--ink);font-size:.95rem;break-inside:avoid}
.letters a:hover{color:var(--navy)}
details.more summary{cursor:pointer;font-weight:600;color:var(--navy);padding:8px 0}
@media (max-width:860px){.sbar{padding-bottom:12px}.field .quick{margin-top:6px}}
.band.flat .wrap{padding-bottom:30px}
.home-hero{padding-block:36px 40px!important}
.home-hero h1{max-width:22ch}
.home-hero .sbar{background:none;padding:22px 0 0}
.search{position:relative}
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:4px 0 14px}
.toolbar .seg{flex-wrap:wrap}
.toolbar .shown{margin-left:auto}
.variants{margin-top:-2px;font-size:.88rem}
.variants summary{cursor:pointer;color:var(--navy);font-weight:500}
.variants ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px}
.variants li span{color:var(--muted);margin-left:6px}
details.rare{margin-top:18px}
details.rare>summary{cursor:pointer;font-weight:600;color:var(--navy);padding:12px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}
details.rare[open]>summary{margin-bottom:12px}
.empty .alts{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.trip .foot .i{width:1em;height:1em;margin-right:4px;opacity:.7}
@media (max-width:640px){.toolbar .shown{margin-left:0;width:100%}}
[hidden]{display:none!important}
.board td>.sub{display:block}
.board td.t .sub{font-family:var(--f-ui);font-weight:500}
.board tr.past{display:none}
.board.show-past tr.past{display:table-row;opacity:.45}
.past-toggle td{text-align:center;padding:8px}
.past-toggle button{border:0;background:transparent;color:var(--navy);font:500 .85rem var(--f-ui);padding:6px 12px;border-radius:var(--r-pill);cursor:pointer}
.past-toggle button:hover{background:var(--tint)}
.prose{display:grid;gap:10px;line-height:1.6}
.prose h1,.prose h2,.prose h3{font-size:1.1rem;margin-top:6px}
.grp h3 .i{width:1.1em;height:1.1em;color:var(--navy);margin-right:4px}
.sf-toggle{display:none}
@media (max-width:860px){
  .sf-toggle{display:flex;align-items:center;gap:10px;width:100%;border:0;background:#fff;color:var(--ink);border-radius:var(--r);padding:12px 14px;font:600 1rem var(--f-ui);text-align:left;cursor:pointer}
  .sf-toggle span:nth-child(2){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .sf-toggle b{color:var(--navy);font-weight:600;font-size:.9rem}
  .sbar .wrap:has(.sf-toggle) .sform{display:none}
  .sbar .wrap.open .sform{display:block}
  .sbar .wrap.open .sf-toggle{display:none}
  .toolbar .seg{flex-wrap:nowrap;overflow-x:auto;max-width:100%;scrollbar-width:none}
  .past-toggle button{white-space:nowrap}
}
.dates .p.low{color:var(--good);font-weight:600}
/* ---------- Панель фильтров и сортировки ---------- */
.toolbar{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;margin:4px 0 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px}
.tb-filters{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center}
.chips-f{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.tb-label,.sel span{font-size:.78rem;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-right:2px}
.chips-f button{border:1px solid var(--line);background:var(--surface);color:var(--ink);font:500 .9rem/1 var(--f-ui);padding:8px 12px;border-radius:var(--r-pill);cursor:pointer}
.chips-f button span{color:var(--muted);font-size:.8rem;margin-left:2px}
.chips-f button:hover{border-color:var(--navy)}
.chips-f button.on{background:var(--navy);border-color:var(--navy);color:#fff}
.chips-f button.on span{color:#C9D3EC}
.chips-f button:disabled{opacity:.4;cursor:default;border-color:var(--line)}
.sel{display:flex;align-items:center;gap:6px}
.sel select{font:500 .92rem var(--f-ui);color:var(--ink);border:1px solid var(--line);border-radius:var(--r-pill);padding:7px 30px 7px 12px;background:var(--surface);cursor:pointer;max-width:240px}
.toolbar .shown{flex-basis:100%;margin:0}
.toolbar .shown:empty{display:none}
/* ---------- Компактный список (автобусы, электрички) ---------- */
.rows{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.trow{display:grid;grid-template-columns:150px 90px 150px minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px 16px;border-top:1px solid var(--line)}
.trow:first-child{border-top:0}
.trow:hover{background:#FAFBFE}
.trow.next{box-shadow:inset 3px 0 0 var(--good)}
.trow .tm b{display:block;font-size:1.15rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.trow .tm span{display:block;font-size:.8rem;color:var(--muted);line-height:1.3}
.trow .tm a{color:var(--muted)}
.trow .dr{font-size:.85rem;color:var(--muted);text-align:center;white-space:nowrap}
.trow .rtt{font-size:.92rem;line-height:1.35}
.trow .sub{font-size:.82rem;color:var(--muted);margin-top:2px}
.trow .go{display:flex;align-items:center;gap:12px;justify-content:flex-end}
.trow .price{font-weight:800;white-space:nowrap}
.btn-sm{min-height:38px;padding:0 16px;font-size:.92rem}
details.rare .rows{margin-top:0}
@media (max-width:760px){
  .trow{grid-template-columns:auto auto 1fr;grid-template-areas:"a d b" "i i i" "g g g";gap:6px 12px}
  .trow .tm:first-child{grid-area:a}.trow .dr{grid-area:d}.trow .tm:nth-child(3){grid-area:b;text-align:right}
  .trow .info{grid-area:i}.trow .go{grid-area:g;justify-content:space-between}
  .toolbar .sel.sort{margin-left:0}
}
.sel select{max-width:210px}
.sel.sort .i{width:1em;height:1em;color:var(--muted);transform:rotate(90deg)}
.chips-f .tb-label{margin-right:4px}
details.gone{margin:0 0 12px}details.gone>summary{font-weight:500;color:var(--muted)}
.tb-open{display:none}
@media (max-width:760px){
  .toolbar{padding:8px;gap:8px}
  .tb-open{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:600 .92rem var(--f-ui);padding:8px 14px;border-radius:var(--r-pill);cursor:pointer}
  .tb-open b{color:var(--coral)}
  .tb-open .i{width:1em;height:1em}
  .toolbar .tb-filters{display:none;order:3;flex-basis:100%}
  .toolbar.open .tb-filters{display:flex}
  .toolbar .sel.sort{margin-left:auto}
  .toolbar .sel.sort .i{display:none}
  .sel select{max-width:100%}
}
@media (max-width:760px){.toolbar{flex-wrap:wrap;justify-content:flex-start}.toolbar .sel.sort select{max-width:190px}}
/* панель: ряд «Отправление», ниже — списки слева и сортировка справа */
.toolbar{justify-content:flex-start;gap:10px}
.toolbar .tb-filters{display:contents}
.toolbar .chips-f{flex-basis:100%}
.toolbar .sel.sort{margin-left:auto}
.toolbar .sel select{height:38px}
@media (max-width:760px){
  .toolbar .tb-filters{display:none;flex-direction:column;align-items:stretch;gap:10px}
  .toolbar.open .tb-filters{display:flex}
  .toolbar .chips-f{flex-basis:auto}
}
/* компьютер: фильтры слева, сортировка — справа на уровне первого ряда (а не одна в пустой нижней строке) */
@media (min-width:761px){
  .toolbar{display:flex;flex-direction:column;align-items:stretch;position:relative}
  .toolbar .tb-filters{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center}
  .toolbar .tb-filters>:first-child{padding-right:230px}  /* место под сортировку только в первом ряду */
  .toolbar .sel.sort{position:absolute;top:10px;right:12px;margin:0}
}
/* поезд: время и вокзалы без «таймлайна» перелёта */
.leg2{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:end;gap:16px}
.leg2 b{display:block;font-size:1.45rem;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}
.leg2 span{display:block;font-size:.88rem;color:var(--muted);margin-top:4px}
.leg2 span a{color:var(--ink)}
.leg2 .end{text-align:right}
.leg2 .mid{align-self:center;font-size:.88rem;color:var(--muted);white-space:nowrap;padding:4px 10px;border-radius:var(--r-pill);background:var(--bg)}
@media (max-width:640px){.leg2 b{font-size:1.35rem}.leg2{gap:8px}}
/* лента статей и новостей */
.feed-tabs{margin-top:24px}
.chip.on{background:var(--navy);border-color:var(--navy);color:#fff}
.posts{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:18px}
.post{display:grid;grid-template-rows:auto auto auto 1fr;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;color:var(--ink);padding-bottom:16px}
.post:hover{text-decoration:none;box-shadow:var(--sh-hover)}
.post .cover{aspect-ratio:16/9;background:var(--tint);display:grid;place-items:center;overflow:hidden}
.post .cover img{width:100%;height:100%;object-fit:cover}
.post .cover .i{width:40px;height:40px;color:var(--navy);opacity:.5}
.post .meta,.post .ttl,.post .ex{padding:0 16px}
.post .meta{font-size:.78rem;color:var(--muted);margin-top:6px}
.post .meta b{color:var(--coral);font-weight:600}
.post .ttl{font-weight:700;line-height:1.3}
.post .ex{font-size:.88rem;color:var(--muted);line-height:1.45}
.post-body{max-width:780px;line-height:1.65}
.post-body img{max-width:100%;height:auto;border-radius:10px}
.post-body p{margin:0 0 12px}
.post-body h2{margin:28px 0 12px;line-height:1.3}
.post-body figure{margin:22px 0;text-align:center}
.post-body figure img{display:block;max-width:100%;height:auto;margin:0 auto}
.post-body figcaption{margin-top:7px;color:var(--muted);font-size:.85rem;line-height:1.4}
.post-cover{width:100%;margin-bottom:16px}
.post-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-top:16px}
.post-gallery img{aspect-ratio:4/3;object-fit:cover;width:100%}
/* длинный текст: свёрнут до ~10 строк, кнопка «Показать ещё» */
.fold.is-long:not(.open){max-height:15em;overflow:hidden;position:relative}
.fold.is-long:not(.open)::after{content:"";position:absolute;left:0;right:0;bottom:0;height:4em;background:linear-gradient(rgba(255,255,255,0),var(--surface))}
.fold-btn{margin-top:8px;border:0;background:none;padding:6px 0;color:var(--navy);font:600 .92rem var(--f-ui);cursor:pointer}
.fold-btn:hover{text-decoration:underline}
.board td.no a{color:var(--navy);font-weight:600}
/* ---------- Город: подразделы, узлы, направления ---------- */
.subnav{display:flex;gap:4px;margin-top:14px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.subnav a{padding:10px 14px;color:var(--muted);font-weight:500;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-1px}
.subnav a:hover{color:var(--ink);text-decoration:none}
.subnav a.on{color:var(--ink);border-bottom-color:var(--coral);font-weight:600}
a.hub{color:var(--ink);gap:6px}
a.hub:hover{text-decoration:none;border-color:#CDD5E4;box-shadow:var(--sh-hover)}
a.hub b{font-size:1.02rem}
a.hub .more{margin-top:auto;padding-top:8px;color:var(--navy);font-weight:600;font-size:.88rem;display:inline-flex;align-items:center;gap:2px}
.dests{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:10px}
.dest{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.dest-name{font-weight:700;color:var(--ink);font-size:1.02rem}
.dest-price{font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--good)}
.dest-kinds{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}
.dest-kinds a,.dest-kinds>span{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:var(--r-pill);background:var(--bg);color:var(--ink);font-size:.86rem}
.dest-kinds a:hover{background:var(--tint);text-decoration:none}
.dest-kinds .i{width:1em;height:1em;color:var(--navy)}
.dest-kinds b{font-weight:600;font-variant-numeric:tabular-nums}
.dest-kinds small{color:var(--muted);font-size:.78rem}
.dest .dest-name+.dest-price{grid-row:1;grid-column:2}
.stations-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr));gap:12px}
.st-card{display:grid;gap:10px;align-content:start}
.st-card .kind{display:flex;gap:6px;align-items:center;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.st-card .kind .i{color:var(--coral)}
.st-card h2{font-size:1.1rem;margin-top:4px}
.st-card h2 a{color:var(--ink)}
.st-card .btn{justify-self:start}
details.more+details.more{margin-top:4px}
.st-card .kv{grid-template-columns:90px minmax(0,1fr)}
/* ---------- Главная: цифры, дешёвые билеты ---------- */
.stats{list-style:none;margin:22px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px 28px;color:#C9D3EC;font-size:.92rem}
.stats b{color:#fff;font-size:1.15rem;font-weight:700;font-variant-numeric:tabular-nums;margin-right:4px}
.deals{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:10px}
.deal{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.deal-to{font-weight:700;color:var(--ink);font-size:1.02rem;grid-column:1/-1}
.deal-when{grid-column:1/-1;font-size:.84rem;color:var(--muted)}
.deal-price{font-size:1.3rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink);margin-top:6px}
.deal .btn{margin-top:6px}
.grp h3 .i{margin-right:6px}
/* разделы видов транспорта */
.band .lead-s{max-width:720px;margin-top:8px;color:var(--muted);font-size:1.02rem}
.hub h3{font-size:1.05rem}
.hub .linkcols{columns:1}
.hub .linkcols.two{columns:2 150px}
.hub .linkcols a:last-child{border-bottom:0}
.grp h3 a{color:var(--ink)}
.linkcols .tn{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.linkcols .tn b{display:inline-block;min-width:3.6em;color:var(--navy)}
/* карты Яндекса */
.ymap{height:260px;border-radius:var(--r);overflow:hidden;background:var(--tint);border:1px solid var(--line)}
.ymap.tall{height:380px}
.panel .ymap{margin-top:10px}
@media (max-width:640px){.ymap.tall{height:300px}}
.ym-dot{width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:#fff;border:2px solid var(--navy,#12285A);box-sizing:border-box}
/* город: «Куда можно улететь», «Куда уехать на поезде» */
.sec-links{display:inline-flex;gap:18px;flex-wrap:wrap}
.from-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:24px;align-items:start}
.from-intro .lead-s{color:var(--muted);font-size:1.02rem;margin-bottom:14px;max-width:560px}
@media (max-width:860px){.from-intro{grid-template-columns:1fr}}
.froms{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr));gap:10px}
.from{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.from-main{display:grid;gap:8px;min-width:0}
.from .dest-kinds span{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:var(--r-pill);background:var(--bg);font-size:.86rem}
.from .dest-kinds b{font-weight:600}
.from-note{font-size:.84rem;color:var(--muted)}
.from-side{display:grid;gap:6px;justify-items:end;text-align:right}

/* Попутчики BlaBlaCar — закреплённая строка в списке рейсов и способ на /route/ */
.bbc{padding:12px 16px;border-top:1px solid var(--line);background:#F3FBFE;box-shadow:inset 3px 0 0 #2DBEFF}
.bbc:first-child{border-top:0}
.bbc + .trow{border-top:1px solid var(--line)}
.bbc-main{display:grid;grid-template-columns:120px minmax(0,1fr) auto;gap:14px;align-items:center}
.bbc-logo{display:block;width:112px;height:auto}
.bbc-text b{display:block;font-size:.95rem}
.bbc-text span{display:block;font-size:.82rem;color:var(--muted);margin-top:2px}
.bbc .go{display:flex;align-items:center;gap:12px;justify-content:flex-end}
.bbc .price{font-weight:800;white-space:nowrap}
.bbc-list{margin-top:8px;font-size:.85rem}
.bbc-list summary{cursor:pointer;color:var(--muted)}
.bbc-list ul{list-style:none;margin:8px 0 0;padding:0}
.bbc-list li a{display:grid;grid-template-columns:120px minmax(0,1fr) auto;gap:14px;padding:6px 0;border-top:1px dashed var(--line);color:inherit;text-decoration:none}
.bbc-list li a:hover span{color:var(--ink,inherit);text-decoration:underline}
.bbc-list li span{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bbc-list li em{font-style:normal;font-weight:700;white-space:nowrap}
.way .bbc-logo{width:96px}
.way.bbc-way{background:#F3FBFE;box-shadow:inset 3px 0 0 #2DBEFF}
.way.bbc-way .ico{background:#fff;color:#054752}
.way.bbc-way .title .bbc-logo{display:inline-block;height:auto;vertical-align:-3px}
@media (max-width:760px){
  .bbc-main{grid-template-columns:minmax(0,1fr);gap:8px}
  .bbc .go{justify-content:space-between}
  .bbc-list li a{grid-template-columns:1fr auto}.bbc-list li span{grid-column:1/-1;grid-row:2;white-space:normal}
}
.stack > .bbc{border:1px solid var(--line);border-radius:var(--r);padding:16px 20px}
/* ---------- Направление: станции и сортировка над списком, прочие фильтры сбоку ---------- */
.listbar{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;margin:4px 0 12px}
.listbar .station-select{display:grid;gap:3px;min-width:150px;flex:1 1 170px}
.listbar .station-select span{margin:0;text-transform:none;letter-spacing:0;font-size:.78rem}
.listbar .station-select select{width:100%;max-width:100%}
.listbar .sel.sort{display:grid;gap:3px;min-width:170px}
.listbar .sel.sort span{text-transform:none;letter-spacing:0;font-size:.88rem;font-weight:500}
.listbar .sel select{height:38px}
.listbar .tb-open{display:none;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:600 .92rem var(--f-ui);padding:8px 14px;border-radius:var(--r-pill);cursor:pointer}
.listbar .tb-open b{color:var(--coral)}
.listbar .tb-open .i{width:1em;height:1em}
.filters{display:grid;gap:14px}
.filters .f-head{display:flex;align-items:center;gap:8px}
.filters .f-head h3{margin:0;flex:1}
.f-reset{border:0;background:none;color:var(--navy);font:500 .88rem var(--f-ui);cursor:pointer;padding:4px 0}
.f-close,.f-apply{display:none}
.f-group{display:grid;gap:6px}
.f-group+.f-group{border-top:1px solid var(--line);padding-top:12px}
.f-group h4{font-size:.78rem;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin:0}
.filters .chips-f button{padding:7px 10px;font-size:.86rem}
.filters .sel select{max-width:100%;width:100%;height:38px}
.side:has(.filters){position:static}
/* календарь цен по дням */
.pcal table{width:100%;border-collapse:collapse;table-layout:fixed;margin-top:8px}
.pcal th{font-size:.72rem;color:var(--muted);font-weight:600;padding:2px 0 4px}
.pcal td{padding:1px}
.pcal .day{display:grid;place-items:center;gap:0;min-width:0;min-height:40px;border-radius:8px;font-size:.8rem;color:var(--muted);line-height:1.15}
.pcal a.day{color:var(--ink);background:var(--bg)}
.pcal a.day:hover{text-decoration:none;box-shadow:inset 0 0 0 1px var(--navy)}
.pcal .day b{font-weight:600}
.pcal .day span{font-size:.64rem;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.pcal a.day.low{background:var(--good-bg)}
.pcal .day.low span{color:var(--good);font-weight:700}
.pcal a.day.on{background:var(--navy);color:#fff}.pcal a.day.on span{color:#C9D3EC}
.pcal .day.past{opacity:.4}
@media (max-width:980px){
  .listbar .tb-open{display:inline-flex}
  .filters{position:fixed;inset:auto 0 0 0;z-index:60;max-height:85vh;overflow:auto;border-radius:16px 16px 0 0;box-shadow:0 -8px 30px rgba(10,20,50,.25);padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px));transform:translateY(105%);visibility:hidden;transition:transform .2s,visibility .2s}
  .filters.open{transform:none;visibility:visible}
  .f-close{display:block;border:0;background:var(--bg);width:34px;height:34px;border-radius:50%;font-size:1.3rem;line-height:1;cursor:pointer;color:var(--ink)}
  .f-apply{display:block;position:sticky;bottom:0;width:100%}
  body.f-lock{overflow:hidden}
  body.f-lock::after{content:"";position:fixed;inset:0;background:rgba(10,20,50,.45);z-index:59}
}
.modes .pr{display:block}
@media (max-width:600px){.listbar .tb-open{width:100%;justify-content:center}.listbar .station-select{flex:1 1 100%}.listbar .sel.sort{flex:1 1 100%}.listbar .sel.sort select{width:100%;max-width:100%}}
/* ---------- Подбор маршрута: ссылка в шапке, форма с параметрами, варианты ---------- */
.top .aside a.plan-link{display:inline-flex;align-items:center;gap:7px;color:#fff;font-weight:600;border:1px solid rgba(255,255,255,.28)}
.top .aside a.plan-link:hover,.top .aside a.plan-link.on{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.5)}
.top .aside a.plan-link .i{color:var(--coral)}
@media (max-width:860px){
  .top .aside{display:flex}
  .top .aside a.plan-link{padding:7px 10px}
  .top .aside a.plan-link .t{display:none}
}
.sf-more{display:inline-flex;align-items:center;gap:4px;margin-top:8px;color:#C9D3EC;font-size:.85rem;font-weight:500}
.sf-more:hover{color:#fff}
.sf-more .i{width:.9em;height:.9em}
.plan-form .search{grid-template-columns:1fr 44px 1fr .8fr auto}
.plan-opts{display:flex;flex-wrap:wrap;gap:12px 22px;align-items:flex-end;margin-top:12px;color:#fff}
.plan-opts fieldset{border:0;margin:0;padding:0;min-width:0}
.plan-opts legend,.po-sel span{display:block;font-size:.72rem;font-weight:600;color:#C9D3EC;text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px;padding:0}
.po-chips{display:flex;flex-wrap:wrap;gap:6px}
.po-chips label{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:var(--r-pill);background:rgba(255,255,255,.12);color:#fff;font-size:.88rem;font-weight:500;cursor:pointer;white-space:nowrap}
.po-chips label:hover{background:rgba(255,255,255,.2)}
.po-chips label.on{background:#fff;color:var(--navy)}
.po-chips label:has(input:focus-visible){outline:3px solid var(--coral);outline-offset:2px}
.po-chips input{position:absolute;opacity:0;pointer-events:none}
.po-chips .i{width:1em;height:1em}
.po-row{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end;flex-basis:100%}
.po-sel select,.po-sel input{font:500 .9rem var(--f-ui);color:var(--ink);border:0;border-radius:var(--r-sm);padding:0 10px;height:38px;background:#fff;min-width:110px}
.po-check{display:inline-flex;align-items:center;gap:8px;height:38px;font-size:.9rem;cursor:pointer}
.po-check input{width:18px;height:18px;accent-color:var(--coral)}
@media (max-width:860px){
  .plan-form .search{grid-template-columns:1fr}
  .po-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .po-sel select,.po-sel input{width:100%;min-width:0}
  .po-check{grid-column:1/-1}
  .po-toggle{display:inline-flex;align-items:center;gap:8px;margin-top:10px;border:1px solid rgba(255,255,255,.28);background:transparent;color:#fff;font:600 .92rem var(--f-ui);padding:8px 14px;border-radius:var(--r-pill);cursor:pointer}
  .po-toggle b{color:var(--coral)}
  .po-toggle .i{width:1em;height:1em}
  .plan-form:not(.opts-open) .plan-opts{display:none}
  .plan-form.opts-open .po-toggle{display:none}
}
@media (min-width:861px){.po-toggle{display:none}}
.plan-how{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:16px}
.plan-how .i{width:26px;height:26px;color:var(--coral);margin-bottom:8px}
.plan-wait{display:flex;gap:14px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:22px;margin-top:20px}
.spin{width:28px;height:28px;border-radius:50%;border:3px solid var(--tint);border-top-color:var(--navy);animation:spin .8s linear infinite;flex:none}
@keyframes spin{to{transform:rotate(360deg)}}
.plan-note{margin-top:16px;padding:12px 16px;border-radius:var(--r-sm);background:var(--warn-bg);color:var(--warn);font-size:.9rem}
.plan-bar{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;margin:20px 0 12px}
.plan-bar .sel select{height:38px}
.way.opt .title .badge{font-size:.72rem}
.way.opt .meta sup{font-size:.7rem;color:var(--coral);margin-left:1px}
.way.opt .legs .wait a{font-weight:600;margin-left:6px}
/* ---------- Каталоги станций, автовокзалов, аэропортов: поиск, округа, алфавит ---------- */
.cat-search{display:flex;gap:10px;margin-top:16px;max-width:760px}
.cs-field{position:relative;flex:1;min-width:0}
.cs-field>.i{position:absolute;left:16px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--muted);pointer-events:none}
.cs-field input{width:100%;height:52px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);padding:0 16px 0 44px;font:500 1rem var(--f-ui);color:var(--ink)}
.cs-field input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(31,51,120,.12)}
.cat-search .btn{min-height:52px}
.cs-note{margin-top:8px}
.cs-list{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:40;background:var(--surface);border-radius:var(--r);box-shadow:var(--sh-lift);list-style:none;margin:0;padding:6px;max-height:420px;overflow-y:auto}
.cs-list a{display:block;padding:9px 12px;border-radius:8px;color:var(--ink)}
.cs-list a:hover,.cs-list li.on a{background:var(--tint);text-decoration:none}
.cs-list b{font-weight:600}
.cs-list span{display:block;font-size:.82rem;color:var(--muted)}
.cs-list .cs-all a{color:var(--navy);font-weight:600;border-top:1px solid var(--line);border-radius:0 0 8px 8px}
.cs-results a{flex-direction:column;gap:2px;justify-content:flex-start}
.cs-results a span{white-space:normal}
.cs-results em,.district em{font-style:normal;font-weight:600;color:var(--muted);font-size:.82rem;font-variant-numeric:tabular-nums}
.hubs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:10px}
.hubs-grid a{display:flex;gap:10px;align-items:center;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--ink);min-width:0}
.hubs-grid a:hover{border-color:var(--navy);text-decoration:none}
.hubs-grid .i{flex:0 0 auto;width:20px;height:20px;color:var(--navy)}
.hubs-grid b{display:block;font-weight:600;font-size:.93rem;line-height:1.3}
.hubs-grid a>span>span{display:block;font-size:.8rem;color:var(--muted)}
.districts{columns:3 280px;column-gap:20px}
.district{break-inside:avoid;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin-bottom:20px}
.district h3{font-size:.95rem;margin-bottom:6px}
.district a{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid var(--line);color:var(--ink);font-size:.92rem}
.district a:first-of-type{border-top:0}
.district a:hover{color:var(--navy);text-decoration:none}
.district small{color:var(--muted);font-size:.8rem}
.abc{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px;position:sticky;top:calc(env(safe-area-inset-top,0px) + 64px);z-index:5;background:var(--bg);padding:8px 0}
.abc a{min-width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);font-weight:600;font-size:.92rem}
.abc a:hover{border-color:var(--navy);text-decoration:none}
.abc a.on{background:var(--navy);border-color:var(--navy);color:#fff}
.abc-group{scroll-margin-top:130px;margin-bottom:18px}
.abc-group h3{font-size:1.2rem;color:var(--navy);margin-bottom:4px}
@media (max-width:640px){
  .cat-search .btn{display:none}
  .abc{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  .abc a{flex:0 0 auto}
}
.places{columns:4 220px;column-gap:24px}
.place{break-inside:avoid;padding:6px 0 10px;border-bottom:1px solid var(--line);margin-bottom:6px}
.place h4{font-size:.92rem;font-weight:700;margin:0 0 2px}
.place a{display:block;padding:3px 0;color:var(--ink);font-size:.9rem}
.place a:hover{color:var(--navy)}
.place a span{color:var(--muted);font-size:.8rem}
.abc-list a{flex-direction:column;gap:1px;justify-content:flex-start}
.abc-list a span{white-space:normal}
.hubs-more{display:none;margin-top:10px;width:100%}
@media (max-width:640px){.hubs-grid.cut a:nth-child(n+13){display:none}.hubs-grid.cut+.hubs-more{display:flex}}
.abc a.wide{padding:0 10px;font-variant-numeric:tabular-nums}
.hubs-grid .modes-ic{display:flex;gap:2px;flex:0 0 auto}
.hubs-grid .modes-ic .i{width:18px;height:18px}
.city-routes{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:10px}
.city-routes>div{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px 14px}
.cr-name{font-weight:700;color:var(--ink)}
.cr-links{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:4px;font-size:.88rem}
/* ---------- Главная: пунктирные маршруты справа от заголовка ---------- */
/* картинка — в блоке заголовка: высота ограничена им, на форму поиска не заходит */
.hero-head{position:relative}
.hero-head>h1,.hero-head>.lead{position:relative;z-index:1}
.hero-routes{position:absolute;right:0;top:0;height:100%;width:min(440px,36vw);pointer-events:none;z-index:0}
.hero-routes .transfer circle{fill:var(--navy);stroke:#fff;stroke-width:2}
.hero-routes .transfer circle+circle{fill:#fff;stroke:none}
.hero-routes .transfer text{fill:rgba(201,211,236,.75);font:500 11px var(--f-ui);letter-spacing:.02em}
.hero-routes .flow path{stroke:rgba(201,211,236,.42);stroke-width:2;animation:route-flow 40s linear infinite}
.hero-routes .ends circle{fill:var(--navy);stroke:rgba(201,211,236,.7);stroke-width:2}
.hero-routes .start{fill:var(--coral)}
.hero-routes .start-halo{fill:rgba(248,104,90,.18)}
.hero-routes .glyph{fill:none;stroke:var(--coral);stroke-width:1.8;stroke-linejoin:round}
.hero-routes .badge>circle{fill:#1B336E;stroke:rgba(201,211,236,.35);stroke-width:1.5}
.hero-routes .badge g{fill:none;stroke:#fff;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
@keyframes route-flow{to{stroke-dashoffset:-400}}
@media (max-width:1080px){.hero-routes{display:none}}
/* ---------- Перевозчик: карточки маршрутов реестра ---------- */
.routes-cards{display:grid;gap:12px}
.rcard{padding:16px 18px}
.rc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.rc-ends{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;font-size:1.02rem;line-height:1.35}
.rc-ends b{font-weight:700}
.rc-arrow{color:var(--muted)}
.rc-acts{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.rc-no{flex:0 0 auto;font-size:.82rem;color:var(--muted);background:var(--bg);border-radius:var(--r-pill);padding:3px 10px;font-variant-numeric:tabular-nums}
.rc-facts{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px;font-size:.9rem;color:var(--muted)}
.rc-facts b{color:var(--ink);font-weight:600}
.rc-facts .i{width:1em;height:1em;margin-right:4px;opacity:.7}
.rc-stops{margin-top:10px}
.rc-stops summary{cursor:pointer;color:var(--navy);font-weight:500;font-size:.9rem}
.rc-stops ol{margin:8px 0 0;padding-left:20px;display:grid;gap:4px;font-size:.88rem}
.rc-stops li span+span{margin-left:8px}
.reqs .kv{margin-top:8px}
@media (max-width:640px){.rc-head{flex-direction:column}}
.rc-deps{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.rc-deps span{background:var(--bg);border-radius:8px;padding:5px 10px;font-size:.88rem;font-variant-numeric:tabular-nums}
.rc-deps small{color:var(--muted);font-size:.76rem}
/* ---------- Каталог компаний /companies/ ---------- */
.co-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:10px}
.co-grid a{display:flex;gap:12px;align-items:center;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--ink);min-width:0}
.co-grid a:hover{border-color:var(--navy);text-decoration:none}
.co-grid .i{flex:0 0 auto;width:20px;height:20px;color:var(--navy)}
.co-grid b{display:block;font-weight:600;font-size:.93rem;line-height:1.3}
.co-grid a>span>span{display:block;font-size:.8rem;color:var(--muted);margin-top:1px}
.co-grid.cut a:nth-child(n+17){display:none}
.co-more{margin-top:10px}
.co-list{display:grid;gap:10px}
.co-card{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:4px 16px;align-items:center;padding:14px 18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);color:var(--ink)}
.co-card:hover{border-color:var(--navy);text-decoration:none}
.co-ic{width:44px;height:44px;border-radius:12px;background:var(--tint);color:var(--navy);display:grid;place-items:center}
.co-ic .i{width:22px;height:22px}
.co-body{display:grid;gap:3px;min-width:0}
.co-body b{font-size:1.02rem;font-weight:700}
.co-meta{font-size:.86rem;color:var(--muted)}
.co-routes{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.86rem;color:var(--ink)}
.co-routes span::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--coral);margin-right:6px;vertical-align:1px}
.co-stats{display:flex;flex-direction:column;gap:2px;align-items:flex-end;font-size:.84rem;color:var(--muted);white-space:nowrap;text-align:right}
.co-stats span:first-child{color:var(--ink);font-weight:600}
@media (max-width:700px){
  .co-card{grid-template-columns:40px minmax(0,1fr);padding:14px}
  .co-ic{width:40px;height:40px}
  .co-stats{grid-column:2;flex-direction:row;flex-wrap:wrap;gap:2px 10px;align-items:flex-start;white-space:normal;text-align:left}
}
.co-cities{margin:20px 0 -10px}
@media (max-width:640px){
  .co-grid{grid-template-columns:1fr 1fr;gap:8px}
  .co-grid a{flex-direction:column;align-items:flex-start;gap:6px;padding:10px 12px}
  .co-grid b{font-size:.88rem}
  .co-grid.cut a:nth-child(n+9){display:none}
}
/* ---------- «Сообщить об ошибке» ---------- */
.report-btn{display:inline-flex;align-items:center;gap:5px;border:0;background:none;padding:4px 0;margin-top:6px;color:var(--muted);font:500 .82rem var(--f-ui);cursor:pointer}
.report-btn:hover{color:var(--navy);text-decoration:underline}
.report-btn .i{width:.95em;height:.95em}
.report-dlg{border:0;border-radius:var(--r);padding:20px 22px;width:min(440px,calc(100vw - 32px));box-shadow:var(--sh-lift);color:var(--ink);background:var(--surface)}
.report-dlg::backdrop{background:rgba(10,20,50,.45)}
.report-dlg form{display:grid;gap:12px}
.report-dlg h3{margin:0}
.report-dlg .rd-subject{margin:-6px 0 0}
.report-dlg label{display:grid;gap:4px;font-size:.88rem;font-weight:600}
.report-dlg textarea,.report-dlg input{font:400 .95rem var(--f-ui);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;color:var(--ink);background:var(--surface);resize:vertical}
.report-dlg textarea:focus,.report-dlg input:focus{outline:none;border-color:var(--navy)}
.report-dlg .rd-trap{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.report-dlg .rd-btns{display:flex;justify-content:flex-end;gap:10px}
/* ---------- Регион: города и транспорт ---------- */
.rg-text p{max-width:72ch;margin:0 0 10px;line-height:1.6}
.rg-cities{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));gap:8px}
.rg-cities a{display:grid;grid-template-columns:1fr auto;gap:2px 8px;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--ink);min-width:0}
.rg-cities a:hover{border-color:var(--navy);text-decoration:none}
.rg-cities b{font-weight:600;font-size:.93rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rg-modes{display:flex;gap:3px;color:var(--navy)}
.rg-modes .i{width:15px;height:15px}
.rg-n{grid-column:1/-1;font-size:.8rem;color:var(--muted)}
.rg-more a span .i{width:13px;height:13px;vertical-align:-2px;color:var(--navy)}
.rg-map .ymap.tall{height:420px}
.rg-related{grid-template-columns:1fr!important}
.rg-links{display:grid}
.rg-links a{display:flex;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--line);color:var(--ink);font-size:.93rem}
.rg-links a:first-child{border-top:0}
.rg-links a:hover{color:var(--navy);text-decoration:none}
.rg-links .i{width:16px;height:16px;color:var(--navy);flex:0 0 auto}
.deal-price.low{color:var(--good)}
.fl-h3{font-size:1rem;margin:16px 0 8px}
.fl-fare{grid-template-columns:minmax(0,1fr) auto auto}
.fl-fare .price.low{color:var(--good)}
@media (max-width:760px){.fl-fare{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:none}.fl-fare .go{grid-column:1/-1;justify-content:flex-end}}

/* Источники данных */
.sources{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.src{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;display:flex;flex-direction:column;gap:8px}
.src h2{font-size:1.05rem;margin:0}
.src p{margin:0;line-height:1.5;color:var(--ink)}
.src-meta{margin-top:auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:.84rem;color:var(--muted)}
@media (max-width:520px){.sources{grid-template-columns:1fr}}

/* Места под РСЯ (заглушки до кодов блоков): высота задана заранее — без сдвига вёрстки при загрузке */
.ad{background:#E4E8EF;border-radius:var(--r);margin-top:32px}
.ad.is-on{background:transparent}
.ad-wide{min-height:250px}
.ad-side{min-height:600px;margin-top:0}
@media (max-width:640px){.ad-wide{min-height:300px}}
@media (max-width:980px){.ad-side{display:none}}  /* колонка уходит под контент — на телефоне хватает блока в контенте */
.ad-mob{display:none}
@media (max-width:980px){.ad-mob{display:block}}  /* вместо правого блока, когда колонка справа скрыта */

/* «Купить» в контенте страниц поезда и рейса — на телефоне не уходит под маршрут */
.buybox{display:flex;align-items:center;justify-content:space-between;gap:14px 24px;flex-wrap:wrap;margin-top:8px}
.buybox>div{display:grid;gap:8px;min-width:0}
.buybox h2{font-size:1.15rem}
.buybox p{margin:0}
.buybox .buy-price{font-size:1.3rem}
.buybox .btn{flex:none;min-width:200px}
.buybox .buy-alts{display:flex;flex-wrap:wrap;gap:8px}
@media (max-width:640px){.buybox .btn{width:100%}}
/* Трансфер INTUI: реклама в стиле строки попутчиков (templates/_intui.html), последним пунктом ленты */
.intui{border:1px solid var(--line);border-radius:var(--r);background:#F5F7FC;box-shadow:inset 3px 0 0 #244082;padding:14px 18px 10px;margin-top:12px}
.ways > .intui{margin-top:0}
.intui-main{display:grid;grid-template-columns:76px minmax(0,1fr) auto;gap:14px;align-items:center}
.intui-logo{display:block;width:62px;height:auto}
.intui-text b{display:block;font-size:.95rem}
.intui-text span{display:block;font-size:.82rem;color:var(--muted);margin-top:2px}
.intui .go{display:flex;align-items:center;gap:12px;justify-content:flex-end}
.intui .price{font-weight:800;white-space:nowrap}
.intui-list{list-style:none;margin:10px 0 0;padding:0;font-size:.86rem}
.intui-list a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 14px;padding:7px 0;border-top:1px dashed var(--line);color:inherit;text-decoration:none}
.intui-list b{font-weight:600}
.intui-list span{grid-column:1;color:var(--muted);font-size:.8rem}
.intui-list em{grid-column:2;grid-row:1/span 2;align-self:center;font-style:normal;font-weight:700;white-space:nowrap}
.intui-list a:hover b{text-decoration:underline}
.intui-ad{margin-top:8px;font-size:.7rem;color:var(--muted)}
@media (max-width:760px){
  .intui-main{grid-template-columns:62px minmax(0,1fr)}
  .intui .go{grid-column:1/-1;justify-content:space-between}
}
/* 12Go — та же рекламная строка, что у INTUI (templates/_12go.html) */
.intui.tw{box-shadow:inset 3px 0 0 #4CB748;background:#F5FBF4}
.tw-logo{display:block;width:62px;height:auto}
.way.tw-way{background:#F5FBF4;box-shadow:inset 3px 0 0 #4CB748}
.way.tw-way .ico{background:#fff;color:#2F8F2B}
.way.tw-way .tw-ico{width:40px;height:auto}
.way.tw-way .tw-ad{grid-column:1/-1;margin-top:2px}
.tw-inline{display:inline-block;width:56px;height:auto;vertical-align:-2px;margin-left:6px}
