/*
 * Taxi frontend contrast + interaction guard
 * P18 FIX01
 * Scope: public taxi frontend only.
 * Rules:
 * - blue controls => white text/icons; hover => yellow with dark text/icons
 * - white/light controls => blue/dark text/icons; hover must visibly change surface
 */

:root{
    --tx-contrast-blue: var(--tx, #0f6aa8);
    --tx-contrast-blue-dark: var(--tx-strong, #075d99);
    --tx-contrast-ink: var(--ink, #102236);
    --tx-contrast-muted: var(--muted, #607185);
    --tx-contrast-yellow: #ffc400;
    --tx-contrast-yellow-hover: #ffcf33;
    --tx-contrast-light-hover: #eaf5fb;
}

/* ---------- WHITE / LIGHT CONTROLS ---------- */
/* Never allow white/light CTAs to inherit a white foreground. */
body.taxi-service-site :is(
    .txs-btn-secondary,
    .txp-btn.secondary,
    .txf-btn-secondary,
    .lsp-btn--zalo,
    .lsp-call-contact__secondary,
    .lsp-call-inline-actions a:not(:first-child),
    .txs-post,
    .txs-icon-zalo,
    .btn-light,
    .btn-outline-primary,
    .btn-outline-secondary
),
body.txs-body :is(
    .txs-btn-secondary,
    .txp-btn.secondary,
    .txf-btn-secondary,
    .lsp-btn--zalo,
    .lsp-call-contact__secondary,
    .lsp-call-inline-actions a:not(:first-child),
    .txs-post,
    .txs-icon-zalo,
    .btn-light,
    .btn-outline-primary,
    .btn-outline-secondary
){
    color:var(--tx-contrast-blue)!important;
}

/* Icons on a white/light control must follow the blue foreground, never white. */
body.taxi-service-site :is(
    .txs-btn-secondary,
    .txp-btn.secondary,
    .txf-btn-secondary,
    .lsp-btn--zalo,
    .lsp-call-contact__secondary,
    .lsp-call-inline-actions a:not(:first-child),
    .txs-post,
    .txs-icon-zalo,
    .btn-light,
    .btn-outline-primary,
    .btn-outline-secondary
) :is(i,.bi,.fa,.fas,.far,.fab,svg),
body.txs-body :is(
    .txs-btn-secondary,
    .txp-btn.secondary,
    .txf-btn-secondary,
    .lsp-btn--zalo,
    .lsp-call-contact__secondary,
    .lsp-call-inline-actions a:not(:first-child),
    .txs-post,
    .txs-icon-zalo,
    .btn-light,
    .btn-outline-primary,
    .btn-outline-secondary
) :is(i,.bi,.fa,.fas,.far,.fab,svg){
    color:var(--tx-contrast-blue)!important;
    fill:currentColor!important;
    stroke:currentColor!important;
}
body.taxi-service-site :is(.txs-btn-secondary,.txp-btn.secondary,.txf-btn-secondary,.lsp-btn--zalo,.lsp-call-contact__secondary,.txs-post,.btn-light,.btn-outline-primary,.btn-outline-secondary) svg *,
body.txs-body :is(.txs-btn-secondary,.txp-btn.secondary,.txf-btn-secondary,.lsp-btn--zalo,.lsp-call-contact__secondary,.txs-post,.btn-light,.btn-outline-primary,.btn-outline-secondary) svg *{
    fill:currentColor!important;
    stroke:currentColor!important;
}

/* White controls must have a visible hover state; never white-on-white hover. */
body.taxi-service-site :is(
    .txs-btn-secondary,
    .txp-btn.secondary,
    .txf-btn-secondary,
    .lsp-btn--zalo,
    .lsp-call-contact__secondary,
    .lsp-call-inline-actions a:not(:first-child),
    .txs-post,
    .btn-light,
    .btn-outline-primary,
    .btn-outline-secondary
):hover,
body.txs-body :is(
    .txs-btn-secondary,
    .txp-btn.secondary,
    .txf-btn-secondary,
    .lsp-btn--zalo,
    .lsp-call-contact__secondary,
    .lsp-call-inline-actions a:not(:first-child),
    .txs-post,
    .btn-light,
    .btn-outline-primary,
    .btn-outline-secondary
):hover{
    background:var(--tx-contrast-light-hover)!important;
    border-color:var(--tx-contrast-blue)!important;
    color:var(--tx-contrast-blue-dark)!important;
}
body.taxi-service-site :is(.txs-btn-secondary,.txp-btn.secondary,.txf-btn-secondary,.lsp-btn--zalo,.lsp-call-contact__secondary,.txs-post,.btn-light,.btn-outline-primary,.btn-outline-secondary):hover :is(i,.bi,.fa,.fas,.far,.fab,svg),
body.txs-body :is(.txs-btn-secondary,.txp-btn.secondary,.txf-btn-secondary,.lsp-btn--zalo,.lsp-call-contact__secondary,.txs-post,.btn-light,.btn-outline-primary,.btn-outline-secondary):hover :is(i,.bi,.fa,.fas,.far,.fab,svg){
    color:var(--tx-contrast-blue-dark)!important;
}

/* ---------- BLUE / PRIMARY CONTROLS ---------- */
/* Blue controls always use white foreground/icons. */
body.taxi-service-site :is(
    .txp-btn.primary,
    .txs-btn-primary,
    .lsp-btn--call,
    .lsp-call-contact__primary,
    .txp-contact-p3-channel.primary,
    .btn-primary,
    .txsp-primary,
    .txseo-btn-primary,
    .lgf-btn-primary,
    .industry-btn--primary,
    .industry-template__button--primary
),
body.txs-body :is(
    .txp-btn.primary,
    .txs-btn-primary,
    .lsp-btn--call,
    .lsp-call-contact__primary,
    .txp-contact-p3-channel.primary,
    .btn-primary,
    .txsp-primary,
    .txseo-btn-primary,
    .lgf-btn-primary,
    .industry-btn--primary,
    .industry-template__button--primary
){
    color:#fff!important;
}
body.taxi-service-site :is(.txp-btn.primary,.txs-btn-primary,.lsp-btn--call,.lsp-call-contact__primary,.txp-contact-p3-channel.primary,.btn-primary,.txsp-primary,.txseo-btn-primary,.lgf-btn-primary,.industry-btn--primary,.industry-template__button--primary) :is(i,.bi,.fa,.fas,.far,.fab,svg),
body.txs-body :is(.txp-btn.primary,.txs-btn-primary,.lsp-btn--call,.lsp-call-contact__primary,.txp-contact-p3-channel.primary,.btn-primary,.txsp-primary,.txseo-btn-primary,.lgf-btn-primary,.industry-btn--primary,.industry-template__button--primary) :is(i,.bi,.fa,.fas,.far,.fab,svg){
    color:#fff!important;
    fill:currentColor!important;
    stroke:currentColor!important;
}
body.taxi-service-site :is(.txp-btn.primary,.txs-btn-primary,.lsp-btn--call,.lsp-call-contact__primary,.txp-contact-p3-channel.primary,.btn-primary,.txsp-primary,.txseo-btn-primary,.lgf-btn-primary,.industry-btn--primary,.industry-template__button--primary) svg *,
body.txs-body :is(.txp-btn.primary,.txs-btn-primary,.lsp-btn--call,.lsp-call-contact__primary,.txp-contact-p3-channel.primary,.btn-primary,.txsp-primary,.txseo-btn-primary,.lgf-btn-primary,.industry-btn--primary,.industry-template__button--primary) svg *{
    fill:currentColor!important;
    stroke:currentColor!important;
}

/* Requested interaction: blue primary surfaces turn yellow on hover. */
body.taxi-service-site :is(
    .txp-btn.primary,
    .txs-btn-primary,
    .lsp-btn--call,
    .lsp-call-contact__primary,
    .txp-contact-p3-channel.primary,
    .btn-primary,
    .txsp-primary,
    .txseo-btn-primary,
    .lgf-btn-primary,
    .industry-btn--primary,
    .industry-template__button--primary
):hover,
body.txs-body :is(
    .txp-btn.primary,
    .txs-btn-primary,
    .lsp-btn--call,
    .lsp-call-contact__primary,
    .txp-contact-p3-channel.primary,
    .btn-primary,
    .txsp-primary,
    .txseo-btn-primary,
    .lgf-btn-primary,
    .industry-btn--primary,
    .industry-template__button--primary
):hover{
    background:var(--tx-contrast-yellow)!important;
    border-color:var(--tx-contrast-yellow)!important;
    color:var(--tx-contrast-ink)!important;
}
body.taxi-service-site :is(.txp-btn.primary,.txs-btn-primary,.lsp-btn--call,.lsp-call-contact__primary,.txp-contact-p3-channel.primary,.btn-primary,.txsp-primary,.txseo-btn-primary,.lgf-btn-primary,.industry-btn--primary,.industry-template__button--primary):hover :is(i,.bi,.fa,.fas,.far,.fab,svg),
body.txs-body :is(.txp-btn.primary,.txs-btn-primary,.lsp-btn--call,.lsp-call-contact__primary,.txp-contact-p3-channel.primary,.btn-primary,.txsp-primary,.txseo-btn-primary,.lgf-btn-primary,.industry-btn--primary,.industry-template__button--primary):hover :is(i,.bi,.fa,.fas,.far,.fab,svg){
    color:var(--tx-contrast-ink)!important;
}

/* Contact channel primary card has nested text that previously stayed white. */
body.taxi-service-site .txp-contact-p3-channel.primary:hover :is(small,strong,em),
body.txs-body .txp-contact-p3-channel.primary:hover :is(small,strong,em){
    color:var(--tx-contrast-ink)!important;
}
body.taxi-service-site .txp-contact-p3-channel.primary:hover .icon,
body.txs-body .txp-contact-p3-channel.primary:hover .icon{
    background:rgba(16,34,54,.09)!important;
    color:var(--tx-contrast-ink)!important;
}

/* Exceptions: buttons that are intentionally white inside dark CTA sections. */
body.taxi-service-site .lsp-final-cta .lsp-btn--call,
body.txs-body .lsp-final-cta .lsp-btn--call{
    background:#fff!important;
    border-color:#fff!important;
    color:var(--tx-contrast-blue-dark)!important;
}
body.taxi-service-site .lsp-final-cta .lsp-btn--call :is(i,.bi,.fa,.fas,.far,.fab,svg),
body.txs-body .lsp-final-cta .lsp-btn--call :is(i,.bi,.fa,.fas,.far,.fab,svg){
    color:var(--tx-contrast-blue-dark)!important;
}
body.taxi-service-site .lsp-final-cta .lsp-btn--call:hover,
body.txs-body .lsp-final-cta .lsp-btn--call:hover{
    background:var(--tx-contrast-yellow)!important;
    border-color:var(--tx-contrast-yellow)!important;
    color:var(--tx-contrast-ink)!important;
}
body.taxi-service-site .lsp-final-cta .lsp-btn--call:hover :is(i,.bi,.fa,.fas,.far,.fab,svg),
body.txs-body .lsp-final-cta .lsp-btn--call:hover :is(i,.bi,.fa,.fas,.far,.fab,svg){
    color:var(--tx-contrast-ink)!important;
}

/* ---------- WHITE CARDS / LINKS ---------- */
.txs-topic-links a,
.txs-route-side-v9>a,
.txs-support-pro-links a,
.txs-balanced-text-links a,
.txsp-related-grid>a,
.txsp-capacity-compare>a,
.txp-contact-p3-links>a,
.txp-pricehub-links a,
.txs-vf-mobile-sheet-list a{
    color:var(--tx-contrast-ink)!important;
}

/* Text inside white cards cannot inherit white from a dark parent. */
.txp-card,
.txp-contact-card,
.txp-price,
.txp-route,
.txp-news-card,
.txp-feature-copy,
.txp-price-summary,
.txp-pricing-bridge,
.txp-faq-list details,
.txs-support-pro-lead,
.txs-support-pro-cards article,
.txsp-local-authority,
.lsp-call-needs article,
.lsp-brand-selection-grid article{
    color:var(--tx-contrast-ink);
}

/* Native/form controls on light surfaces. */
.taxi-service-site input,
.taxi-service-site select,
.taxi-service-site textarea,
.txs-body input,
.txs-body select,
.txs-body textarea{
    color:var(--tx-contrast-ink);
}
.taxi-service-site input::placeholder,
.taxi-service-site textarea::placeholder,
.txs-body input::placeholder,
.txs-body textarea::placeholder{
    color:#7b8a98;
    opacity:1;
}

/* Consistent motion + keyboard focus. */
body.taxi-service-site :is(.txs-btn-secondary,.txp-btn.secondary,.txf-btn-secondary,.lsp-btn--zalo,.lsp-call-contact__secondary,.txs-post,.txp-btn.primary,.txs-btn-primary,.lsp-btn--call,.lsp-call-contact__primary,.btn-primary,.btn-light,.btn-outline-primary,.btn-outline-secondary),
body.txs-body :is(.txs-btn-secondary,.txp-btn.secondary,.txf-btn-secondary,.lsp-btn--zalo,.lsp-call-contact__secondary,.txs-post,.txp-btn.primary,.txs-btn-primary,.lsp-btn--call,.lsp-call-contact__primary,.btn-primary,.btn-light,.btn-outline-primary,.btn-outline-secondary){
    transition:background-color .18s ease,border-color .18s ease,color .18s ease,transform .18s ease,box-shadow .18s ease;
}
body.taxi-service-site :is(.txs-btn-secondary,.txp-btn.secondary,.txf-btn-secondary,.lsp-btn--zalo,.lsp-call-contact__secondary,.txs-post,.txp-btn.primary,.txs-btn-primary,.lsp-btn--call,.lsp-call-contact__primary,.btn-primary,.btn-light,.btn-outline-primary,.btn-outline-secondary):focus-visible,
body.txs-body :is(.txs-btn-secondary,.txp-btn.secondary,.txf-btn-secondary,.lsp-btn--zalo,.lsp-call-contact__secondary,.txs-post,.txp-btn.primary,.txs-btn-primary,.lsp-btn--call,.lsp-call-contact__primary,.btn-primary,.btn-light,.btn-outline-primary,.btn-outline-secondary):focus-visible{
    outline:3px solid rgba(15,106,168,.30);
    outline-offset:2px;
}

/* ========================================================================
 * P18 FIX02 — EXACT BLUE BAR / ICON / HOVER CONTRAST
 * Fix the Local Logistics blue quickbar and header booking button after
 * broader global hover rules were still winning on some pages.
 * ====================================================================== */

/* Tier-2 blue quickbar: default state is always white text/icons. */
body.taxi-service-site .txs-quickbar.txs-quickbar-global,
body.txs-body .txs-quickbar.txs-quickbar-global{
    color:#fff!important;
}
body.taxi-service-site .txs-quickbar.txs-quickbar-global :is(strong,a,a:link,a:visited),
body.txs-body .txs-quickbar.txs-quickbar-global :is(strong,a,a:link,a:visited){
    color:#fff!important;
    text-decoration:none!important;
}
body.taxi-service-site .txs-quickbar.txs-quickbar-global a :is(i,.bi,.fa,.fas,.far,.fab,svg,span),
body.txs-body .txs-quickbar.txs-quickbar-global a :is(i,.bi,.fa,.fas,.far,.fab,svg,span){
    color:#fff!important;
}
body.taxi-service-site .txs-quickbar.txs-quickbar-global a svg *,
body.txs-body .txs-quickbar.txs-quickbar-global a svg *{
    fill:currentColor!important;
    stroke:currentColor!important;
}

/* Requested behavior: blue quickbar item -> yellow on hover/focus, dark readable text/icon. */
body.taxi-service-site .txs-quickbar.txs-quickbar-global a:hover,
body.taxi-service-site .txs-quickbar.txs-quickbar-global a:focus-visible,
body.taxi-service-site .txs-quickbar.txs-quickbar-global a:active,
body.txs-body .txs-quickbar.txs-quickbar-global a:hover,
body.txs-body .txs-quickbar.txs-quickbar-global a:focus-visible,
body.txs-body .txs-quickbar.txs-quickbar-global a:active{
    background:var(--tx-contrast-yellow)!important;
    background-image:none!important;
    color:var(--tx-contrast-ink)!important;
    box-shadow:none!important;
}
body.taxi-service-site .txs-quickbar.txs-quickbar-global a:hover :is(i,.bi,.fa,.fas,.far,.fab,svg,span),
body.taxi-service-site .txs-quickbar.txs-quickbar-global a:focus-visible :is(i,.bi,.fa,.fas,.far,.fab,svg,span),
body.taxi-service-site .txs-quickbar.txs-quickbar-global a:active :is(i,.bi,.fa,.fas,.far,.fab,svg,span),
body.txs-body .txs-quickbar.txs-quickbar-global a:hover :is(i,.bi,.fa,.fas,.far,.fab,svg,span),
body.txs-body .txs-quickbar.txs-quickbar-global a:focus-visible :is(i,.bi,.fa,.fas,.far,.fab,svg,span),
body.txs-body .txs-quickbar.txs-quickbar-global a:active :is(i,.bi,.fa,.fas,.far,.fab,svg,span){
    color:var(--tx-contrast-ink)!important;
}
body.taxi-service-site .txs-quickbar.txs-quickbar-global a:hover:before,
body.taxi-service-site .txs-quickbar.txs-quickbar-global a:focus-visible:before,
body.txs-body .txs-quickbar.txs-quickbar-global a:hover:before,
body.txs-body .txs-quickbar.txs-quickbar-global a:focus-visible:before{
    background:rgba(16,34,54,.18)!important;
}

/* Header blue booking button: white icon/text; yellow hover with dark foreground. */
body.taxi-service-site button.txs-vf-hotline.txs-vf-hotline-1,
body.txs-body button.txs-vf-hotline.txs-vf-hotline-1{
    color:#fff!important;
}
body.taxi-service-site button.txs-vf-hotline.txs-vf-hotline-1 :is(.txs-vf-hotline-icon,svg,svg *,span),
body.txs-body button.txs-vf-hotline.txs-vf-hotline-1 :is(.txs-vf-hotline-icon,svg,svg *,span){
    color:#fff!important;
    fill:currentColor!important;
    stroke:currentColor!important;
}
body.taxi-service-site button.txs-vf-hotline.txs-vf-hotline-1:hover,
body.taxi-service-site button.txs-vf-hotline.txs-vf-hotline-1:focus-visible,
body.txs-body button.txs-vf-hotline.txs-vf-hotline-1:hover,
body.txs-body button.txs-vf-hotline.txs-vf-hotline-1:focus-visible{
    background:var(--tx-contrast-yellow)!important;
    border-color:var(--tx-contrast-yellow)!important;
    color:var(--tx-contrast-ink)!important;
}
body.taxi-service-site button.txs-vf-hotline.txs-vf-hotline-1:hover :is(.txs-vf-hotline-icon,svg,svg *,span),
body.taxi-service-site button.txs-vf-hotline.txs-vf-hotline-1:focus-visible :is(.txs-vf-hotline-icon,svg,svg *,span),
body.txs-body button.txs-vf-hotline.txs-vf-hotline-1:hover :is(.txs-vf-hotline-icon,svg,svg *,span),
body.txs-body button.txs-vf-hotline.txs-vf-hotline-1:focus-visible :is(.txs-vf-hotline-icon,svg,svg *,span){
    color:var(--tx-contrast-ink)!important;
    fill:currentColor!important;
    stroke:currentColor!important;
}

/* White buttons: blue foreground by default, visibly tinted on hover; icon follows text. */
body.taxi-service-site :is(.txp-btn.secondary,.txs-btn-secondary,.txf-btn-secondary,.btn-light,.btn-outline-primary,.btn-outline-secondary),
body.txs-body :is(.txp-btn.secondary,.txs-btn-secondary,.txf-btn-secondary,.btn-light,.btn-outline-primary,.btn-outline-secondary){
    color:var(--tx-contrast-blue)!important;
}
body.taxi-service-site :is(.txp-btn.secondary,.txs-btn-secondary,.txf-btn-secondary,.btn-light,.btn-outline-primary,.btn-outline-secondary) :is(i,.bi,.fa,.fas,.far,.fab,svg,span),
body.txs-body :is(.txp-btn.secondary,.txs-btn-secondary,.txf-btn-secondary,.btn-light,.btn-outline-primary,.btn-outline-secondary) :is(i,.bi,.fa,.fas,.far,.fab,svg,span){
    color:var(--tx-contrast-blue)!important;
}
body.taxi-service-site :is(.txp-btn.secondary,.txs-btn-secondary,.txf-btn-secondary,.btn-light,.btn-outline-primary,.btn-outline-secondary):hover,
body.taxi-service-site :is(.txp-btn.secondary,.txs-btn-secondary,.txf-btn-secondary,.btn-light,.btn-outline-primary,.btn-outline-secondary):focus-visible,
body.txs-body :is(.txp-btn.secondary,.txs-btn-secondary,.txf-btn-secondary,.btn-light,.btn-outline-primary,.btn-outline-secondary):hover,
body.txs-body :is(.txp-btn.secondary,.txs-btn-secondary,.txf-btn-secondary,.btn-light,.btn-outline-primary,.btn-outline-secondary):focus-visible{
    background:var(--tx-contrast-light-hover)!important;
    border-color:var(--tx-contrast-blue)!important;
    color:var(--tx-contrast-blue-dark)!important;
}

/* P18 FIX03 — telephone/green CTA override
 * A .txf-btn-secondary tel: link is rendered as the green Hotline CTA by taxi-palette-pro.
 * It must not inherit the generic white-secondary blue foreground from the guard above.
 */
body.taxi-service-site a.txf-btn.txf-btn-secondary[href^="tel:"],
body.txs-body a.txf-btn.txf-btn-secondary[href^="tel:"],
body.taxi-service-site a.txf-btn[href^="tel:"],
body.txs-body a.txf-btn[href^="tel:"]{
    background:#16a34a!important;
    border-color:#16a34a!important;
    color:#fff!important;
}
body.taxi-service-site a.txf-btn.txf-btn-secondary[href^="tel:"] :is(i,.bi,.fa,.fas,.far,.fab,svg,img),
body.txs-body a.txf-btn.txf-btn-secondary[href^="tel:"] :is(i,.bi,.fa,.fas,.far,.fab,svg,img),
body.taxi-service-site a.txf-btn[href^="tel:"] :is(i,.bi,.fa,.fas,.far,.fab,svg,img),
body.txs-body a.txf-btn[href^="tel:"] :is(i,.bi,.fa,.fas,.far,.fab,svg,img){
    color:#fff!important;
    fill:currentColor!important;
    stroke:currentColor!important;
}
body.taxi-service-site a.txf-btn.txf-btn-secondary[href^="tel:"]:hover,
body.taxi-service-site a.txf-btn.txf-btn-secondary[href^="tel:"]:focus-visible,
body.txs-body a.txf-btn.txf-btn-secondary[href^="tel:"]:hover,
body.txs-body a.txf-btn.txf-btn-secondary[href^="tel:"]:focus-visible,
body.taxi-service-site a.txf-btn[href^="tel:"]:hover,
body.taxi-service-site a.txf-btn[href^="tel:"]:focus-visible,
body.txs-body a.txf-btn[href^="tel:"]:hover,
body.txs-body a.txf-btn[href^="tel:"]:focus-visible{
    background:var(--tx-contrast-yellow)!important;
    border-color:var(--tx-contrast-yellow)!important;
    color:var(--tx-contrast-ink)!important;
}
body.taxi-service-site a.txf-btn.txf-btn-secondary[href^="tel:"]:hover :is(i,.bi,.fa,.fas,.far,.fab,svg,img),
body.taxi-service-site a.txf-btn.txf-btn-secondary[href^="tel:"]:focus-visible :is(i,.bi,.fa,.fas,.far,.fab,svg,img),
body.txs-body a.txf-btn.txf-btn-secondary[href^="tel:"]:hover :is(i,.bi,.fa,.fas,.far,.fab,svg,img),
body.txs-body a.txf-btn.txf-btn-secondary[href^="tel:"]:focus-visible :is(i,.bi,.fa,.fas,.far,.fab,svg,img),
body.taxi-service-site a.txf-btn[href^="tel:"]:hover :is(i,.bi,.fa,.fas,.far,.fab,svg,img),
body.taxi-service-site a.txf-btn[href^="tel:"]:focus-visible :is(i,.bi,.fa,.fas,.far,.fab,svg,img),
body.txs-body a.txf-btn[href^="tel:"]:hover :is(i,.bi,.fa,.fas,.far,.fab,svg,img),
body.txs-body a.txf-btn[href^="tel:"]:focus-visible :is(i,.bi,.fa,.fas,.far,.fab,svg,img){
    color:var(--tx-contrast-ink)!important;
    fill:currentColor!important;
    stroke:currentColor!important;
}
