/**
 * Rasamala Theme - Aesthetic Enhancements & Optional Effects
 * Part of SLiMS 9 Bulian OPAC Custom Theme
 * Refactored and Split on: 2026-07-20
 */

/* 8. Mobile/Tablet Bottom Navigation & Floating Buttons
   ---------------------------------------------------- */
@media (max-width: 991.98px) {
  .mobile-bottom-nav {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: 56px;
    background: var(--rasamala-chrome-bg) !important;
    backdrop-filter: blur(20px) !important;
    -webkit-backdrop-filter: blur(20px) !important;
    border-top: 1px solid rgba(var(--theme-accent-rgb), 0.38) !important;
    display: flex !important;
    justify-content: space-around;
    align-items: center;
    z-index: var(--z-bottom-nav);
    padding-bottom: env(safe-area-inset-bottom);
  }
}

@media (min-width: 992px) {
  .mobile-bottom-nav {
    display: none !important;
  }
}

.mobile-bottom-nav .nav-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: var(--rasamala-chrome-text-muted) !important;
  text-decoration: none;
  font-size: 10px;
  font-weight: 500;
  transition: color 0.2s ease;
}

.mobile-bottom-nav .nav-item i {
  font-size: 18px;
  margin-bottom: 2px;
}

.mobile-bottom-nav .nav-item:hover,
.mobile-bottom-nav .nav-item.active {
  color: var(--rasamala-chrome-text) !important;
}

.mobile-bottom-language-flag {
  display: inline-block;
  width: 20px;
  height: 15px;
  margin-bottom: 2px;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.45);
}

/* Floating back to top, color mode & Info */
.btn-floating-info,
.btn-back-to-top,
.btn-color-mode-toggle,
.btn-palette-switcher {
  position: fixed !important;
  right: 24px !important;
  width: 46px !important;
  height: 46px !important;
  border-radius: 50% !important;
  background: rgba(var(--theme-accent-rgb), 0.92) !important;
  backdrop-filter: blur(20px) !important;
  -webkit-backdrop-filter: blur(20px) !important;
  border: 1px solid rgba(var(--theme-accent-rgb), 0.38) !important;
  color: var(--theme-on-primary) !important;
  box-shadow: 0 8px 30px rgba(var(--theme-accent-rgb), 0.32) !important;
  transition: background-color 0.3s cubic-bezier(0.25, 1, 0.5, 1), border-color 0.3s cubic-bezier(0.25, 1, 0.5, 1), transform 0.3s cubic-bezier(0.25, 1, 0.5, 1), box-shadow 0.3s cubic-bezier(0.25, 1, 0.5, 1) !important;
  cursor: pointer !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  outline: none !important;
}

.btn-floating-info:hover,
.btn-back-to-top:hover,
.btn-color-mode-toggle:hover,
.btn-palette-switcher:hover {
  background: var(--rasamala-accent-hover) !important;
  border-color: var(--rasamala-accent-hover) !important;
  transform: scale(1.08) !important;
  box-shadow: 0 10px 30px rgba(var(--theme-accent-rgb), 0.4) !important;
}

.btn-floating-info {
  bottom: 24px !important;
  z-index: var(--z-floating-info) !important;
  font-size: 22px !important;
  animation: none !important;
}

.btn-palette-switcher {
  right: 82px !important;
  bottom: 24px !important;
  z-index: var(--z-floating-palette) !important;
  font-size: 18px !important;
}

.btn-color-mode-toggle {
  right: 140px !important;
  bottom: 24px !important;
  z-index: var(--z-floating-color-toggle) !important;
  font-size: 18px !important;
}

body.rasamala-floating-info-hide .btn-palette-switcher {
  right: 24px !important;
}

body.rasamala-floating-info-hide .btn-color-mode-toggle {
  right: 82px !important;
}

.btn-palette-switcher .palette-switcher-icon {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: currentColor !important;
  font-family: "Font Awesome 5 Free" !important;
  font-size: 18px !important;
  font-style: normal !important;
  font-weight: 900 !important;
  line-height: 1 !important;
}

.btn-palette-switcher .palette-switcher-icon::before {
  content: "\f1fc" !important;
}

.btn-back-to-top {
  bottom: 24px !important;
  z-index: var(--z-floating-back-to-top) !important;
  font-size: 18px !important;
  opacity: 0 !important;
  pointer-events: none !important;
  transform: scale(0.2) translateY(0) rotate(0deg) !important;
}

.btn-back-to-top.visible {
  opacity: 1 !important;
  pointer-events: auto !important;
  transform: scale(1) translateY(0) rotate(360deg) !important;
}

.btn-back-to-top.has-floating-info.visible {
  transform: scale(1) translateY(-60px) rotate(360deg) !important;
}

.btn-back-to-top:hover {
  transform: scale(1.08) translateY(-3px) !important;
}

.btn-back-to-top.has-floating-info:hover {
  transform: scale(1.08) translateY(-63px) !important;
}

.btn-floating-info.has-latest-content-ticker,
.btn-color-mode-toggle.has-latest-content-ticker,
.btn-palette-switcher.has-latest-content-ticker,
.btn-back-to-top.has-latest-content-ticker,
.btn-floating-whatsapp.has-latest-content-ticker {
  bottom: 58px !important;
}

.palette-switcher-panel {
  position: fixed !important;
  right: 24px !important;
  bottom: 84px !important;
  z-index: var(--z-floating-panel) !important;
  width: min(430px, calc(100vw - 32px)) !important;
  max-height: min(85vh, calc(100vh - 100px)) !important;
  overflow-y: auto !important;
  padding: 16px 16px 20px 16px !important;
  border: 1px solid color-mix(in srgb, var(--theme-muted) 28%, transparent) !important;
  border-radius: 14px !important;
  background: color-mix(in srgb, var(--theme-surface) 96%, transparent) !important;
  color: var(--theme-text) !important;
  box-shadow: 0 24px 72px rgba(0, 0, 0, 0.22) !important;
  backdrop-filter: blur(24px) !important;
  -webkit-backdrop-filter: blur(24px) !important;
  overscroll-behavior: contain !important;
  scrollbar-width: thin !important;
  scrollbar-color: color-mix(in srgb, var(--theme-muted) 35%, transparent) transparent !important;
}

.palette-switcher-panel::-webkit-scrollbar {
  width: 5px !important;
}

.palette-switcher-panel::-webkit-scrollbar-track {
  background: transparent !important;
}

.palette-switcher-panel::-webkit-scrollbar-thumb {
  background: color-mix(in srgb, var(--theme-muted) 35%, transparent) !important;
  border-radius: 999px !important;
}

.btn-palette-switcher.has-latest-content-ticker+.palette-switcher-panel {
  bottom: 118px !important;
}

.palette-switcher-header {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
  margin-bottom: 12px !important;
  color: var(--theme-text) !important;
}

.palette-switcher-header-actions {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
}

.palette-switcher-close {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 28px !important;
  height: 28px !important;
  border: 1px solid color-mix(in srgb, var(--theme-muted) 20%, transparent) !important;
  border-radius: 50% !important;
  background: color-mix(in srgb, var(--theme-surface) 82%, var(--theme-background) 18%) !important;
  color: var(--theme-text) !important;
  cursor: pointer !important;
  line-height: 1 !important;
}

.palette-switcher-mode-toggle {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 7px !important;
  min-height: 31px !important;
  padding: 6px 10px !important;
  border: 1px solid color-mix(in srgb, var(--theme-muted) 24%, transparent) !important;
  border-radius: var(--rasamala-radius-button) !important;
  background: color-mix(in srgb, var(--theme-surface) 86%, var(--theme-background) 14%) !important;
  color: var(--theme-on-surface) !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  cursor: pointer !important;
  transition: border-color 0.18s ease, background 0.18s ease, color 0.18s ease, transform 0.18s ease !important;
}

.palette-switcher-mode-toggle i {
  color: var(--rasamala-readable-accent) !important;
  font-size: 13px !important;
  line-height: 1 !important;
}

.palette-switcher-mode-toggle:hover,
.palette-switcher-mode-toggle:focus {
  transform: translateY(-1px) !important;
  border-color: color-mix(in srgb, var(--theme-accent) 42%, transparent) !important;
  background: color-mix(in srgb, var(--theme-accent) 12%, var(--theme-surface) 88%) !important;
  color: var(--theme-on-surface) !important;
}

.palette-switcher-tools {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 8px !important;
  margin-bottom: 12px !important;
}

.palette-switcher-tool-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 7px !important;
  min-height: 34px !important;
  padding: 7px 10px !important;
  border: 1px solid color-mix(in srgb, var(--theme-muted) 24%, transparent) !important;
  border-radius: var(--rasamala-radius-button) !important;
  background: color-mix(in srgb, var(--theme-surface) 86%, var(--theme-background) 14%) !important;
  color: var(--theme-on-surface) !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  cursor: pointer !important;
  transition: border-color 0.18s ease, background 0.18s ease, color 0.18s ease, transform 0.18s ease !important;
}

.palette-switcher-tool-btn i {
  flex: 0 0 auto !important;
  color: var(--rasamala-readable-accent) !important;
  font-size: 13px !important;
  line-height: 1 !important;
}

.palette-switcher-tool-btn:hover,
.palette-switcher-tool-btn:focus {
  transform: translateY(-1px) !important;
  border-color: color-mix(in srgb, var(--theme-accent) 42%, transparent) !important;
  background: color-mix(in srgb, var(--theme-accent) 12%, var(--theme-surface) 88%) !important;
  color: var(--theme-on-surface) !important;
}

/* Compact actions button styling in Theme Viewer */
.palette-switcher-actions-compact .palette-switcher-tool-btn {
  width: 38px !important;
  height: 38px !important;
  min-height: 38px !important;
  padding: 0 !important;
  border-radius: var(--rasamala-radius-circle) !important;
  background: color-mix(in srgb, var(--theme-accent) 8%, var(--theme-surface)) !important;
  border: 1px solid color-mix(in srgb, var(--theme-accent) 18%, transparent) !important;
  transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1), transform 0.2s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

.palette-switcher-actions-compact .palette-switcher-tool-btn i {
  color: var(--theme-accent) !important;
  font-size: 15px !important;
  transition: color 0.2s ease !important;
}

.palette-switcher-actions-compact .palette-switcher-tool-btn:hover,
.palette-switcher-actions-compact .palette-switcher-tool-btn:focus {
  transform: translateY(-2px) !important;
  background: var(--theme-accent) !important;
  border-color: var(--theme-accent) !important;
  box-shadow: 0 6px 14px rgba(var(--theme-accent-rgb-value, 111, 91, 67), 0.24) !important;
}

.palette-switcher-actions-compact .palette-switcher-tool-btn:hover i,
.palette-switcher-actions-compact .palette-switcher-tool-btn:focus i {
  color: var(--theme-on-accent) !important;
}

.palette-switcher-section-head,
.palette-switcher-custom-head {
  display: flex !important;
  justify-content: space-between !important;
  align-items: center !important;
  gap: 8px !important;
}

.palette-switcher-section-head {
  margin-bottom: 6px !important;
}

.palette-switcher-section-actions,
.palette-switcher-custom-actions {
  display: flex !important;
  gap: 4px !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  justify-content: flex-end !important;
}

.palette-switcher-tool-btn-compact {
  width: 26px !important;
  height: 26px !important;
  min-height: 26px !important;
  padding: 0 !important;
  border-radius: var(--rasamala-radius-circle) !important;
}

.btn-prompt-action {
  width: auto !important;
  height: auto !important;
  min-height: 28px !important;
  padding: 4px 10px !important;
  border-radius: 999px !important;
  font-size: 11.5px !important;
  white-space: nowrap !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
}

.btn-prompt-action i {
  font-size: 11px !important;
}

