[data-bs-theme="dark"] .tdtext{
  color: var(--bs-color-white) !important;
}

[data-bs-theme="dark"] .box-list-populars img{
  background-color: var(--bs-color-white) !important;
}

[data-bs-theme="dark"] {
  --bs-neutral-100: #1b1d20; /* surface-2 */
}

.widthfix{
  width: 40% !important;
}

[data-bs-theme=dark] .alrttext {
  color: var(--bs-color-white) !important;
}

/* === Hero banner spacing fix when H1 wraps (FR/DE etc.) === */
@media (min-width: 992px) {
  /* Reserve more space for the overlaid search module on desktop */
  .box-banner-home7 .item-banner-slide {
    /* was: padding: 120px 0 180px 0; */
    padding-bottom: clamp(230px, 18vh, 300px);
    /* optional but helps on short viewports */
    min-height: 820px;
  }

  /* Make sure there's always a little space under the subheading */
  .box-banner-home7 .item-banner-slide h6 {
    margin-bottom: 12px;
  }
}

/* keep the badge as a single pill even with long words */
.card-popular .card-info .card-meta .meta-links a {
  display: inline-flex;       /* ensure the content stays inline */
  align-items: center;
  white-space: nowrap;        /* no internal wrapping */
  gap: .35rem;                /* space between number and label */
}

.card-popular .card-info .card-meta .meta-links {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
}

/* Filter action buttons: adapt to long labels */
.block-filter .filter-actions{
  display:flex;
  flex-wrap:wrap;          /* allow wrapping on narrow sidebars */
  gap:12px;                /* space between buttons */
}

/* Let each button share the line; fall back to stacked on very narrow widths */
.block-filter .filter-actions .btn{
  flex:1 1 calc(50% - 6px); /* two columns by default */
  min-width:0;              /* allow shrinking instead of overflow */
  white-space:nowrap;       /* keep label on one line */
  padding-inline:clamp(12px, 1.6vw, 22px); /* trim padding slightly on small screens */
}

/* On very narrow screens, stack them */
@media (max-width: 380px){
  .block-filter .filter-actions .btn{ flex-basis:100%; }
}

@media (max-width: 380px){
  .card-program .card-price h6{ 
    font-size: 18px !important;
    line-height: 28px !important;
  }
}
/* --- Header: keep both mobile icons visible & prevent overflow --- */

/* Restore enough space for both icons and place them inline */
@media (max-width: 575.98px) {
  .header .main-header .header-right{
    /* allow shrink, but not below 2 icons (~2×42px + gap) */
    min-width: 110px;          /* was 150px in main.css */
    flex: 0 0 auto;
    padding-right: 8px;        /* small breathing room at the edge */
    display: flex;
    align-items: center;
    justify-content: flex-end;
  }

  /* Put the hamburger in normal flow (so it doesn't overlap/cover the green icon) */
  .header .main-header .header-right .burger-icon{
    position: relative;        /* was absolute in main.css */
    right: auto;
    top: auto;
    margin-left: 8px;          /* gap between the two icons */
  }

  /* Remove any large desktop spacing on the green icon at mobile */
  .header .main-header .header-right .burger-icon-2{
    margin-right: 0;
  }

  .header .container-fluid{
    padding-left: 12px;
    padding-right: 12px;
  }
}

/* Ensure header-right is never hidden in this desktop range */
@media screen and (min-width: 1200px) and (max-width: 1440px){
  .header .main-header .header-right{ display: flex !important; }
}

/* Keep the belt-and-suspenders horizontal overflow guard */
html, body{ overflow-x: hidden; }


/* Desktop “tablet-ish” width: keep both icons visible side by side */
@media screen and (min-width: 1200px) and (max-width: 1399.98px) {
  .header .main-header .header-right{
    display: flex !important;       /* defeats main.css hiding */
    align-items: center;
    justify-content: flex-end;
    gap: 8px;                       /* space between the two buttons */
    min-width: 110px;               /* room for 2×42px buttons + gap */
  }

  /* Put hamburger into normal flow so it doesn't cover the green button */
  .header .main-header .header-right .burger-icon{
    position: relative;             /* override absolute from main.css */
    right: auto;
    top: auto;
    display: block;                 /* ensure it shows in this range */
    margin-left: 0;
  }

  /* Guard: ensure the green square button is shown */
  .header .main-header .header-right .burger-icon-2{
    display: block;
  }
}


/* ===== Invoice micro-breakpoint: ≤350px (iPhone 5, etc.) ===== */
@media (max-width: 349.98px){

  /* Keep everything inside the invoice flexible */
  main[data-invoice-id]{
    overflow-x: hidden;
  }

  /* Header row inside the invoice card */
  main[data-invoice-id] .card-header .gap-3{
    gap: .5rem !important; /* tighter spacing between logo & title */
  }
  main[data-invoice-id] .image-logo{
    width: 48px !important;
    min-width: 48px !important;
    height: auto !important;
  }
  main[data-invoice-id] .text-24-bold{
    font-size: clamp(18px, 5.5vw, 20px) !important;
    line-height: 1.25 !important;
    word-break: break-word;
  }
  /* Status chips */
  main[data-invoice-id] [data-status-badge],
  main[data-invoice-id] [data-secure-chip]{
    font-size: 11px !important;
    padding: 4px 6px !important;
    white-space: nowrap;
  }

  /* “Secure payment” banner: allow wrapping instead of pushing wide */
  main[data-invoice-id] .background-3.d-flex{
    flex-wrap: wrap;
    row-gap: 8px;
  }
  main[data-invoice-id] .background-3.d-flex > *{
    min-width: 0; /* allow shrinking */
  }
  /* Put the right-side chip onto a new line if needed */
  main[data-invoice-id] .background-3.d-flex > :last-child{
    flex: 1 1 100%;
    display: flex;
    justify-content: flex-start;
  }

  /* Generic text: allow long tokens (IBAN, invoice id, crypto addr) to wrap */
  main[data-invoice-id] .card-body p,
  main[data-invoice-id] .card-body strong,
  main[data-invoice-id] #cryptoAddress{
    overflow-wrap: anywhere;
    word-break: break-word;
  }

  /* Buttons: slightly smaller and allow wrapping into multiple rows */
  main[data-invoice-id] .btn{
    padding: 8px 12px !important;
    font-size: 14px !important;
  }
  /* Button groups (footer links and crypto/bank actions) */
  main[data-invoice-id] .card-body .d-flex.gap-2{
    flex-wrap: wrap;
  }
  main[data-invoice-id] .card-body .d-flex.gap-2 > *{
    flex: 1 1 auto;
    min-width: 130px;          /* wrap to next row on ultra-narrow screens */
  }

  /* QR box: keep it comfy but never overflow */
  main[data-invoice-id] img[alt="QR Code"]{
    width: 160px !important;
    max-width: 100% !important;
    height: auto !important;
  }
}


/* ==== Messages page: full-height split layout (desktop & mobile) ==== */

/* parent wrappers must permit children to shrink so scrollbars can exist */
#messages-container,
#messages-container > .col-xl-12,
#messages-container > .col-xl-12 > .row {
  min-height: calc(100dvh - var(--header-h));
}
#messages-container > .col-xl-12 > .row > [class*="col-"] {
  min-height: 0; /* CRITICAL for flex children to scroll instead of grow */
}

/* Cards fill the column, body scrolls, footer stays visible */
.discussion-container .card,
.messages-container   .card {
  height: 100%;
  display: flex;
  flex-direction: column;
  min-height: 0;
  contain: layout paint; /* micro-optimisation */
}

/* The two scrollable panes */
.discussion-panel,
.messages-panel {
  flex: 1 1 auto;
  min-height: 0;          /* required for overflow to work inside flex */
  overflow-y: auto;
  overscroll-behavior: contain; /* no viewport bounce when reaching edges */
}

