/* ============================================================
   BEDW component library — standalone, reusable controls.
   Ported from the design-system specimen cards (guidelines/*.card.html)
   under a collision-safe `bx-` namespace (the cards reused generic demo
   class names like .btn/.grid/.opt that clash with the screen CSS).
   All values are the cards' originals and resolve against the BEDW tokens.
   ============================================================ */

/* ---- Buttons ------------------------------------------------ */
.bx-btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: var(--control-gap-md);
  height: var(--control-h-md); padding: 0 var(--control-px-md);
  border-radius: var(--radius-pill);
  font-family: var(--font-sans); font-size: var(--control-label-md);
  font-weight: 600; letter-spacing: .01em;
  border: var(--control-border-w) solid transparent;
  cursor: pointer; white-space: nowrap; line-height: 1;
  box-shadow: var(--control-shadow); transition: transform .04s ease, background .15s, box-shadow .15s;
}
.bx-btn i { font-size: 18px; }
.bx-btn:active { transform: translateY(1px); }
.bx-btn[lang="ar"] { letter-spacing: 0; font-size: 17px; }

.bx-btn--lg { height: var(--control-h-lg); padding: 0 var(--control-px-lg); font-size: var(--control-label-lg); gap: var(--control-gap-lg); }
.bx-btn--md { height: var(--control-h-md); padding: 0 var(--control-px-md); font-size: var(--control-label-md); gap: var(--control-gap-md); }
.bx-btn--sm { height: var(--control-h-sm); padding: 0 var(--control-px-sm); font-size: var(--control-label-sm); gap: var(--control-gap-sm); }

