/* ============================================
   Main Panel Container
   ============================================ */
.ctpanel_main {
  background-color: hsl(var(--ctp-color-backgroundpanel));
  transition: var(--ctp-transition-fast);
  position: relative;
  border-radius: 30px;
  min-height: 60px;
}

/* ============================================
   Progress/Scroll Indicator
   ============================================ */
.ctpanel_progress_wrap {
  -webkit-tap-highlight-color: transparent;
  position: relative;
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  height: 0;
  transform: scale(0) translateY(15px);
  transition: var(--ctp-transition-slow);
  display: block;
}

.ctpanel_progress_wrap_active {
  height: 60px;
  opacity: 1;
  visibility: visible;
  transform: scale(1) translateY(0);
  margin-bottom: -7px;
}

.ctpanel_progress_wrap .ctpanel_progress_icon {
  border-radius: 50%;
  padding: 16px;
}

.ctpanel_progress_wrap .ctpanel_progress_circle {
  box-shadow: inset 0 0 0 2px hsla(var(--ctp-color-icon), 0.5);
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 44px;
  height: 44px;
  display: block;
  box-sizing: border-box;
  border-radius: 50%;
  padding: 0;
}

.ctpanel_progress_circle path {
  fill: none;
  stroke: hsl(var(--ctp-color-icon));
  stroke-width: 4;
  box-sizing: border-box;
  -webkit-transition: var(--ctp-transition-slow);
  transition: var(--ctp-transition-slow);
}

/* ============================================
   Main Button
   ============================================ */
#ctpanel_button_more {
  transition: var(--ctp-transition-fast);
  -webkit-tap-highlight-color: transparent;
  cursor: pointer;
}

#ctpanel_button_more > svg {
  padding: 15px;
  width: 30px;
  height: 30px;
  display: block;
  box-sizing: content-box;
}

/* Button Hover States */
#ctpanel_button_more:hover > svg > path,
.ctpanel_progress_wrap:hover > svg.ctpanel_progress_icon > path {
  stroke: hsl(var(--ctp-color-iconhover)) !important;
}

#ctpanel_button_more:active {
  transform: scale(0.9);
}

/* ============================================
   Modal Container
   ============================================ */
#ctpanel_modal {
  position: relative;
}

.ctpanel_modal_container {
  transition: all 300ms ease-in-out;
  width: 320px;
  min-height: 300px;
  max-height: min(600px, calc(100vh - 15px));
  box-shadow: 0 0 30px hsla(200, 20%, 20%, 0.2);
  background: white;
  position: absolute;
  right: calc(100% + 15px);
  border-radius: 30px;
  bottom: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  clip-path: rect(100% 100% 100% 100% round 300px);
  opacity: 0;
  visibility: hidden;
}

.ctpanel_show_modal .ctpanel_modal_container {
  clip-path: rect(-30px calc(100% + 30px) calc(100% + 30px) -30px round 30px);
  opacity: 1;
  visibility: visible;
}

/* ============================================
   Modal Header
   ============================================ */
.ctpanel_modal_header {
  padding: 20px;
  background: hsl(var(--ctp-color-backgroundheader));
  color: hsl(var(--ctp-color-icon));
  flex-shrink: 0;
  display: flex;
  gap: 15px;
  align-items: flex-start;
}

.ctpanel_modal_header-logo {
  background: var(--logo-url) center / contain no-repeat;
  background-color: white;
  border-radius: 15px;
  width: 50px;
  height: 50px;
  display: block;
}

.ctpanel_modal_header-info {
  margin-top: 2px;
  display: grid;
  grid-gap: 5px;
}

#ctpanel_modal_header-info--title {
  font-weight: bold;
  font-size: 14px;
  display: block;
  color: hsl(var(--ctp-color-textheader));
}

.ctpanel_modal_header-info--status {
  font-size: 12px;
  color: hsl(var(--ctp-color-textheader));
}

/* Status Indicators */
.ctpanel_modal_header-info--online:before {
  content: "●";
  margin-right: 5px;
  color: hsl(var(--ctp-color-online));
  text-shadow: 0 0 20px hsl(var(--ctp-color-online));
}

.ctpanel_modal_header-info--offline:before {
  content: "●";
  margin-right: 5px;
  color: hsl(var(--ctp-color-offline));
  text-shadow: 0 0 20px hsl(var(--ctp-color-offline));
}

/* Close Button */
#ctpanel_modal_header-close {
  -webkit-tap-highlight-color: transparent;
  border-radius: 10px;
  background-color: hsla(0, 0%, 0%, 0.2);
  margin-left: auto;
  padding: 10px;
  cursor: pointer;
}

#ctpanel_modal_header-close svg {
  -webkit-transition: var(--ctp-transition-medium);
  transition: var(--ctp-transition-medium);
  width: 20px;
  height: 20px;
  display: block;
  transform: rotate(0deg);
}

#ctpanel_modal_header-close svg path {
  stroke: hsl(var(--ctp-color-icon));
}

#ctpanel_modal_header-close:hover svg {
  transform: rotate(90deg);
}

#ctpanel_modal_header-close:active svg {
  transform: rotate(90deg) scale(0.9);
}

/* ============================================
   Modal Contacts Section
   ============================================ */
.ctpanel_modal_contacts {
  font-size: 14px;
  color: hsl(var(--ctp-color-text));
  margin: 20px 0;
  padding: 0 20px;
  overflow-y: auto;
  flex-grow: 1;
  display: grid;
  grid-gap: 5px;
  align-content: start;
}