/* Mobile niceties */
@media (max-width: 999.98px){
  .discussion-panel,
  .messages-container .card{
    max-height: calc(100dvh - var(--header-h));
    -webkit-overflow-scrolling: touch;
  }
}

/* Optional: smoother feel without snapping */
.messages-panel { scroll-behavior: smooth; }


/* Context menu (Delete) — make it readable & contained on mobile */
.msg-context-menu,
.msg-message-context-menu {
  position: fixed;
  z-index: 2000;
  display: none;
  min-width: 220px;
}
@media (max-width: 999.98px){
  .msg-context-menu,
  .msg-message-context-menu { min-width: 70vw; }
  .msg-context-menu .list-group-item,
  .msg-message-context-menu .list-group-item { padding: 14px 16px; }
}

/* Discussion rows: harden against native long-press sheets */
.discussion-link {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  user-select: none;
  touch-action: manipulation;
}
.discussion-link img {
  -webkit-touch-callout: none;
  -webkit-user-drag: none;
  user-drag: none;
  pointer-events: none; /* taps go to the row, not the <img> itself */
}

.chat-message-row {
  -webkit-touch-callout: none;
  -webkit-user-select: text;
  user-select: text;
}

.msg-peer-read-marker {
  align-items: center;
  color: var(--bs-neutral-600, #6c757d);
  display: inline-flex;
  font-size: 12px;
  font-weight: 600;
  gap: 6px;
  line-height: 1.2;
  margin-top: 6px;
  padding-inline: 2px;
  white-space: nowrap;
}

.msg-peer-read-dot {
  background: rgb(var(--bs-primary-rgb));
  border-radius: 999px;
  box-shadow: 0 0 0 2px rgba(var(--bs-primary-rgb), .18);
  display: inline-block;
  flex: 0 0 auto;
  height: 7px;
  width: 7px;
}

[data-bs-theme="dark"] .msg-peer-read-marker {
  color: var(--bs-neutral-400, #adb5bd);
}

[data-bs-theme="dark"] .msg-peer-read-dot {
  box-shadow: 0 0 0 2px rgba(var(--bs-primary-rgb), .28);
}

.msg-parent-preview,
.msg-reply-composer {
  border-left: 3px solid rgba(var(--bs-primary-rgb), .45);
  background: rgba(var(--bs-primary-rgb), .08);
  border-radius: 8px;
}

.msg-parent-preview {
  padding: 8px 10px;
  margin-bottom: 8px;
  max-width: 100%;
}

.msg-parent-preview p,
.msg-reply-composer p {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.msg-reply-composer {
  align-items: center;
  display: flex;
  gap: 10px;
  justify-content: space-between;
  margin-bottom: 10px;
  padding: 9px 12px;
}

.msg-reply-composer-copy {
  min-width: 0;
  flex: 1 1 auto;
}

.msg-reply-composer [data-reply-cancel] {
  flex: 0 0 auto;
  font-size: 22px;
  line-height: 1;
  padding: 0 4px;
}

[data-bs-theme="dark"] .msg-parent-preview,
[data-bs-theme="dark"] .msg-reply-composer {
  background: rgba(var(--bs-primary-rgb), .14);
  border-left-color: rgba(var(--bs-primary-rgb), .65);
}


/* Message image attachments */
.msg-attach-button {
  align-items: center;
  display: inline-flex;
  flex: 0 0 auto;
  height: 44px;
  justify-content: center;
  min-width: 44px;
  padding-inline: 10px;
}

.msg-image-preview-strip {
  align-items: center;
  background: rgba(var(--bs-primary-rgb), .06);
  border: 1px solid rgba(var(--bs-primary-rgb), .18);
  border-radius: 12px;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 10px;
  padding: 10px;
}

.msg-image-preview-item {
  border: 1px solid var(--bs-border-color, rgba(0,0,0,.15));
  border-radius: 10px;
  flex: 0 0 74px;
  height: 74px;
  overflow: hidden;
  position: relative;
  width: 74px;
}

.msg-image-preview-item img {
  display: block;
  height: 100%;
  object-fit: cover;
  width: 100%;
}

.msg-image-preview-remove {
  align-items: center;
  background: rgba(15, 23, 42, .86);
  border: 0;
  border-radius: 999px;
  color: #fff;
  cursor: pointer;
  display: inline-flex;
  font-size: 18px;
  height: 24px;
  justify-content: center;
  line-height: 1;
  padding: 0;
  position: absolute;
  right: 5px;
  top: 5px;
  width: 24px;
}

.msg-attachments-grid {
  display: grid;
  gap: 8px;
  grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));
  margin-top: 8px;
  max-width: min(360px, 100%);
  width: min(360px, 100%);
}

.msg-attachment-link {
  background: rgba(0, 0, 0, .06);
  border: 1px solid rgba(0, 0, 0, .12);
  border-radius: 10px;
  display: block;
  min-height: 96px;
  overflow: hidden;
}

.msg-attachment-image {
  display: block;
  height: 96px;
  object-fit: cover;
  width: 100%;
}

[data-bs-theme="dark"] .msg-image-preview-strip {
  background: rgba(var(--bs-primary-rgb), .12);
  border-color: rgba(var(--bs-primary-rgb), .32);
}

[data-bs-theme="dark"] .msg-image-preview-item,
[data-bs-theme="dark"] .msg-attachment-link {
  border-color: rgba(255, 255, 255, .18);
}

@media (max-width: 575.98px) {
  .msg-attachments-grid {
    max-width: min(286px, 100%);
    width: min(286px, 100%);
  }
}

/* keyboard offset default */
:root { --kb: 0px; }

@media (min-width: 1000px) {
  .discussion-container{
    padding-right:0px;
  }
}

@media (max-width: 575.98px){
  .discussion-container, .messages-container {
    padding-right : 3px !important;
    padding-left : 3px !important;
  }
}

[data-messages]{
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 12px;
  padding-bottom: calc(12px + var(--kb, 0px));
}

[data-messages]::before{
  content: "";
  flex: 1 0 0;                           /* grows to push content down, collapses to 0 when long */
}

/* Safety: if [data-messages] is the actual scroll container, let it scroll */
[data-messages].is-scroller{
  min-height: 0;
  overflow-y: auto;
}

/* ==== OTP stage (Register + Reset) ======================================= */
/* Shared tiny helper line for “code sent to … — Change” */
[data-otp-info]{
  font-size: 13px;
  color: var(--bs-neutral-600);
}
[data-bs-theme="dark"] [data-otp-info]{
  color: var(--bs-neutral-800);
}
[data-otp-info] a{
  text-decoration: underline;
}

/* --- Reset page (keeps wrapper pattern) --- */
[data-reset-root] [data-info-fields]{
  overflow: hidden;
  max-height: 1000px;                 /* large enough for form */
  opacity: 1;
  transition: max-height .35s ease, opacity .25s ease;
}
[data-reset-root].is-otp [data-info-fields]{
  max-height: 0;
  opacity: 0;
}

/* --- Register page (per-element, no wrapper) --- */
[data-register-root] .otp-hideable{
  overflow: hidden;
  max-height: var(--otp-el-max, 140px); /* tall enough for any form-group */
  opacity: 1;
  transition:
    max-height .35s ease,
    opacity .25s ease,
    padding .2s ease,
    margin .2s ease;
}
[data-register-root].is-otp .otp-hideable{
  max-height: 0 !important;
  opacity: 0;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  pointer-events: none;
}

/* --- Reduced motion --- */
@media (prefers-reduced-motion: reduce){
  [data-reset-root] [data-info-fields],
  [data-register-root] .otp-hideable{
    transition: none;
  }
}

/* Let the textarea grow; keep the send button fixed */
[data-send-form]{
  display: flex;
  align-items: flex-end; /* button sits on the baseline */
  gap: 8px;
}

textarea[data-input]{
  flex: 1 1 auto;
  min-height: 44px;                 /* comfortable single line */
  line-height: 1.4;
  overflow-y: hidden;               /* JS toggles to auto at cap */
  resize: none;
}

/* Whatever you use for the send button */
[data-send-form] .btn,
[data-send-form] [data-send]{
  flex: 0 0 auto;
  align-self: flex-end;
}


@supports (-webkit-touch-callout: none){
  .messages-container .card{ contain: initial; }
}

.image-preview.is-dragging { opacity: .6 }

.dnd-overlay { pointer-events: none; }

/* Grey-out failed image and show overlays clearly */
.image-preview.is-failed img {
  filter: grayscale(100%);
  opacity: 0.6;
}

/* Small badge bottom-left */
.badge-upload-failed {
  position: absolute;
  left: 8px;
  bottom: 8px;
  padding: 4px 8px;
  font-size: 12px;
  background: rgba(220, 53, 69, 0.9); /* bootstrap danger-ish */
  color: #fff;
  border-radius: 6px;
  pointer-events: none;
}

/* Retry button top-right */
.btn-retry-image {
  position: absolute;
  top: 8px;
  right: 36px; /* leave room for delete btn */
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: rgba(255,255,255,0.95);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #0d6efd; /* bootstrap primary-ish */
  box-shadow: 0 1px 3px rgba(0,0,0,.2);
}
.btn-retry-image:hover { background: #fff; }


.confirm-modal{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:2000}
.confirm-modal[hidden]{display:none}
.confirm-modal__dialog{background:var(--bs-body-bg,#fff);color:var(--bs-body-color,#111);border-radius:12px;width:min(420px,calc(100% - 2rem));padding:16px;box-shadow:0 10px 30px rgba(0,0,0,.25)}



/* === Discover-only: multi-line, ellipsized titles === */
#discover_root, #discover-root { /* support either id by mistake */
}

#discover-root .card-journey-small .card-info .card-title {
  min-width: 0; /* guard against flex overflow */
}

#discover-root .card-journey-small .card-info .card-title a.card-title-text {
  display: -webkit-box;          /* required for -webkit-line-clamp */
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;         /* two lines on normal screens */
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: normal;           /* undo any nowrap */
  line-height: 1.25;
  max-height: calc(2 * 1.25em);  /* consistent card height */
  word-break: break-word;
  overflow-wrap: anywhere;
}

/* Tiny phones: allow 3 lines so it doesn't feel cramped */
@media (max-width: 380px) {
  #discover-root .card-journey-small .card-info .card-title a.card-title-text {
    -webkit-line-clamp: 3;
    max-height: calc(3 * 1.25em);
  }
}