.bx-btn--primary { background: var(--color-primary); color: #fff; }
.bx-btn--primary:hover, .bx-btn--primary.is-hover { background: var(--color-primary-hover); box-shadow: 0 4px 14px rgba(210, 98, 46, .32); }
.bx-btn--primary:active, .bx-btn--primary.is-pressed { background: var(--color-primary-pressed); box-shadow: none; }
.bx-btn--secondary { background: var(--color-secondary); color: #fff; }
.bx-btn--secondary:hover { background: var(--color-secondary-hover); }
.bx-btn--neutral { background: var(--color-surface); color: var(--color-text-primary); border-color: var(--control-border); }
.bx-btn--neutral:hover { border-color: var(--control-border-hover); }
.bx-btn--ghost { background: transparent; color: var(--color-primary); box-shadow: none; }
.bx-btn--ghost:hover { background: var(--color-primary-50); }
.bx-btn--hollow {
  background: linear-gradient(#fff, #fff) no-repeat top center / 100% 0;
  color: var(--color-text-primary); border-color: var(--color-text-primary); box-shadow: none;
  transition: background-size .34s cubic-bezier(.4, 0, .2, 1);
}
.bx-btn--hollow:hover, .bx-btn--hollow.is-hover { background-size: 100% 100%; }
.bx-btn--destructive { background: var(--color-error); color: #fff; }

.bx-btn:disabled, .bx-btn.is-disabled { opacity: var(--control-disabled-opacity); cursor: not-allowed; box-shadow: none; }
.bx-btn.is-loading { pointer-events: none; }
.bx-btn.is-loading i { animation: bx-spin .8s linear infinite; }
@keyframes bx-spin { to { transform: rotate(360deg); } }

.bx-icon-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: var(--control-h-md); height: var(--control-h-md);
  border-radius: var(--radius-pill); border: var(--control-border-w) solid var(--control-border);
  background: var(--color-surface); color: var(--color-text-primary);
  box-shadow: var(--control-shadow); cursor: pointer;
}
.bx-icon-btn i { font-size: 18px; }
.bx-fab-round {
  display: inline-flex; align-items: center; justify-content: center;
  width: 56px; height: 56px; border-radius: var(--radius-pill);
  background: rgba(210, 98, 46, .13);
  backdrop-filter: blur(14px) saturate(1.5); -webkit-backdrop-filter: blur(14px) saturate(1.5);
  color: #AF5226; border: 1px solid rgba(210, 98, 46, .28);
  box-shadow: 0 6px 20px rgba(210, 98, 46, .18), inset 0 1px 0 rgba(255, 255, 255, .38);
  cursor: pointer; transition: box-shadow .15s ease, transform .04s ease;
}
.bx-fab-round:hover { box-shadow: 0 8px 26px rgba(210, 98, 46, .28), inset 0 1px 0 rgba(255, 255, 255, .45); }
.bx-fab-round:active { transform: translateY(1px); }
.bx-fab-round i { font-size: 22px; }

/* ---- Choice controls (checkbox / radio / toggle) ----------- */
.bx-opt { display: inline-flex; align-items: center; gap: 12px; font-size: 15px; color: var(--color-text-primary); cursor: pointer; }
.bx-opt.is-dim { opacity: var(--control-disabled-opacity); cursor: not-allowed; }

.bx-check {
  width: 22px; height: 22px; border-radius: 6px;
  border: var(--control-border-w) solid var(--control-border-strong);
  background: var(--field-bg); display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto;
}
.bx-check.on, .bx-check.ind { background: var(--color-primary); border-color: var(--color-primary); color: #fff; }
.bx-check i { font-size: 13px; }

.bx-radio {
  width: 22px; height: 22px; border-radius: var(--radius-pill);
  border: var(--control-border-w) solid var(--control-border-strong);
  background: var(--field-bg); display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto;
}
.bx-radio.on { border-color: var(--color-primary); }
.bx-radio.on::after { content: ""; width: 11px; height: 11px; border-radius: var(--radius-pill); background: var(--color-primary); }

.bx-switch {
  width: 48px; height: 28px; border-radius: var(--radius-pill);
  background: var(--color-neutral-300); position: relative; flex: 0 0 auto; transition: background .15s;
}
.bx-switch::after {
  content: ""; position: absolute; top: 3px; left: 3px; width: 22px; height: 22px;
  border-radius: var(--radius-pill); background: #fff; box-shadow: 0 1px 3px rgba(58, 58, 58, .28); transition: left .15s, right .15s;
}
.bx-switch.on { background: var(--color-primary); }
.bx-switch.on::after { left: 23px; }
[dir="rtl"] .bx-switch::after { left: auto; right: 3px; }
[dir="rtl"] .bx-switch.on::after { left: auto; right: 23px; }

/* ---- Text input & textarea --------------------------------- */
.bx-field { display: flex; flex-direction: column; gap: 7px; }
.bx-field-label { font-size: 12px; font-weight: 600; letter-spacing: .02em; color: var(--color-text-primary); }
.bx-field-label .req { color: var(--color-error); margin-inline-start: 2px; }
.bx-ctl {
  display: flex; align-items: center; gap: 10px; height: var(--control-h-md); padding: 0 16px;
  background: var(--field-bg); border: var(--control-border-w) solid var(--control-border);
  border-radius: var(--radius-control); transition: border-color .12s, box-shadow .12s;
}
.bx-ctl i.lead { font-size: 18px; color: var(--color-neutral-400); }
.bx-ctl input {
  flex: 1; border: none; outline: none; background: transparent;
  font-family: var(--font-sans); font-size: 16px; color: var(--color-text-primary); min-width: 0;
}
.bx-ctl input::placeholder { color: var(--field-placeholder); }
.bx-ctl.is-focus, .bx-ctl:focus-within { border-color: var(--focus-border); box-shadow: var(--focus-ring); }
.bx-ctl.is-focus i.lead, .bx-ctl:focus-within i.lead { color: var(--color-accent); }
.bx-ctl.is-error { border-color: var(--color-error); }
.bx-ctl.is-error i.lead { color: var(--color-error); }
.bx-ctl.is-disabled { background: var(--field-bg-alt); opacity: var(--control-disabled-opacity); }
.bx-help { font-size: 12px; line-height: 1.4; color: var(--color-text-secondary); display: flex; align-items: center; gap: 6px; }
.bx-help.err { color: var(--color-error); }
.bx-help i { font-size: 13px; }
.bx-area {
  border: var(--control-border-w) solid var(--control-border); border-radius: var(--radius-control);
  background: var(--field-bg); font-family: var(--font-sans); font-size: 16px; color: var(--color-text-primary);
  padding: 12px 16px; resize: none; outline: none; min-height: 80px; line-height: 1.5; width: 100%; box-sizing: border-box;
}
.bx-area:focus { border-color: var(--focus-border); box-shadow: var(--focus-ring); }

/* ---- Segmented control & chips ----------------------------- */
.bx-seg { display: inline-flex; background: var(--color-neutral-100); border-radius: var(--radius-pill); padding: 4px; gap: 2px; }
.bx-seg button {
  appearance: none; border: none; background: transparent; cursor: pointer; font-family: var(--font-sans);
  font-size: 14px; font-weight: 600; color: var(--color-text-secondary); padding: 8px 18px;
  border-radius: var(--radius-pill); display: inline-flex; align-items: center; gap: 8px; line-height: 1;
}
.bx-seg button i { font-size: 15px; }
.bx-seg button.on { background: var(--color-surface); color: var(--color-primary); box-shadow: var(--control-shadow); }

.bx-chip {
  display: inline-flex; align-items: center; gap: 8px; height: 36px; padding: 0 16px;
  border-radius: var(--radius-pill); font-size: 14px; font-weight: 600;
  /* A <button> does not inherit the page's font — without this the chip
     renders in the UA default (Arial) beside type set in Rubik/Raleway. */
  font-family: var(--font-sans);
  background: var(--color-surface); color: var(--color-text-primary);
  border: var(--control-border-w) solid var(--color-border); cursor: pointer; line-height: 1;
}
.bx-chip i { font-size: 14px; color: var(--color-text-secondary); }
.bx-chip.sel { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.bx-chip.sel i { color: #fff; }
.bx-chip .x {
  display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px;
  border-radius: var(--radius-pill); background: rgba(255, 255, 255, .28); font-size: 10px;
}
.bx-chip.soft { background: var(--color-surface-alt); border-color: transparent; color: var(--color-primary-700); }
.bx-chip.soft i { color: var(--color-primary); }

/* ---- Search field & select --------------------------------- */
.bx-search {
  display: flex; align-items: center; gap: 11px; height: var(--control-h-md); padding: 0 18px;
  background: var(--field-bg); border: var(--control-border-w) solid var(--control-border); border-radius: var(--radius-pill);
}
.bx-search.focus, .bx-search:focus-within { border-color: var(--focus-border); box-shadow: var(--focus-ring); }
.bx-search i.mg { font-size: 18px; color: var(--color-accent); }
.bx-search input {
  flex: 1; border: none; outline: none; background: transparent; font-family: var(--font-sans);
  font-size: 16px; min-width: 0; color: var(--color-text-primary);
}
.bx-search input::placeholder { color: var(--field-placeholder); }
.bx-clear {
  display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px;
  border-radius: var(--radius-pill); background: var(--color-neutral-200); color: var(--color-neutral-600);
  border: none; cursor: pointer; font-size: 11px;
}

.bx-select {
  display: flex; align-items: center; gap: 11px; height: var(--control-h-md); padding: 0 16px;
  background: var(--field-bg); border: var(--control-border-w) solid var(--control-border);
  border-radius: var(--radius-control); cursor: pointer;
}
.bx-select i.lead { font-size: 18px; color: var(--color-neutral-400); }
.bx-select .val { flex: 1; font-size: 16px; }
.bx-select .val.ph { color: var(--field-placeholder); }
.bx-select i.chev { font-size: 14px; color: var(--color-text-secondary); }
.bx-select.open { border-color: var(--focus-border); box-shadow: var(--focus-ring); border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.bx-menu {
  margin-top: -1px; background: var(--color-surface); border: var(--control-border-w) solid var(--focus-border);
  border-top: none; border-radius: 0 0 var(--radius-control) var(--radius-control);
  box-shadow: var(--control-shadow-raised); overflow: hidden;
}
.bx-menu-opt { display: flex; align-items: center; gap: 11px; padding: 11px 16px; font-size: 15px; cursor: pointer; }
.bx-menu-opt i { font-size: 17px; color: var(--color-text-secondary); width: 18px; text-align: center; }
.bx-menu-opt:hover { background: var(--color-neutral-50); }
.bx-menu-opt.sel { background: var(--color-primary-50); color: var(--color-primary-700); font-weight: 600; }
.bx-menu-opt.sel i { color: var(--color-primary); }
.bx-menu-opt .tick { margin-left: auto; color: var(--color-primary); font-size: 14px; }
[dir="rtl"] .bx-menu-opt .tick { margin-left: 0; margin-right: auto; }

/* ---- Section band ------------------------------------------ */
.bx-section { position: relative; z-index: 1; }
.bx-section .bx-section-col { max-width: 600px; margin: 0 auto; padding: 26px 28px 28px; }
.bx-section.full { width: 100%; }
.bx-section.compact { max-width: 600px; margin: 0 auto; }
.bx-section.light { background: var(--color-surface-alt); }
.bx-section.light .bx-section-eyebrow { color: var(--color-primary); }
.bx-section.light .bx-section-title { color: var(--color-text-primary); }
.bx-section.light .bx-section-sub { color: var(--color-text-secondary); }
.bx-section.light .bx-section-item { color: var(--color-text-primary); }
.bx-section.light .bx-section-item i { color: var(--color-primary); }
.bx-section.dark { background: var(--color-neutral-800); }
.bx-section.dark .bx-section-eyebrow { color: var(--color-primary-300); }
.bx-section.dark .bx-section-title { color: #fff; }
.bx-section.dark .bx-section-sub { color: rgba(255, 255, 255, .74); }
.bx-section.dark .bx-section-item { color: #fff; }
.bx-section.dark .bx-section-item i { color: var(--color-primary-300); }
.bx-section.center { text-align: center; }
.bx-section.center .bx-section-items { justify-content: center; }
.bx-section.center .bx-section-sub { margin-left: auto; margin-right: auto; max-width: 42ch; }
.bx-section-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; margin: 0 0 9px; }
.bx-section-title { font-family: var(--font-display); font-size: 25px; font-weight: 800; letter-spacing: -.02em; line-height: 1.08; margin: 0; }
.bx-section-sub { margin: 9px 0 0; font-size: 14px; line-height: 1.5; }
.bx-section-items { display: flex; gap: 22px; margin-top: 18px; flex-wrap: wrap; }
.bx-section-item { display: flex; align-items: center; gap: 9px; font-size: 13.5px; font-weight: 600; }
.bx-section-item i { font-size: 17px; }

/* ---- Trust & safety bar ------------------------------------ */
.bx-trust {
  display: flex; align-items: stretch; background: var(--color-surface);
  border: 1px solid var(--color-border); border-radius: 18px;
  box-shadow: 0 6px 22px rgba(58, 30, 14, .07); overflow: hidden;
}
.bx-trust-item { flex: 1; display: flex; align-items: center; gap: 14px; padding: 20px 24px; }
.bx-trust-item + .bx-trust-item { border-inline-start: 1px solid var(--color-border); }
.bx-trust-ico {
  flex: 0 0 auto; width: 46px; height: 46px; border-radius: 13px;
  background: var(--color-surface-alt); color: var(--color-primary);
  display: grid; place-items: center; font-size: 20px;
}
.bx-trust-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.bx-trust-t { font-size: 15px; font-weight: 700; letter-spacing: -.01em; line-height: 1.2; }
.bx-trust-s { font-size: 12.5px; color: var(--color-text-secondary); line-height: 1.3; }
.bx-trust-pills { display: flex; flex-wrap: wrap; gap: 10px; }
.bx-trust-pill {
  display: inline-flex; align-items: center; gap: 8px; padding: 9px 15px; border-radius: 99px;
  background: var(--color-surface); border: 1px solid var(--color-border); font-size: 13px; font-weight: 600;
}
.bx-trust-pill i { font-size: 14px; color: var(--color-primary); }
@media (max-width: 720px) { .bx-trust { flex-direction: column; } .bx-trust-item + .bx-trust-item { border-inline-start: none; border-top: 1px solid var(--color-border); } }

/* ---- Language switcher (standalone) ------------------------ */
.bx-lang-btn {
  display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius-pill);
  border: 1.5px solid var(--color-border-strong); background: var(--color-surface); color: var(--color-text-primary);
  cursor: pointer; box-shadow: var(--control-shadow); font-weight: 700; line-height: 1;
  transition: border-color .15s, box-shadow .15s, background .15s, transform .08s;
}
.bx-lang-btn:hover { border-color: var(--color-primary); box-shadow: 0 2px 10px rgba(210, 98, 46, .18); }
.bx-lang-btn:active { transform: scale(.95); }
.bx-lang-btn .lbl-en { font-family: var(--font-sans); letter-spacing: .04em; text-transform: uppercase; }
.bx-lang-btn .lbl-ar { font-family: 'Rubik', system-ui, sans-serif; font-weight: 600; direction: rtl; }
.bx-lang-btn.lg { width: 52px; height: 52px; font-size: 15px; }
.bx-lang-btn.md { width: 44px; height: 44px; font-size: 13px; }
.bx-lang-btn.sm { width: 34px; height: 34px; font-size: 11px; }
.bx-lang-btn.sm .lbl-ar { font-size: 12px; }
.bx-lang-btn.frosted {
  background: rgba(247, 245, 239, .15); border-color: rgba(247, 245, 239, .35);
  color: rgba(247, 245, 239, .92); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: none;
}
.bx-lang-btn.frosted:hover { background: rgba(247, 245, 239, .26); border-color: rgba(247, 245, 239, .6); box-shadow: 0 2px 12px rgba(0, 0, 0, .18); }
.bx-lang-btn.is-disabled { opacity: var(--control-disabled-opacity); pointer-events: none; }

/* ---- "List your property" expanding FAB -------------------- */
.bx-listfab {
  display: inline-flex; align-items: center; height: 60px; border-radius: 30px;
  background: var(--color-primary); color: #fff; border: none; cursor: pointer;
  box-shadow: 0 10px 26px rgba(175, 82, 38, .45), 0 3px 10px rgba(58, 30, 14, .25);
  width: 60px; padding: 0; overflow: hidden; font-family: inherit;
  transition: width .26s cubic-bezier(.4, 0, .2, 1), padding .26s cubic-bezier(.4, 0, .2, 1), box-shadow .2s;
}
.bx-listfab-ico { flex: 0 0 60px; width: 60px; height: 60px; display: grid; place-items: center; font-size: 23px; }
.bx-listfab-lbl { white-space: nowrap; font-size: 15px; font-weight: 700; letter-spacing: -.01em; opacity: 0; transform: translateX(-6px); transition: opacity .2s, transform .26s; }
.bx-listfab:hover, .bx-listfab.is-open { width: 226px; padding-right: 24px; }
.bx-listfab:hover .bx-listfab-lbl, .bx-listfab.is-open .bx-listfab-lbl { opacity: 1; transform: none; }
[dir="rtl"] .bx-listfab-lbl { transform: translateX(6px); }