.rasamala-clipboard-fallback {
  position: fixed !important;
  top: -1000px !important;
  left: -1000px !important;
  width: 1px !important;
  height: 1px !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

.palette-switcher-tool-icon-small {
  font-size: 11px !important;
}

.palette-switcher-label-flush {
  margin: 0 !important;
  font-weight: 700 !important;
}

.palette-switcher-custom-head {
  margin-top: 10px !important;
  flex-wrap: wrap !important;
}

.palette-switcher-custom-textarea {
  margin-top: 6px !important;
}

.palette-switcher-format-help {
  font-size: 10px !important;
  line-height: 1.35 !important;
  margin-top: 6px !important;
  opacity: 0.95 !important;
}

.palette-switcher-subgroup {
  margin-bottom: 8px !important;
  border: 1px solid color-mix(in srgb, var(--theme-muted) 18%, transparent) !important;
  border-radius: var(--rasamala-radius-button) !important;
  padding: 6px 10px !important;
  background: color-mix(in srgb, var(--theme-surface) 95%, transparent) !important;
}

.palette-switcher-subgroup summary {
  cursor: pointer !important;
  user-select: none !important;
  list-style: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  font-size: 12px !important;
}

.palette-switcher-subgroup summary::-webkit-details-marker {
  display: none !important;
}

.palette-switcher-builder-row-actions {
  display: flex !important;
  align-items: center !important;
  gap: 3px !important;
}

.palette-switcher-save-wrap {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  margin: 0 !important;
  padding: 0 !important;
  border: none !important;
}

.palette-switcher-save-wrap[hidden],
.palette-switcher-save-btn[hidden] {
  display: none !important;
}

.palette-switcher-save-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 7px !important;
  min-height: 36px !important;
  padding: 8px 13px !important;
  border: 1px solid color-mix(in srgb, var(--theme-accent) 52%, transparent) !important;
  border-radius: var(--rasamala-radius-button) !important;
  background: var(--theme-accent) !important;
  color: var(--theme-on-accent) !important;
  font-size: 12px !important;
  font-weight: 800 !important;
  line-height: 1.2 !important;
  cursor: pointer !important;
  transition: transform 0.18s ease, box-shadow 0.18s ease, opacity 0.18s ease !important;
}

.palette-switcher-save-btn:hover,
.palette-switcher-save-btn:focus {
  transform: translateY(-1px) !important;
  box-shadow: 0 6px 18px color-mix(in srgb, var(--theme-accent) 26%, transparent) !important;
}

.palette-switcher-save-btn:disabled {
  cursor: wait !important;
  opacity: 0.68 !important;
  transform: none !important;
}

.palette-switcher-save-status {
  min-height: 16px !important;
  color: var(--theme-muted-on-surface) !important;
  font-size: 10px !important;
  line-height: 1.35 !important;
}

.palette-switcher-save-status[data-state="success"] {
  color: var(--theme-accent) !important;
}

.palette-switcher-save-status[data-state="error"],
.palette-switcher-save-status[data-state="unauthorized"] {
  color: #b42318 !important;
}

.palette-switcher-image-options-head {
  display: flex !important;
  align-items: baseline !important;
  justify-content: space-between !important;
  gap: 8px !important;
  flex-wrap: wrap !important;
}

.palette-switcher-help-inline {
  color: var(--theme-muted) !important;
  font-size: 10px !important;
  line-height: 1.35 !important;
}

.palette-switcher-format-code {
  display: block !important;
  margin-top: 4px !important;
  font-size: 9px !important;
  padding: 4px 6px !important;
  background: rgba(0, 0, 0, 0.06) !important;
  border-radius: 4px !important;
  word-break: break-all !important;
  text-align: left !important;
  font-family: monospace !important;
}

.palette-switcher-actions-compact {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 12px !important;
  margin-top: 16px !important;
  padding-top: 14px !important;
  padding-bottom: 8px !important;
  border-top: 1px solid color-mix(in srgb, var(--theme-muted) 16%, transparent) !important;
  width: 100% !important;
}


.palette-switcher-label {
  display: block !important;
  margin: 10px 0 6px !important;
  color: var(--theme-muted) !important;
  font-size: 12px !important;
  font-weight: 700 !important;
}

.btn-floating-whatsapp {
  position: fixed !important;
  right: 24px !important;
  bottom: 24px !important;
  width: 46px !important;
  height: 46px !important;
  border-radius: 50% !important;
  background: var(--theme-accent-color) !important;
  border: 1px solid rgba(var(--theme-accent-rgb), 0.38) !important;
  color: #FFFFFF !important;
  box-shadow: 0 8px 30px rgba(var(--theme-accent-rgb), 0.32) !important;
  transition: background-color 0.3s cubic-bezier(0.25, 1, 0.5, 1), border-color 0.3s cubic-bezier(0.25, 1, 0.5, 1), transform 0.3s cubic-bezier(0.25, 1, 0.5, 1), box-shadow 0.3s cubic-bezier(0.25, 1, 0.5, 1) !important;
  cursor: pointer !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  outline: none !important;
  z-index: var(--z-floating-whatsapp) !important;
  font-size: 22px !important;
}

.btn-floating-whatsapp:hover {
  background: rgba(var(--theme-accent-rgb), 0.8) !important;
  border-color: rgba(var(--theme-accent-rgb), 0.5) !important;
  transform: scale(1.08) !important;
  box-shadow: 0 10px 30px rgba(var(--theme-accent-rgb), 0.45) !important;
}



.prayer-reminder-toast {
  position: fixed !important;
  left: 18px !important;
  bottom: 86px !important;
  z-index: var(--z-prayer-toast) !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 9px !important;
  max-width: min(360px, calc(100vw - 32px)) !important;
  padding: 8px 10px !important;
  border: 1px solid rgba(var(--theme-accent-rgb), 0.22) !important;
  border-radius: 999px !important;
  background:
    radial-gradient(circle at 22px 14px, rgba(var(--theme-accent-rgb), 0.18), transparent 30px),
    rgba(255, 255, 255, 0.92) !important;
  color: var(--rasamala-text-primary) !important;
  box-shadow: 0 16px 42px rgba(var(--theme-accent-rgb), 0.2) !important;
  -webkit-backdrop-filter: blur(16px) !important;
  backdrop-filter: blur(16px) !important;
  animation: prayerReminderEnter 0.45s ease both, prayerReminderFloat 3.4s ease-in-out 0.5s infinite !important;
}

.prayer-reminder-toast.is-hidden {
  opacity: 0 !important;
  pointer-events: none !important;
  transform: translateY(12px) scale(0.96) !important;
  transition: opacity 0.22s ease, transform 0.22s ease !important;
}

.prayer-reminder-icon {
  position: relative !important;
  width: 32px !important;
  height: 32px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: 0 0 32px !important;
  border-radius: 50% !important;
  background: var(--rasamala-accent) !important;
  color: #ffffff !important;
  animation: prayerReminderIconDance 2.6s ease-in-out infinite !important;
}

.prayer-reminder-icon i {
  font-family: "Font Awesome 5 Free" !important;
  font-weight: 900 !important;
  font-size: 14px !important;
  color: #ffffff !important;
  display: inline-block !important;
  line-height: 1 !important;
}

.prayer-reminder-icon::after {
  content: "" !important;
  position: absolute !important;
  inset: -3px !important;
  border: 1px solid rgba(var(--theme-accent-rgb), 0.24) !important;
  border-radius: inherit !important;
  animation: prayerReminderPulse 2.2s ease-in-out infinite !important;
}

.prayer-reminder-text {
  min-width: 0 !important;
  line-height: 1.22 !important;
}

.prayer-reminder-text strong {
  display: block !important;
  color: var(--rasamala-text-primary) !important;
  font-size: 13px !important;
  font-weight: 800 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

.prayer-reminder-countdown {
  color: var(--rasamala-accent) !important;
  font-variant-numeric: tabular-nums !important;
  letter-spacing: 0.02em !important;
}

.prayer-reminder-close {
  width: 22px !important;
  height: 22px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: 0 0 22px !important;
  border: 0 !important;
  border-radius: 50% !important;
  background: rgba(var(--theme-accent-rgb), 0.1) !important;
  color: var(--rasamala-accent) !important;
  cursor: pointer !important;
  font-size: 18px !important;
  line-height: 1 !important;
}

.prayer-reminder-close:hover,
.prayer-reminder-close:focus {
  background: var(--rasamala-accent) !important;
  color: var(--theme-on-primary) !important;
}

@keyframes prayerReminderEnter {
  from {
    opacity: 0;
    transform: translateY(12px) scale(0.96);
  }

  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes prayerReminderFloat {

  0%,
  100% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-4px);
  }
}

@keyframes prayerReminderIconDance {

  0%,
  100% {
    transform: rotate(0deg) scale(1);
  }

  20% {
    transform: rotate(-8deg) scale(1.04);
  }

  40% {
    transform: rotate(7deg) scale(1.08);
  }

  60% {
    transform: translateY(-2px) rotate(-4deg) scale(1.05);
  }

  80% {
    transform: rotate(3deg) scale(1.02);
  }
}

@keyframes prayerReminderPulse {

  0%,
  100% {
    opacity: 0.4;
    transform: scale(0.94);
  }

  50% {
    opacity: 0.9;
    transform: scale(1.08);
  }
}

@media (max-width: 575.98px) {
  .prayer-reminder-toast {
    left: 12px !important;
    right: auto !important;
    bottom: 92px !important;
    max-width: calc(100vw - 24px) !important;
    width: max-content !important;
  }
}

@media (prefers-reduced-motion: reduce) {

  .prayer-reminder-toast,
  .prayer-reminder-icon,
  .prayer-reminder-icon::after {
    animation: none !important;
  }
}

.hero-animation-layer {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
  color: var(--theme-accent-color);
  opacity: 0.94;
}

.background-animation-layer.hero-animation-layer {
  position: fixed;
  z-index: 1 !important;
  opacity: 0.78;
  mix-blend-mode: normal;
  contain: strict;
}

.background-animation-layer.hero-animation-particles,
.background-animation-layer.hero-animation-constellation,
.background-animation-layer.hero-animation-rain,
.background-animation-layer.hero-animation-zen-ripples,
.background-animation-layer.hero-animation-neural-network,
.background-animation-layer.hero-animation-starfield-warp,
.background-animation-layer.hero-animation-floating-embers {
  background: transparent !important;
}

.background-animation-layer .hero-token {
  font-weight: 800;
  filter: none;
}

.background-animation-layer .hero-rain-column {
  opacity: 0.92;
  filter: none;
}

.background-animation-layer .hero-line {
  opacity: 0.72;
  height: 1px;
}

.background-animation-layer .hero-node {
  opacity: 0.84;
  width: 6px;
  height: 6px;
  box-shadow: none;
}

.background-animation-layer.hero-animation-waves::before,
.background-animation-layer.hero-animation-waves::after {
  background: repeating-linear-gradient(105deg,
      transparent 0,
      transparent 20px,
      rgba(var(--theme-accent-rgb), 0.44) 21px,
      rgba(var(--theme-accent-rgb), 0.44) 27px,
      transparent 29px,
      transparent 52px);
}

.background-animation-layer.hero-animation-grid {
  background-image:
    linear-gradient(rgba(var(--theme-accent-rgb), 0.36) 1px, transparent 1px),
    linear-gradient(90deg, rgba(var(--theme-accent-rgb), 0.36) 1px, transparent 1px);
}

.rasamala-search-banner-bg-particles .hero-animation-layer,
.rasamala-search-banner-bg-constellation .hero-animation-layer,
.rasamala-search-banner-bg-rain .hero-animation-layer,
.rasamala-search-banner-bg-neural-network .hero-animation-layer,
.rasamala-search-banner-bg-starfield-warp .hero-animation-layer,
.rasamala-search-banner-bg-floating-embers .hero-animation-layer,
.rasamala-background-animation-particles .background-animation-layer,
.rasamala-background-animation-constellation .background-animation-layer,
.rasamala-background-animation-rain .background-animation-layer,
.rasamala-background-animation-neural-network .background-animation-layer,
.rasamala-background-animation-starfield-warp .background-animation-layer,
.rasamala-background-animation-floating-embers .background-animation-layer {
  color: rgb(var(--theme-accent-rgb));
}

.hero-token,
.hero-rain-column,
.hero-line,
.hero-node,
.hero-bubble,
.hero-star,
.hero-orb,
.hero-ripple,
.hero-neural-line,
.hero-neural-node,
.hero-warp-star,
.hero-ember {
  position: absolute;
  display: block;
  pointer-events: none;
}

.hero-token {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-weight: 700;
  line-height: 1;
  opacity: 0;
  text-shadow: 0 0 18px currentColor;
  animation: heroTokenFloat linear infinite;
}