/* ===== Discover - mobile filters drawer ===== */

/* Filter toggle button (next to items count) */
.btn-filter-toggle {
  display: none; /* hidden by default, shown on mobile */
  width: 40px;
  height: 40px;
  border-radius: 999px;
  padding: 0;
  border: 1px solid var(--bs-border-color);
  background: var(--bs-body-bg);
  align-items: center;
  justify-content: center;
}

.btn-filter-toggle svg {
  display: block;
  width: 18px;
  height: 18px;
  fill: var(--bs-neutral-700);
}

/* Desktop behavior: normal sidebar, no overlay */
@media (min-width: 992px) {
  .filters-panel {
    position: static;
    padding: 0;
    background: transparent;
    box-shadow: none;
  }

  .filters-panel__header {
    display: none !important;
  }

  .filters-panel__body {
    margin-top: 0;
    max-height: none;
    overflow: visible;
  }

  .filters-backdrop {
    display: none !important;
  }
}

/* Mobile behavior: toggle button + slide-in drawer */
@media (max-width: 991.98px) {
  .btn-filter-toggle {
    display: inline-flex;
    margin-right: 8px;
  }

  .filters-panel {
    position: fixed;
    inset: 0 auto 0 0; /* left side drawer */
    width: min(320px, 85vw);
    max-width: 100%;
    background: var(--bs-body-bg);
    z-index: 1050;
    transform: translateX(-100%);
    transition: transform 0.25s ease-out;
    box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.04), 0 18px 40px rgba(15, 23, 42, 0.35);
    padding: 16px 14px 24px 16px;
    overflow-y: auto;
  }

  .filters-panel.is-open {
    transform: translateX(0);
  }

  .filters-panel__header {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 8px;
  }

  .filters-panel__close {
    padding: 0;
    width: 32px;
    height: 32px;
    border-radius: 999px;
    border: 1px solid var(--bs-border-color);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    color: var(--bs-neutral-700);
  }

  .filters-panel__body {
    margin-top: 4px;
  }

  .filters-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.45);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s ease-out;
    z-index: 1040;
  }

  .filters-backdrop.is-open {
    opacity: 1;
    pointer-events: auto;
  }

  body.filters-open {
    overflow: hidden;
  }
}

/* === Sticky mobile CTA bar === */
@media (max-width: 991.98px){
  .mobile-cta{
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1030; /* above content, below offcanvas if needed */
    background: var(--bs-background-card);
    border-top: 1px solid var(--bs-border-color);
    padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
    box-shadow: 0 -6px 20px rgba(0,0,0,.08);
    transform: translateZ(0);               /* promote to its own layer */
    -webkit-backface-visibility: hidden;    /* iOS jank guard */
  }
  .mobile-cta .btn{
    width: 100%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }

  /* Spacer equals the bar height; JS below will set the exact value */
  .mobile-cta-spacer{
    height: var(--mobile-cta-h, 76px);
  }
}

/* Dark theme keeps same structure; colors come from your CSS variables */

/* ==== Listing modal: close button + pinch/zoom prep ==== */

/* Ensure modal can host absolutely-positioned children */
.lg-modal[data-modal]{
  position: fixed;
  inset: 0;
}

