/**
 * RMRS Utility Classes
 * Buttons, Navigation, Form Elements with all states
 * Compatible with Elementor v3 and v4
 *
 * @package RMRS
 * @version 1.0.0
 */

/* ===========================================
   BUTTON CLASSES - All States Defined
   =========================================== */

/* Primary Button - Normal State */
.rmrs-btn-primary {
  background: var(--rmrs-color-primary, var(--e-global-color-primary, #003dfa));
  color: var(--rmrs-color-white, #ffffff);
  padding: 12px 24px;
  border-radius: var(--rmrs-border-radius-md, 8px);
  border: 2px solid transparent;
  font-family: var(--rmrs-font-family, "Montserrat", sans-serif);
  font-weight: var(--rmrs-font-weight-medium, 500);
  font-size: 16px;
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  transition: all var(--rmrs-transition-slow, 0.3s ease);
  line-height: 1.4;
}

/* Primary Button - Hover State */
.rmrs-btn-primary:hover {
  background: var(--rmrs-color-secondary, var(--e-global-color-secondary, #0080ff));
  border-color: var(--rmrs-color-secondary, #0080ff);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 61, 250, 0.3);
  color: var(--rmrs-color-white, #ffffff);
  text-decoration: none;
}

/* Primary Button - Focus State (Accessibility) */
.rmrs-btn-primary:focus {
  outline: none;
  box-shadow: var(--rmrs-shadow-focus, 0 0 0 3px rgba(0, 61, 250, 0.4));
  background: var(--rmrs-color-secondary, #0080ff);
}

/* Primary Button - Active State (Click) */
.rmrs-btn-primary:active {
  transform: translateY(0);
  box-shadow: 0 2px 6px rgba(0, 61, 250, 0.2);
  background: var(--rmrs-color-primary, #003dfa);
}

/* Primary Button - Disabled State */
.rmrs-btn-primary:disabled,
.rmrs-btn-primary.is-disabled {
  background: #cccccc;
  color: #666666;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
  pointer-events: none;
}


/* Secondary Button (Outline) - Normal State */
.rmrs-btn-secondary {
  background: transparent;
  border: 2px solid var(--rmrs-color-primary, var(--e-global-color-primary, #003dfa));
  color: var(--rmrs-color-primary, var(--e-global-color-primary, #003dfa));
  padding: 12px 24px;
  border-radius: var(--rmrs-border-radius-md, 8px);
  font-family: var(--rmrs-font-family, "Montserrat", sans-serif);
  font-weight: var(--rmrs-font-weight-medium, 500);
  font-size: 16px;
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  transition: all var(--rmrs-transition-slow, 0.3s ease);
  line-height: 1.4;
}

/* Secondary Button - Hover State */
.rmrs-btn-secondary:hover {
  background: var(--rmrs-color-primary, var(--e-global-color-primary, #003dfa));
  color: var(--rmrs-color-white, #ffffff);
  transform: translateY(-2px);
  text-decoration: none;
}

/* Secondary Button - Focus State */
.rmrs-btn-secondary:focus {
  outline: none;
  box-shadow: var(--rmrs-shadow-focus, 0 0 0 3px rgba(0, 61, 250, 0.4));
}

/* Secondary Button - Active State */
.rmrs-btn-secondary:active {
  transform: translateY(0);
  background: var(--rmrs-color-primary, #003dfa);
  color: var(--rmrs-color-white, #ffffff);
}

/* Secondary Button - Disabled State */
.rmrs-btn-secondary:disabled,
.rmrs-btn-secondary.is-disabled {
  border-color: #cccccc;
  color: #666666;
  cursor: not-allowed;
  transform: none;
  pointer-events: none;
}


/* CTA Button (Orange) - Normal State */
.rmrs-btn-cta {
  background: var(--rmrs-color-cta, #ff6f13);
  color: var(--rmrs-color-white, #ffffff);
  padding: 14px 28px;
  border-radius: var(--rmrs-border-radius-md, 8px);
  border: 2px solid transparent;
  font-family: var(--rmrs-font-family, "Montserrat", sans-serif);
  font-weight: var(--rmrs-font-weight-medium, 500);
  font-size: 16px;
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  transition: all var(--rmrs-transition-slow, 0.3s ease);
  line-height: 1.4;
}

/* CTA Button - Hover State */
.rmrs-btn-cta:hover {
  background: var(--rmrs-color-cta-dark, #e55d00);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(255, 111, 19, 0.4);
  color: var(--rmrs-color-white, #ffffff);
  text-decoration: none;
}

/* CTA Button - Focus State */
.rmrs-btn-cta:focus {
  outline: none;
  box-shadow: var(--rmrs-shadow-focus-cta, 0 0 0 3px rgba(255, 111, 19, 0.4));
}

/* CTA Button - Active State */
.rmrs-btn-cta:active {
  transform: translateY(0);
  background: #cc4d00;
}

/* CTA Button - Disabled State */
.rmrs-btn-cta:disabled,
.rmrs-btn-cta.is-disabled {
  background: #cccccc;
  color: #666666;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
  pointer-events: none;
}


/* Green/Success Button - Normal State */
.rmrs-btn-success {
  background: var(--rmrs-color-accent, #45ba47);
  color: var(--rmrs-color-white, #ffffff);
  padding: 12px 24px;
  border-radius: var(--rmrs-border-radius-md, 8px);
  border: 2px solid transparent;
  font-family: var(--rmrs-font-family, "Montserrat", sans-serif);
  font-weight: var(--rmrs-font-weight-medium, 500);
  font-size: 16px;
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  transition: all var(--rmrs-transition-slow, 0.3s ease);
  line-height: 1.4;
}

/* Green Button - Hover State */
.rmrs-btn-success:hover {
  background: #3aa13c;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(69, 186, 71, 0.4);
  color: var(--rmrs-color-white, #ffffff);
  text-decoration: none;
}

/* Green Button - Focus State */
.rmrs-btn-success:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(69, 186, 71, 0.4);
}


/* Button Sizes */
.rmrs-btn-sm {
  padding: 8px 16px;
  font-size: 14px;
}

.rmrs-btn-lg {
  padding: 16px 32px;
  font-size: 18px;
}

.rmrs-btn-full {
  width: 100%;
}


/* ===========================================
   NAVIGATION LINK CLASSES - All States
   =========================================== */

/* Nav Link - Normal State */
.rmrs-nav-link {
  color: var(--rmrs-color-text, #1a1a1a);
  font-family: var(--rmrs-font-family, "Montserrat", sans-serif);
  font-weight: var(--rmrs-font-weight-regular, 400);
  font-size: 16px;
  text-decoration: none;
  padding: 8px 16px;
  position: relative;
  transition: color var(--rmrs-transition-base, 0.2s ease);
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

/* Nav Link - Hover State (Brand Guidelines p.12) */
.rmrs-nav-link:hover {
  color: var(--rmrs-color-primary, #003dfa);
}

/* Nav Link - Focus State */
.rmrs-nav-link:focus {
  outline: none;
  color: var(--rmrs-color-primary, #003dfa);
  box-shadow: 0 0 0 2px rgba(0, 61, 250, 0.3);
  border-radius: var(--rmrs-border-radius-sm, 4px);
}

/* Nav Link - Active/Current State */
.rmrs-nav-link:active,
.rmrs-nav-link.is-active,
.rmrs-nav-link[aria-current="page"] {
  color: var(--rmrs-color-primary, #003dfa);
  font-weight: var(--rmrs-font-weight-medium, 500);
}

/* Nav Link with Dropdown Arrow */
.rmrs-nav-link--dropdown::after {
  content: "\25BE"; /* Down arrow */
  margin-left: 4px;
  transition: transform var(--rmrs-transition-base, 0.2s ease);
  font-size: 0.75em;
}

.rmrs-nav-link--dropdown:hover::after,
.rmrs-nav-link--dropdown[aria-expanded="true"]::after {
  transform: rotate(180deg);
}


/* ===========================================
   FORM INPUT CLASSES - All States
   =========================================== */

/* Input Field - Normal State */
.rmrs-input {
  width: 100%;
  padding: 12px 16px;
  border: 2px solid #e0e0e0;
  border-radius: var(--rmrs-border-radius-md, 8px);
  font-family: var(--rmrs-font-family, "Montserrat", sans-serif);
  font-size: 16px;
  color: var(--rmrs-color-text, #1a1a1a);
  background: var(--rmrs-color-white, #ffffff);
  transition: all var(--rmrs-transition-base, 0.2s ease);
}

/* Input - Placeholder */
.rmrs-input::placeholder {
  color: #999999;
}

/* Input - Hover State */
.rmrs-input:hover {
  border-color: #b0b0b0;
}

/* Input - Focus State */
.rmrs-input:focus {
  outline: none;
  border-color: var(--rmrs-color-primary, #003dfa);
  box-shadow: 0 0 0 3px rgba(0, 61, 250, 0.15);
}

/* Input - Valid State */
.rmrs-input:valid:not(:placeholder-shown) {
  border-color: var(--rmrs-color-accent, #45ba47);
}

/* Input - Invalid/Error State */
.rmrs-input:invalid:not(:placeholder-shown),
.rmrs-input.is-error {
  border-color: var(--rmrs-color-error, #dc3545);
  box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.15);
}

/* Input - Disabled State */
.rmrs-input:disabled {
  background: #f5f5f5;
  color: #999999;
  cursor: not-allowed;
}


/* Textarea */
.rmrs-textarea {
  min-height: 120px;
  resize: vertical;
}


/* Select */
.rmrs-select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23333' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 16px center;
  padding-right: 40px;
}


/* ===========================================
   TAB CLASSES - All States (Including Selected)
   =========================================== */

/* Tab - Normal State */
.rmrs-tab {
  padding: 12px 24px;
  background: transparent;
  border: none;
  border-bottom: 3px solid transparent;
  font-family: var(--rmrs-font-family, "Montserrat", sans-serif);
  font-weight: var(--rmrs-font-weight-regular, 400);
  font-size: 16px;
  color: var(--rmrs-color-text, #1a1a1a);
  cursor: pointer;
  transition: all var(--rmrs-transition-base, 0.2s ease);
}

/* Tab - Hover State */
.rmrs-tab:hover {
  color: var(--rmrs-color-primary, #003dfa);
  border-bottom-color: rgba(0, 61, 250, 0.3);
}

/* Tab - Focus State */
.rmrs-tab:focus {
  outline: none;
  box-shadow: inset 0 0 0 2px rgba(0, 61, 250, 0.3);
}

/* Tab - Active State (during click) */
.rmrs-tab:active {
  color: var(--rmrs-color-primary, #003dfa);
}

/* Tab - Selected State (Elementor's exclusive state for tabs) */
.rmrs-tab.is-selected,
.rmrs-tab[aria-selected="true"] {
  color: var(--rmrs-color-primary, #003dfa);
  font-weight: var(--rmrs-font-weight-medium, 500);
  border-bottom-color: var(--rmrs-color-primary, #003dfa);
}


/* ===========================================
   ACCORDION/FAQ CLASSES - All States
   =========================================== */

/* Accordion Trigger - Normal State */
.rmrs-accordion__trigger {
  width: 100%;
  padding: 16px 20px;
  background: var(--rmrs-color-background, #f7f7f0);
  border: none;
  border-radius: var(--rmrs-border-radius-md, 8px);
  font-family: var(--rmrs-font-family, "Montserrat", sans-serif);
  font-weight: var(--rmrs-font-weight-medium, 500);
  font-size: 18px;
  color: var(--rmrs-color-text, #1a1a1a);
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  text-align: left;
  transition: all var(--rmrs-transition-base, 0.2s ease);
}

/* Accordion Trigger - Hover State */
.rmrs-accordion__trigger:hover {
  background: #eaeae5;
  color: var(--rmrs-color-primary, #003dfa);
}

/* Accordion Trigger - Focus State */
.rmrs-accordion__trigger:focus {
  outline: none;
  box-shadow: var(--rmrs-shadow-focus, 0 0 0 3px rgba(0, 61, 250, 0.3));
}

/* Accordion Trigger - Expanded/Active State */
.rmrs-accordion__trigger[aria-expanded="true"] {
  background: var(--rmrs-color-primary, #003dfa);
  color: var(--rmrs-color-white, #ffffff);
  border-radius: var(--rmrs-border-radius-md, 8px) var(--rmrs-border-radius-md, 8px) 0 0;
}

/* Accordion Icon Rotation */
.rmrs-accordion__trigger .rmrs-accordion__icon {
  transition: transform var(--rmrs-transition-slow, 0.3s ease);
  flex-shrink: 0;
}

.rmrs-accordion__trigger[aria-expanded="true"] .rmrs-accordion__icon {
  transform: rotate(180deg);
}

/* Accordion Content */
.rmrs-accordion__content {
  padding: 20px;
  background: var(--rmrs-color-white, #ffffff);
  border: 2px solid var(--rmrs-color-background, #f7f7f0);
  border-top: none;
  border-radius: 0 0 var(--rmrs-border-radius-md, 8px) var(--rmrs-border-radius-md, 8px);
}


/* ===========================================
   SPACING UTILITIES
   =========================================== */

/* Margin utilities */
.rmrs-mt-0 { margin-top: 0; }
.rmrs-mt-1 { margin-top: var(--rmrs-spacing-xs, 4px); }
.rmrs-mt-2 { margin-top: var(--rmrs-spacing-sm, 8px); }
.rmrs-mt-3 { margin-top: var(--rmrs-spacing-md, 16px); }
.rmrs-mt-4 { margin-top: var(--rmrs-spacing-lg, 24px); }
.rmrs-mt-5 { margin-top: var(--rmrs-spacing-xl, 32px); }

.rmrs-mb-0 { margin-bottom: 0; }
.rmrs-mb-1 { margin-bottom: var(--rmrs-spacing-xs, 4px); }
.rmrs-mb-2 { margin-bottom: var(--rmrs-spacing-sm, 8px); }
.rmrs-mb-3 { margin-bottom: var(--rmrs-spacing-md, 16px); }
.rmrs-mb-4 { margin-bottom: var(--rmrs-spacing-lg, 24px); }
.rmrs-mb-5 { margin-bottom: var(--rmrs-spacing-xl, 32px); }

/* Padding utilities */
.rmrs-p-0 { padding: 0; }
.rmrs-p-1 { padding: var(--rmrs-spacing-xs, 4px); }
.rmrs-p-2 { padding: var(--rmrs-spacing-sm, 8px); }
.rmrs-p-3 { padding: var(--rmrs-spacing-md, 16px); }
.rmrs-p-4 { padding: var(--rmrs-spacing-lg, 24px); }
.rmrs-p-5 { padding: var(--rmrs-spacing-xl, 32px); }


/* ===========================================
   TEXT UTILITIES
   =========================================== */

.rmrs-text-primary { color: var(--rmrs-color-primary, #003dfa); }
.rmrs-text-secondary { color: var(--rmrs-color-secondary, #0080ff); }
.rmrs-text-accent { color: var(--rmrs-color-accent, #45ba47); }
.rmrs-text-cta { color: var(--rmrs-color-cta, #ff6f13); }
.rmrs-text-muted { color: #666666; }
.rmrs-text-white { color: var(--rmrs-color-white, #ffffff); }

.rmrs-text-center { text-align: center; }
.rmrs-text-left { text-align: left; }
.rmrs-text-right { text-align: right; }

.rmrs-font-medium { font-weight: var(--rmrs-font-weight-medium, 500); }
.rmrs-font-semibold { font-weight: var(--rmrs-font-weight-semibold, 600); }
.rmrs-font-bold { font-weight: var(--rmrs-font-weight-bold, 700); }


/* ===========================================
   DISPLAY UTILITIES
   =========================================== */

.rmrs-flex { display: flex; }
.rmrs-flex-center {
  display: flex;
  align-items: center;
  justify-content: center;
}
.rmrs-flex-between {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.rmrs-flex-wrap { flex-wrap: wrap; }
.rmrs-gap-1 { gap: var(--rmrs-spacing-xs, 4px); }
.rmrs-gap-2 { gap: var(--rmrs-spacing-sm, 8px); }
.rmrs-gap-3 { gap: var(--rmrs-spacing-md, 16px); }
.rmrs-gap-4 { gap: var(--rmrs-spacing-lg, 24px); }

.rmrs-hidden { display: none; }
.rmrs-visible { visibility: visible; }
.rmrs-invisible { visibility: hidden; }


/* ===========================================
   ACCESSIBILITY
   =========================================== */

/* Screen reader only */
.rmrs-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Skip link */
.rmrs-skip-link {
  position: absolute;
  top: -100%;
  left: 0;
  background: var(--rmrs-color-primary, #003dfa);
  color: var(--rmrs-color-white, #ffffff);
  padding: 12px 24px;
  z-index: 9999;
  transition: top 0.3s;
}

.rmrs-skip-link:focus {
  top: 0;
}

/* Focus visible polyfill support */
.rmrs-focus-visible:focus-visible {
  outline: 2px solid var(--rmrs-color-primary, #003dfa);
  outline-offset: 2px;
}