.hero-rain-column {
  top: -48%;
  white-space: pre-line;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 15px;
  line-height: 1.25;
  font-weight: 700;
  opacity: 0.78;
  text-shadow: 0 0 14px currentColor;
  animation: heroCodeRain linear infinite;
}

.hero-line {
  height: 1px;
  transform-origin: left center;
  background: linear-gradient(90deg, transparent 0%, currentColor 42%, rgba(255, 255, 255, 0.5) 50%, currentColor 58%, transparent 100%);
  opacity: 0.38;
  animation: heroLinePulse ease-in-out infinite;
}

.hero-node {
  width: 7px;
  height: 7px;
  border: 2px solid currentColor;
  box-shadow: 0 0 14px currentColor;
  transform: rotate(45deg);
  opacity: 0.52;
  animation: heroNodeDrift ease-in-out infinite;
}

.hero-animation-waves::before,
.hero-animation-waves::after {
  content: "";
  position: absolute;
  left: -12%;
  right: -12%;
  height: 38%;
  background: repeating-linear-gradient(105deg,
      transparent 0,
      transparent 24px,
      rgba(var(--theme-accent-rgb), 0.30) 25px,
      rgba(var(--theme-accent-rgb), 0.30) 29px,
      transparent 31px,
      transparent 58px);
  transform: skewY(-8deg);
  animation: heroWaveDrift 16s ease-in-out infinite alternate;
}

.hero-animation-waves::before {
  top: 4%;
}

.hero-animation-waves::after {
  bottom: 2%;
  opacity: 0.82;
  animation-duration: 22s;
  animation-direction: alternate-reverse;
}

.hero-animation-grid {
  position: relative;
  background-image:
    linear-gradient(rgba(var(--theme-accent-rgb), 0.24) 1px, transparent 1px),
    linear-gradient(90deg, rgba(var(--theme-accent-rgb), 0.24) 1px, transparent 1px);
  background-size: 72px 72px;
  animation: none;
}

.hero-animation-grid::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(rgba(var(--theme-accent-rgb), 0.16) 1px, transparent 1px),
    linear-gradient(90deg, rgba(var(--theme-accent-rgb), 0.16) 1px, transparent 1px);
  background-size: 72px 72px;
  animation: heroGridShiftTransform 18s linear infinite;
}

.hero-animation-grid::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(120deg, transparent 0%, rgba(var(--theme-accent-rgb), 0.34) 48%, transparent 74%);
  transform: translateX(-38%);
  animation: heroGridSweep 12s ease-in-out infinite;
}

.hero-animation-layer.is-static *,
.hero-animation-layer.is-static::before,
.hero-animation-layer.is-static::after {
  animation: none !important;
}

/* Decorative CSS motion must stop while the document is hidden. The canvas
   loop has its own JS lifecycle, while this rule covers DOM/pseudo-element
   animations in the same layer. */
html.rasamala-page-hidden .hero-animation-layer,
html.rasamala-page-hidden .hero-animation-layer *,
html.rasamala-page-hidden .hero-animation-layer::before,
html.rasamala-page-hidden .hero-animation-layer::after,
.latest-content-ticker-track.is-page-hidden {
  animation-play-state: paused !important;
}

/* Prefer opaque surfaces over large blur regions when the browser reports a
   data-saving connection. This keeps text readable while avoiding expensive
   backdrop rasterization on constrained devices. */
html.rasamala-save-data .mobile-bottom-nav,
html.rasamala-save-data .btn-floating-info,
html.rasamala-save-data .btn-back-to-top,
html.rasamala-save-data .btn-color-mode-toggle,
html.rasamala-save-data .btn-palette-switcher,
html.rasamala-save-data .palette-switcher-panel,
html.rasamala-save-data .prayer-reminder-toast,
html.rasamala-save-data .mobile-more-menu-overlay,
html.rasamala-save-data .mobile-more-menu-sheet,
html.rasamala-save-data .search-suggestion-dropdown,
html.rasamala-save-data .detail-floating-quick-actions,
html.rasamala-save-data .detail-floating-quick-actions .btn-floating-action-icon,
html.rasamala-save-data .modal-content,
html.rasamala-save-data .visitor-kiosk-card,
html.rasamala-save-data .left-form-section,
html.rasamala-save-data .right-instruction-section {
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
}

@media (prefers-reduced-motion: reduce) {
  html:focus-within {
    scroll-behavior: auto !important;
  }

  .rasamala-main,
  .latest-content-fade-item,
  .skeleton-card,
  .theme-skeleton-card::after,
  .theme-skeleton-badge::after,
  .theme-skeleton-item::after,
  .rasamala-page-progress-bar,
  .search-suggestion-dropdown {
    animation: none !important;
    transition: none !important;
  }
}

@keyframes heroTokenFloat {
  0% {
    transform: translate3d(0, 0, 0) rotate(0deg) scale(0.82);
    opacity: 0;
  }

  14% {
    opacity: 0.88;
  }

  82% {
    opacity: 0.66;
  }

  100% {
    transform: translate3d(var(--tx), var(--ty), 0) rotate(var(--rot)) scale(1.18);
    opacity: 0;
  }
}

@keyframes heroCodeRain {
  0% {
    transform: translate3d(0, -24vh, 0);
    opacity: 0;
  }

  12% {
    opacity: 0.82;
  }

  88% {
    opacity: 0.72;
  }

  100% {
    transform: translate3d(0, 128vh, 0);
    opacity: 0;
  }
}

@keyframes heroLinePulse {

  0%,
  100% {
    opacity: 0.22;
    transform: rotate(var(--angle)) scaleX(0.74);
  }

  50% {
    opacity: 0.58;
    transform: rotate(var(--angle)) scaleX(1.08);
  }
}

@keyframes heroNodeDrift {

  0%,
  100% {
    opacity: 0.28;
    transform: translate3d(0, 0, 0) rotate(45deg);
  }

  50% {
    opacity: 0.68;
    transform: translate3d(var(--tx), var(--ty), 0) rotate(45deg);
  }
}

@keyframes heroWaveDrift {
  from {
    transform: translate3d(-2%, 0, 0) skewY(-8deg);
  }

  to {
    transform: translate3d(8%, 4%, 0) skewY(-4deg);
  }
}

@keyframes heroGridShiftTransform {
  from {
    transform: translate3d(0, 0, 0);
  }

  to {
    transform: translate3d(72px, 72px, 0);
  }
}

@keyframes heroGridSweep {

  0%,
  100% {
    transform: translateX(-42%);
    opacity: 0;
  }

  50% {
    transform: translateX(34%);
    opacity: 1;
  }
}

/* Floating Bubbles Animation Styles */
.hero-bubble {
  border-radius: 50% !important;
  animation: heroBubbleFloat linear infinite;
}

@keyframes heroBubbleFloat {
  0% {
    transform: translate3d(0, 0, 0) scale(0.8);
    opacity: 0;
  }

  15% {
    opacity: var(--op, 0.25);
  }

  85% {
    opacity: var(--op, 0.25);
  }

  100% {
    transform: translate3d(var(--tx), -115vh, 0) scale(1.1);
    opacity: 0;
  }
}

/* Twinkling Stars Animation Styles */
.hero-star {
  border-radius: 50% !important;
  animation: heroStarTwinkle ease-in-out infinite;
}

@keyframes heroStarTwinkle {

  0%,
  100% {
    opacity: 0.12;
    transform: scale3d(0.8, 0.8, 1);
  }

  50% {
    opacity: 0.88;
    transform: scale3d(1.28, 1.28, 1);
  }
}

/* Gradient Orbs Animation Styles */
.hero-orb {
  width: min(340px, 64vw) !important;
  height: min(340px, 64vw) !important;
  border-radius: 50% !important;
  filter: none !important;
  /* Completely disabled expensive blur filter for high performance */
  opacity: 1 !important;
  mix-blend-mode: plus-lighter !important;
}

.hero-orb-1 {
  left: 10% !important;
  top: 15% !important;
  animation: heroOrbMove1 linear infinite alternate !important;
}

.hero-orb-2 {
  right: 15% !important;
  bottom: 10% !important;
  animation: heroOrbMove2 linear infinite alternate !important;
}

.hero-orb-3 {
  left: 45% !important;
  top: 45% !important;
  animation: heroOrbMove3 linear infinite alternate !important;
}

@keyframes heroOrbMove1 {
  0% {
    transform: translate3d(0, 0, 0) scale(1);
  }

  100% {
    transform: translate3d(15vw, 10vh, 0) scale(1.15);
  }
}

@keyframes heroOrbMove2 {
  0% {
    transform: translate3d(0, 0, 0) scale(1.1);
  }

  100% {
    transform: translate3d(-12vw, -15vh, 0) scale(0.9);
  }
}

@keyframes heroOrbMove3 {
  0% {
    transform: translate3d(0, 0, 0) scale(0.95);
  }

  100% {
    transform: translate3d(10vw, -10vh, 0) scale(1.1);
  }
}

/* Zen Ripples Animation Styles */
.hero-ripple {
  border: 1px solid rgba(var(--theme-accent-rgb), 0.26);
  border-radius: 50%;
  opacity: 0;
  transform: translate3d(-50%, -50%, 0) scale(0.2);
  animation: heroZenRipple ease-out infinite;
}

@keyframes heroZenRipple {
  0% {
    opacity: 0;
    transform: translate3d(-50%, -50%, 0) scale(0.18);
  }

  18% {
    opacity: 0.5;
  }

  78% {
    opacity: 0.16;
  }

  100% {
    opacity: 0;
    transform: translate3d(-50%, -50%, 0) scale(1.45);
  }
}

/* Neural Network Animation Styles */
.hero-neural-line {
  height: 1px;
  transform-origin: left center;
  background: linear-gradient(90deg, transparent, currentColor 36%, rgba(255, 255, 255, 0.58), currentColor 64%, transparent);
  opacity: 0.32;
  animation: heroNeuralPulse ease-in-out infinite;
}

.hero-neural-node {
  border-radius: 50%;
  background: currentColor;
  opacity: 0.42;
  animation: heroNeuralNode ease-in-out infinite;
}

@keyframes heroNeuralPulse {

  0%,
  100% {
    opacity: 0.14;
    transform: rotate(var(--angle)) scaleX(0.62);
  }

  50% {
    opacity: 0.62;
    transform: rotate(var(--angle)) scaleX(1.12);
  }
}

@keyframes heroNeuralNode {

  0%,
  100% {
    opacity: 0.22;
    transform: translate3d(0, 0, 0) scale(0.78);
  }

  50% {
    opacity: 0.72;
    transform: translate3d(var(--tx), var(--ty), 0) scale(1.18);
  }
}

/* Starfield Warp Animation Styles */
.hero-warp-star {
  border-radius: 999px;
  opacity: 0;
  transform: translate3d(-50%, -50%, 0) scale(0.28);
  animation: heroStarfieldWarp linear infinite;
}

.hero-warp-star::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 60%;
  width: var(--trail, 36px);
  height: 1px;
  background: linear-gradient(90deg, transparent, currentColor);
  opacity: 0.42;
  transform: translateY(-50%);
}

@keyframes heroStarfieldWarp {
  0% {
    opacity: 0;
    transform: translate3d(-50%, -50%, 0) scale(0.18);
  }

  12% {
    opacity: 0.76;
  }

  100% {
    opacity: 0;
    transform: translate3d(calc(-50% + var(--dx)), calc(-50% + var(--dy)), 0) scale(1.08);
  }
}

/* Floating Embers Animation Styles */
.hero-ember {
  border-radius: 999px;
  opacity: 0;
  animation: heroFloatingEmber linear infinite;
}

@keyframes heroFloatingEmber {
  0% {
    opacity: 0;
    transform: translate3d(0, 0, 0) scale(0.64);
  }

  12% {
    opacity: var(--op, 0.4);
  }

  82% {
    opacity: var(--op, 0.4);
  }

  100% {
    opacity: 0;
    transform: translate3d(var(--tx), -112vh, 0) scale(1.12);
  }
}


.hero-search-heading {
  max-width: 860px;
  margin: 0 auto 22px;
  padding: 0 16px;
}

.hero-search-heading-library {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 14px;
  width: 100%;
  max-width: min(860px, 100%);
}

.hero-library-logo-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 48px;
  height: 58px;
  max-width: 58px;
  margin-bottom: 0;
  border-radius: 12px;
  overflow: hidden;
}

