.lipno-travelmanager-chatbot[hidden],
.lipno-chatbot-dismiss[hidden],
.lipno-chatbot-link[hidden] { display: none !important; }
.lipno-chatbot-launcher {
  animation: lipno-chat-button-pulse 3.4s ease-in-out infinite;
  position: fixed;
  right: clamp(1rem, 2.5vw, 2rem);
  bottom: clamp(1rem, 2.5vw, 2rem);
  z-index: 60;
  display: flex;
  align-items: center;
  border: 1px solid rgb(6 29 69 / 16%);
  border-radius: 999px;
  background: var(--lipno-gold, #f6c64c);
  color: var(--lipno-navy, #061d45);
}
.lipno-travelmanager-chatbot .lipno-chatbot-launcher .chatbotButton {
  position: static !important;
  z-index: auto !important;
  border: 0 !important;
  border-radius: 999px 0 0 999px !important;
  padding-right: .7rem !important;
  animation: none !important;
  transform: none !important;
  transition: none !important;
  box-shadow: none !important;
}
.lipno-travelmanager-chatbot .lipno-chatbot-dismiss {
  display: grid;
  place-items: center;
  align-self: stretch;
  width: 44px !important;
  min-width: 44px !important;
  margin: 0 !important;
  box-shadow: none !important;
  min-height: 44px;
  padding: 0 !important;
  border: 0 !important;
  border-left: 1px solid rgb(6 29 69 / 18%) !important;
  border-radius: 0 999px 999px 0 !important;
  background: transparent !important;
  color: inherit !important;
  font: inherit;
  cursor: pointer;
}
.lipno-chatbot-dismiss svg { width: 16px; height: 16px; }
.lipno-travelmanager-chatbot .lipno-chatbot-dismiss:hover { background: rgb(6 29 69 / 7%) !important; }
.lipno-travelmanager-chatbot:has(#tm-chatbot.hovering) .lipno-chatbot-launcher { display: none; }
.lipno-chatbot-link {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  min-height: 44px;
  padding: .3rem 0;
  border: 0 !important;
  background: transparent !important;
  color: inherit !important;
  font: inherit;
  text-align: start;
  text-decoration: underline;
  text-underline-offset: .2em;
  cursor: pointer;
}
.lipno-chatbot-link svg { width: 20px; height: 20px; flex: none; }
.lipno-chatbot-link:hover { color: var(--lipno-gold, #f6c64c); }
.lipno-chatbot-contact { width: var(--lipno-page-width, min(1180px, calc(100% - 40px))); margin: 1.5rem auto; }
.lipno-chatbot-contact .lipno-chatbot-link:hover { color: var(--lipno-royal, #0b3d78); }
.lipno-chatbot-dismiss:focus-visible,
.lipno-chatbot-link:focus-visible { outline: 3px solid #087e9c; outline-offset: 3px; }
@media (max-width: 520px) {
  .lipno-chatbot-launcher { bottom: .85rem; right: .85rem; }
}

.lipno-chatbot-launcher:hover,
.lipno-chatbot-launcher:focus-within { animation: none; }
@media (prefers-reduced-motion: reduce) {
  .lipno-chatbot-launcher { animation: none; }
}

/* Fourth contact row: identical rhythm and icon treatment to phone/mail/hours. */
.lipno-footer-contact > .lipno-chatbot-link {
  display: flex;
  align-items: flex-start;
  gap: .65rem;
  min-height: 0;
  margin: 0 !important;
  padding: 0 !important;
  border-radius: 0;
  box-shadow: none !important;
  font: inherit;
  line-height: inherit;
  text-decoration: none;
}
.lipno-footer-contact > .lipno-chatbot-link svg {
  flex: 0 0 18px;
  width: 18px;
  height: 18px;
  margin-top: .2em;
  color: var(--lipno-gold, #f6c64c);
}
.lipno-footer-contact > .lipno-chatbot-link:hover,
.lipno-footer-contact > .lipno-chatbot-link:focus-visible { color: #fff !important; }

/* Footer span colours must follow the control, just like phone and email links. */
.lipno-footer-contact > .lipno-chatbot-link {
  color: rgb(255 255 255 / 72%) !important;
  background: transparent !important;
  transform: none !important;
  transition: none;
}
.lipno-footer-contact > .lipno-chatbot-link > span { color: inherit !important; }
.lipno-footer-contact > .lipno-chatbot-link:hover,
.lipno-footer-contact > .lipno-chatbot-link:focus-visible {
  color: #fff !important;
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
  transform: none !important;
}

/* Booking uses the same capsule and close affordance above the chat launcher. */
.lipno-booking-launcher[hidden] { display: none !important; }
.lipno-booking-launcher {
  animation: lipno-chat-button-pulse 3.4s ease-in-out infinite;
  position: fixed;
  right: clamp(1rem, 2.5vw, 2rem);
  bottom: calc(max(clamp(1rem, 2.5vw, 2rem), env(safe-area-inset-bottom, 0px)) + var(--lipno-chat-offset, 0px));
  z-index: 60;
  display: flex;
  align-items: stretch;
  max-width: calc(100vw - 2rem);
  border: 1px solid rgb(6 29 69 / 16%);
  border-radius: 999px;
  background: #d93645;
  color: #fff;
}
.lipno-booking-launcher .lipno-booking-link {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  min-height: var(--lipno-cta-height, 50px);
  padding: .75rem .7rem .75rem 1.2rem;
  box-sizing: border-box;
  border-radius: 999px 0 0 999px;
  color: inherit;
  font-size: .94rem;
  font-weight: 700;
  line-height: 1.2;
  text-decoration: none;
}
.lipno-booking-link svg { position: static; flex: none; width: 22px; height: 22px; margin: 0; }
.lipno-booking-launcher .lipno-booking-dismiss {
  display: grid;
  place-items: center;
  width: 44px;
  min-width: 44px;
  min-height: 44px;
  margin: 0;
  padding: 0;
  border: 0;
  border-left: 1px solid rgb(255 255 255 / 25%);
  border-radius: 0 999px 999px 0;
  background: transparent;
  color: inherit;
  box-shadow: none;
  cursor: pointer;
}
.lipno-booking-dismiss svg { width: 16px; height: 16px; }
.lipno-booking-link:hover,
.lipno-booking-dismiss:hover { background: rgb(6 29 69 / 7%); }
.lipno-booking-link:focus-visible,
.lipno-booking-dismiss:focus-visible { outline: 3px solid var(--lipno-gold, #f6c64c); outline-offset: 3px; }
body:has(.lipno-travelmanager-chatbot #tm-chatbot.hovering) .lipno-booking-launcher,
.lipno-mobile-nav-open .lipno-booking-launcher { display: none; }
.lipno-chatbot-launcher { bottom: max(clamp(1rem, 2.5vw, 2rem), env(safe-area-inset-bottom, 0px)); }
@media (max-width: 520px) {
  .lipno-booking-launcher { right: .85rem; bottom: calc(max(.85rem, env(safe-area-inset-bottom, 0px)) + var(--lipno-chat-offset, 0px)); }
  .lipno-booking-launcher .lipno-booking-link { min-height: 48px; font-size: .86rem; }
  .lipno-chatbot-launcher { bottom: max(.85rem, env(safe-area-inset-bottom, 0px)); }
}

/* Identical outer dimensions for both independently dismissible actions. */
.lipno-chatbot-launcher,
.lipno-booking-launcher {
  box-sizing: border-box;
  width: 17rem;
  max-width: calc(100vw - 2rem);
}
.lipno-travelmanager-chatbot .lipno-chatbot-launcher .chatbotButton,
.lipno-booking-launcher .lipno-booking-link {
  flex: 1;
  min-width: 0;
  white-space: nowrap;
}

.lipno-booking-launcher:hover,
.lipno-booking-launcher:focus-within { animation: none; }
@media (prefers-reduced-motion: reduce) {
  .lipno-booking-launcher { animation: none; }
}

/* A half-cycle offset makes the two actions pulse in turn. */
.lipno-booking-launcher { animation-delay: -1.7s; }
body:has(.lipno-booking-launcher:hover, .lipno-booking-launcher:focus-within, .lipno-chatbot-launcher:hover, .lipno-chatbot-launcher:focus-within) .lipno-booking-launcher,
body:has(.lipno-booking-launcher:hover, .lipno-booking-launcher:focus-within, .lipno-chatbot-launcher:hover, .lipno-chatbot-launcher:focus-within) .lipno-chatbot-launcher {
  animation: none;
}

/* Fade the label while the capsule narrows; native controls keep their accessible names. */
.lipno-chatbot-launcher,
.lipno-booking-launcher { transition: width 360ms ease; }
.lipno-travelmanager-chatbot .lipno-chatbot-launcher .chatbotButton { font-size: 0 !important; }
.lipno-chatbot-label {
  z-index: 1;
  position: absolute; left: 2.7rem; right: 44px; overflow: hidden;
  white-space: nowrap; text-align: center; pointer-events: none;
  font-size: .94rem; font-weight: 700; letter-spacing: .025em;
  opacity: 1; transition: opacity 240ms ease;
}
.lipno-booking-link > span { opacity: 1; transition: opacity 240ms ease, max-width 360ms ease; max-width: 220px; overflow: hidden; }
.lipno-chatbot-launcher.is-compact:not(:focus-within),
.lipno-booking-launcher.is-compact:not(:focus-within) { width: 100px; }
.lipno-booking-launcher.is-compact:not(:focus-within) .lipno-booking-link { justify-content: center; padding-inline: 0; gap: 0; }
.lipno-booking-launcher.is-compact:not(:focus-within) .lipno-booking-link > span { opacity: 0; max-width: 0; }
.lipno-chatbot-launcher.is-compact:not(:focus-within) .lipno-chatbot-label { opacity: 0; }
.lipno-travelmanager-chatbot .lipno-chatbot-launcher.is-compact:not(:focus-within) .chatbotButton {
  width: 54px !important; padding: 0 !important;
  background-position: center !important; background-size: 22px 22px !important;
}
@media (hover: hover) {
  .lipno-chatbot-launcher.is-compact:hover,
  .lipno-booking-launcher.is-compact:hover { width: 17rem; }
  .lipno-booking-launcher.is-compact:hover .lipno-booking-link { justify-content: flex-start; padding-inline: 1.2rem .7rem; gap: .55rem; }
  .lipno-booking-launcher.is-compact:hover .lipno-booking-link > span { opacity: 1; max-width: 220px; }
  .lipno-chatbot-launcher.is-compact:hover .lipno-chatbot-label { opacity: 1; }
  .lipno-travelmanager-chatbot .lipno-chatbot-launcher.is-compact:hover .chatbotButton {
    width: auto !important; padding: .75rem .7rem .75rem 2.7rem !important;
    background-position: left 1.2rem center !important; background-size: 1.05rem 1.05rem !important;
  }
}
@media (prefers-reduced-motion: reduce) {
  .lipno-chatbot-launcher, .lipno-booking-launcher,
  .lipno-chatbot-label, .lipno-booking-link > span { transition: none; }
}
