@media(max-width:420px){
  .routes-table-v8 .route-cell--comfort{min-width:0}
  .routes-table-v8 .comfort-list{max-width:100%;flex-wrap:wrap;justify-content:flex-end;row-gap:4px}
}
@media(max-width:360px){
  .page-hero__grid>*{min-width:0}
  .page-hero h1{overflow-wrap:anywhere}
}
.season-method{margin:16px 0 0;color:#64748b;font-size:13px;line-height:1.55}

/* route-stop-snap-v12-2026-08-30 */
.route-motion-v8 .route-motion__top{display:flex;align-items:center;justify-content:space-between;gap:16px}
.route-motion-v8 .route-motion__hint{color:#647792;font-size:.68rem;font-weight:600;line-height:1.3;text-align:right}
.route-motion-v8 .route-stop:not(.route-stop--terminal) .route-stop__label strong{color:#405775;font-size:.72rem;font-weight:700}
.route-motion-v8 .route-stop:not(.route-stop--terminal) .route-stop__label small{margin-top:3px;color:#7a8da7;font-size:.58rem;font-weight:550}
.route-motion-v8 .route-road .route-bus{animation:route-bus-cycle-v12 48s linear infinite}
.route-motion-v8 .route-bus__passengers i:nth-child(1){animation:passenger-one-dv 48s linear infinite!important}
.route-motion-v8 .route-bus__passengers i:nth-child(2){animation:passenger-two-dv 48s linear infinite!important}
.route-motion-v8 .route-bus__passengers i:nth-child(3){animation:passenger-three-dv 48s linear infinite!important}
.route-motion-v8 .route-bus__passengers i:nth-child(4){animation:passenger-four-dv 48s linear infinite!important}
.route-motion-v8 .route-road .route-stop:nth-child(2) .route-stop__marker{animation:route-stop-one-v12 48s linear infinite}
.route-motion-v8 .route-road .route-stop:nth-child(3) .route-stop__marker{animation:route-stop-two-v12 48s linear infinite}
.route-motion-v8 .route-road .route-stop:nth-child(4) .route-stop__marker{animation:route-stop-three-v12 48s linear infinite}
@keyframes route-bus-cycle-v12{
  0%,5%{left:0;transform:translate(-50%,-50%) scaleX(1)}
  12%,16%{left:28%;transform:translate(-50%,-50%) scaleX(1)}
  23%,27%{left:56%;transform:translate(-50%,-50%) scaleX(1)}
  34%,38%{left:80%;transform:translate(-50%,-50%) scaleX(1)}
  45%,49.99%{left:100%;transform:translate(-50%,-50%) scaleX(1)}
  50.01%,55%{left:100%;transform:translate(-50%,-50%) scaleX(-1)}
  62%,66%{left:80%;transform:translate(-50%,-50%) scaleX(-1)}
  73%,77%{left:56%;transform:translate(-50%,-50%) scaleX(-1)}
  84%,88%{left:28%;transform:translate(-50%,-50%) scaleX(-1)}
  95%,100%{left:0;transform:translate(-50%,-50%) scaleX(-1)}
}
@keyframes route-stop-one-v12{
  0%,11.99%,16.01%,83.99%,88.01%,100%{background:#fff;box-shadow:0 0 0 3px #1769e055,0 5px 12px #0b1f3a26}
  12%,16%,84%,88%{background:var(--accent);box-shadow:0 0 0 5px #f59e0b2e,0 5px 12px #0b1f3a26}
}
@keyframes route-stop-two-v12{
  0%,22.99%,27.01%,72.99%,77.01%,100%{background:#fff;box-shadow:0 0 0 3px #1769e055,0 5px 12px #0b1f3a26}
  23%,27%,73%,77%{background:var(--accent);box-shadow:0 0 0 5px #f59e0b2e,0 5px 12px #0b1f3a26}
}
@keyframes route-stop-three-v12{
  0%,33.99%,38.01%,61.99%,66.01%,100%{background:#fff;box-shadow:0 0 0 3px #1769e055,0 5px 12px #0b1f3a26}
  34%,38%,62%,66%{background:var(--accent);box-shadow:0 0 0 5px #f59e0b2e,0 5px 12px #0b1f3a26}
}
/* Yellow passenger dots leave at each outward stop and board on the return. */
@keyframes passenger-one-dv{
  0%,12%{opacity:1;transform:translateY(0)}
  14%{opacity:1;transform:translateY(12px)}
  14.01%,83.99%{opacity:0;transform:translateY(12px)}
  84%{opacity:1;transform:translateY(12px)}
  86%,100%{opacity:1;transform:translateY(0)}
}
@keyframes passenger-two-dv{
  0%,23%{opacity:1;transform:translateY(0)}
  25%{opacity:1;transform:translateY(12px)}
  25.01%,72.99%{opacity:0;transform:translateY(12px)}
  73%{opacity:1;transform:translateY(12px)}
  75%,100%{opacity:1;transform:translateY(0)}
}
@keyframes passenger-three-dv{
  0%,34%{opacity:1;transform:translateY(0)}
  36%{opacity:1;transform:translateY(12px)}
  36.01%,61.99%{opacity:0;transform:translateY(12px)}
  62%{opacity:1;transform:translateY(12px)}
  64%,100%{opacity:1;transform:translateY(0)}
}
@keyframes passenger-four-dv{
  0%,45%{opacity:1;transform:translateY(0)}
  47%{opacity:1;transform:translateY(12px)}
  47.01%,52.99%{opacity:0;transform:translateY(12px)}
  53%{opacity:1;transform:translateY(12px)}
  55%,100%{opacity:1;transform:translateY(0)}
}
@media(max-width:920px) and (min-width:761px){
  .route-motion-v8 .route-stop:not(.route-stop--terminal) .route-stop__label small{display:none}
}
@media(prefers-reduced-motion:reduce){
  .route-motion-v8 .route-road .route-bus{animation:none!important;left:56%!important;transform:translate(-50%,-50%)!important}
  .route-motion-v8 .route-road .route-stop__marker{animation:none!important}
  .route-motion-v8 .route-bus__passengers i{animation:none!important;opacity:1!important;transform:none!important}
}

/* Route table refinements, including matching filter chevrons. */
.routes-table-v8 table{table-layout:fixed;min-width:1120px}
.routes-table-v8 th:nth-child(1){width:18%}
.routes-table-v8 th:nth-child(2){width:18%}
.routes-table-v8 th:nth-child(3){width:11%}
.routes-table-v8 th:nth-child(4){width:11%}
.routes-table-v8 th:nth-child(5){width:15%}
.routes-table-v8 th:nth-child(6){width:8%}
.routes-table-v8 th:nth-child(7){width:10%}
.routes-table-v8 th:nth-child(8){width:9%}
.routes-table-v8 .route-cell--price>strong{white-space:nowrap}
.route-arrival-next-day{display:inline-block;margin-left:4px;color:#5d708c;font-size:.57rem;font-weight:550;line-height:1;vertical-align:super;white-space:nowrap}
.routes-table-v8 .route-cell--arrival>strong{white-space:nowrap}
.routes-table-v8 .route-cell--comfort{min-width:0}
.routes-table-v8 .comfort-list{max-width:100%;gap:4px}
.routes-table-v8 .table-icon-chip{flex:0 0 auto}
.routes-table-v8 .comfort-unknown{width:31px;height:31px;font-size:.8rem;font-weight:700}
.routes-table-v8 .route-row-cta{width:40px;height:40px;min-height:40px;padding:0}
.routes-table-v8 .route-row-cta .icon{width:17px;height:17px}
.route-filter select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%231769e0' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 13px center;background-size:12px 8px}
.route-comfort-picker>summary:after{content:"";width:10px;height:10px;flex:0 0 10px;border-right:1.6px solid #1769e0;border-bottom:1.6px solid #1769e0;transform:translateY(-2px) rotate(45deg)}
@media(max-width:900px){.routes-table-v8 table{min-width:0}.routes-table-v8 .route-row-cta{width:44px;height:44px;min-height:44px;margin-left:auto}.routes-table-v8 .route-cell--comfort{min-width:0}}

/* kazan-syktyvkar-demand-history-v1 */
.demand-history-section{border-top:1px solid var(--line);background:linear-gradient(180deg,#f7faff 0,#eef4fb 100%)}
.season-card--demand{overflow:hidden}
.demand-season-chart .season-bar i{min-height:2px}
.demand-season-chart .season-bar:focus-visible{outline:0}
.demand-season-chart .season-bar:focus-visible i{box-shadow:inset 0 1px #ffffff80,0 0 0 3px #ff8a1f66}
.season-card--demand .season-card__meta{justify-content:flex-start}
.season-card--demand .season-card__meta output{font-weight:600}
.season-card--demand .season-method{max-width:1040px}
@media(max-width:760px){.demand-season-chart{grid-template-columns:repeat(12,56px);height:250px}.season-card--demand .season-card__meta{display:grid;gap:10px}.season-card--demand .chart-legend{gap:10px}}
@media(max-width:760px){.demand-history-section,.main-nav a[href$="#season-chart"]{display:none!important}}

/* Keep the four passenger dots in step with the bus and the two intermediate stops. */
.route-motion-v8 .route-road .route-bus{animation:kazan-syktyvkar-bus 36s linear infinite}
.route-motion-v8 .route-road .route-bus__passengers i:nth-child(1){animation:kazan-passenger-yoshkar 36s linear infinite!important}
.route-motion-v8 .route-road .route-bus__passengers i:nth-child(2){animation:kazan-passenger-kirov 36s linear infinite!important}
.route-motion-v8 .route-road .route-bus__passengers i:nth-child(3),.route-motion-v8 .route-road .route-bus__passengers i:nth-child(4){animation:kazan-passenger-syktyvkar 36s linear infinite!important}
.route-motion-v8 .route-road .route-stop:nth-child(2) .route-stop__marker{animation:kazan-stop-yoshkar 36s linear infinite}
.route-motion-v8 .route-road .route-stop:nth-child(3) .route-stop__marker{animation:kazan-stop-kirov 36s linear infinite}
.route-motion-v8 .route-road .route-stop--terminal .route-stop__marker{animation:none}
@keyframes kazan-syktyvkar-bus{
  0%,5%{left:0;transform:translate(-50%,-50%) scaleX(1)}
  20%,23%{left:31%;transform:translate(-50%,-50%) scaleX(1)}
  38%,41%{left:63%;transform:translate(-50%,-50%) scaleX(1)}
  55%{left:100%;transform:translate(-50%,-50%) scaleX(1)}
  60%{left:100%;transform:translate(-50%,-50%) scaleX(-1)}
  74%,77%{left:63%;transform:translate(-50%,-50%) scaleX(-1)}
  89%,92%{left:31%;transform:translate(-50%,-50%) scaleX(-1)}
  100%{left:0;transform:translate(-50%,-50%) scaleX(-1)}
}
@keyframes kazan-passenger-yoshkar{0%,21.5%{opacity:1}21.51%,90.99%{opacity:0}91%,100%{opacity:1}}
@keyframes kazan-passenger-kirov{0%,39.5%{opacity:1}39.51%,75.99%{opacity:0}76%,100%{opacity:1}}
@keyframes kazan-passenger-syktyvkar{0%,55%{opacity:1}55.01%,59.99%{opacity:0}60%,100%{opacity:1}}
@keyframes kazan-stop-yoshkar{0%,21.5%,90.99%,100%{background:#fff;box-shadow:0 0 0 3px #1769e055,0 5px 12px #0b1f3a26}21.51%,90.98%{background:var(--accent);box-shadow:0 0 0 4px #f59e0b2e,0 5px 12px #0b1f3a26}}
@keyframes kazan-stop-kirov{0%,39.5%,75.99%,100%{background:#fff;box-shadow:0 0 0 3px #1769e055,0 5px 12px #0b1f3a26}39.51%,75.98%{background:var(--accent);box-shadow:0 0 0 4px #f59e0b2e,0 5px 12px #0b1f3a26}}
.route-cell--arrival .route-next-day{margin-left:4px;color:#647792;font-size:.58rem;font-weight:650;letter-spacing:0;white-space:nowrap;vertical-align:super}
.route-kpis{grid-template-columns:1fr 1.25fr 1fr}
.routes-table-v8 .route-cell--price>strong{white-space:nowrap}
.routes-table-v8 .route-cell--action .route-row-cta{width:42px;min-width:42px;height:38px;padding:7px}
.route-filter{position:relative}
.route-filter select{appearance:none;-webkit-appearance:none;padding-right:34px}
.route-filter:after,.route-comfort-picker>summary:after{content:"";display:block;width:7px;height:7px;border-right:2px solid var(--brand);border-bottom:2px solid var(--brand);transform:rotate(45deg);pointer-events:none}
.route-filter:after{position:absolute;right:16px;bottom:19px}
.route-comfort-picker>summary:after{flex:0 0 7px;margin:0 4px 4px 0}
@media(min-width:1101px){.routes-table-v8 table{min-width:1120px}.routes-table-v8 th:nth-child(5),.routes-table-v8 td:nth-child(5){width:154px;min-width:154px}.routes-table-v8 th:nth-child(7),.routes-table-v8 td:nth-child(7){width:118px;min-width:118px}.routes-table-v8 .comfort-list{flex-wrap:wrap;gap:3px}}
@media(max-width:1100px){.routes-table-v8 .route-cell--action .route-row-cta{width:42px;min-width:42px}}
@media(prefers-reduced-motion:reduce){.route-motion-v8 .route-road .route-bus{animation:none!important;left:50%!important}.route-motion-v8 .route-road .route-bus__passengers i:nth-child(n),.route-motion-v8 .route-road .route-stop__marker{animation:none!important}}

@media(min-width:901px) and (max-width:1100px){.route-filterbar-v8{grid-template-columns:1fr 1fr}.route-comfort-picker fieldset{width:min(320px,calc(100vw - 54px))}.routes-table-v8{overflow:visible}.routes-table-v8 table,.routes-table-v8 tbody{display:block;min-width:0}.routes-table-v8 caption{display:block;margin-bottom:12px;border-radius:12px}.routes-table-v8 thead{display:none}.routes-table-v8 tbody{display:grid;gap:12px}.routes-table-v8 tr[data-route-row]{display:grid;grid-template-columns:repeat(12,1fr);gap:0;padding:16px;border:1px solid #d9e5f2;border-radius:16px;background:#fff;box-shadow:0 8px 24px #16345c0e;filter:none!important}.routes-table-v8 tr[data-route-row][hidden]{display:none!important}.routes-table-v8 td{padding:7px 8px;border:0!important;border-radius:0!important;background:transparent!important}.routes-table-v8 .route-cell__label{display:block;margin-bottom:3px;color:var(--muted);font-size:.75rem}.routes-table-v8 .route-cell--departure{grid-column:1/6}.routes-table-v8 .route-cell--duration{grid-column:6/8;text-align:center}.routes-table-v8 .route-cell--arrival{grid-column:8/13;text-align:right}.routes-table-v8 .route-cell--departure>strong,.routes-table-v8 .route-cell--arrival>strong{font-size:1.35rem}.routes-table-v8 .route-cell--schedule{grid-column:1/7;margin-top:8px;border-top:1px solid var(--line)!important}.routes-table-v8 .route-cell--price{grid-column:7/13;margin-top:8px;border-top:1px solid var(--line)!important;text-align:right}.routes-table-v8 .route-cell--price>strong{font-size:1.2rem}.routes-table-v8 .route-cell--ticket{grid-column:1/3;display:flex;align-items:end;gap:8px;margin-top:5px}.routes-table-v8 .route-cell--comfort{grid-column:3/8;display:flex;align-items:end;gap:8px;margin-top:5px}.routes-table-v8 .route-cell--action{grid-column:8/13;display:flex;align-items:end;margin-top:5px}.routes-table-v8 .route-row-cta{width:100%;min-height:44px;justify-content:center}.routes-table-v8 .ticket-format-icon{margin:0}.routes-table-v8 .comfort-list{max-width:none}.routes-table-v8 .route-empty:not([hidden]){display:block;padding:18px;border:1px solid var(--line);border-radius:14px;background:#fff}.routes-table-v8 .route-empty td{display:block}.source-row--link-only{justify-content:flex-start}}
@media(min-width:901px) and (max-width:1100px){.routes-table-v8 .table-icon-chip:after{right:0;left:auto;max-width:160px;transform:translateY(4px)}.routes-table-v8 .table-icon-chip:hover:after,.routes-table-v8 .table-icon-chip:focus-visible:after{transform:translateY(0)}.routes-table-v8 .route-cell--ticket .table-icon-chip:after{right:auto;left:0}}
.trip-cheapest[hidden]{display:none!important}
@media(max-width:900px){
 .transport-table{overflow:visible}.transport-table table,.transport-table tbody{display:block;min-width:0;width:100%}
 .transport-table thead{display:none}.transport-table tbody{display:grid;gap:12px}
 .transport-table tr{display:grid;grid-template-columns:1fr 1fr;padding:14px;border:1px solid var(--line);border-radius:16px;background:#fff}
 .transport-table tbody th{grid-column:1/-1;font-size:16px;padding:0 0 8px}
 .transport-table td{display:flex;flex-direction:column;padding:8px 6px;border:0;font-size:15px;line-height:1.5;white-space:normal;min-width:0}
 .transport-table td:last-child{grid-column:1/-1}.transport-table td:before{content:attr(data-label);font-size:13px;color:var(--muted);margin-bottom:4px}
 .transport-table td small{font-size:13px}
}
@media(max-width:760px){
 #season-chart{display:none!important}
 .main-nav a[href="/#season-chart"]{display:none!important}
}