.hero-library-logo {
  display: block;
  width: auto;
  max-width: 48px;
  max-height: 58px;
  object-fit: contain;
  filter: none;
}

.hero-library-logo-fallback {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 16px;
  color: #ffffff;
  background: var(--theme-accent-color);
  box-shadow: none;
  font-size: 24px;
}

.hero-search-heading-library h1 {
  min-width: 0;
  max-width: 100%;
  word-wrap: break-word;
  overflow-wrap: break-word;
}

.hero-search-heading h1 {
  margin: 0;
  display: inline-block;
  max-width: 100%;
  box-sizing: border-box;
  overflow-wrap: anywhere;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--theme-on-surface);
  font-family: var(--rasamala-font-stack);
  font-weight: 800;
  line-height: 1.08;
  letter-spacing: 0;
  text-shadow: 0 2px 4px rgba(255, 255, 255, 0.9);
  box-shadow: none;
}

.hero-search-heading-small h1 {
  font-size: 2.1rem;
}

.hero-search-heading-medium h1 {
  font-size: 2.65rem;
}

.hero-search-heading-large h1 {
  font-size: 3.35rem;
}

@media (max-width: 575.98px) {
  .rasamala-search-banner-section.rasamala-search-banner-hero-only {
    min-height: calc(100vh - 72px) !important;
    padding-top: 32px !important;
    padding-bottom: 72px !important;
    overflow: visible !important;
  }

  .advanced-wraper {
    padding: 18px !important;
    border-radius: 16px !important;
    top: calc(100% + 10px) !important;
    left: 15px !important;
    right: 15px !important;
    margin-top: 0 !important;
    box-shadow: 0 18px 38px rgba(0, 0, 0, 0.18) !important;
  }

  .advanced-wraper .d-flex.flex-wrap {
    gap: 8px !important;
  }

  .search-type-btn {
    margin: 0 !important;
    padding: 7px 12px !important;
    font-size: 12px !important;
  }

  .hero-search-heading {
    margin-bottom: 16px;
    padding: 0 8px;
  }

  .hero-search-heading-small h1,
  .hero-search-heading-medium h1,
  .hero-search-heading-large h1 {
    font-size: 1.55rem;
    line-height: 1.16;
  }

  .hero-search-heading-library {
    flex-direction: column;
    gap: 8px;
    text-align: center;
  }

  .hero-library-logo-wrap {
    width: 42px;
    height: 50px;
    max-width: 42px;
  }

  .hero-library-logo {
    max-width: 42px;
    max-height: 50px;
  }

  .hero-library-logo-fallback {
    width: 40px;
    height: 40px;
    border-radius: 14px;
    font-size: 18px;
  }

  .hero-search-heading-library h1 {
    max-width: 100%;
  }

  .latest-content-strip {
    margin-top: 14px;
    padding: 0 4px;
  }

  .latest-content-list {
    justify-content: flex-start;
    flex-wrap: nowrap;
    overflow-x: auto;
    width: 100%;
    padding-bottom: 4px;
    -webkit-overflow-scrolling: touch;
  }

  .latest-content-link {
    max-width: 86vw;
  }

  /* The ticker reserves the mobile bottom menu only while that menu is
     actually visible. When the menu is hidden, return the ticker to the
     physical bottom edge of the viewport. */
  body.mobile-bottom-nav-enabled .latest-content-ticker {
    bottom: calc(56px + env(safe-area-inset-bottom)) !important;
  }

  body.mobile-bottom-nav-hidden .latest-content-ticker {
    bottom: env(safe-area-inset-bottom) !important;
  }
}