/* Custom Scrollbar */
.ctpanel_modal_contacts::-webkit-scrollbar {
  width: 6px;
}

.ctpanel_modal_contacts::-webkit-scrollbar-track {
  background: transparent;
}

.ctpanel_modal_contacts::-webkit-scrollbar-thumb {
  background-color: rgba(0, 0, 0, 0.1);
  border-radius: 6px;
}

.ctpanel_modal_contacts:hover::-webkit-scrollbar-thumb {
  background-color: rgba(0, 0, 0, 0.2);
}

/* Text Elements */
#ctpanel_modal_contacts-text {
  display: block;
  font-size: 16px;
}

.ctpanel_modal_contacts-title {
  display: block;
  font-size: 14px;
  color: hsla(var(--ctp-color-text), 0.75);
  margin-top: 10px;
  margin-bottom: 5px;
}

/* ============================================
   Contact Items
   ============================================ */
.ctpanel_contact_item {
  position: relative;
}

.ctpanel_contact_item--link {
  background-color: hsla(var(--ctp-color-text), 0.04);
  color: hsl(var(--ctp-color-text));
  padding: 10px;
  border-radius: 20px;
  display: flex;
  gap: 10px;
  align-items: center;
  text-decoration: none;
}

.ctpanel_contact_item--link:hover {
  transition: var(--ctp-transition-fast);
  background-color: hsla(var(--ctp-color-text), 0.06);
  color: hsl(var(--ctp-color-text));
}

/* Contact Icon */
.ctpanel_contact_item-icon {
  position: relative;
  display: inline-block;
  z-index: 0;
}

.ctpanel_contact_item-icon::before {
  content: "";
  display: block;
  width: 36px;
  height: 36px;
  background-size: cover;
  background: var(--src) center/contain no-repeat;
}

.ctpanel_contact_item-icon::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--src) center/contain no-repeat;
  filter: blur(5px);
  transform: translateY(5px);
  opacity: 0.5;
  z-index: -1;
}

/* Contact Description */
.ctpanel_contact_item-description {
  width: 100%;
  padding-right: 46px;
}

.ctpanel_contact_item-name {
  font-weight: bold;
}

.ctpanel_contact_item-info {
  margin-top: 2px;
  font-size: 12px;
}

/* Show More Button */
.ctpanel_contact_item-showmore {
  -webkit-tap-highlight-color: transparent;
  position: absolute;
  top: 0;
  right: 0;
  padding: 10px;
  border-radius: 20px;
  cursor: pointer;
  opacity: 0;
}

.ctpanel_contact_item-showmore--icon {
  padding: 8px;
  border-radius: 50%;
  height: 36px;
  width: 36px;
  border: 1px solid hsla(var(--ctp-color-text), 0.1);
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
}

.ctpanel_contact_item-showmore--icon path {
  color: hsl(var(--ctp-color-text));
  opacity: 0;
}

.ctpanel_contact_item-showmore--icon path.dots {
  opacity: 1;
}

/* Show More Active States */
.ctpanel_contact_item-active .ctpanel_contact_item-showmore--icon path:not(.dots) {
  opacity: 1;
}

.ctpanel_contact_item-active .ctpanel_contact_item-showmore--icon path.dots {
  opacity: 0;
}

.ctpanel_contact_item:hover .ctpanel_contact_item-showmore,
.ctpanel_contact_item-active .ctpanel_contact_item-showmore {
  opacity: 1;
}

.ctpanel_contact_item-showmore:hover .ctpanel_contact_item-showmore--icon {
  border: 1px solid hsla(var(--ctp-color-text), 0.2);
}

/* ============================================
   Contact Item Expanded State
   ============================================ */
.ctpanel_modal_contacts:has(.ctpanel_contact_item-active) {
  grid-gap: 0;
}

.ctpanel_modal_contacts > * {
  transform-origin: top center;
  opacity: 1;
}

.ctpanel_modal_contacts:has(.ctpanel_contact_item-active) > * {
  transform: scaleY(1);
  opacity: 0;
  max-height: 0;
  margin: 0;
}

.ctpanel_modal_contacts:has(.ctpanel_contact_item-active) .ctpanel_contact_item-active,
.ctpanel_modal_contacts:has(.ctpanel_contact_item-active) #ctpanel_contact_item--more {
  transform: scaleY(1);
  opacity: 1;
  max-height: 100%;
}

/* ============================================
   Contact Details (More Info)
   ============================================ */
#ctpanel_contact_item--more {
  margin-top: 20px;
  display: none;
  grid-gap: 20px;
}

.ctpanel_contact_item-active ~ #ctpanel_contact_item--more {
  display: grid;
}

#ctpanel_modal_contact-promo {
  display: block;
}

#ctpanel_modal_contact-copy {
  cursor: pointer;
  font-weight: bold;
  background-color: hsla(var(--ctp-color-text), 0.04);
  color: hsl(var(--ctp-color-text));
  padding: 15px;
  border-radius: 20px;
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: center;
}

#ctpanel_modal_contact-qr {
  padding: 20px;
  border: 1px solid hsla(var(--ctp-color-text), 0.1);
  border-radius: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 200px;
  box-sizing: content-box;
}

/* ============================================
   Mobile Responsive
   ============================================ */
@media screen and (max-width: 460px) {
  .ctpanel_modal_container {
    position: fixed;
    right: 0 !important;
    left: 0 !important;
    border-radius: 0;
    width: 100vw;
    min-height: 100dvh;
    overflow: hidden;
  }
  
  .ctpanel_contact_item-showmore {
    opacity: 1;
  }
}