/* Asiaroute — премиум-поиск авиабилетов (flights.js). Цвета — из дизайн-системы. */
#flights-app input[type=range]{accent-color:var(--accent);width:100%;height:4px}

/* search card */
.fl-form{background:#fff;border-radius:20px 20px 0 0;padding:14px;margin:-40px 0 0;box-shadow:0 24px 60px rgba(0,0,0,.18);display:grid;grid-template-columns:1fr auto 1fr 1.1fr 1fr auto;gap:10px;align-items:end;position:relative;z-index:30}
.fl-swap{align-self:end;margin-bottom:5px;width:40px;height:40px;border-radius:50%;border:1px solid #E0D9CD;background:#FBEDE6;color:#9A3412;font-size:16px;cursor:pointer;flex-shrink:0}
.fl-swap:hover{background:#F4D9CC}
.fl-near{background:#fff;border-radius:0 0 20px 20px;padding:0 14px 14px;margin:0 0 24px;box-shadow:0 24px 60px rgba(0,0,0,.18);display:flex;align-items:center;gap:10px;flex-wrap:wrap;position:relative;z-index:29}
.fl-near__l{font-size:12px;color:var(--muted);font-weight:700}
.fl-radsel{border:1px solid #E0D9CD;border-radius:10px;padding:8px 12px;font-family:inherit;font-size:13px;font-weight:600;background:#fff;cursor:pointer}
.fl-aptchips{display:flex;gap:6px;flex-wrap:wrap}
.fl-apt{border-radius:999px;padding:6px 11px;font-size:12px;font-weight:700;cursor:pointer;border:1px solid #D9D2C6;background:#fff;color:#6E675C}
.fl-apt.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.fl-near__c{font-size:12px;color:var(--muted);margin-left:auto}
.fl-field{position:relative}
.fl-field>label{display:block;font-size:11px;color:var(--muted);font-weight:700;margin-bottom:6px;padding-left:4px}
.fl-box{border:1px solid #E0D9CD;border-radius:12px;padding:13px 15px;font-weight:700;background:#fff;width:100%}
.fl-box--btn{cursor:pointer;display:flex;justify-content:space-between;align-items:center}
.fl-sel{font-family:inherit;font-size:15px;cursor:pointer;-webkit-appearance:none;appearance:none}
.fl-arrow{color:#C9C0B2;font-size:12px}
.fl-search-btn{background:var(--accent);color:#fff;border:none;border-radius:12px;padding:14px 30px;font-family:inherit;font-weight:700;font-size:16px;cursor:pointer;height:50px}
.fl-search-btn:hover{background:var(--accent-hover)}
.fl-popover{position:absolute;top:100%;left:0;margin-top:8px;background:#fff;border:1px solid #E0D9CD;border-radius:16px;box-shadow:0 18px 44px rgba(28,26,23,.18);padding:16px;z-index:50}
.fl-pop__hint{font-size:13px;color:var(--text-2);margin-bottom:10px}
.fl-days{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.fl-day{text-align:center;padding:8px 4px;border-radius:10px;cursor:pointer;background:#FCFAF6;border:1px solid #EFE8DC;transition:all .15s}
.fl-day.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.fl-day__n{font-size:13px;font-weight:700}.fl-day__p{font-size:10px;margin-top:2px;opacity:.8}
/* Календарь (месячная сетка, год вперёд) */
.fl-popover--cal{width:312px}
.fl-cal__nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.fl-cal__nav button{width:30px;height:30px;border:1px solid #E0D9CD;background:#FCFAF6;border-radius:8px;cursor:pointer;font-size:18px;line-height:1;color:var(--ink)}
.fl-cal__nav button:disabled{opacity:.3;cursor:default}
.fl-cal__title{font-weight:700;font-size:14px}
.fl-cal__dow{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}
.fl-cal__dow span{text-align:center;font-size:11px;color:var(--muted);font-weight:600}
.fl-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.fl-cal__x{height:34px}
.fl-cal__d{height:34px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;border-radius:9px;cursor:pointer;background:#FCFAF6;border:1px solid #EFE8DC;transition:all .12s}
.fl-cal__d:hover{border-color:var(--accent)}
.fl-cal__d.today{border-color:var(--accent);color:var(--accent)}
.fl-cal__d.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.fl-cal__d.off{opacity:.28;cursor:default;background:transparent;border-color:transparent}
.fl-cal__d.off:hover{border-color:transparent}
.fl-pop__foot{display:flex;align-items:center;justify-content:space-between;margin-top:12px;font-size:12px;color:var(--muted)}
.fl-done{background:var(--ink);color:#fff;border:none;border-radius:10px;padding:9px 18px;font-family:inherit;font-weight:700;font-size:13px;cursor:pointer}
.fl-step{display:flex;align-items:center;justify-content:space-between;padding:6px 0}
.fl-step span{font-weight:700;font-size:14px}
.fl-step__c{display:flex;align-items:center;gap:12px}
.fl-step__c button{width:30px;height:30px;border-radius:50%;border:1px solid #D9D2C6;background:#fff;font-size:17px;cursor:pointer}
.fl-step__c b{width:16px;text-align:center}
.fl-hr{height:1px;background:#F0EAE0;margin:6px 0}
.fl-cls{display:flex;gap:8px;margin-top:10px}
.fl-cls__t{flex:1;text-align:center;border-radius:9px;padding:9px;font-size:13px;font-weight:700;cursor:pointer;background:#F4EEE5;color:var(--text-2)}
.fl-cls__t.on{background:var(--accent);color:#fff}

/* source line */
.fl-srcline{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;flex-wrap:wrap;gap:10px}
.fl-route{font-size:15px;color:var(--text-2)}.fl-route b{color:var(--ink)}
.fl-sources{font-family:var(--mono);font-size:12px;color:var(--muted)}
.fl-srclink{color:var(--accent);text-decoration:none;font-weight:600}.fl-srclink:hover{text-decoration:underline}

/* insights */
.fl-insights{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}
.fl-ins{background:#fff;border:1px solid var(--border);border-radius:16px;padding:16px 18px}
.fl-ins--dark{background:var(--ink);color:#fff;border:none}
.fl-ins__l{font-size:12px;color:var(--muted);font-weight:700}
.fl-ins__v{font-family:var(--serif);font-size:24px;font-weight:600;margin-top:4px}
.fl-ins__s{font-size:12px;color:var(--text-2);margin-top:2px}
.fl-ins__tip{font-size:14px;font-weight:600;margin-top:6px;line-height:1.4}

/* layout */
.aviLayout{display:grid;grid-template-columns:300px 1fr;gap:28px;align-items:start}
.aviPanel{position:sticky;top:88px;align-self:start;background:#FCFAF6;border:1px solid #EFE7DA;border-radius:22px;padding:24px;width:100%}
.fl-panel__h{font-family:var(--serif);font-size:20px;font-weight:600;margin-bottom:18px}
.fl-sec{padding:18px 0;border-bottom:1px solid #F0EAE0}
.fl-sec:first-of-type{padding-top:0}
.fl-sec--last{border-bottom:none;padding-bottom:4px}
.fl-sec__t{font-weight:700;font-size:14px;margin-bottom:12px}
.fl-flex{display:flex;justify-content:space-between;align-items:center}
.fl-mono{font-family:var(--mono);font-size:12px;color:var(--muted);font-weight:400}
.fl-2col{display:flex;gap:8px;align-items:center;margin-top:12px}
.fl-2col>div{flex:1}
.fl-2col input,.aviPanel select{width:100%;border:1px solid #E0D9CD;border-radius:9px;padding:9px 11px;font-size:13px;font-weight:600;font-family:inherit;background:#fff}
.fl-mini{font-size:11px;color:var(--muted);margin-bottom:4px}
.fl-rows{display:flex;flex-direction:column;gap:10px}
.fl-row{display:flex;align-items:center;gap:11px;cursor:pointer}
.fl-row__l{font-size:14px;flex:1}.fl-row__c{font-size:13px;color:var(--muted)}
.fl-cb{width:20px;height:20px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex-shrink:0;background:#fff;border:1.5px solid #D9D2C6;color:transparent;transition:all .15s}
.fl-cb.on{background:var(--accent);border:1px solid var(--accent);color:#fff}
.fl-tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fl-tile{border-radius:11px;padding:10px 12px;cursor:pointer;background:#fff;color:var(--text-2);border:1px solid var(--border);transition:all .15s}
.fl-tile.on{background:#FBEDE6;color:#9A3412;border-color:#E8C3B1}
.fl-tile__l{font-weight:700;font-size:13px}.fl-tile__r{font-size:11px;opacity:.75;margin-top:1px}
.fl-mapbtn{background:var(--ink);color:#fff;border:none;border-radius:10px;padding:10px 16px;font-family:inherit;font-weight:700;font-size:13px;cursor:pointer}

/* sort */
.fl-sortrow{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:10px}
.fl-found{font-size:14px;color:var(--text-2)}.fl-found b{color:var(--ink)}
.fl-sortctl{display:flex;align-items:center;gap:10px}
.fl-sortctl select{border:1px solid #E0D9CD;border-radius:10px;padding:10px 14px;font-family:inherit;font-size:14px;font-weight:600;background:#fff;cursor:pointer}
.fl-reset{background:#fff;border:1px solid #D9D2C6;border-radius:10px;padding:10px 16px;font-family:inherit;font-weight:700;font-size:13px;cursor:pointer;color:var(--text-2)}

/* cards */
#fl-results{display:flex;flex-direction:column;gap:12px}
.fcard{background:#fff;border:1px solid var(--border);border-radius:16px;padding:18px 22px;display:grid;grid-template-columns:1.5fr 2.4fr 130px auto;gap:18px;align-items:center;transition:transform .22s,box-shadow .22s,border-color .22s}
.fcard:hover{transform:translateY(-3px);box-shadow:0 16px 34px rgba(28,26,23,.12);border-color:#E3D8C6}
.fcard.is-ch{border:2px solid var(--accent)}
.fcard__top{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.fl-code{background:#F4EEE5;color:#3A352E;border-radius:7px;padding:4px 8px;font-family:var(--mono);font-size:12px;font-weight:700}
.fl-airline{font-weight:700;font-size:15px}
.fl-src{color:#fff;border-radius:6px;padding:3px 8px;font-size:10px;font-weight:700;letter-spacing:.3px}
.fl-stops{font-size:12px;color:var(--muted);margin-top:5px}
.fl-badges{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.fl-badge{border-radius:999px;padding:3px 10px;font-size:11px;font-weight:800}
.fl-badge--ch{background:#FBEDE6;color:#9A3412}
.fl-badge--rec{background:#EAF1FB;color:#1E3A5F}
.fl-badge--bag{background:#F4F8F4;color:#176B47;font-weight:700;display:inline-flex;align-items:center;gap:4px}
/* Билет из соседней даты (гибкий поиск по месяцу) — чтобы дата на карточке
   не выглядела ошибкой, когда искали другой день. */
.fl-badge--flex{background:#FBF3EA;color:#9A3412;border:1px solid #F1D5C4;font-weight:700}
.fl-also{font-size:11px;color:var(--muted);margin-top:6px}
.fcard__times{display:flex;flex-direction:column;justify-content:center;gap:0}
/* Одно плечо перелёта — ровно та строка, которой раньше был сам .fcard__times. */
.fl-leg{display:flex;align-items:center;gap:12px}
.fl-pt{text-align:center;min-width:58px}
.fl-time{font-weight:700;font-size:18px;white-space:nowrap}
.fl-apt{font-size:11px;color:var(--muted);margin-top:2px}
.fl-fdate{font-size:11px;font-weight:600;color:var(--accent);margin-top:3px;white-space:nowrap}
.fl-chain{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin-top:5px;font-family:var(--mono);font-size:11px}
.fl-ch{color:var(--text-2);font-weight:700}
.fl-ch--via{color:var(--accent)}
.fl-ch__a{font-style:normal;color:#C9C0B2}
.fl-mid{flex:1;min-width:70px;position:relative}
.fl-line{height:2px;background:#E0D9CD;border-radius:2px}
.fl-vdots{position:absolute;top:50%;left:20%;right:20%;transform:translateY(-50%);display:flex;justify-content:space-evenly;align-items:center;pointer-events:none;z-index:3}
.fl-vdots i{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px #fff}
.fl-dur{position:absolute;top:-11px;left:50%;transform:translateX(-50%);font-size:11px;color:var(--text-2);background:#fff;padding:0 6px;white-space:nowrap;z-index:2}
.fl-plane{position:absolute;left:50%;top:1px;transform:translate(-50%,-50%);color:var(--accent);font-size:13px;z-index:1}
.fl-lay{position:absolute;bottom:-15px;left:50%;transform:translateX(-50%);font-size:10px;color:#B6A992;white-space:nowrap}
.fcard__price{text-align:right}
.fl-price{font-family:var(--serif);font-size:23px;font-weight:600;white-space:nowrap}
.fl-per{font-size:12px;color:var(--muted)}
.fl-buy{background:var(--accent);color:#fff;border:none;border-radius:11px;padding:13px 20px;font-family:inherit;font-weight:700;font-size:14px;cursor:pointer;text-decoration:none;display:inline-block;white-space:nowrap}
.fl-buy:hover{background:var(--accent-hover)}
.fl-empty{background:#fff;border:1px dashed #D9CFBE;border-radius:16px;padding:46px;text-align:center;color:var(--text-2)}

/* radius modal */
.fl-modal{position:fixed;inset:0;z-index:800;background:rgba(20,17,14,.7);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:24px}
.fl-modal__box{background:var(--bg);border-radius:22px;width:min(860px,96vw);max-height:92vh;overflow:auto;box-shadow:0 30px 80px rgba(0,0,0,.4)}
.fl-modal__h{display:flex;align-items:center;justify-content:space-between;padding:22px 26px;border-bottom:1px solid #ECE6DC}
.fl-modal__t{font-family:var(--serif);font-size:24px;font-weight:600}
.fl-modal__s{font-size:13px;color:var(--text-2);margin-top:3px}
.fl-x{width:40px;height:40px;border-radius:50%;border:1px solid #E0D9CD;background:#fff;font-size:18px;cursor:pointer}
.fl-modal__grid{display:grid;grid-template-columns:1.2fr 1fr;gap:22px;padding:24px 26px}
.fl-map{background:#EDEAE2;border:1px solid #E0D9CD;border-radius:18px;position:relative;overflow:hidden;min-height:340px}
.fl-map__cap{position:absolute;bottom:12px;left:12px;background:rgba(255,255,255,.9);border-radius:9px;padding:8px 12px;font-size:12px;color:#3A352E;font-weight:600}
.fl-aptlist{display:flex;flex-direction:column;gap:7px}
.fl-aptrow{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:11px;cursor:pointer;border:1px solid #EFE8DC;background:#fff}
.fl-aptrow.on{border-color:#E4EEE4;background:#F7FBF7}
.fl-aptrow__n{flex:1;font-size:12px;color:var(--muted)}.fl-aptrow__n b{font-size:13px;color:var(--ink)}
.fl-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.fl-modal__foot{display:flex;justify-content:flex-end;gap:10px;padding:18px 26px;border-top:1px solid #ECE6DC}
.fl-apply{background:var(--accent);color:#fff;border:none;border-radius:11px;padding:12px 26px;font-family:inherit;font-weight:700;font-size:14px;cursor:pointer}

@media(max-width:1024px){
  .aviLayout{grid-template-columns:280px 1fr}
  .fl-form{display:flex;flex-wrap:wrap}
  .fl-form>.fl-field{flex:1 1 160px}
  .fl-form>.fl-search-btn{flex:1 1 100%}
}
@media(max-width:768px){
  .aviLayout{display:block}
  .aviPanel{position:static;width:auto;margin-bottom:20px}
  .fl-form{display:flex;flex-direction:column;align-items:stretch}
  .fl-swap{align-self:center}
  .fl-insights{grid-template-columns:1fr}
  .fcard{grid-template-columns:1fr;gap:14px;text-align:center}
  .fcard__price{text-align:center}
}
.fl-also__more{opacity:.7;font-style:italic}

/* ============================================================
   Загрузка выдачи: маршрут с летящим самолётом, полоса прогресса,
   этапы и скелетоны карточек (flights.js → startLoader()).
   ============================================================ */
.fl-ld{background:#fff;border:1px solid var(--border);border-radius:18px;padding:20px 22px;transition:opacity .25s ease,transform .25s ease}
.fl-ld.is-done{opacity:0;transform:translateY(-6px)}
.fl-ld__head{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}

/* маршрут: код + город по краям, пунктир с самолётом между ними */
.fl-ld__route{display:flex;align-items:center;gap:14px;flex:1;min-width:240px}
.fl-ld__apt{display:flex;flex-direction:column;line-height:1.15}
.fl-ld__apt b{font-family:var(--mono);font-size:17px;font-weight:700;color:var(--ink);letter-spacing:.04em}
.fl-ld__apt i{font-style:normal;font-size:11px;color:var(--muted);margin-top:3px}
.fl-ld__apt--to{text-align:right}
.fl-ld__path{position:relative;flex:1;height:22px;min-width:80px}
.fl-ld__path::before{content:"";position:absolute;left:0;right:0;top:50%;border-top:2px dashed #E0D9CD}
.fl-ld__trail{position:absolute;left:0;top:50%;height:2px;background:var(--accent);border-radius:2px;width:0;animation:fl-ld-trail 2.6s ease-in-out infinite}
.fl-ld__fly{position:absolute;top:50%;left:0;transform:translate(-50%,-50%);animation:fl-ld-fly 2.6s ease-in-out infinite}
.fl-ld__plane{display:block;font-size:16px;color:var(--accent);animation:fl-ld-arc 1.3s ease-in-out infinite alternate}
@keyframes fl-ld-fly{0%{left:0}100%{left:100%}}
@keyframes fl-ld-trail{0%{width:0}100%{width:100%}}
@keyframes fl-ld-arc{0%{transform:translateY(2px)}100%{transform:translateY(-4px)}}

.fl-ld__meta{font-size:13px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:8px}
.fl-ld__meta .fl-ld__el{font-weight:400}

/* полоса прогресса */
.fl-ld__bar{height:5px;border-radius:99px;background:#F2EAE0;overflow:hidden;margin:16px 0 14px}
.fl-ld__bar i{display:block;height:100%;width:8%;border-radius:99px;background:linear-gradient(90deg,#C2410C,#EA7B45);transition:width .45s cubic-bezier(.25,.8,.35,1)}

/* этапы */
.fl-ld__stages{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.fl-ld__st{display:flex;align-items:flex-start;gap:10px;opacity:.42;transition:opacity .3s ease}
.fl-ld__st.is-now,.fl-ld__st.is-done{opacity:1}
.fl-ld__tick{flex:0 0 auto;width:16px;height:16px;margin-top:2px;border-radius:50%;border:2px solid #D9D2C6;position:relative;transition:border-color .3s ease,background .3s ease}
.fl-ld__st.is-now .fl-ld__tick{border-color:var(--accent);animation:fl-ld-pulse 1.1s ease-in-out infinite}
.fl-ld__st.is-done .fl-ld__tick{border-color:var(--accent);background:var(--accent)}
.fl-ld__st.is-done .fl-ld__tick::after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:2px solid #fff;border-top:0;border-left:0;transform:rotate(42deg)}
@keyframes fl-ld-pulse{0%,100%{box-shadow:0 0 0 0 rgba(194,65,12,.28)}50%{box-shadow:0 0 0 5px rgba(194,65,12,0)}}
.fl-ld__stt{display:flex;flex-direction:column;line-height:1.3}
.fl-ld__stt b{font-size:13px;font-weight:700;color:var(--ink)}
.fl-ld__stt i{font-style:normal;font-size:11px;color:var(--muted);margin-top:2px}
.fl-ld__hint{font-size:12px;color:var(--muted);min-height:16px;margin-top:10px}

/* скелетоны карточек — показывают форму будущей выдачи */
.fl-ld__skel{margin-top:6px;display:grid;gap:10px}
.fl-sk{display:grid;grid-template-columns:1.4fr 1.6fr .9fr auto;gap:16px;align-items:center;background:#FCFAF6;border:1px solid var(--border);border-radius:14px;padding:16px;animation:fl-sk-in .4s ease both}
.fl-sk__l,.fl-sk__p{display:grid;gap:7px}
.fl-sk__m{display:flex;align-items:center;gap:10px}
.fl-sk__btn{width:104px;height:40px;border-radius:11px}
.fl-sk__b,.fl-sk__btn{background:linear-gradient(90deg,#EFE8DE 25%,#F8F3EC 50%,#EFE8DE 75%);background-size:400% 100%;animation:fl-sk-shine 1.4s linear infinite;border-radius:6px;height:11px;display:block}
@keyframes fl-sk-shine{0%{background-position:100% 0}100%{background-position:0 0}}
@keyframes fl-sk-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* каскадное появление найденных карточек (только после нового поиска) */
#fl-results.is-fresh .fcard{animation:fl-rise .4s cubic-bezier(.2,.7,.3,1) both}
#fl-results.is-fresh .fcard:nth-child(1){animation-delay:.02s}
#fl-results.is-fresh .fcard:nth-child(2){animation-delay:.06s}
#fl-results.is-fresh .fcard:nth-child(3){animation-delay:.1s}
#fl-results.is-fresh .fcard:nth-child(4){animation-delay:.14s}
#fl-results.is-fresh .fcard:nth-child(5){animation-delay:.18s}
#fl-results.is-fresh .fcard:nth-child(6){animation-delay:.22s}
#fl-results.is-fresh .fcard:nth-child(7){animation-delay:.26s}
#fl-results.is-fresh .fcard:nth-child(n+8){animation-delay:.3s}
@keyframes fl-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* кнопка «Найти» в состоянии загрузки */
.fl-search-btn.is-busy{opacity:.75;cursor:progress;position:relative;padding-left:44px}
.fl-search-btn.is-busy::before{content:"";position:absolute;left:20px;top:50%;margin-top:-8px;width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:fl-spin .7s linear infinite}
@keyframes fl-spin{to{transform:rotate(360deg)}}

@media (max-width:760px){
  .fl-sk{grid-template-columns:1fr 1fr;gap:12px}
  .fl-sk__btn{width:100%}
  .fl-ld{padding:16px}
}
/* Уважаем системную настройку «уменьшить движение»: оставляем смысл
   (этапы, полоса, секунды), убираем полёт, мерцание и каскад. */
@media (prefers-reduced-motion:reduce){
  .fl-ld__fly,.fl-ld__plane,.fl-ld__trail,.fl-sk,.fl-sk__b,.fl-sk__btn,
  .fl-ld__st.is-now .fl-ld__tick,#fl-results.is-fresh .fcard,.fl-search-btn.is-busy::before{animation:none}
  .fl-ld__trail{width:100%;opacity:.35}
}

/* ============================================================
   Кнопки покупки по агрегаторам: у одного рейса своя цена и своя
   ссылка у каждого (Aviasales / Trip.com). Дешёвая — первой.
   ============================================================ */
.fl-buys{display:grid;gap:6px;align-content:center;min-width:150px}
.fl-buy--src{display:flex;flex-direction:column;align-items:center;gap:2px;line-height:1.15;padding:9px 14px;text-align:center}
.fl-buy__src{font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;opacity:.85}
.fl-buy__p{font-family:var(--mono);font-size:13px;font-weight:700}
/* Не самый дешёвый агрегатор — вторичный вид, чтобы выбор читался с первого взгляда */
.fl-buy--src:not(.is-best){background:#fff;color:var(--accent);border:1px solid #E8C4B0}
.fl-buy--src:not(.is-best):hover{background:#FBEDE6}

/* Полоска «ищем ещё» над выдачей во время постепенного добора */
.fl-live{display:flex;align-items:center;gap:9px;background:#FBEDE6;border:1px solid #F0D5C6;color:#7C2D12;
  border-radius:12px;padding:10px 14px;font-size:13px;font-weight:600;margin:0 0 14px}
.fl-live b{font-family:var(--mono)}
.fl-live__dot{width:9px;height:9px;border-radius:50%;background:var(--accent);flex:0 0 auto;animation:fl-live-pulse 1.1s ease-in-out infinite}
@keyframes fl-live-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.72)}}

@media (max-width:760px){
  .fl-buys{grid-auto-flow:column;grid-auto-columns:1fr;min-width:0}
}
@media (prefers-reduced-motion:reduce){
  .fl-live__dot{animation:none}
}

/* ============================================================
   Середина карточки: длительность НАД линией маршрута, линия со
   слоями — в своей дорожке .fl-track, пересадка (с аэропортами) — под ней.
   Переопределяет ранние правила .fl-mid/.fl-dur/.fl-lay выше в файле.
   ============================================================ */
.fl-mid{flex:1;min-width:90px;position:relative;display:flex;flex-direction:column;align-items:center;gap:5px}
.fl-mid .fl-dur{position:static;transform:none;background:none;padding:0;font-family:var(--mono);
  font-size:11px;font-weight:600;color:var(--text-2);white-space:nowrap;line-height:1}
.fl-track{position:relative;width:100%;height:8px;display:flex;align-items:center}
.fl-track .fl-line{width:100%}
.fl-track .fl-vdots{top:50%;left:20%;right:20%}
.fl-track .fl-plane{top:50%}
.fl-mid .fl-lay{position:static;transform:none;font-size:10px;color:#B6A992;white-space:nowrap;line-height:1.1;text-align:center}

@media (max-width:760px){
  .fl-mid .fl-lay{white-space:normal}
}

/* ============================================================
   Радиусы аэропортов: две строки (вылет / прилёт) — ОДНА карточка под
   формой поиска. Обе строки — сетка с ОДИНАКОВОЙ колонкой подписи, иначе
   селекторы «0 км» не стоят друг под другом (подписи разной длины).
   ============================================================ */
.fl-nearbox{background:#fff;border-radius:0 0 20px 20px;box-shadow:0 24px 60px rgba(0,0,0,.18);
  margin:0 0 24px;padding:16px 14px 14px;position:relative;z-index:29;
  border-top:1px solid #F2EBE1}          /* шов с формой, чтобы блок не «прилипал» */
.fl-nearbox .fl-near{display:grid;grid-template-columns:272px auto 1fr auto;align-items:center;
  gap:10px 12px;background:none;box-shadow:none;border-radius:0;margin:0;padding:0}
.fl-nearbox .fl-near + .fl-near{margin-top:12px}
.fl-nearbox .fl-near__l{white-space:nowrap}
.fl-nearbox .fl-radsel{justify-self:start}
.fl-nearbox .fl-aptchips{min-height:0}
.fl-nearbox .fl-near__c{justify-self:end;margin-left:0}

@media (max-width:900px){
  .fl-nearbox .fl-near{grid-template-columns:1fr auto}
  .fl-nearbox .fl-near__l{white-space:normal}
  .fl-nearbox .fl-aptchips{grid-column:1 / -1}
  .fl-nearbox .fl-near__c{grid-column:1 / -1;justify-self:start}
}

/* ---- Тип поездки: в одну сторону / туда-обратно ---- */
/* Переключатель поднимается на баннер ВМЕСТО формы (см. правило ниже):
   иначе отрицательный отступ формы накрывал его сверху. */
.fl-trip { display:flex; gap:6px; margin:-40px 0 12px; position:relative; z-index:31; }
#fl-search .fl-form { margin-top:0; }
.fl-trip__t {
  border:1px solid #E6DFD4; background:#fff; color:var(--text-2);
  padding:8px 16px; border-radius:999px; font-size:14px; font-weight:600;
  cursor:pointer; transition:background .15s, color .15s, border-color .15s;
}
.fl-trip__t:hover { border-color:var(--accent); color:var(--accent); }
.fl-trip__t.on { background:var(--accent); border-color:var(--accent); color:#fff; }

/* В режиме «туда-обратно» в форме на одну колонку больше (дата обратно).
   Колонки сужаются, чтобы строка по-прежнему помещалась без переноса. */
.fl-form--rt { grid-template-columns:1fr auto 1fr 1fr 1fr 1fr auto; }
@media (max-width: 1100px) {
  .fl-form--rt { grid-template-columns:1fr 1fr; }
  .fl-form--rt .fl-swap { display:none; }
}

/* ---- Плечи перелёта в карточке (режим «туда-обратно») ---- */
/* Метка плеча нужна, только когда плеч два: в билете в одну сторону
   подпись «туда» — лишний шум, поэтому по умолчанию скрыта. */
.fl-leg__tag { display:none; }
.fcard__times--rt .fl-leg__tag { display:inline-block; flex:0 0 auto; min-width:56px; text-align:center;
  background:#FBEDE6; color:var(--accent); font-size:10px; font-weight:700;
  letter-spacing:.04em; text-transform:uppercase; padding:3px 8px; border-radius:999px; }
/* Пунктир между плечами — тот же разделитель, что был у старой плашки. */
.fcard__times--rt .fl-leg + .fl-leg { margin-top:12px; padding-top:12px; border-top:1px dashed #E6DFD4; }

/* Бейдж «цена только туда» — контрастный, это предупреждение о неполной цене. */
.fl-badge--ow { background:#FEF3C7; color:#92400E; border:1px solid #FCD34D; }
/* Подпись для источника, который отдаёт полную цену без деталей обратного рейса.
   Высота — как у обычного плеча, иначе карточка «подпрыгивает» рядом с полными. */
.fl-leg--soft { min-height:52px; }
.fl-leg__date { font-family:var(--mono,monospace); font-size:13px; font-weight:700; color:var(--ink); }
.fl-leg__note { font-size:13px; color:var(--muted); font-style:italic; line-height:1.35; }
@media (max-width: 820px) {
  .fcard__times--rt .fl-leg__tag { min-width:0; }
}
