/*
 *  Halfmoon Extended by Bitzag
 *  ---------------------------
 *  Version: 1.3
 *  Author: Bitzag
 *  URL: https://www.bitzag.com
 *  
 *  Description:
 *  Extends the core Halfmoon framework with additional utility
 *  classes and custom components to enhance flexibility and
 *  design. Requires Halfmoon core.
 *  
 *  Copyright © 2024-2025 Bitzag. All rights reserved.
 *  Unauthorized use, copying, or distribution of this code is prohibited.
 */

/* List styles */
 ul.list-style-none, ul.list-unstyled {
	 list-style: none;
 }
 
 /* Display visibility */
 .hide, .hidden, .nodisp, .no-disp {
	 display: none !important;
 }
 .unhide, .disp {
	 display: block !important;
 }
 .disabled-hidden {
	 display: none !important; /* Temporarily disabled */
 }
 .make-invisible {
	 visibility: hidden; /* Invisible but keeps layout */
 }
 
 /* Dimensions: Width and height */
 .min-width-125 { min-width: 125px !important; }
 .min-width-132 { min-width: 132px !important; }
 .h-0  { height: 0px; }
 .h-20 { height: 20px; }
 .h-24 { height: 24px; }
 .h-28 { height: 28px; }
 .h-35 { height: 35px; }
 .w-0  { width: 0px; }
 .w-20 { width: 20px; }
 .w-28 { width: 28px; }
 .w-35 { width: 35px; }
 .w-125 { width: 125px !important; }
 .w-132 { width: 132px !important; }
 .w-280 {width: 280px !important; }
 
 /* Padding */
 .pt-1 { padding-top: 1px; }
 .pt-2 { padding-top: 2px; }
 .pt-3 { padding-top: 3px; }
 .pt-4 { padding-top: 4px; }
 .pt-25 { padding-top: 25px; }
 .pt-30 { padding-top: 30px; }
 .pt-40 { padding-top: 40px; }
 .pt-50 { padding-top: 50px; }
 .pb-2 { padding-bottom: 2px; }
 .pb-4 { padding-bottom: 4px; }
 .pb-9 { padding-bottom: 9px; }
 .pb-30 { padding-bottom: 30px; }
 .pb-40 { padding-bottom: 40px; }
 .pb-50 { padding-bottom: 50px; }
 .pl-25 { padding-left: 25px; }
 .pl-26 { padding-left: 26px; }
 .pl-27 { padding-left: 27px; }
 .pl-28 { padding-left: 28px; }
 .pl-29 { padding-left: 29px; }
 .pl-30 { padding-left: 30px; }
 .pr-30 { padding-right: 30px; }
 .pl-40 { padding-left: 40px; }
 .pr-40 { padding-right: 40px; }
 .p-12 { padding: 12px; }
 .p-13 { padding: 13px; }
 .p-14 { padding: 14px; }
 .p-25 { padding: 25px; }
 .p-30 { padding: 30px; }
 .p-40 { padding: 40px; }
 .p-50 { padding: 50px; }
 .p-60 { padding: 60px; }
 
 /* Margins */
 .ml-2 { margin-left: 2px; }
 .mr-2 { margin-right: 2px; }
 .ml-3 { margin-left: 3px; }
 .mr-3 { margin-right: 3px; }
 .ml-4 { margin-left: 4px; }
 .mr-4 { margin-right: 4px; }
 .ml-6 { margin-left: 6px; }
 .mr-6 { margin-right: 6px; }
 .ml-7 { margin-left: 7px; }
 .ml-8 { margin-left: 8px; }
 .mr-7 { margin-right: 7px; }
 .mr-8 { margin-right: 8px; }
 .mr-9 { margin-right: 9px; }
 .mr-11 { margin-right: 11px; }
 .mr-12 { margin-right: 12px; }
 .mb-1 { margin-bottom: 1px; }
 .mb-2 { margin-bottom: 2px; }
 .mb-3 { margin-bottom: 3px; }
 .mb-4 { margin-bottom: 4px; }
 .mb-6 { margin-bottom: 6px; }
 .mb-7 { margin-bottom: 7px; }
 .mb-8 { margin-bottom: 8px; }
 .mb-9 { margin-bottom: 9px; }
 .mb-10 { margin-bottom: 10px; }
 .mb-11 { margin-bottom: 11px; }
 .mb-12 { margin-bottom: 12px; }
 .mb-13 { margin-bottom: 13px; }
 .mb-14 { margin-bottom: 14px; }
 .mb-30 { margin-bottom: 30px; }
 .mb-40 { margin-bottom: 40px; }
 .mt-1 {margin-top: 1px;}
 .mt-2 {margin-top: 2px;}
 .mt-3 {margin-top: 3px;}
 .mt-4 {margin-top: 4px;}
 .mt-6 {margin-top: 6px;}
 .mt-7 {margin-top: 7px;}
 .mt-8 {margin-top: 8px;}
 .mt-10 {margin-top: 10px;}
 .mt-11 {margin-top: 11px;}
 .mt-12 {margin-top: 12px;}
 .mt-15 {margin-top: 15px;}
 .mt-20 {margin-top: 20px;}
 .mt-25 {margin-top: 25px;}
 .mt-30 {margin-top: 30px;}
 .mt-35 {margin-top: 35px;}
 .mt-40 {margin-top: 40px;}
 .mt-45 {margin-top: 45px;}
 .mt-50 {margin-top: 50px;}
 
 /* Media queries */
 @media (min-width: 768px) {
   .mr-md-30 { margin-right: 30px; }
 }
 
 /* Cursors */
 .cursor-default { cursor: default; }
 .cursor-pointer { cursor: pointer; }
 .faux-link { color: var(--primary-color); cursor: pointer; }
 .faux-link:hover { color: var(--primary-color-light); text-decoration: underline; }
 
 /* Text appearance */
 .text-sm { font-size: var(--small-button-font-size); }
 .font-size-13 { font-size: 13px; }
 .font-size-15 { font-size: 15px; }
 .font-size-48 { font-size: 48px; }
 @media only screen and (max-width: 380px) {
	 .font-size-xsm-12 { font-size: 12px; }
 }
 
 /* Flexbox adjustments */
 .dropdown-item {
	 display: flex;
	 align-items: center; /* Boxicons alignment fix */
 }
 
 /* Hover effects */
 .hover-opacity:hover { opacity: 0.8; }
 .hover-opacity:active { opacity: 1.0; }
 
 /* Card styling */
 .card-bg { background: var(--lm-card-bg-color); }
 .card-text-color { color: var(--lm-card-text-color); }
 .card-border { border: 1px solid var(--lm-card-border-color); }
 
 /* Input fields */
 input.no-outline:focus, textarea.no-outline:focus, select.no-outline:focus {
	 outline: none !important;
	 box-shadow: none !important;
 }
 .no-resize { resize: none !important; }
 .no-outline:focus { outline: none; }
 
 /* Scroll adjustments */
 .scrollable { height: auto; max-height: 100vh; overflow-y: scroll; }
 .scrolling-touch { -webkit-overflow-scrolling: touch; }
 
 /* Background */
 .no-background-image { background-image: none !important; }
 
 /* Font weight adjustments */
 .fw-bold { font-weight: 700 !important; }
 .fw-semi-bold { font-weight: 600 !important; }
 .fw-medium { font-weight: 500 !important; }
 .fw-normal { font-weight: 400 !important; }
 .fw-light { font-weight: 300 !important; }
 .fw-lighter { font-weight: 200 !important; }
 .fw-regular { font-weight: 400 !important; }
 
 /* Text transformations */
 .text-uppercase { text-transform: uppercase !important; }
 .text-lowercase { text-transform: lowercase !important; }
 .text-capitalize { text-transform: capitalize !important; }
 
 /* Spacing between elements */
 .gap-3 {gap: 3px; }
 .gap-4 {gap: 4px; }
 .gap-5 { gap: 5px; }
 .gap-6 { gap: 6px; }
 .gap-7 { gap: 7px; }
 .gap-8 { gap: 8px; }
 .gap-9 { gap: 9px; }
 .gap-10 { gap: 10px; }
 .gap-11 { gap: 11px; }
 .gap-12 { gap: 12px; }
 .gap-13 { gap: 13px; }
 .gap-14 { gap: 14px; }
 .gap-15 { gap: 15px; }
 .gap-20 { gap: 20px; }
 .gap-25 { gap: 25px; }
 .gap-30 { gap: 30px; }
 .gap-35 { gap: 35px; }
 .gap-40 { gap: 40px; }
 .gap-45 { gap: 45px; }
 .gap-50 { gap: 50px; }
 
 /* Auto width based on content */
 .input-width-fit {
	 width: fit-content !important;
	 max-width: 100%;
 }
 
 /* Visibility */
 .h-group, .h-input, .h-label {
	 display: none !important;
	 width: 0 !important;
	 height: 0 !important;
	 visibility: hidden !important;
 }
 
 /* Utility classes */
 .clear { clear: both; }
 .no-select { user-select: none; }
 
 /* Viewport width/height adjustments */
 .h-vh { height: 100vh; }
 .w-vw { width: 100vw; }
 .w-vw-breakout { position: relative; width: 100vw; margin-left: calc(-50vw + 50%); }
 .mw-350 { max-width: 350px !important; }
 .mw-450 { max-width: 450px !important; }
 .mw-750 { max-width: 750px !important; }
 .w-md-700 { width: 70rem !important; }
 .mw-vw-adjusted { max-width: calc(100vw - 40px) !important; }
 @media (max-width: 576px) {
	 .mw-vw-adjusted { width: calc(100vw - 40px) !important; }
 }
 
 /* Buttons */
 .btn-tiny {
   /* base btn styles */
   display: inline-block;
   cursor: pointer;
   text-align: center;
   white-space: nowrap;
   /* size overrides */
   height: var(--small-button-height);
   line-height: var(--small-button-line-height);
   width: 20px;
   padding: 0;
 }
 .btn-transparent:not(:hover):not(:active):not(:focus) {
   background-color: transparent !important;
   border-color: transparent !important;
   box-shadow: none !important;
 }
 
 
 /* Top and bottom */
 .top-10 {
     top: 10px !important;
  }
  .top-15 {
       top: 15px !important;
    }
  .top-20 {
      top: 20px !important;
   }
 .bottom-10 {
    bottom: 10px !important;
 }
 .bottom-15 {
      bottom: 15px !important;
   }
 .bottom-20 {
     bottom: 20px !important;
  }
  .bottom-25 {
     bottom: 25px !important;
  }
  .bottom-30 {
     bottom: 30px !important;
  }
  .bottom-35 {
     bottom: 35px !important;
  }
  .bottom-40 {
     bottom: 40px !important;
  }
  
  /* Border radius */
  .rounded-22 {
    border-radius: 22px;
  }
  .rounded-22-top {
    border-top-left-radius: 22px;
    border-top-right-radius: 22px;
  }
  .rounded-22-bottom {
    border-bottom-left-radius: 22px;
    border-bottom-right-radius: 22px;
  }
  
  /* Lists */
  ul.list-compact li {
    margin-bottom: 5px;
  }
  
  /* Half-size switch */
  .custom-switch.small-switch {
    --switch-height: 1.2rem;
    --switch-width: 2.2rem; /* keeps 1.6:1 width-to-height ratio */
    --switch-line-height: var(--switch-height);
    --switch-label-padding-left: calc(var(--switch-width) + 0.4rem);
    --switch-label-blank-padding-left: var(--switch-width);
  
    --switch-slider-width-height: 0.6rem;
    --switch-slider-top: calc((var(--switch-height) - var(--switch-slider-width-height)) / 2);
    --switch-slider-left: 0.3rem;
    margin-top: 0.35rem;
    --switch-slider-top-checked: var(--switch-slider-top);
    --switch-slider-left-checked: calc(var(--switch-width) - var(--switch-slider-width-height) - var(--switch-slider-left));
  }
  