@media (max-width: 991.98px) {
  .hero-search-heading-library {
    display: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {

  html:focus-within {
    scroll-behavior: auto !important;
  }

  .hero-animation-layer,
  .hero-animation-layer *,
  .hero-animation-layer::before,
  .hero-animation-layer::after,
  .background-animation-layer,
  .background-animation-layer::after,
  .latest-content-ticker-track,
  .prayer-reminder-toast,
  .prayer-reminder-icon,
  .prayer-reminder-icon::after,
  .mobile-more-menu-overlay,
  .mobile-more-menu-sheet {
    animation: none !important;
    transition-duration: 0.01ms !important;
    transition-delay: 0s !important;
  }

  #rasamala-cursor-particles-canvas,
  .hero-animation-canvas {
    display: none !important;
  }

  /* An explicit Theme Viewer choice is an intentional opt-in, even when the
     operating system requests reduced motion. Server/default settings still
     follow the accessibility preference above. */
  body[data-cursor-particles-explicit="1"] #rasamala-cursor-particles-canvas {
    display: block !important;
  }

  .latest-content-ticker {
    overflow-x: auto !important;
    overflow-y: hidden !important;
    -webkit-overflow-scrolling: touch !important;
  }

  .latest-content-ticker-track {
    width: auto !important;
    transform: none !important;
    will-change: auto !important;
  }

  .latest-content-ticker-group {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
}
/* ====================================================
   Mobile "More" (Lainnya) Bottom Sheet Menu Styling
   ==================================================== */
.mobile-more-menu-overlay {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
  background-color: rgba(0, 0, 0, 0.55) !important;
  backdrop-filter: blur(6px) !important;
  -webkit-backdrop-filter: blur(6px) !important;
  z-index: var(--z-mobile-sheet, 9999) !important;
  display: flex !important;
  align-items: flex-end !important;
  opacity: 0 !important;
  pointer-events: none !important;
  transition: opacity 0.3s ease !important;
}

.mobile-more-menu-overlay.active {
  opacity: 1 !important;
  pointer-events: auto !important;
}

.mobile-more-menu-sheet {
  width: 100% !important;
  background-color: color-mix(in srgb, var(--rasamala-chrome-bg, var(--theme-primary)) 92%, transparent 8%) !important;
  backdrop-filter: blur(16px) !important;
  -webkit-backdrop-filter: blur(16px) !important;
  color: var(--rasamala-chrome-text, var(--theme-on-primary, #ffffff)) !important;
  border: 1px solid var(--rasamala-chrome-border, rgba(255, 255, 255, 0.18)) !important;
  border-bottom: 0 !important;
  border-radius: 24px 24px 0 0 !important;
  box-shadow: 0 -8px 32px rgba(0, 0, 0, 0.25) !important;
  transform: translateY(100%) !important;
  transition: transform 0.3s cubic-bezier(0.25, 1, 0.5, 1) !important;
  max-height: 80vh !important;
  display: flex !important;
  flex-direction: column !important;
}

.mobile-more-menu-overlay.active .mobile-more-menu-sheet {
  transform: translateY(0) !important;
}

.mobile-more-menu-header {
  padding: 20px 24px 16px 24px !important;
  border-bottom: 1px solid var(--rasamala-chrome-border, rgba(255, 255, 255, 0.16)) !important;
  display: flex !important;
  justify-content: space-between !important;
  align-items: center !important;
}

.mobile-more-menu-title {
  font-size: 16px !important;
  font-weight: 700 !important;
  color: var(--rasamala-chrome-text, var(--theme-on-primary, #ffffff)) !important;
  font-family: var(--rasamala-font-stack) !important;
  letter-spacing: -0.01em !important;
}

.mobile-more-menu-close {
  background: none !important;
  border: none !important;
  font-size: 28px !important;
  color: var(--rasamala-chrome-text, var(--theme-on-primary, #ffffff)) !important;
  cursor: pointer !important;
  padding: 0 !important;
  line-height: 1 !important;
}

.mobile-more-menu-body {
  padding: 16px 24px 40px 24px !important;
  overflow-y: auto !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
}

.mobile-more-item {
  display: flex !important;
  align-items: center !important;
  padding: 14px 18px !important;
  background-color: color-mix(in srgb, var(--rasamala-chrome-text, #ffffff) 10%, transparent) !important;
  border-radius: 14px !important;
  color: var(--rasamala-chrome-text, var(--theme-on-primary, #ffffff)) !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  text-decoration: none !important;
  transition: background-color 0.2s ease, transform 0.1s ease !important;
}

.mobile-more-item:hover {
  background-color: color-mix(in srgb, var(--rasamala-chrome-text, #ffffff) 16%, transparent) !important;
  color: var(--rasamala-chrome-text, var(--theme-on-primary, #ffffff)) !important;
  text-decoration: none !important;
}

.mobile-more-item:active {
  transform: scale(0.98) !important;
}

.mobile-more-item i {
  margin-right: 14px !important;
  font-size: 18px !important;
  width: 24px !important;
  text-align: center !important;
  color: var(--rasamala-chrome-text, var(--theme-on-primary, #ffffff)) !important;
}

.mobile-more-item:hover i {
  color: var(--rasamala-chrome-text, var(--theme-on-primary, #ffffff)) !important;
}

.mobile-language-section {
  margin-top: 8px !important;
  padding-top: 14px !important;
  border-top: 1px solid var(--rasamala-chrome-border, rgba(255, 255, 255, 0.16)) !important;
}

.mobile-language-title {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  color: var(--rasamala-chrome-text, var(--theme-on-primary, #ffffff)) !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  margin-bottom: 10px !important;
}

.mobile-language-list {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 8px !important;
}

.mobile-language-select-wrap {
  position: relative !important;
}

.mobile-language-current-flag {
  position: absolute !important;
  top: 50% !important;
  left: 14px !important;
  z-index: 2 !important;
  transform: translateY(-50%) !important;
  pointer-events: none !important;
}

.mobile-language-select {
  height: 44px !important;
  padding-left: 42px !important;
  border-radius: 12px !important;
  border: 1px solid var(--rasamala-chrome-border, rgba(255, 255, 255, 0.16)) !important;
  background-color: color-mix(in srgb, var(--rasamala-chrome-text, #ffffff) 10%, transparent) !important;
  color: var(--rasamala-chrome-text, var(--theme-on-primary, #ffffff)) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
}

.mobile-language-item {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  min-width: 0 !important;
  padding: 10px 12px !important;
  border: 1px solid var(--rasamala-chrome-border, rgba(255, 255, 255, 0.16)) !important;
  border-radius: var(--rasamala-radius-button) !important;
  background: color-mix(in srgb, var(--rasamala-chrome-text, #ffffff) 10%, transparent) !important;
  color: var(--rasamala-chrome-text, var(--theme-on-primary, #ffffff)) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  text-decoration: none !important;
}

.mobile-language-item.active,
.mobile-language-item:hover {
  background: color-mix(in srgb, var(--rasamala-chrome-text, #ffffff) 16%, transparent) !important;
  border-color: var(--rasamala-chrome-text-muted, var(--rasamala-chrome-text, #ffffff)) !important;
  color: var(--rasamala-chrome-text, var(--theme-on-primary, #ffffff)) !important;
  text-decoration: none !important;
}

.overflow-hidden {
  overflow: hidden !important;
}

/* News title links must stay clean in light mode too. */
.news-card-title .news-card-title-link,
.news-list-card .news-card-title .news-card-title-link,
.news-list-card .content-title .news-card-title-link,
.news-list-card .news-card-title a {
  text-decoration: none;
  text-decoration-line: none;
  text-decoration-thickness: 0;
  border-bottom: 0;
  box-shadow: none;
  background-image: none;
}

.news-card-title .news-card-title-link:hover,
.news-card-title .news-card-title-link:focus,
.news-card-title .news-card-title-link:focus-visible,
.news-card-title .news-card-title-link:active,
.news-card-title .news-card-title-link:visited,
.news-list-card .news-card-title a:hover,
.news-list-card .news-card-title a:focus,
.news-list-card .news-card-title a:focus-visible,
.news-list-card .news-card-title a:active,
.news-list-card .news-card-title a:visited {
  text-decoration: none;
  text-decoration-line: none;
  text-decoration-thickness: 0;
  border-bottom: 0;
  box-shadow: none;
  background-image: none;
}

/* ====================================================
   Mobile Floating Buttons Adjustment (Clear of bottom nav)
   ==================================================== */
@media (max-width: 991.98px) {

  .palette-switcher-grid,
  .palette-switcher-section-tools,
  .palette-switcher-section-list {
    grid-template-columns: 1fr !important;
  }

  .btn-floating-info,
  .btn-back-to-top,
  .btn-color-mode-toggle,
  .btn-palette-switcher,
  .btn-floating-whatsapp {
    bottom: calc(20px + env(safe-area-inset-bottom)) !important;
    right: 20px !important;
    width: 44px !important;
    height: 44px !important;
  }

  body.mobile-bottom-nav-hidden .btn-floating-info,
  body.mobile-bottom-nav-hidden .btn-back-to-top,
  body.mobile-bottom-nav-hidden .btn-color-mode-toggle,
  body.mobile-bottom-nav-hidden .btn-palette-switcher,
  body.mobile-bottom-nav-hidden .btn-floating-whatsapp {
    bottom: calc(20px + env(safe-area-inset-bottom)) !important;
  }
  
  body.mobile-bottom-nav-hidden .btn-floating-info.has-latest-content-ticker,
  body.mobile-bottom-nav-hidden .btn-color-mode-toggle.has-latest-content-ticker,
  body.mobile-bottom-nav-hidden .btn-palette-switcher.has-latest-content-ticker,
  body.mobile-bottom-nav-hidden .btn-back-to-top.has-latest-content-ticker,
  body.mobile-bottom-nav-hidden .btn-floating-whatsapp.has-latest-content-ticker {
    bottom: calc(56px + env(safe-area-inset-bottom)) !important;
  }

  body.mobile-bottom-nav-enabled .btn-floating-info,
  body.mobile-bottom-nav-enabled .btn-back-to-top,
  body.mobile-bottom-nav-enabled .btn-color-mode-toggle,
  body.mobile-bottom-nav-enabled .btn-palette-switcher,
  body.mobile-bottom-nav-enabled .btn-floating-whatsapp {
    bottom: calc(76px + 20px + env(safe-area-inset-bottom)) !important;
  }

  body.mobile-bottom-nav-enabled .btn-floating-info.has-latest-content-ticker,
  body.mobile-bottom-nav-enabled .btn-color-mode-toggle.has-latest-content-ticker,
  body.mobile-bottom-nav-enabled .btn-palette-switcher.has-latest-content-ticker,
  body.mobile-bottom-nav-enabled .btn-back-to-top.has-latest-content-ticker,
  body.mobile-bottom-nav-enabled .btn-floating-whatsapp.has-latest-content-ticker {
    bottom: calc(76px + 56px + env(safe-area-inset-bottom)) !important;
  }

  .btn-floating-info {
    font-size: 18px !important;
  }

  .btn-palette-switcher {
    right: 74px !important;
    font-size: 16px !important;
  }

  .btn-color-mode-toggle {
    right: 128px !important;
    font-size: 16px !important;
  }

  body.rasamala-floating-info-hide .btn-palette-switcher {
    right: 20px !important;
  }

  body.rasamala-floating-info-hide .btn-color-mode-toggle {
    right: 74px !important;
  }

  .btn-floating-whatsapp {
    right: 20px !important;
    font-size: 20px !important;
  }

  .btn-back-to-top {
    font-size: 16px !important;
  }

  .btn-back-to-top.has-floating-info.visible {
    transform: scale(1) translateY(-54px) rotate(360deg) !important;
  }

  .btn-back-to-top.has-floating-info:hover {
    transform: scale(1.08) translateY(-57px) !important;
  }

  .btn-floating-info.has-latest-content-ticker,
  .btn-color-mode-toggle.has-latest-content-ticker,
  .btn-palette-switcher.has-latest-content-ticker,
  .btn-back-to-top.has-latest-content-ticker,
  .btn-floating-whatsapp.has-latest-content-ticker {
    bottom: calc(108px + env(safe-area-inset-bottom)) !important;
  }

  .palette-switcher-panel {
    right: 12px !important;
    left: 12px !important;
    bottom: calc(76px + env(safe-area-inset-bottom)) !important;
    width: auto !important;
    max-height: min(84vh, calc(100vh - 90px)) !important;
    overflow-y: auto !important;
    padding-bottom: 24px !important;
  }

  .btn-palette-switcher.has-latest-content-ticker+.palette-switcher-panel {
    bottom: calc(112px + env(safe-area-inset-bottom)) !important;
  }

  /* Reduce subpage container padding on mobile to maximize content width */
  .rasamala-subpage-wrapper .container {
    padding-left: 6px !important;
    padding-right: 6px !important;
    max-width: 98% !important;
  }

  .rasamala-main-content-card,
  .page-member-area .rasamala-main-content-card,
  .member-area .rasamala-main-content-card,
  .detail-record {
    padding: 16px 12px !important;
    /* Premium compact inner padding */
  }

  /* Override inline editor styles that constrain content width on mobile */
  .rasamala-main-content-card p,
  .rasamala-main-content-card div,
  .rasamala-main-content-card span,
  .detail-record p,
  .detail-record div,
  .detail-record span {
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    max-width: 100% !important;
  }

  .rasamala-main-content-card img,
  .detail-record img {
    max-width: 100% !important;
    height: auto !important;
    margin-left: auto !important;
    margin-right: auto !important;
    display: block !important;
  }

  .rasamala-main-content-card table,
  .detail-record table {
    width: 100% !important;
    max-width: 100% !important;
    table-layout: fixed !important;
  }
}
/* Ensure the body content is not covered by the mobile/tablet bottom navigation bar */
@media (max-width: 991.98px) {
  body.mobile-bottom-nav-enabled {
    padding-bottom: calc(76px + env(safe-area-inset-bottom)) !important;
  }

  body.mobile-bottom-nav-hidden {
    padding-bottom: 0 !important;
  }
}
#search-wraper .latest-content-ticker {
  position: static !important;
  border: 1px solid rgba(var(--theme-accent-rgb), 0.55) !important;
  background: rgba(var(--theme-accent-rgb), 0.94) !important;
  border-radius: 999px !important;
  padding: 2px 14px !important;
  min-height: 28px !important;
  box-shadow: var(--rasamala-shadow-md) !important;
  width: auto !important;
  max-width: 780px !important;
  margin: 12px auto 0 !important;
  overflow: hidden !important;
  display: block !important;
  /* -webkit-backdrop-filter: blur(8px) !important; (removed for performance) */
  /* backdrop-filter: blur(8px) !important; (removed for performance) */
}

#search-wraper .latest-content-ticker-group {
  min-height: 28px !important;
}

#search-wraper .latest-content-ticker-item {
  color: var(--theme-on-primary) !important;
  font-size: 11px !important;
  text-decoration: none !important;
}

#search-wraper .latest-content-ticker-item:hover {
  color: var(--theme-on-primary) !important;
  opacity: 0.86 !important;
}

/* Flat WhatsApp modal */
.whatsapp-modal-content {
  border: 1px solid color-mix(in srgb, #00a884 25%, var(--theme-muted) 15%) !important;
  border-radius: 20px !important;
  overflow: hidden !important;
  box-shadow: 0 16px 40px rgba(11, 20, 26, 0.22) !important;
  font-family: var(--rasamala-font-stack) !important;
}

.whatsapp-modal-header {
  background: #005c4b !important;
  padding: 16px 20px !important;
  border: none !important;
  color: #ffffff !important;
}

.whatsapp-modal-name {
  font-size: 16px !important;
  font-weight: 700 !important;
  color: #ffffff !important;
  line-height: 1.2 !important;
}

.whatsapp-modal-status {
  font-size: 11.5px !important;
  color: rgba(255, 255, 255, 0.85) !important;
  font-weight: 500 !important;
}

.whatsapp-modal-status-icon {
  font-size: 11px !important;
}

.whatsapp-modal-body {
  padding: 20px !important;
  background-color: var(--theme-surface) !important;
}

/* Chat bubble styles */
.chat-bubble-incoming {
  position: relative !important;
  align-self: stretch !important;
  max-width: 100% !important;
  background-color: color-mix(in srgb, #00a884 8%, var(--theme-surface)) !important;
  color: var(--theme-on-surface) !important;
  padding: 14px 16px !important;
  border: 1px solid color-mix(in srgb, #00a884 20%, var(--theme-muted) 12%) !important;
  border-radius: 16px 16px 16px 4px !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04) !important;
  margin-bottom: 8px !important;
  text-align: left !important;
}

.chat-bubble-incoming::before {
  display: none !important;
}

.chat-bubble-author {
  font-size: 11px !important;
  font-weight: 700 !important;
  color: #00a884 !important;
  margin-bottom: 4px !important;
  text-transform: uppercase !important;
  letter-spacing: 0.6px !important;
}

.chat-bubble-text {
  font-size: 13.5px !important;
  line-height: 1.5 !important;
  color: var(--theme-on-surface) !important;
}

.whatsapp-message-form {
  display: flex !important;
  flex-direction: column !important;
  gap: 10px !important;
  margin-top: 4px !important;
}

.whatsapp-message-label {
  margin: 0 !important;
  font-size: 11px !important;
  font-weight: 800 !important;
  line-height: 1.2 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  color: #00a884 !important;
}

.whatsapp-message-input {
  min-height: 124px !important;
  resize: vertical !important;
  border-radius: 14px !important;
  border: 1px solid color-mix(in srgb, #00a884 25%, var(--theme-muted-on-surface) 20%) !important;
  background: var(--theme-surface) !important;
  color: var(--theme-on-surface) !important;
  box-shadow: none !important;
  font-size: 13.5px !important;
  line-height: 1.55 !important;
  padding: 12px 14px !important;
}

.whatsapp-message-input:focus {
  border-color: #00a884 !important;
  box-shadow: 0 0 0 3px rgba(0, 168, 132, 0.18) !important;
}

.whatsapp-message-input.is-invalid {
  border-color: #dc3545 !important;
  box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.16) !important;
}

.whatsapp-send-button {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  width: 100% !important;
  min-height: 44px !important;
  border-radius: 999px !important;
  border: 0 !important;
  background: #00a884 !important;
  color: #ffffff !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  box-shadow: 0 4px 14px rgba(0, 168, 132, 0.3) !important;
  transition: background-color 0.2s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.2s cubic-bezier(0.16, 1, 0.3, 1), color 0.2s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.2s cubic-bezier(0.16, 1, 0.3, 1), transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.2s ease !important;
}

.whatsapp-send-button:hover,
.whatsapp-send-button:focus {
  color: #ffffff !important;
  background: #008f70 !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 6px 18px rgba(0, 168, 132, 0.4) !important;
}

.whatsapp-send-button:disabled {
  opacity: 0.56 !important;
  cursor: not-allowed !important;
  transform: none !important;
  box-shadow: none !important;
}

.rasamala-theme .prayer-reminder-toast {
  background:
    radial-gradient(circle at 22px 14px, rgba(var(--theme-accent-rgb), 0.16), transparent 30px),
    color-mix(in srgb, var(--theme-surface) 94%, transparent) !important;
  border-color: color-mix(in srgb, var(--theme-accent) 32%, var(--theme-muted) 18%) !important;
  color: var(--theme-on-surface) !important;
  box-shadow: var(--rasamala-shadow-lg) !important;
}

.rasamala-theme .prayer-reminder-icon {
  background: var(--rasamala-accent) !important;
  color: #ffffff !important;
}

.rasamala-theme .prayer-reminder-text strong {
  color: var(--theme-on-surface) !important;
}

.rasamala-theme .prayer-reminder-countdown {
  color: var(--rasamala-readable-accent) !important;
}

/* Bottom running text uses the same chrome color as navbar/footer. */
.rasamala-theme .latest-content-ticker {
  background: var(--rasamala-chrome-bg) !important;
  background-color: var(--rasamala-chrome-bg) !important;
  border-color: var(--rasamala-chrome-border) !important;
  color: var(--rasamala-chrome-text) !important;
  box-shadow: var(--rasamala-shadow-lg) !important;
}

.rasamala-theme #search-wraper .latest-content-ticker {
  background: color-mix(in srgb, var(--theme-surface) 84%, transparent) !important;
  background-color: color-mix(in srgb, var(--theme-surface) 84%, transparent) !important;
  border-color: color-mix(in srgb, var(--theme-accent) 24%, var(--theme-muted) 12%, transparent) !important;
  color: var(--theme-on-surface) !important;
  box-shadow: none !important;
}

.rasamala-theme .latest-content-ticker-item,
.rasamala-theme .latest-content-ticker .latest-content-icon {
  color: var(--rasamala-chrome-text) !important;
}

.rasamala-theme #search-wraper .latest-content-ticker-item,
.rasamala-theme #search-wraper .latest-content-ticker .latest-content-icon {
  color: var(--theme-on-surface) !important;
}

.rasamala-theme .latest-content-ticker-item:hover,
.rasamala-theme .latest-content-ticker-item:focus,
.rasamala-theme #search-wraper .latest-content-ticker-item:hover,
.rasamala-theme #search-wraper .latest-content-ticker-item:focus {
  color: inherit !important;
  opacity: 0.86 !important;
}
#whatsappModal .whatsapp-modal-header .btn-close {
  position: relative !important;
  z-index: 2 !important;
  pointer-events: auto !important;
}

/* Skip to content link for accessibility */
.skip-to-content {
  position: absolute;
  top: 10px;
  left: 10px;
  background: var(--theme-accent-color);
  color: #fff;
  padding: 8px 16px;
  border-radius: 4px;
  z-index: 99999;
  text-decoration: none;
  font-weight: bold;
  transform: translateY(-120px);
  transition: transform 0.2s ease;
}

.skip-to-content:focus {
  transform: translateY(0);
  outline: 2px solid #fff;
  outline-offset: -4px;
}

/* Final custom-palette contrast guard.
   This stylesheet loads after the main OPAC CSS, so these semantic tokens win
   when generated/custom colors accidentally place similar text and surfaces. */
body.rasamala-theme {
  color: var(--theme-on-background) !important;
}

.rasamala-theme .rasamala-hero-section,
.rasamala-theme .rasamala-search-banner-section,
.rasamala-theme .rasamala-subpage-wrapper,
.rasamala-theme #slims-home,
.rasamala-theme .result-search,
.rasamala-theme .member-area {
  color: var(--theme-on-background) !important;
}

.rasamala-theme .text-muted,
.rasamala-theme .section-subtitle,
.rasamala-theme .subtitle-section,
.rasamala-theme .latest-content-text,
.rasamala-theme .help-block,
.rasamala-theme .form-text {
  color: var(--theme-muted-on-background) !important;
}

.rasamala-theme .card,
.rasamala-theme .bg-white,
.rasamala-theme .bg-light,
.rasamala-theme .bg-rasamala-light,
.rasamala-theme .rasamala-main-content-card,
.rasamala-theme .section-card,
.rasamala-theme .home-content-card,
.rasamala-theme .topic li,
.rasamala-theme .topic-card,
.rasamala-theme .biblio-list-card,
.rasamala-theme .biblio-simple-item,
.rasamala-theme .grid-item>.card,
.rasamala-theme .card.item.border-0,
.rasamala-theme .detail-record,
.rasamala-theme .detail-cover-wrapper,
.rasamala-theme .detail-notes-box,
.rasamala-theme .detail-side-availability,
.rasamala-theme .availability-panel,
.rasamala-theme .availability-summary-card,
.rasamala-theme .news-list-card,
.rasamala-theme .librarian-card,
.rasamala-theme .rasamala-librarian-card,
.rasamala-theme .visitor-info-card,
.rasamala-theme .desktop-sort-bar,
.rasamala-theme .filter-panel-card,
.rasamala-theme #search-filter,
.rasamala-theme .modal-content,
.rasamala-theme .dropdown-menu,
.rasamala-theme .select2-dropdown,
.rasamala-theme .bootstrap-select .dropdown-menu,
.rasamala-theme .choices__list--dropdown,
.rasamala-theme .choices__list[aria-expanded],
.rasamala-theme .selectize-dropdown,
.rasamala-theme .ts-dropdown,
.rasamala-theme .palette-switcher-panel {
  color: var(--theme-on-surface) !important;
}

.rasamala-theme .card h1,
.rasamala-theme .card h2,
.rasamala-theme .card h3,
.rasamala-theme .card h4,
.rasamala-theme .card h5,
.rasamala-theme .card h6,
.rasamala-theme .card-title,
.rasamala-theme .detail-record h1,
.rasamala-theme .detail-record h2,
.rasamala-theme .detail-record h3,
.rasamala-theme .detail-record h4,
.rasamala-theme .detail-record h5,
.rasamala-theme .detail-record h6,
.rasamala-theme .modal-content h1,
.rasamala-theme .modal-content h2,
.rasamala-theme .modal-content h3,
.rasamala-theme .modal-content h4,
.rasamala-theme .modal-content h5,
.rasamala-theme .modal-content h6,
.rasamala-theme .palette-switcher-header,
.rasamala-theme .palette-switcher-label,
.rasamala-theme .palette-switcher-section-option,
.rasamala-theme .topic li a,
.rasamala-theme .biblio-title a,
.rasamala-theme .news-list-title,
.rasamala-theme .detail-title {
  color: var(--theme-on-surface) !important;
}

.rasamala-theme .card .text-muted,
.rasamala-theme .card .small,
.rasamala-theme .card small,
.rasamala-theme .section-card .text-muted,
.rasamala-theme .section-card .small,
.rasamala-theme .home-content-card .text-muted,
.rasamala-theme .home-content-card .small,
.rasamala-theme .biblio-list-card .text-muted,
.rasamala-theme .biblio-list-card .small,
.rasamala-theme .biblio-simple-item .text-muted,
.rasamala-theme .biblio-simple-item .small,
.rasamala-theme .detail-record .text-muted,
.rasamala-theme .detail-record .small,
.rasamala-theme .modal-content .text-muted,
.rasamala-theme .modal-content .small,
.rasamala-theme .dropdown-menu .text-muted,
.rasamala-theme .filter-panel-card .text-muted,
.rasamala-theme .filter-panel-card .small,
.rasamala-theme .palette-switcher-help,
.rasamala-theme .palette-switcher-panel .text-muted,
.rasamala-theme .palette-switcher-panel .small {
  color: var(--theme-muted-on-surface) !important;
}

.rasamala-theme .form-control:not(#search-input):not(.footer-search-input),
.rasamala-theme .custom-select,
.rasamala-theme .form-select,
.rasamala-theme select,
.rasamala-theme textarea,
.rasamala-theme input,
.rasamala-theme .select2-search--dropdown .select2-search__field,
.rasamala-theme .selectize-input,
.rasamala-theme .ts-control,
.rasamala-theme .palette-switcher-select,
.rasamala-theme .palette-switcher-custom-input {
  color: var(--theme-on-surface) !important;
}

/* ==========================================================================
   UI/UX Enhancements (UX-01 - UX-10)
   ========================================================================== */

/* UX-01: Skeleton Shimmer Loading */
.skeleton-loader {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 1.25rem;
  padding: 1rem 0;
}

.skeleton-card {
  height: 280px;
  border-radius: 12px;
  background: linear-gradient(90deg, rgba(200,200,200,0.15) 25%, rgba(200,200,200,0.3) 50%, rgba(200,200,200,0.15) 75%);
  background-size: 200% 100%;
  animation: skeleton-shimmer 1.5s infinite ease-in-out;
}

@keyframes skeleton-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* UX-03: Mobile Bottom Nav Touch Ripple & Min Target */
.mobile-bottom-nav .nav-item {
  min-width: 48px;
  min-height: 48px;
  position: relative;
  overflow: hidden;
  border-radius: 8px;
}

.mobile-bottom-nav .nav-item:active::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 100%;
  height: 100%;
  background: rgba(var(--theme-accent-rgb), 0.25);
  border-radius: 50%;
  transform: translate(-50%, -50%) scale(1.2);
  animation: touch-ripple 0.3s ease-out;
}

@keyframes touch-ripple {
  from { opacity: 1; transform: translate(-50%, -50%) scale(0); }
  to { opacity: 0; transform: translate(-50%, -50%) scale(1.4); }
}

/* Fix search toolbar action clickability and modal triggering */
.search-toolbar-action {
  cursor: pointer !important;
  pointer-events: auto !important;
  position: relative !important;
  z-index: 10 !important;
}

.search-toolbar-action > * {
  pointer-events: none !important;
}

/* Guarantee Search Modals (Filter, Sort, View) sit 100% ON TOP of sticky header & toolbar */
body.modal-open .rasamala-sticky-action-wrapper,
body.modal-open .rasamala-sticky-toolbar,
body:has(.modal.show) .rasamala-sticky-action-wrapper,
body:has(.modal.show) .rasamala-sticky-toolbar {
  z-index: 1 !important;
}

.modal {
  z-index: 100000 !important;
}

.modal-backdrop,
.modal-backdrop.show {
  z-index: 99990 !important;
}

#mobileFilterModal,
#mobileSortModal,
#mobileViewModal,
#adv-modal,
#whatsappModal {
  z-index: 100000 !important;
}

#mobileFilterModal.show,
#mobileSortModal.show,
#mobileViewModal.show,
#adv-modal.show,
#whatsappModal.show {
  z-index: 100000 !important;
  display: block !important;
}

#mobileFilterModal .modal-dialog,
#mobileSortModal .modal-dialog,
#mobileViewModal .modal-dialog,
#adv-modal .modal-dialog,
#whatsappModal .modal-dialog,
#mobileFilterModal .modal-content,
#mobileSortModal .modal-content,
#mobileViewModal .modal-content,
#adv-modal .modal-content,
#whatsappModal .modal-content {
  z-index: 100001 !important;
  position: relative !important;
  pointer-events: auto !important;
}

#mobileFilterModal *,
#mobileSortModal *,
#mobileViewModal *,
#adv-modal *,
#whatsappModal * {
  pointer-events: auto !important;
}

@media (max-width: 767.98px) {
  #mobileFilterModal,
  #mobileSortModal,
  #mobileViewModal {
    padding-top: calc(16px + env(safe-area-inset-top, 0px)) !important;
    padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px)) !important;
  }

  #mobileFilterModal .modal-dialog,
  #mobileSortModal .modal-dialog,
  #mobileViewModal .modal-dialog {
    height: auto !important;
    max-height: calc(100dvh - 32px) !important;
    margin: auto !important;
  }
}

#mobileSortModal a,
#mobileSortModal .list-group-item,
#mobileViewModal a,
#mobileViewModal .list-group-item,
#mobileViewModal .search-view-option-item,
#mobileFilterModal button,
#mobileFilterModal input,
#mobileFilterModal label,
#mobileFilterModal a {
  cursor: pointer !important;
  pointer-events: auto !important;
}

#mobile-filter-container,
#mobile-filter-container *,
#search-filter,
#search-filter * {
  pointer-events: auto !important;
}

#mobile-filter-container label,
#mobile-filter-container .rasamala-filter-facet,
#mobile-filter-container .custom-control-label,
#mobile-filter-container .form-check-label,
#mobile-filter-container .badge,
#mobile-filter-container input[type="checkbox"],
#mobile-filter-container input[type="radio"] {
  cursor: pointer !important;
  user-select: none !important;
  -webkit-user-select: none !important;
}

#mobile-filter-container label.active,
#mobile-filter-container label.checked,
#mobile-filter-container label.is-selected,
#mobile-filter-container .rasamala-filter-facet.active,
#mobile-filter-container .rasamala-filter-facet.checked,
#mobile-filter-container .custom-control-input:checked ~ .custom-control-label,
#mobile-filter-container input:checked + label {
  background-color: var(--theme-accent, #6f5b43) !important;
  color: #ffffff !important;
  border-color: var(--theme-accent, #6f5b43) !important;
}

/* UX-04: Mobile Floating Capsule Pill Quick Actions (Icon Only - Bottom Left) */
@media (max-width: 767.98px) {
  .detail-floating-quick-actions {
    position: fixed;
    left: 14px !important;
    right: auto !important;
    bottom: calc(56px + 14px + env(safe-area-inset-bottom));
    z-index: 1045 !important;
    display: flex;
    align-items: center;
    gap: 6px;
    background: var(--theme-primary, rgba(var(--theme-accent-rgb, 37, 99, 235), 0.94)) !important;
    backdrop-filter: blur(20px) !important;
    -webkit-backdrop-filter: blur(20px) !important;
    padding: 6px 10px !important;
    border-radius: 50px !important;
    border: 1px solid rgba(255, 255, 255, 0.32) !important;
    box-shadow: 0 10px 28px -6px rgba(0, 0, 0, 0.35), 0 3px 8px rgba(0, 0, 0, 0.15) !important;
    transition: transform 0.15s cubic-bezier(0.16, 1, 0.3, 1) !important;
    pointer-events: auto !important;
  }

  /* Shift floating action pill above running text ticker when ticker is active */
  .detail-floating-quick-actions.has-ticker-above,
  body:has(.latest-content-ticker) .detail-floating-quick-actions {
    bottom: calc(56px + 36px + 14px + env(safe-area-inset-bottom)) !important;
  }

  body.mobile-bottom-nav-hidden .detail-floating-quick-actions {
    bottom: calc(14px + env(safe-area-inset-bottom)) !important;
  }

  body.mobile-bottom-nav-hidden .detail-floating-quick-actions.has-ticker-above {
    bottom: calc(36px + 14px + env(safe-area-inset-bottom)) !important;
  }

  .detail-floating-quick-actions .btn-floating-action-icon,
  .detail-floating-quick-actions button.btn-floating-action-icon,
  .detail-floating-quick-actions a.btn-floating-action-icon {
    width: 38px !important;
    height: 38px !important;
    min-width: 38px !important;
    min-height: 38px !important;
    border-radius: 50% !important;
    background: rgba(255, 255, 255, 0.22) !important;
    backdrop-filter: blur(8px) !important;
    -webkit-backdrop-filter: blur(8px) !important;
    border: 1px solid rgba(255, 255, 255, 0.38) !important;
    color: #ffffff !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 15px !important;
    text-decoration: none !important;
    cursor: pointer !important;
    transition: background-color 0.2s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.2s cubic-bezier(0.16, 1, 0.3, 1), color 0.2s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.2s cubic-bezier(0.16, 1, 0.3, 1), transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.2s ease !important;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12) !important;
    padding: 0 !important;
    margin: 0 !important;
    touch-action: manipulation !important;
  }

  .detail-floating-quick-actions .btn-floating-action-icon i,
  .detail-floating-quick-actions button.btn-floating-action-icon i,
  .detail-floating-quick-actions a.btn-floating-action-icon i {
    color: #ffffff !important;
    font-size: 15px !important;
  }

  .detail-floating-quick-actions .btn-floating-action-icon:hover,
  .detail-floating-quick-actions .btn-floating-action-icon:focus,
  .detail-floating-quick-actions .btn-floating-action-icon:active {
    background: rgba(255, 255, 255, 0.42) !important;
    border-color: rgba(255, 255, 255, 0.7) !important;
    color: #ffffff !important;
    transform: translateY(-2px) scale(1.1) !important;
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3) !important;
  }

  .detail-floating-quick-actions .btn-floating-action-icon:hover i,
  .detail-floating-quick-actions .btn-floating-action-icon:focus i,
  .detail-floating-quick-actions .btn-floating-action-icon:active i {
    color: #ffffff !important;
  }

  /* Dark Mode Styling: match theme-primary accent color of right-side buttons */
  body.rasamala-dark .detail-floating-quick-actions,
  html.rasamala-dark .detail-floating-quick-actions {
    background: var(--theme-primary, rgba(var(--theme-accent-rgb, 37, 99, 235), 0.95)) !important;
    border: 1px solid rgba(255, 255, 255, 0.3) !important;
    box-shadow: 0 10px 28px -6px rgba(0, 0, 0, 0.5) !important;
  }

  body.rasamala-dark .detail-floating-quick-actions .btn-floating-action-icon,
  html.rasamala-dark .detail-floating-quick-actions .btn-floating-action-icon,
  body.rasamala-dark .detail-floating-quick-actions button.btn-floating-action-icon,
  html.rasamala-dark .detail-floating-quick-actions button.btn-floating-action-icon,
  body.rasamala-dark .detail-floating-quick-actions a.btn-floating-action-icon,
  html.rasamala-dark .detail-floating-quick-actions a.btn-floating-action-icon {
    background: rgba(255, 255, 255, 0.22) !important;
    border: 1px solid rgba(255, 255, 255, 0.38) !important;
    color: #ffffff !important;
  }

  body.rasamala-dark .detail-floating-quick-actions .btn-floating-action-icon i,
  html.rasamala-dark .detail-floating-quick-actions .btn-floating-action-icon i,
  body.rasamala-dark .detail-floating-quick-actions button.btn-floating-action-icon i,
  html.rasamala-dark .detail-floating-quick-actions button.btn-floating-action-icon i,
  body.rasamala-dark .detail-floating-quick-actions a.btn-floating-action-icon i,
  html.rasamala-dark .detail-floating-quick-actions a.btn-floating-action-icon i {
    color: #ffffff !important;
  }

  body.rasamala-dark .detail-floating-quick-actions .btn-floating-action-icon:hover,
  html.rasamala-dark .detail-floating-quick-actions .btn-floating-action-icon:hover {
    background: rgba(255, 255, 255, 0.42) !important;
    border-color: rgba(255, 255, 255, 0.7) !important;
    color: #ffffff !important;
  }

  .detail-floating-quick-actions .btn-floating-action-icon.is-bookmarked {
    background: #10b981 !important;
    border-color: #10b981 !important;
    box-shadow: 0 3px 10px rgba(16, 185, 129, 0.45) !important;
  }

  .detail-floating-quick-actions .btn-floating-action-icon.is-bookmarked i {
    color: #ffffff !important;
  }
}

/* UX-06: Smooth Page Transition */
.rasamala-main {
  animation: pageFadeInUp 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes pageFadeInUp {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* UX-08: Biblio Availability Badge Cursor & Hover Effect */
.biblio-avail-badge {
  cursor: pointer !important;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.biblio-avail-badge:hover {
  transform: translateY(-1px) scale(1.05);
}

/* UX-09: Detail Page Scroll Reading Progress Bar */
.reading-progress-bar {
  position: fixed;
  top: 0;
  left: 0;
  width: 0%;
  height: 3px;
  background: var(--rasamala-accent, #c8a24a);
  z-index: 99999;
  transition: width 0.1s linear;
}

/* Bulletproof Flexbox Sticky Footer Layout */
html {
  height: 100%;
}

body {
  min-height: 100vh !important;
  display: flex !important;
  flex-direction: column !important;
  margin: 0 !important;
}

/* Main Content Layer - Expands to fill available vertical viewport height */
main.rasamala-main,
.rasamala-main {
  flex: 1 0 auto !important;
  display: flex !important;
  flex-direction: column !important;
  width: 100% !important;
  position: relative;
  z-index: 2;
  overflow: visible;
}

/* Inner view wrappers expand within main */
.rasamala-subpage-wrapper,
.result-search,
#slims-home,
#main-content > div {
  flex: 1 0 auto !important;
  width: 100% !important;
}

/* Footer Layer - Always locked to bottom of page/viewport */
footer {
  margin-top: auto !important;
  flex-shrink: 0 !important;
  position: relative;
  z-index: 10 !important;
}

/* The desktop ticker is fixed to the viewport bottom. Reserve its height
   inside the footer so the copyright and "Powered by SLiMS" row is never
   hidden underneath it when the page is scrolled to the bottom. */
@media (min-width: 992px) {
  body:has(> .latest-content-ticker) footer {
    padding-bottom: calc(36px + env(safe-area-inset-bottom, 0px)) !important;
  }
}

/* Search Header Section Layer (Level 1050) - Must be higher than sticky toolbar (100) and footer (10) */
#section1 {
  position: relative;
  z-index: 1050 !important;
  overflow: visible !important;
}

#search-wraper {
  position: relative;
  z-index: 1060 !important;
  overflow: visible !important;
}

/* Live Search Suggestion Auto-complete Dropdown (Level 1070) */
.search-suggestion-dropdown {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  right: 0;
  z-index: 1070 !important;
  background: var(--theme-surface, #ffffff);
  border: 1px solid var(--theme-border, rgba(0, 0, 0, 0.08));
  border-radius: 16px;
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.18), 0 6px 16px rgba(0, 0, 0, 0.08);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  overflow: hidden;
  animation: rasamalaSlideDown 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes rasamalaSlideDown {
  from { opacity: 0; transform: translateY(-8px) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

.search-suggestion-group-title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--theme-muted, #64748b);
  padding: 10px 16px 4px 16px;
  margin: 0;
}

.search-suggestion-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 16px;
  color: var(--theme-text, #1e293b);
  text-decoration: none !important;
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease;
  border-radius: 10px;
  margin: 2px 8px;
}

.search-suggestion-item:hover,
.search-suggestion-item.is-selected {
  background-color: rgba(var(--theme-accent-rgb, 37, 99, 235), 0.08);
  color: var(--theme-accent, #2563eb);
}

.search-suggestion-icon {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  background: rgba(var(--theme-accent-rgb, 37, 99, 235), 0.1);
  color: var(--theme-accent, #2563eb);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  flex-shrink: 0;
}

.search-suggestion-content {
  flex-grow: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.search-suggestion-text {
  font-size: 14px;
  font-weight: 500;
  line-height: 1.3;
}

.search-suggestion-meta {
  font-size: 11px;
  color: var(--theme-muted, #64748b);
}

body.rasamala-dark .search-suggestion-dropdown {
  background: var(--theme-surface, #1e293b);
  border-color: rgba(255, 255, 255, 0.1);
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.5);
}

body.rasamala-dark .search-suggestion-item:hover,
body.rasamala-dark .search-suggestion-item.is-selected {
  background-color: rgba(255, 255, 255, 0.08);
  color: #60a5fa;
}

/* PERF-04: Font-Awesome Font-Display Swap */
@font-face {
  font-family: 'Font Awesome 5 Free';
  font-display: swap;
}
@font-face {
  font-family: 'Font Awesome 5 Brands';
  font-display: swap;
}

/* UX-07: Mobile Collapsible Footer Accordion */
@media (max-width: 767.98px) {
  .footer-section-title[data-bs-toggle="collapse"] {
    cursor: pointer;
    user-select: none;
    padding: 8px 0;
    margin-bottom: 4px !important;
  }

  .footer-section-title[data-bs-toggle="collapse"] .transition-icon {
    transition: transform 0.25s ease;
  }

  .footer-section-title[data-bs-toggle="collapse"].collapsed .transition-icon {
    transform: rotate(-90deg);
  }
}

/* Clean & Compact Theme Viewer UI Refinements */
.palette-switcher-panel {
  width: min(440px, calc(100vw - 32px)) !important;
  padding: 14px 14px 18px 14px !important;
}

.palette-switcher-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 8px 10px !important;
  margin-bottom: 10px !important;
}

.palette-switcher-select {
  font-size: 12px !important;
  padding: 4px 8px !important;
  height: 32px !important;
  border-radius: 8px !important;
  background-color: var(--theme-surface) !important;
  color: var(--theme-text) !important;
  border: 1px solid color-mix(in srgb, var(--theme-muted) 24%, transparent) !important;
}

.palette-switcher-label {
  font-size: 11px !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.04em !important;
  color: var(--theme-muted) !important;
  margin-bottom: 3px !important;
}

/* Theme Viewer workspace controls: keep builder remove buttons visible and
   give administrators a wider or fullscreen editing surface when needed. */
.palette-switcher-panel {
  min-width: 320px !important;
  width: min(680px, calc(100vw - 32px)) !important;
  max-width: calc(100vw - 24px) !important;
  resize: both !important;
  overflow: auto !important;
}
.palette-switcher-panel.is-fullscreen {
  top: 12px !important;
  right: 12px !important;
  bottom: 12px !important;
  left: 12px !important;
  width: auto !important;
  max-width: none !important;
  max-height: none !important;
  min-height: 0 !important;
  border-radius: 16px !important;
  resize: none !important;
}
.palette-switcher-panel-action {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 30px !important;
  height: 30px !important;
  min-height: 30px !important;
  padding: 0 !important;
  border: 1px solid color-mix(in srgb, var(--theme-muted) 24%, transparent) !important;
  border-radius: 8px !important;
  background: color-mix(in srgb, var(--theme-surface) 86%, var(--theme-background) 14%) !important;
  color: var(--theme-on-surface) !important;
  cursor: pointer !important;
}
.palette-switcher-panel-action:hover,
.palette-switcher-panel-action:focus {
  border-color: color-mix(in srgb, var(--theme-accent) 52%, transparent) !important;
  background: color-mix(in srgb, var(--theme-accent) 14%, var(--theme-surface)) !important;
  outline: none !important;
}
.palette-switcher-panel-action i { font-size: 12px !important; color: var(--rasamala-readable-accent) !important; }
.palette-switcher-builder-row { min-width: 0 !important; overflow: visible !important; }
.palette-switcher-builder-row > * { min-width: 0 !important; }
.palette-switcher-builder-icon-control {
  position: relative !important;
  display: block !important;
  width: 48px !important;
  min-width: 48px !important;
}
.palette-switcher-builder-icon-value {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
  padding: 0 !important;
}
.palette-switcher-builder-icon-trigger {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 3px !important;
  width: 48px !important;
  height: 32px !important;
  min-width: 48px !important;
  padding: 4px !important;
  border: 1px solid color-mix(in srgb, var(--theme-muted) 28%, transparent) !important;
  border-radius: 8px !important;
  background: var(--theme-surface) !important;
  color: var(--theme-text) !important;
  font-size: 14px !important;
  cursor: pointer !important;
}
.palette-switcher-builder-icon-trigger::after {
  content: "\f078" !important;
  flex: 0 0 auto !important;
  font-family: "Font Awesome 5 Free" !important;
  font-size: 8px !important;
  font-weight: 900 !important;
  opacity: .6 !important;
}
.palette-switcher-builder-icon-trigger:hover,
.palette-switcher-builder-icon-trigger:focus {
  border-color: var(--theme-accent) !important;
  outline: none !important;
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--theme-accent) 22%, transparent) !important;
}
.palette-switcher-builder-icon-trigger > i {
  flex: 0 0 auto !important;
  color: var(--theme-accent) !important;
  font-size: 14px !important;
}
.palette-switcher-builder-icon-trigger > span {
  display: none !important;
}
.palette-switcher-builder-icon-menu {
  position: absolute !important;
  top: calc(100% + 4px) !important;
  right: 0 !important;
  width: 200px !important;
  max-height: 220px !important;
  z-index: 100 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 2px !important;
  padding: 6px !important;
  overflow-y: auto !important;
  border: 1px solid color-mix(in srgb, var(--theme-muted) 24%, transparent) !important;
  border-radius: 8px !important;
  background: var(--theme-surface) !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22) !important;
}
.palette-switcher-builder-icon-menu[hidden] { display: none !important; }
.palette-switcher-builder-icon-option {
  display: flex !important;
  align-items: center !important;
  gap: 6px !important;
  min-width: 0 !important;
  min-height: 30px !important;
  padding: 5px 6px !important;
  border: 1px solid transparent !important;
  border-radius: 6px !important;
  background: transparent !important;
  color: var(--theme-text) !important;
  font-size: 10px !important;
  text-align: left !important;
  cursor: pointer !important;
}
.palette-switcher-builder-icon-option:hover,
.palette-switcher-builder-icon-option:focus {
  border-color: color-mix(in srgb, var(--theme-accent) 32%, transparent) !important;
  background: color-mix(in srgb, var(--theme-accent) 12%, var(--theme-surface)) !important;
  outline: none !important;
}
.palette-switcher-builder-icon-option > i { width: 18px !important; flex: 0 0 18px !important; color: var(--theme-accent) !important; text-align: center !important; }
.palette-switcher-builder-icon-option > span { min-width: 0 !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }
.palette-switcher-builder-icon-preview { display: none !important; }
.palette-switcher-builder-icon-control .palette-switcher-select { min-width: 0 !important; }
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 30px !important;
  height: 30px !important;
  border: 1px solid color-mix(in srgb, var(--theme-accent) 34%, transparent) !important;
  border-radius: 7px !important;
  background: color-mix(in srgb, var(--theme-accent) 10%, var(--theme-surface)) !important;
  color: var(--theme-accent) !important;
  font-size: 14px !important;
}
.palette-switcher-builder-icon-control .palette-switcher-select { min-width: 0 !important; }
.palette-switcher-builder-remove {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 32px !important;
  min-width: 32px !important;
  height: 32px !important;
  min-height: 32px !important;
  padding: 0 !important;
  visibility: visible !important;
  opacity: 1 !important;
  z-index: 2 !important;
  color: #dc3545 !important;
  border-color: color-mix(in srgb, #dc3545 34%, transparent) !important;
}
.palette-switcher-builder-remove:hover,
.palette-switcher-builder-remove:focus {
  color: #ffffff !important;
  background: #dc3545 !important;
  border-color: #dc3545 !important;
}
.palette-switcher-builder-remove i { color: inherit !important; }

@media (max-width: 991.98px) {
  .palette-switcher-panel { resize: none !important; min-width: 0 !important; }
  .palette-switcher-panel { width: auto !important; }
  .palette-switcher-panel.is-fullscreen {
    top: 6px !important;
    right: 6px !important;
    bottom: 6px !important;
    left: 6px !important;
  }
}

/* ================================================================
   Mobile viewport/safe-area hardening

   Some mobile browsers expose a visual viewport that is narrower than
   the layout viewport (especially when the browser chrome is visible).
   Keep the navigation and floating controls anchored to the visual
   viewport and prevent their hit areas from being pushed outside it.
   ================================================================ */
@media (max-width: 767.98px) {
  :root {
    --rasamala-mobile-nav-height: 56px;
    --rasamala-mobile-edge: max(12px, env(safe-area-inset-right, 0px));
  }

  html,
  body {
    max-width: 100%;
    overflow-x: hidden;
    overflow-x: clip;
  }

  body.mobile-bottom-nav-enabled .mobile-bottom-nav:not([hidden]) {
    position: fixed !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    height: calc(var(--rasamala-mobile-nav-height) + env(safe-area-inset-bottom, 0px)) !important;
    min-height: calc(var(--rasamala-mobile-nav-height) + env(safe-area-inset-bottom, 0px)) !important;
    padding: 4px 8px env(safe-area-inset-bottom, 0px) !important;
    box-sizing: border-box !important;
    display: flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    align-items: center !important;
    justify-content: space-around !important;
    z-index: var(--z-bottom-nav, 9999) !important;
  }

  body.mobile-bottom-nav-enabled .mobile-bottom-nav .nav-item {
    flex: 1 1 0 !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: 112px !important;
    min-height: 48px !important;
    padding: 3px 4px !important;
    line-height: 1.1 !important;
    overflow: hidden !important;
  }

  body.mobile-bottom-nav-enabled .mobile-bottom-nav .nav-item > span {
    display: block !important;
    width: 100% !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    text-align: center !important;
  }

  /* The page needs a real reserve below its content so the final card/link
     remains reachable above the fixed bar, including devices with a home
     indicator. */
  body.mobile-bottom-nav-enabled {
    padding-bottom: calc(var(--rasamala-mobile-nav-height) + 16px + env(safe-area-inset-bottom, 0px)) !important;
  }

  /* Keep every floating action fully inside the visual viewport.  The
     previous shared right value let the WhatsApp target be clipped when
     another action was rendered alongside it by Theme Viewer. */
  .btn-floating-info,
  .btn-back-to-top,
  .btn-color-mode-toggle,
  .btn-palette-switcher,
  .btn-floating-whatsapp {
    box-sizing: border-box !important;
    width: 44px !important;
    min-width: 44px !important;
    height: 44px !important;
    min-height: 44px !important;
    right: var(--rasamala-mobile-edge) !important;
    max-width: calc(100vw - 24px) !important;
  }

  .btn-floating-whatsapp,
  .btn-floating-info,
  .btn-back-to-top,
  .btn-color-mode-toggle,
  .btn-palette-switcher {
    bottom: calc(var(--rasamala-mobile-nav-height) + 20px + env(safe-area-inset-bottom, 0px)) !important;
  }

  /* Horizontal offsets are applied only to controls that are actually
     visible. This avoids reserving an invisible button's slot and keeps
     multiple actions within the viewport. */
  .btn-palette-switcher:not([hidden]) {
    right: calc(var(--rasamala-mobile-edge) + 52px) !important;
  }

  .btn-color-mode-toggle:not([hidden]) {
    right: calc(var(--rasamala-mobile-edge) + 104px) !important;
  }

  body:has(.btn-floating-whatsapp:not([hidden])) .btn-floating-info:not([hidden]) {
    right: calc(var(--rasamala-mobile-edge) + 52px) !important;
  }

  body:has(.btn-floating-info:not([hidden])) .btn-floating-whatsapp:not([hidden]) {
    right: var(--rasamala-mobile-edge) !important;
  }

  .btn-floating-info.has-latest-content-ticker,
  .btn-color-mode-toggle.has-latest-content-ticker,
  .btn-palette-switcher.has-latest-content-ticker,
  .btn-back-to-top.has-latest-content-ticker,
  .btn-floating-whatsapp.has-latest-content-ticker {
    bottom: calc(var(--rasamala-mobile-nav-height) + 56px + env(safe-area-inset-bottom, 0px)) !important;
  }

  /* The nested Bootstrap container/row can retain desktop negative gutters
     on very narrow screens. Reset them so the search card and its controls
     always fit between the safe horizontal edges. */
  #search-wraper,
  #search-wraper > .container,
  #search-wraper > .container > .row,
  #search-wraper > .container > .row > [class*="col-"] {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
  }

  #search-wraper > .container {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }

  #search-wraper > .container > .row {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  #search-wraper > .container > .row > [class*="col-"] {
    flex: 0 0 100% !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  #search-wraper .card,
  #search-wraper .card-body,
  #search-wraper #search-form {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
  }

  #search-wraper #search-form #search-input {
    min-width: 0 !important;
    width: auto !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }

  #search-wraper #search-form > .d-flex.align-items-center.ms-2 {
    flex: 0 0 auto !important;
    margin-left: 4px !important;
    gap: 4px !important;
  }

  #search-wraper #search-form a[data-bs-target="#adv-modal"],
  #search-wraper #search-form button[type="submit"],
  #search-wraper[class*="search-size-"] #search-form button[type="submit"] {
    flex: 0 0 auto;
    width: auto;
    height: auto;
    background: transparent;
    background-color: transparent;
    border: none;
    box-shadow: none;
  }
}

@media (min-width: 768px) and (max-width: 991.98px) {
  /* Tablet widths should also keep the fixed bar and actions inside the
     viewport, while retaining the roomier desktop-like search controls. */
  body.mobile-bottom-nav-enabled .mobile-bottom-nav:not([hidden]) {
    position: fixed !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    z-index: var(--z-bottom-nav, 9999) !important;
  }

  body.mobile-bottom-nav-enabled {
    padding-bottom: calc(76px + env(safe-area-inset-bottom, 0px)) !important;
  }

  .btn-floating-whatsapp,
  .btn-floating-info,
  .btn-back-to-top,
  .btn-color-mode-toggle,
  .btn-palette-switcher {
    right: max(16px, env(safe-area-inset-right, 0px)) !important;
  }
}

/* Keep the fixed running text aligned with the actual mobile navigation
   state at every mobile/tablet width, including Theme Viewer live changes. */
@media (max-width: 991.98px) {
  body.mobile-bottom-nav-enabled .latest-content-ticker {
    bottom: calc(var(--rasamala-mobile-nav-height, 56px) + env(safe-area-inset-bottom, 0px)) !important;
  }

  body.mobile-bottom-nav-hidden .latest-content-ticker {
    bottom: env(safe-area-inset-bottom, 0px) !important;
  }
}

/* Keep the HTML hidden attribute authoritative when the Theme Viewer or
   server setting intentionally disables the mobile bar. */
.mobile-bottom-nav[hidden] {
  display: none !important;
  visibility: hidden !important;
}

.btn-floating-info[hidden],
.btn-floating-whatsapp[hidden],
.btn-back-to-top[hidden],
.btn-color-mode-toggle[hidden],
.btn-palette-switcher[hidden] {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* Final contrast guard for hero titles. Some background variants have a
   more-specific legacy rule that resets the title shadow; keep the readable
   surface treatment authoritative for gradients, animations, and images. */
.rasamala-search-banner-section .hero-search-heading h1 {
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: var(--theme-on-surface) !important;
  text-shadow: 0 2px 4px rgba(255, 255, 255, 0.9) !important;
}

/* Dark mode uses a black keyline/drop shadow around the light title. */
body.rasamala-dark .hero-search-heading h1,
body.rasamala-dark .rasamala-search-banner-section .hero-search-heading h1 {
  text-shadow: 0 2px 5px rgba(0, 0, 0, 0.86) !important;
}

/* The map/contact column should blend into the page without a card outline.
   Keep the map frame itself unchanged. */
#slims-home .home-map-contact {
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
