
:root{--blue:#075bbd;--navy:#062b57;--yellow:#ffd32f;--bg:#f3f7fb;--line:#dbe6f1;--green:#16843a;--text:#082447;--muted:#63758c}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text);line-height:1.55;padding-bottom:82px}a{color:inherit}.wrap{width:min(1180px,calc(100% - 32px));margin:auto}.top{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}.header{height:76px;display:flex;align-items:center;gap:22px}.brand{display:flex;align-items:center;text-decoration:none;font-weight:800;font-size:20px;white-space:nowrap}.brand img{width:48px;height:48px;margin-right:10px}.nav{margin-left:auto;display:flex;gap:18px;align-items:center}.nav a{text-decoration:none;font-weight:700;font-size:14px}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:12px;background:var(--yellow);padding:13px 20px;font-weight:800;text-decoration:none;cursor:pointer}.btn.blue{background:var(--blue);color:#fff}.hero{padding:34px 0}.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:22px}.card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:24px;box-shadow:0 8px 24px rgba(16,54,90,.04)}h1{font-size:36px;line-height:1.15;margin:0 0 14px}h2{font-size:28px;line-height:1.2;margin:0 0 16px}h3{font-size:20px;margin:0 0 10px}.lead{font-size:18px;color:var(--muted)}.contact-list{display:grid;gap:12px;margin:22px 0}.contact-item{display:flex;gap:10px}.actions{display:flex;gap:10px;flex-wrap:wrap}.hero-photo{min-height:340px;border-radius:20px;overflow:hidden;position:relative;background:linear-gradient(135deg,#0b66c2,#6bb8f2);display:flex;align-items:flex-end}.hero-photo:before{content:'РЯЗАНЬ';position:absolute;inset:auto 0 0;padding:30px;font-size:46px;font-weight:900;color:#fff;background:linear-gradient(transparent,rgba(0,24,55,.78))}.hero-photo .bus{position:absolute;left:8%;right:8%;bottom:75px;height:105px;background:#fff;border-radius:24px 42px 14px 14px;box-shadow:0 18px 30px #00345b55}.hero-photo .bus:after{content:'РЯЗАНЬ';position:absolute;left:28%;top:32px;color:#075bbd;font-weight:900;font-size:24px}.section{padding:28px 0}.section-head{display:flex;align-items:end;justify-content:space-between;gap:15px;margin-bottom:18px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.city-card{height:190px;border-radius:18px;overflow:hidden;position:relative;text-decoration:none;background:linear-gradient(135deg,#0b5cab,#85c7ee);display:flex;align-items:flex-end}.city-card img{position:absolute;width:100%;height:100%;object-fit:cover}.city-card:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 35%,rgba(0,25,55,.84))}.city-card span{position:relative;z-index:2;color:#fff;font-size:22px;font-weight:900;padding:18px}.widget-box{background:#fff;border:1px solid var(--line);border-radius:20px;padding:20px;overflow:hidden}.route-layout{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:22px}.sidebar{display:grid;gap:16px;align-content:start}.badge{display:inline-flex;border:1px solid #94e5aa;background:#effff3;color:#08732b;border-radius:999px;padding:6px 12px;font-size:13px;font-weight:800}.schedule-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:26px 0 14px}.table{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#fff}.tr{display:grid;grid-template-columns:115px 1.3fr 1fr 1fr 140px;align-items:center;border-top:1px solid var(--line);min-height:64px}.tr:first-child{border-top:0;background:#eaf5ff;text-transform:uppercase;font-size:11px;font-weight:800}.td{padding:12px}.time{font-weight:900;font-size:17px}.notice{background:#fff8db;border:1px solid #f4d45e;border-radius:14px;padding:15px}.fixed-buy{position:fixed;left:0;right:0;bottom:0;z-index:50;background:#ffffffee;backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:10px 16px;display:flex;justify-content:center}.fixed-buy .btn{min-width:275px;font-size:17px}.footer{background:#062b57;color:#dbeaff;margin-top:40px;padding:36px 0 100px}.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:30px}.footer a{color:#fff}.breadcrumbs{font-size:13px;color:var(--muted);padding-top:20px}.content p{margin:10px 0}.links{display:flex;flex-wrap:wrap;gap:8px}.chip{background:#fff;border:1px solid var(--line);padding:8px 12px;border-radius:999px;text-decoration:none}.widget-box script{max-width:100%}
@media(max-width:850px){.nav a:not(.btn){display:none}.header{height:66px}.brand{font-size:16px}.brand img{width:42px;height:42px}.hero-grid,.route-layout,.footer-grid{grid-template-columns:1fr}.hero-photo{min-height:270px}.grid{grid-template-columns:repeat(2,1fr)}h1{font-size:30px}.sidebar{grid-row:auto}.tr{display:block;padding:14px}.tr:first-child{display:none}.td{padding:5px 0}.td:before{display:block;color:#6c7e94;text-transform:uppercase;font-size:10px;font-weight:800}.td:nth-child(1):before{content:'Отправление'}.td:nth-child(2):before{content:'Дни'}.td:nth-child(3):before{content:'Откуда'}.td:nth-child(4):before{content:'Куда'}.td:nth-child(5){padding-top:12px}.td:nth-child(5) .btn{width:100%}.schedule-head{align-items:flex-start;flex-direction:column}.widget-box{padding:12px;overflow-x:hidden}}
@media(max-width:540px){.wrap{width:min(100% - 20px,1180px)}.grid{grid-template-columns:1fr}.city-card{height:180px}.card{padding:18px}.hero{padding:18px 0}h1{font-size:27px}h2{font-size:24px}.nav .btn{padding:10px 12px;font-size:12px}.fixed-buy .btn{width:100%;min-width:0}.hero-photo:before{font-size:34px}}

.hero-photo{background:#dceaf7;display:block}
.hero-photo img{width:100%;height:100%;min-height:340px;object-fit:cover;object-position:center;display:block}
.hero-photo:before{display:none!important;content:none!important}
.hero-photo .bus{display:none!important}
@media(max-width:850px){.hero-photo img{min-height:270px}}

/* Content cards used as sections need inner breathing room. `.section` is declared
   after `.card`, so without this rule its vertical-only padding overrides the
   card padding. */
.section.card{padding:28px 30px}
@media(max-width:540px){.section.card{padding:22px 20px}}

/* Mobile overflow hardening */
html,body{max-width:100%;overflow-x:hidden}
img,iframe,video,canvas,svg{max-width:100%}
.route-layout,.route-layout>*,main,.section,.table,.tr,.td,.widget-box,.sidebar,.card{min-width:0;max-width:100%}
.btn{max-width:100%;white-space:normal;text-align:center;overflow-wrap:anywhere}
.widget-box{width:100%}
.widget-box iframe,.widget-box>div{max-width:100%!important}
@media(max-width:850px){
  .wrap{max-width:100%;overflow-x:clip}
  .route-layout{width:100%;overflow:hidden}
  .table{width:100%;overflow:hidden}
  .tr{width:100%;max-width:100%;overflow:hidden}
  .td{width:100%;max-width:100%;min-width:0;overflow-wrap:anywhere}
  .td:nth-child(5) .btn{display:flex;width:100%;max-width:100%;min-width:0;padding:13px 12px}
  .widget-box{width:100%;max-width:100%;overflow:hidden}
}

/* Keep homepage hero CTAs side-by-side on mobile */
@media(max-width:540px){
 .hero .actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;width:100%;}
 .hero .actions .btn{width:100%;min-width:0;max-width:100%;padding:12px 7px;font-size:clamp(10px,2.9vw,13px);line-height:1.2;white-space:normal;overflow-wrap:normal;word-break:normal;text-align:center;}
}

/* FIX: keep homepage hero buttons side by side on tablet and mobile */
@media (max-width: 850px) {
  .hero .actions {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
    gap: 8px !important;
    width: 100% !important;
    flex-wrap: nowrap !important;
  }
  .hero .actions > .btn {
    display: flex !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    padding: 12px 5px !important;
    font-size: clamp(10px, 2.4vw, 14px) !important;
    line-height: 1.2 !important;
    text-align: center !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }
}

/* Reduce space between mobile header and homepage intro */
@media (max-width:850px){.hero{padding-top:10px!important}}
@media (max-width:540px){.hero{padding-top:8px!important}}

/* Compact spacing after Unitiki search on route pages */
.route-ticket-widget{padding-bottom:8px!important}
.route-ticket-widget + .section{padding-top:8px!important}
@media(max-width:850px){.route-ticket-widget{padding-bottom:6px!important}.route-ticket-widget + .section{padding-top:6px!important}}