/* Tiny close button (outside the image zone, top-right, safe-area aware) */
.lg-modal[data-modal] .modal-x{
  position: absolute;
  top: calc(10px + env(safe-area-inset-top, 0));
  right: calc(10px + env(safe-area-inset-right, 0));
  z-index: 6; /* above nav/spinner */
  width: 34px; height: 34px;
  display: grid; place-items: center;
  border-radius: 999px;
  background: var(--bs-background-card, rgba(255,255,255,.92));
  border: 1px solid var(--bs-border-color, rgba(0,0,0,.12));
  box-shadow: 0 4px 12px rgba(0,0,0,.12);
  color: var(--bs-body-color, #111);
}
.lg-modal[data-modal] .modal-x:hover{ filter: brightness(.98); }
.lg-modal[data-modal] .modal-x:active{ transform: translateY(1px); }

/* Larger tap target on touch devices */
@media (hover: none) {
  .lg-modal[data-modal] .modal-x{ width: 40px; height: 40px; }
}

/* Modal stage prepared for custom pinch/zoom (JS handles transforms) */
.lg-modal[data-modal] .stage{
  position: relative;
  overflow: hidden;
  touch-action: none; /* allow pinch/pan gestures */
}

/* Image transform baseline for zooming */
.lg-modal[data-modal] .stage img{
  user-select: none;
  -webkit-user-drag: none;
  will-change: transform;
  transform-origin: 50% 50%;
  max-width: 100%;
  max-height: 100%;
  display: block;
  margin: 0 auto;
}

/* Modal nav buttons & counter above the image */
.lg-modal[data-modal] .stage .nav,
.lg-modal[data-modal] .counter {
  position: absolute; /* they likely already are, but safe */
  z-index: 7;         /* > spinner (4) and > .modal-x (6) if needed */
  pointer-events: auto;
}

/* Image still interactive for pan/zoom */
.lg-modal[data-modal] .stage img {
  pointer-events: auto; /* default; included for clarity */
}

.auth-pt{
  padding-top: 80px;
}

@media (max-width: 767.98px) {
  .auth-pt{
    padding-top: 10px;
  }
}

.topfix{
  top: 0px !important;
}

.mtfix{
  margin-top: 0px !important;
}

@media (max-width: 991.98px){
  .topfix{
    top: 0px !important;
    border: none !important;
    padding: 0px !important;
  }
  .margfix{
    padding-top: 0px !important;
  }
}

.card-journey-small .card-image img {
  max-width: 100%;
}

.card-flight .card-image img {
  max-width: 100%;
}

.card-journey-grid-3 .card-image img {
  max-width: 100%;
}

/* ===== Messages: link colors inside bubbles (incoming/outgoing) ===== */

/* Fallback (works everywhere) */
:root{
  --msg-link: rgba(var(--bs-primary-rgb), 1);
  --msg-link-hover: rgba(var(--bs-primary-rgb), .85);
}

/* Prefer perceptual contrast when color-mix is supported */
@supports (color: color-mix(in srgb, #000 50%, #fff 50%)){
  :root{
    /* Light mode: darken primary a bit so it pops on light bubbles */
    --msg-link: color-mix(in srgb, rgb(var(--bs-primary-rgb)) 80%, #000 20%);
    --msg-link-hover: color-mix(in srgb, rgb(var(--bs-primary-rgb)) 68%, #000 32%);
  }
  [data-bs-theme="dark"]{
    /* Dark mode: lighten primary a bit so it pops on dark bubbles */
    --msg-link: color-mix(in srgb, rgb(var(--bs-primary-rgb)) 85%, #fff 15%);
    --msg-link-hover: color-mix(in srgb, rgb(var(--bs-primary-rgb)) 75%, #fff 25%);
  }
}

/* Apply to links created by your linkify() in message bubbles */
.incoming-msg a,
.outgoing-msg a{
  color: var(--msg-link) !important;
  text-decoration: underline !important;
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
  font-weight: 600;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.incoming-msg a:hover,
.outgoing-msg a:hover{
  color: var(--msg-link-hover) !important;
  text-decoration-thickness: 2px;
}

/* Restore visible keyboard focus (global CSS kills outlines) */
.incoming-msg a:focus-visible,
.outgoing-msg a:focus-visible{
  outline: 2px solid var(--msg-link) !important;
  outline-offset: 2px;
  border-radius: 4px;
}

.msg-system{
  border-style: dashed !important;
  background-color: rgba(var(--bs-primary-rgb), .08) !important;
}

[data-bs-theme="dark"] .msg-system{
  background-color: rgba(var(--bs-primary-rgb), .14) !important;
  border-color: rgba(var(--bs-primary-rgb), .30) !important;
}

.dot-separator {
  display: inline-block;
  width: 4px;
  height: 4px;
  background: black;
  border-radius: 50%;
  margin: 0 8px 0 0;
  vertical-align: middle;
}

[data-bs-theme="dark"] .dot-separator{
  background: white !important;
}

/* === New card feature classes (same rules as existing ones) === */

/* card-journey-small widths / spacing */
.card-journey-small .card-info .card-program .card-facitlities .card-power,
.card-journey-small .card-info .card-program .card-facitlities .card-construction-type,
.card-journey-small .card-info .card-program .card-facitlities .card-hours {
  width: 50%;
  padding: 0px 0px 0px 30px;
  margin-bottom: 13px;
  color: #000000;
}



/* card-journey-small icons */
.card-journey-small .card-info .card-program .card-facitlities .card-power {
  background: url(../imgs/page/car/engine.svg) no-repeat left center;
}
.card-journey-small .card-info .card-program .card-facitlities .card-payload {
  background: url(../imgs/page/car/payload.svg) no-repeat left center;
}
.card-journey-small .card-info .card-program .card-facitlities .card-trailer-type {
  background: url(../imgs/page/car/trailer.svg) no-repeat left center;
}
.card-journey-small .card-info .card-program .card-facitlities .card-hours {
  background: url(../imgs/page/car/hours.svg) no-repeat left center;
}
.card-journey-small .card-info .card-program .card-facitlities .card-height {
  background: url(../imgs/page/car/height.svg) no-repeat left center;
}
.card-journey-small .card-info .card-program .card-facitlities .card-container-type {
  background: url(../imgs/page/car/container.svg) no-repeat left center;
}
.card-journey-small .card-info .card-program .card-facitlities .card-container-length {
  background: url(../imgs/page/car/container-length.svg) no-repeat left center;
}
.card-journey-small .card-info .card-program .card-facitlities .card-trailer-weight {
  background: url(../imgs/page/car/weight.svg) no-repeat left center;
}
.card-journey-small .card-info .card-program .card-facitlities .card-trailer-length {
  background: url(../imgs/page/car/motorhome-length.svg) no-repeat left center;
}
.card-journey-small .card-info .card-program .card-facitlities .card-construction-type {
  background: url(../imgs/page/car/excavator.svg) no-repeat left center;
}

/* card-flight.card-hotel widths / spacing */
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-power,
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-construction-type,
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-hours {
  width: 50%;
  padding: 0px 0px 0px 30px;
  margin-bottom: 13px;
}



.card-journey-small .card-info .card-program .card-facitlities .card-trailer-weight,
.card-journey-small .card-info .card-program .card-facitlities .card-trailer-length,
.card-journey-small .card-info .card-program .card-facitlities .card-height{
  width: 40%;
  padding: 0px 0px 0px 30px;
  margin-bottom: 13px;
  color: #000000;
}

.card-journey-small .card-info .card-program .card-facitlities .card-trailer-type,
.card-journey-small .card-info .card-program .card-facitlities .card-payload,
.card-journey-small .card-info .card-program .card-facitlities .card-container-length,
.card-journey-small .card-info .card-program .card-facitlities .card-container-type {
  width: 60%;
  padding: 0px 0px 0px 30px;
  margin-bottom: 13px;
  color: #000000;
}


.card-flight.card-hotel  .card-info .card-program .card-facitlities .card-trailer-weight,
.card-flight.card-hotel  .card-info .card-program .card-facitlities .card-trailer-length,
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-height {
  width: 40%;
  padding: 0px 0px 0px 30px;
  margin-bottom: 13px;
}

.card-flight.card-hotel .card-info .card-program .card-facitlities .card-trailer-type,
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-payload,
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-container-length,
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-container-type {
  width: 60%;
  padding: 0px 0px 0px 30px;
  margin-bottom: 13px;
}



/* card-flight.card-hotel icons */
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-power {
  background: url(../imgs/page/car/engine.svg) no-repeat left center;
}
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-payload {
  background: url(../imgs/page/car/payload.svg) no-repeat left center;
}
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-trailer-type {
  background: url(../imgs/page/car/trailer.svg) no-repeat left center;
}
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-hours {
  background: url(../imgs/page/car/hours.svg) no-repeat left center;
}
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-height {
  background: url(../imgs/page/car/height.svg) no-repeat left center;
}
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-container-type {
  background: url(../imgs/page/car/container.svg) no-repeat left center;
}
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-container-length {
  background: url(../imgs/page/car/container-length.svg) no-repeat left center;
}
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-trailer-weight {
  background: url(../imgs/page/car/weight.svg) no-repeat left center;
}
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-trailer-length {
  background: url(../imgs/page/car/motorhome-length.svg) no-repeat left center;
}
.card-flight.card-hotel .card-info .card-program .card-facitlities .card-construction-type {
  background: url(../imgs/page/car/excavator.svg) no-repeat left center;
}

/* dark mode invert */
[data-bs-theme=dark] .card-power {
  filter: invert(1);
}
[data-bs-theme=dark] .card-payload {
  filter: invert(1);
}
[data-bs-theme=dark] .card-trailer-type {
  filter: invert(1);
}
[data-bs-theme=dark] .card-hours {
  filter: invert(1);
}
[data-bs-theme=dark] .card-height {
  filter: invert(1);
}
[data-bs-theme=dark] .card-container-type {
  filter: invert(1);
}
[data-bs-theme=dark] .card-container-length {
  filter: invert(1);
}
[data-bs-theme=dark] .card-trailer-length {
  filter: invert(1);
}
[data-bs-theme=dark] .card-trailer-weight {
  filter: invert(1);
}

[data-bs-theme=dark] .card-construction-type {
  filter: invert(1);
}


/* === Facility width variants (-sx / -ss / -gx / -gs) === */

/* Shared spacing for new variants */
.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-miles-sx, .card-miles-ss, .card-miles-gx, .card-miles-gs, .card-displacement-sx,
  .card-displacement-ss, .card-displacement-gx, .card-displacement-gs, .card-gear-sx, .card-gear-ss,
  .card-gear-gx, .card-gear-gs, .card-fuel-sx, .card-fuel-ss, .card-fuel-gx, .card-fuel-gs,
  .card-sleeping-sx, .card-sleeping-ss, .card-sleeping-gx, .card-sleeping-gs, .card-motorhome-type-sx,
  .card-motorhome-type-ss, .card-motorhome-type-gx, .card-motorhome-type-gs, .card-length-sx,
  .card-length-ss, .card-length-gx, .card-length-gs, .card-year-sx, .card-year-ss, .card-year-gx,
  .card-year-gs, .card-weight-sx, .card-weight-ss, .card-weight-gx, .card-weight-gs, .card-seat-sx,
  .card-seat-ss, .card-seat-gx, .card-seat-gs, .card-power-sx, .card-power-ss, .card-power-gx,
  .card-power-gs, .card-payload-sx, .card-payload-ss, .card-payload-gx, .card-payload-gs,
  .card-trailer-type-sx, .card-trailer-type-ss, .card-trailer-type-gx, .card-trailer-type-gs, .card-hours-sx,
  .card-hours-ss, .card-hours-gx, .card-hours-gs, .card-height-sx, .card-height-ss, .card-height-gx,
  .card-height-gs, .card-container-type-sx, .card-container-type-ss, .card-container-type-gx,
  .card-container-type-gs, .card-container-length-sx, .card-container-length-ss, .card-container-length-gx,
  .card-container-length-gs, .card-trailer-weight-sx, .card-trailer-weight-ss, .card-trailer-weight-gx,
  .card-trailer-weight-gs, .card-trailer-length-sx, .card-trailer-length-ss, .card-trailer-length-gx,
  .card-trailer-length-gs, .card-construction-type-sx, .card-construction-type-ss,
  .card-construction-type-gx, .card-construction-type-gs
) {
  padding: 0px 0px 0px 30px;
  margin-bottom: 13px;
  color: #000000;
}

.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-miles-sx, .card-miles-ss, .card-miles-gx, .card-miles-gs, .card-displacement-sx,
  .card-displacement-ss, .card-displacement-gx, .card-displacement-gs, .card-gear-sx, .card-gear-ss,
  .card-gear-gx, .card-gear-gs, .card-fuel-sx, .card-fuel-ss, .card-fuel-gx, .card-fuel-gs,
  .card-sleeping-sx, .card-sleeping-ss, .card-sleeping-gx, .card-sleeping-gs, .card-motorhome-type-sx,
  .card-motorhome-type-ss, .card-motorhome-type-gx, .card-motorhome-type-gs, .card-length-sx,
  .card-length-ss, .card-length-gx, .card-length-gs, .card-year-sx, .card-year-ss, .card-year-gx,
  .card-year-gs, .card-weight-sx, .card-weight-ss, .card-weight-gx, .card-weight-gs, .card-seat-sx,
  .card-seat-ss, .card-seat-gx, .card-seat-gs, .card-power-sx, .card-power-ss, .card-power-gx,
  .card-power-gs, .card-payload-sx, .card-payload-ss, .card-payload-gx, .card-payload-gs,
  .card-trailer-type-sx, .card-trailer-type-ss, .card-trailer-type-gx, .card-trailer-type-gs, .card-hours-sx,
  .card-hours-ss, .card-hours-gx, .card-hours-gs, .card-height-sx, .card-height-ss, .card-height-gx,
  .card-height-gs, .card-container-type-sx, .card-container-type-ss, .card-container-type-gx,
  .card-container-type-gs, .card-container-length-sx, .card-container-length-ss, .card-container-length-gx,
  .card-container-length-gs, .card-trailer-weight-sx, .card-trailer-weight-ss, .card-trailer-weight-gx,
  .card-trailer-weight-gs, .card-trailer-length-sx, .card-trailer-length-ss, .card-trailer-length-gx,
  .card-trailer-length-gs, .card-construction-type-sx, .card-construction-type-ss,
  .card-construction-type-gx, .card-construction-type-gs
) {
  padding: 0px 0px 0px 30px;
  margin-bottom: 13px;
}

/* sx => width: 35% */
.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-miles-sx, .card-displacement-sx, .card-gear-sx, .card-fuel-sx, .card-sleeping-sx,
  .card-motorhome-type-sx, .card-length-sx, .card-year-sx, .card-weight-sx, .card-seat-sx, .card-power-sx,
  .card-payload-sx, .card-trailer-type-sx, .card-hours-sx, .card-height-sx, .card-container-type-sx,
  .card-container-length-sx, .card-trailer-weight-sx, .card-trailer-length-sx, .card-construction-type-sx
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-miles-sx, .card-displacement-sx, .card-gear-sx, .card-fuel-sx, .card-sleeping-sx,
  .card-motorhome-type-sx, .card-length-sx, .card-year-sx, .card-weight-sx, .card-seat-sx, .card-power-sx,
  .card-payload-sx, .card-trailer-type-sx, .card-hours-sx, .card-height-sx, .card-container-type-sx,
  .card-container-length-sx, .card-trailer-weight-sx, .card-trailer-length-sx, .card-construction-type-sx
) {
  width: 35%;
}

/* ss => width: 40% */
.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-miles-ss, .card-displacement-ss, .card-gear-ss, .card-fuel-ss, .card-sleeping-ss,
  .card-motorhome-type-ss, .card-length-ss, .card-year-ss, .card-weight-ss, .card-seat-ss, .card-power-ss,
  .card-payload-ss, .card-trailer-type-ss, .card-hours-ss, .card-height-ss, .card-container-type-ss,
  .card-container-length-ss, .card-trailer-weight-ss, .card-trailer-length-ss, .card-construction-type-ss
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-miles-ss, .card-displacement-ss, .card-gear-ss, .card-fuel-ss, .card-sleeping-ss,
  .card-motorhome-type-ss, .card-length-ss, .card-year-ss, .card-weight-ss, .card-seat-ss, .card-power-ss,
  .card-payload-ss, .card-trailer-type-ss, .card-hours-ss, .card-height-ss, .card-container-type-ss,
  .card-container-length-ss, .card-trailer-weight-ss, .card-trailer-length-ss, .card-construction-type-ss
) {
  width: 40%;
}

/* gx => width: 60% */
.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-miles-gx, .card-displacement-gx, .card-gear-gx, .card-fuel-gx, .card-sleeping-gx,
  .card-motorhome-type-gx, .card-length-gx, .card-year-gx, .card-weight-gx, .card-seat-gx, .card-power-gx,
  .card-payload-gx, .card-trailer-type-gx, .card-hours-gx, .card-height-gx, .card-container-type-gx,
  .card-container-length-gx, .card-trailer-weight-gx, .card-trailer-length-gx, .card-construction-type-gx
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-miles-gx, .card-displacement-gx, .card-gear-gx, .card-fuel-gx, .card-sleeping-gx,
  .card-motorhome-type-gx, .card-length-gx, .card-year-gx, .card-weight-gx, .card-seat-gx, .card-power-gx,
  .card-payload-gx, .card-trailer-type-gx, .card-hours-gx, .card-height-gx, .card-container-type-gx,
  .card-container-length-gx, .card-trailer-weight-gx, .card-trailer-length-gx, .card-construction-type-gx
) {
  width: 60%;
}

/* gs => width: 65% */
.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-miles-gs, .card-displacement-gs, .card-gear-gs, .card-fuel-gs, .card-sleeping-gs,
  .card-motorhome-type-gs, .card-length-gs, .card-year-gs, .card-weight-gs, .card-seat-gs, .card-power-gs,
  .card-payload-gs, .card-trailer-type-gs, .card-hours-gs, .card-height-gs, .card-container-type-gs,
  .card-container-length-gs, .card-trailer-weight-gs, .card-trailer-length-gs, .card-construction-type-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-miles-gs, .card-displacement-gs, .card-gear-gs, .card-fuel-gs, .card-sleeping-gs,
  .card-motorhome-type-gs, .card-length-gs, .card-year-gs, .card-weight-gs, .card-seat-gs, .card-power-gs,
  .card-payload-gs, .card-trailer-type-gs, .card-hours-gs, .card-height-gs, .card-container-type-gs,
  .card-container-length-gs, .card-trailer-weight-gs, .card-trailer-length-gs, .card-construction-type-gs
) {
  width: 65%;
}

/* Icons shared by both card types */
.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-displacement-sx, .card-displacement-ss, .card-displacement-gx, .card-displacement-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-displacement-sx, .card-displacement-ss, .card-displacement-gx, .card-displacement-gs
) {
  background: url(../imgs/page/car/displacement.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-length-sx, .card-length-ss, .card-length-gx, .card-length-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-length-sx, .card-length-ss, .card-length-gx, .card-length-gs
) {
  background: url(../imgs/page/car/motorhome-length.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-year-sx, .card-year-ss, .card-year-gx, .card-year-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-year-sx, .card-year-ss, .card-year-gx, .card-year-gs
) {
  background: url(../imgs/page/car/calendar.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-weight-sx, .card-weight-ss, .card-weight-gx, .card-weight-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-weight-sx, .card-weight-ss, .card-weight-gx, .card-weight-gs
) {
  background: url(../imgs/page/car/weight.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-power-sx, .card-power-ss, .card-power-gx, .card-power-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-power-sx, .card-power-ss, .card-power-gx, .card-power-gs
) {
  background: url(../imgs/page/car/engine.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-payload-sx, .card-payload-ss, .card-payload-gx, .card-payload-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-payload-sx, .card-payload-ss, .card-payload-gx, .card-payload-gs
) {
  background: url(../imgs/page/car/payload.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-trailer-type-sx, .card-trailer-type-ss, .card-trailer-type-gx, .card-trailer-type-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-trailer-type-sx, .card-trailer-type-ss, .card-trailer-type-gx, .card-trailer-type-gs
) {
  background: url(../imgs/page/car/trailer.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-hours-sx, .card-hours-ss, .card-hours-gx, .card-hours-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-hours-sx, .card-hours-ss, .card-hours-gx, .card-hours-gs
) {
  background: url(../imgs/page/car/hours.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-height-sx, .card-height-ss, .card-height-gx, .card-height-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-height-sx, .card-height-ss, .card-height-gx, .card-height-gs
) {
  background: url(../imgs/page/car/height.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-container-type-sx, .card-container-type-ss, .card-container-type-gx, .card-container-type-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-container-type-sx, .card-container-type-ss, .card-container-type-gx, .card-container-type-gs
) {
  background: url(../imgs/page/car/container.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-container-length-sx, .card-container-length-ss, .card-container-length-gx, .card-container-length-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-container-length-sx, .card-container-length-ss, .card-container-length-gx, .card-container-length-gs
) {
  background: url(../imgs/page/car/container-length.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-trailer-weight-sx, .card-trailer-weight-ss, .card-trailer-weight-gx, .card-trailer-weight-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-trailer-weight-sx, .card-trailer-weight-ss, .card-trailer-weight-gx, .card-trailer-weight-gs
) {
  background: url(../imgs/page/car/weight.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-trailer-length-sx, .card-trailer-length-ss, .card-trailer-length-gx, .card-trailer-length-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-trailer-length-sx, .card-trailer-length-ss, .card-trailer-length-gx, .card-trailer-length-gs
) {
  background: url(../imgs/page/car/motorhome-length.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-construction-type-sx, .card-construction-type-ss, .card-construction-type-gx,
  .card-construction-type-gs
),
.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-construction-type-sx, .card-construction-type-ss, .card-construction-type-gx,
  .card-construction-type-gs
) {
  background: url(../imgs/page/car/excavator.svg) no-repeat left center;
}

/* Icons that differ between .card-journey-small and .card-flight.card-hotel */
.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-miles-sx, .card-miles-ss, .card-miles-gx, .card-miles-gs
) {
  background: url(../imgs/template/icons/mile.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-gear-sx, .card-gear-ss, .card-gear-gx, .card-gear-gs
) {
  background: url(../imgs/template/icons/automatic.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-fuel-sx, .card-fuel-ss, .card-fuel-gx, .card-fuel-gs
) {
  background: url(../imgs/template/icons/fuel.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-seat-sx, .card-seat-ss, .card-seat-gx, .card-seat-gs
) {
  background: url(../imgs/template/icons/seat.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-sleeping-sx, .card-sleeping-ss, .card-sleeping-gx, .card-sleeping-gs
) {
  background: url(../imgs/template/icons/sleepingplace.svg) no-repeat left center;
}

.card-journey-small .card-info .card-program .card-facitlities :is(
  .card-motorhome-type-sx, .card-motorhome-type-ss, .card-motorhome-type-gx, .card-motorhome-type-gs
) {
  background: url(../imgs/template/icons/motorhome.svg) no-repeat left center;
}

.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-miles-sx, .card-miles-ss, .card-miles-gx, .card-miles-gs
) {
  background: url(../imgs/page/homepage2/mile.svg) no-repeat left center;
}

.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-gear-sx, .card-gear-ss, .card-gear-gx, .card-gear-gs
) {
  background: url(../imgs/page/homepage2/automatic.svg) no-repeat left center;
}

.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-fuel-sx, .card-fuel-ss, .card-fuel-gx, .card-fuel-gs
) {
  background: url(../imgs/page/homepage2/fuel.svg) no-repeat left center;
}

.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-seat-sx, .card-seat-ss, .card-seat-gx, .card-seat-gs
) {
  background: url(../imgs/page/homepage2/seat.svg) no-repeat left center;
}

.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-sleeping-sx, .card-sleeping-ss, .card-sleeping-gx, .card-sleeping-gs
) {
  background: url(../imgs/page/homepage2/sleepingplace.svg) no-repeat left center;
}

.card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-motorhome-type-sx, .card-motorhome-type-ss, .card-motorhome-type-gx, .card-motorhome-type-gs
) {
  background: url(../imgs/page/homepage2/motorhome.svg) no-repeat left center;
}

/* Dark mode: same invert behavior as existing icon classes */
[data-bs-theme=dark] .card-journey-small .card-info .card-program .card-facitlities :is(
  .card-miles-sx, .card-miles-ss, .card-miles-gx, .card-miles-gs, .card-displacement-sx,
  .card-displacement-ss, .card-displacement-gx, .card-displacement-gs, .card-gear-sx, .card-gear-ss,
  .card-gear-gx, .card-gear-gs, .card-fuel-sx, .card-fuel-ss, .card-fuel-gx, .card-fuel-gs,
  .card-sleeping-sx, .card-sleeping-ss, .card-sleeping-gx, .card-sleeping-gs, .card-motorhome-type-sx,
  .card-motorhome-type-ss, .card-motorhome-type-gx, .card-motorhome-type-gs, .card-length-sx,
  .card-length-ss, .card-length-gx, .card-length-gs, .card-year-sx, .card-year-ss, .card-year-gx,
  .card-year-gs, .card-weight-sx, .card-weight-ss, .card-weight-gx, .card-weight-gs, .card-seat-sx,
  .card-seat-ss, .card-seat-gx, .card-seat-gs, .card-power-sx, .card-power-ss, .card-power-gx,
  .card-power-gs, .card-payload-sx, .card-payload-ss, .card-payload-gx, .card-payload-gs,
  .card-trailer-type-sx, .card-trailer-type-ss, .card-trailer-type-gx, .card-trailer-type-gs, .card-hours-sx,
  .card-hours-ss, .card-hours-gx, .card-hours-gs, .card-height-sx, .card-height-ss, .card-height-gx,
  .card-height-gs, .card-container-type-sx, .card-container-type-ss, .card-container-type-gx,
  .card-container-type-gs, .card-container-length-sx, .card-container-length-ss, .card-container-length-gx,
  .card-container-length-gs, .card-trailer-weight-sx, .card-trailer-weight-ss, .card-trailer-weight-gx,
  .card-trailer-weight-gs, .card-trailer-length-sx, .card-trailer-length-ss, .card-trailer-length-gx,
  .card-trailer-length-gs, .card-construction-type-sx, .card-construction-type-ss,
  .card-construction-type-gx, .card-construction-type-gs
),
[data-bs-theme=dark] .card-flight.card-hotel .card-info .card-program .card-facitlities :is(
  .card-miles-sx, .card-miles-ss, .card-miles-gx, .card-miles-gs, .card-displacement-sx,
  .card-displacement-ss, .card-displacement-gx, .card-displacement-gs, .card-gear-sx, .card-gear-ss,
  .card-gear-gx, .card-gear-gs, .card-fuel-sx, .card-fuel-ss, .card-fuel-gx, .card-fuel-gs,
  .card-sleeping-sx, .card-sleeping-ss, .card-sleeping-gx, .card-sleeping-gs, .card-motorhome-type-sx,
  .card-motorhome-type-ss, .card-motorhome-type-gx, .card-motorhome-type-gs, .card-length-sx,
  .card-length-ss, .card-length-gx, .card-length-gs, .card-year-sx, .card-year-ss, .card-year-gx,
  .card-year-gs, .card-weight-sx, .card-weight-ss, .card-weight-gx, .card-weight-gs, .card-seat-sx,
  .card-seat-ss, .card-seat-gx, .card-seat-gs, .card-power-sx, .card-power-ss, .card-power-gx,
  .card-power-gs, .card-payload-sx, .card-payload-ss, .card-payload-gx, .card-payload-gs,
  .card-trailer-type-sx, .card-trailer-type-ss, .card-trailer-type-gx, .card-trailer-type-gs, .card-hours-sx,
  .card-hours-ss, .card-hours-gx, .card-hours-gs, .card-height-sx, .card-height-ss, .card-height-gx,
  .card-height-gs, .card-container-type-sx, .card-container-type-ss, .card-container-type-gx,
  .card-container-type-gs, .card-container-length-sx, .card-container-length-ss, .card-container-length-gx,
  .card-container-length-gs, .card-trailer-weight-sx, .card-trailer-weight-ss, .card-trailer-weight-gx,
  .card-trailer-weight-gs, .card-trailer-length-sx, .card-trailer-length-ss, .card-trailer-length-gx,
  .card-trailer-length-gs, .card-construction-type-sx, .card-construction-type-ss,
  .card-construction-type-gx, .card-construction-type-gs
) {
  filter: invert(1);
}

.header .main-menu li.mega-li-small .mega-menu .mega-menu-inner-small {
  min-width: 240px;
}

/* Mobile unread messages: show the same unread state on the mobile menu trigger
   and on the Messages row inside the opened mobile menu. */
[data-msg-badge][hidden]{
  display: none !important;
}

[data-nav-messages]{
  position: relative;
}

[data-nav-messages] .nav-message-badge{
  margin-left: .4rem;
  vertical-align: middle;
  min-width: 1.25rem;
  height: 1.25rem;
  padding: .2rem .42rem;
  font-size: .72rem;
  line-height: .85rem;
}

.header .main-header .header-right .burger-icon[data-mobile-menu-unread-trigger]{
  overflow: visible;
}

.header .main-header .header-right .burger-icon[data-mobile-menu-unread-trigger] .mobile-menu-icon-badge{
  position: absolute;
  top: -7px;
  right: -7px;
  left: auto;
  bottom: auto;
  z-index: 1000000;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 19px;
  height: 19px;
  width: auto;
  padding: 0 5px;
  font-size: 11px;
  line-height: 19px;
  font-style: normal;
  pointer-events: none;
}

.mobile-menu a.mobile-nav-messages-link{
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
}

.mobile-menu a.mobile-nav-messages-link .nav-message-badge{
  flex: 0 0 auto;
  margin-left: auto;
}

/* Public contact channel switch: phone by default, WhatsApp when CONTACT_TYPE/contacttype=whatsapp. */
.top-bar-2 .text-header-info .phone-head.contact-whatsapp-link,
.footer .contact-channel-link,
.contact-whatsapp-card-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.top-bar-2 .text-header-info a .contact-channel-icon {
  width: 16px;
  height: 16px;
  margin-right: 4px;
  flex: 0 0 auto;
}

.footer .contact-support-icon {
  width: 22px;
  height: 22px;
  flex: 0 0 auto;
}

.footer .contact-channel-link span,
.contact-whatsapp-card-link {
  line-height: 1.2;
}

.contact-whatsapp-card {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  padding: 18px;
  border: 1px solid var(--bs-border-color, #e5e5e5);
  border-radius: 12px;
  background: var(--bs-background-card, #fff);
}

.contact-whatsapp-card-icon {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(37, 211, 102, 0.12);
  flex: 0 0 auto;
}

.contact-whatsapp-card-icon img {
  width: 24px;
  height: 24px;
  display: block;
}

.contact-whatsapp-card-link {
  color: var(--bs-brand-2);
  font-weight: 700;
}

.contact-whatsapp-card-link:hover,
.footer .contact-channel-link:hover {
  opacity: .85;
}

/* === Agent profile: direct WhatsApp setting === */
.agent-whatsapp-setting {
  margin-top: 8px;
}

.agent-setting-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  min-height: 64px;
  padding: 12px 14px;
  border: 1px solid var(--bs-neutral-200);
  border-radius: 10px;
  background: var(--bs-background-card);
}

.agent-setting-copy {
  min-width: 0;
  flex: 1 1 auto;
}

.agent-horizontal-toggle {
  position: relative;
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  width: 48px;
  height: 26px;
  margin: 0;
  cursor: pointer;
}

.agent-horizontal-toggle > input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

.agent-horizontal-toggle__track {
  position: relative;
  display: block;
  width: 48px;
  height: 26px;
  border-radius: 999px;
  background: var(--bs-neutral-300);
  border: 1px solid var(--bs-neutral-400);
  transition: background-color .16s ease, border-color .16s ease, box-shadow .16s ease;
}

.agent-horizontal-toggle__thumb {
  position: absolute;
  top: 3px;
  left: 3px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--bs-neutral-0);
  box-shadow: 0 1px 3px rgba(0, 0, 0, .25);
  transition: transform .16s ease;
}

.agent-horizontal-toggle > input:checked + .agent-horizontal-toggle__track {
  background: var(--bs-brand-2);
  border-color: var(--bs-brand-2-darken);
}

.agent-horizontal-toggle > input:checked + .agent-horizontal-toggle__track .agent-horizontal-toggle__thumb {
  transform: translateX(22px);
}

.agent-horizontal-toggle > input:focus-visible + .agent-horizontal-toggle__track {
  box-shadow: 0 0 0 3px rgba(112, 244, 109, .25);
}

/* === Add/Edit listing: New-condition checkbox ===
   Reuse the site/Bootstrap checkbox so it stays compact and uses the Roadsuno green theme. */
.listing-condition-field > .form-label {
  margin-bottom: 8px;
}

.listing-condition-field .listing-condition-checkbox {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 18px;
  margin: 0;
  cursor: pointer;
  user-select: none;
}

.listing-condition-field .listing-condition-checkbox__input {
  float: none;
  flex: 0 0 14px;
  width: 14px;
  height: 14px;
  margin: 0;
  padding: 0;
  cursor: pointer;
  border-color: var(--bs-neutral-400);
}

.listing-condition-field .listing-condition-checkbox__input:checked {
  background-color: var(--bs-brand-2-darken);
  border-color: var(--bs-brand-2-darken);
}

.listing-condition-field .listing-condition-checkbox__input:focus {
  border-color: var(--bs-brand-2-darken);
  box-shadow: 0 0 0 .16rem rgba(112, 244, 109, .22);
}

.listing-condition-field .listing-condition-checkbox__text {
  line-height: 1.35;
}

.listing-commerce-fields {
  border: 1px solid var(--bs-border-color);
  border-radius: 12px;
  padding: 16px;
}

.listing-commerce-fields > legend {
  float: none;
  padding-inline: 6px;
  width: auto;
}

.listing-commerce-fields .listing-condition-checkbox {
  align-items: center;
  cursor: pointer;
  display: inline-flex;
  gap: 7px;
  margin: 0;
}

@media (max-width: 575.98px) {
  .agent-setting-row {
    align-items: flex-start;
  }

  .agent-horizontal-toggle {
    margin-top: 2px;
  }
}

/* Frozen listing preview marker (visible only on the agent detail view). */
.listing-frozen-status {
  display: inline-flex;
  align-items: center;
  margin-top: 8px;
  padding: 6px 10px;
  border: 1px solid var(--bs-neutral-300);
  background: var(--bs-neutral-200);
  color: var(--bs-neutral-1000);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.2;
}

/* Sold listing state -------------------------------------------------------
   Frozen state is styled separately and takes precedence in My Listings. */
.listing-sold-badge {
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  border: 1px solid var(--bs-neutral-400);
  background: var(--bs-neutral-800);
  color: var(--bs-white, #fff);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.2;
}


.listing-sold-card {
  box-shadow: none;
}

.listing-sold-card .card-image {
  position: relative;
  overflow: hidden;
}

.listing-sold-card .card-image img {
  filter: grayscale(1);
  opacity: .58;
}

/* Sold detail page: mirror the Discover quick-card treatment on the gallery
   itself instead of adding a secondary status badge beside the title. */
.listing-detail-sold-gallery .slide img {
  filter: grayscale(1);
  opacity: .58;
}

#listing-media .listing-detail-sold-gallery .slide .bg-fill {
  filter: blur(18px) brightness(.72) grayscale(1);
}

.listing-detail-sold-gallery .listing-detail-sold-overlay {
  z-index: 5;
}

.listing-sold-card .card-info {
  opacity: .72;
}

.listing-sold-card .listing-sold-badge,
.listing-sold-card .listing-sold-overlay,
.listing-sold-card .listing-sold-action,
.listing-sold-card .listing-sold-disabled {
  opacity: 1;
}

.listing-sold-overlay {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 72px;
  padding: 7px 12px;
  border-radius: 999px;
  background: rgba(33, 37, 41, .9);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  pointer-events: none;
}

.listing-sold-disabled,
.listing-contact-disabled {
  cursor: not-allowed !important;
  pointer-events: none;
  filter: grayscale(1);
  opacity: .55 !important;
}

/* Keep the draft/frozen presentation dominant when a listing is both frozen
   and sold. */
.listing-frozen-card .card-image img {
  filter: none;
  opacity: 1;
}

/* My Listings only: keep price/delete together, then Freeze/Sold together
   on their own row. The data-mylistings-root scope prevents these rules from
   changing listing cards on Discover, Home, Wishlist, or any other page. */
[data-mylistings-root] .my-listings-price-delete-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
}

[data-mylistings-root] .my-listings-price-delete-row .card-price {
  min-width: 0;
  margin: 0;
}

[data-mylistings-root] .my-listings-delete-action {
  flex: 0 0 auto;
  margin-left: auto;
}

[data-mylistings-root] .my-listings-delete-action .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1px;
  padding: 8px 18px !important;
}

[data-mylistings-root] .my-listings-state-actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px;
  width: 100%;
  margin-top: 10px;
}

[data-mylistings-root] .my-listings-state-actions .btn {
  width: 100%;
  min-width: 0;
  padding: 8px 12px !important;
  white-space: normal;
  line-height: 1.2;
}

/* Agent listing-management controls on the detail page. */
.listing-agent-management {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px;
  width: 100%;
  margin-top: 4px;
}

.listing-agent-management .listing-agent-management__action {
  width: 100%;
  min-width: 0;
  padding: 9px 10px !important;
  white-space: normal;
  line-height: 1.2;
}

.listing-agent-management .listing-agent-management__action:only-child,
.listing-agent-management .listing-agent-management__delete {
  grid-column: 1 / -1;
}

/* Listing purchase actions and automatic checkout. */
.listing-purchase-actions {
  display: grid;
  gap: 10px;
  width: 100%;
}

.listing-purchase-actions .btn {
  align-items: center;
  display: inline-flex;
  justify-content: center;
  min-width: 0;
  white-space: normal;
}

.listing-purchase-actions .listing-order-action {
  background: var(--bs-brand-2, #70f46d);
  border-color: var(--bs-brand-2, #70f46d);
  color: #0e0e0e;
}

.checkout-container {
  max-width: 760px;
}

.checkout-card {
  border: 1px solid var(--bs-border-color);
  border-radius: 16px;
  overflow: hidden;
}

.checkout-summary > div {
  align-items: start;
  border-bottom: 1px solid var(--bs-border-color);
  display: grid;
  gap: 12px;
  grid-template-columns: minmax(90px, 130px) minmax(0, 1fr);
  padding: 12px 0;
}

.checkout-summary dt {
  color: var(--bs-neutral-500);
  font-weight: 500;
}

.checkout-summary dd {
  color: var(--bs-neutral-1000);
  font-weight: 600;
  margin: 0;
  overflow-wrap: anywhere;
}

.checkout-state {
  margin-top: 22px;
}

.checkout-wait {
  align-items: center;
  display: flex;
  gap: 14px;
}

.checkout-spinner {
  animation: checkout-spin .8s linear infinite;
  border: 3px solid var(--bs-neutral-300);
  border-radius: 50%;
  border-top-color: var(--bs-brand-2-darken, #28a745);
  flex: 0 0 auto;
  height: 30px;
  width: 30px;
}

.checkout-payment-grid {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

.checkout-payment-button {
  min-height: 54px;
  white-space: normal;
}

@keyframes checkout-spin {
  to { transform: rotate(360deg); }
}

@media (max-width: 575.98px) {
  .checkout-summary > div {
    grid-template-columns: 1fr;
    gap: 3px;
  }

  .checkout-payment-grid {
    grid-template-columns: 1fr;
  }
}

@media (prefers-reduced-motion: reduce) {
  .checkout-spinner { animation-duration: 1.8s; }
}

/* My Listings management toolbar: keep the current 9-item page size as the
   default while allowing agents to expand the page for faster bulk browsing. */
[data-mylistings-root] .card-header {
  gap: 12px;
  flex-wrap: wrap;
}

[data-mylistings-root] .my-listings-toolbar {
  flex-wrap: wrap;
  justify-content: flex-end;
}

[data-mylistings-root] .my-listings-toolbar__item {
  min-width: 0;
}

[data-mylistings-root] [data-per-page] {
  min-width: 72px;
}

@media (max-width: 575.98px) {
  [data-mylistings-root] .my-listings-toolbar {
    width: 100%;
    justify-content: space-between;
  }

  [data-mylistings-root] .my-listings-toolbar__item:last-child {
    flex: 1 1 180px;
  }

  [data-mylistings-root] [data-cat] {
    width: 100% !important;
  }
}
