/* Defaults have low specificity so Elementor Field Typography wins. */
:where(.cm-phone-flags) :where(.elementor-field-textual) { font-size:16px; line-height:22px; font-weight:400; }
.cm-phone-flags .elementor-field-textual::placeholder { font:inherit; letter-spacing:inherit; }
.cm-phone-flags { --cm-phone-number-gap:8px; --cm-phone-selector-gap:8px; }
.cm-phone-control { position:relative; width:100%; min-width:0; }
.cm-phone-control input.cm-phone-number { width:100%; box-sizing:border-box; }
.cm-phone-control .cm-phone-trigger {
 position:absolute; left:10px; top:50%; transform:translateY(-50%); z-index:1;
 display:flex; align-items:center; gap:var(--cm-phone-selector-gap,8px); width:82px; min-height:24px;
 margin:0; padding:0; border:0; border-radius:4px; background:transparent;
 color:inherit; font:inherit; cursor:pointer;
}
.cm-phone-trigger img,.cm-phone-option img { width:20px; height:15px; object-fit:cover; flex-shrink:0; border-radius:1px; }
.cm-phone-arrow { display:var(--cm-phone-arrow-display,inline-block); font-size:var(--cm-phone-arrow-size,12px); line-height:1; color:inherit; flex-shrink:0; }
.cm-phone-trigger:focus-visible { outline:2px solid #2878ff; outline-offset:2px; }
.cm-phone-panel {
 position:fixed; z-index:2147483000; display:flex; flex-direction:column;
 box-sizing:border-box; padding:8px; background:white; color:#09213b;
 border:1px solid #dce1e8; border-radius:12px; box-shadow:0 8px 28px #09213b26;
 font:inherit; overflow:hidden;
}
.cm-phone-panel .cm-phone-search { flex-shrink:0; width:100%; min-height:36px; box-sizing:border-box; padding:8px 10px; margin:0 0 6px; border:1px solid #dce1e8; border-radius:7px; background:white; color:#09213b; font:inherit; }
.cm-phone-list { overflow-y:auto; min-height:0; overscroll-behavior:contain; }
.cm-phone-panel .cm-phone-option { display:flex; align-items:center; gap:9px; width:100%; min-height:36px; padding:8px; margin:0; border:0; border-radius:5px; background:white; color:#09213b; text-align:left; font:inherit; cursor:pointer; }
.cm-phone-option span:not(.cm-phone-dial) { flex:1; }
.cm-phone-dial { color:#66758a; }
.cm-phone-panel .cm-phone-option:hover,.cm-phone-panel .cm-phone-option[aria-pressed="true"] { background:#eff5ff; }
.cm-phone-panel .cm-phone-option:focus-visible,.cm-phone-search:focus-visible { outline:2px solid #2878ff; outline-offset:-2px; }


/* Keep theme button hover/focus rules from moving the country selector. */
.cm-phone-control .cm-phone-trigger,
.cm-phone-control .cm-phone-trigger:hover,
.cm-phone-control .cm-phone-trigger:focus,
.cm-phone-control .cm-phone-trigger:active {
  padding:0!important; margin:0!important; border:0!important;
  background:transparent!important; box-shadow:none!important;
  transform:translateY(-50%)!important; transition:none!important;
  min-width:0!important; max-width:none!important; box-sizing:border-box;
}
.cm-phone-control input.cm-phone-probe {
  position:absolute!important; visibility:hidden!important; pointer-events:none!important;
  top:0; left:0; width:100%; height:0!important; min-height:0!important;
  margin:0!important; border:0!important; opacity:0!important;
}

.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) .elementor-field-subgroup { width:100%; }
.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) .elementor-field-option {
  display:flex; align-items:flex-start; gap:var(--cm-consent-gap,12px); width:100%;
}
.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) input[type="checkbox"] {
  flex:0 0 var(--cm-consent-size,18px); width:var(--cm-consent-size,18px);
  height:var(--cm-consent-size,18px); margin:0; padding:0; accent-color:#2878ff;
}
.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) .elementor-field-option label {
  flex:1; min-width:0; margin:0; padding:0; display:block;
}

/* Consent text keeps one grid column across every wrapped line. */
.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) .elementor-field-option {
  display:grid!important;
  grid-template-columns:var(--cm-consent-size,18px) minmax(0,1fr)!important;
  column-gap:var(--cm-consent-gap,12px)!important;
  align-items:start!important;
}
.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) .elementor-field-option input[type="checkbox"] {
  grid-column:1; grid-row:1; justify-self:start; align-self:start;
  width:var(--cm-consent-size,18px)!important;
  height:var(--cm-consent-size,18px)!important;
  min-width:0!important; min-height:0!important; max-width:none!important;
  margin:var(--cm-consent-offset,0px) 0 0!important;
  padding:0!important; float:none!important; transform:none!important;
}
.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) .elementor-field-option label {
  grid-column:2; grid-row:1; min-width:0; width:auto!important;
  display:block!important; margin:0!important; padding:0!important;
  float:none!important; text-indent:0!important; text-align:left;
  white-space:normal!important; overflow-wrap:anywhere;
}

/* Elementor versions may omit elementor-field-option around acceptance. */
.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) .cm-consent-row {
  display:grid!important; grid-template-columns:var(--cm-consent-size,18px) minmax(0,1fr)!important;
  column-gap:var(--cm-consent-gap,12px)!important; align-items:start!important; width:100%;
}
.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) .cm-consent-row > input[type="checkbox"] {
  grid-column:1; grid-row:1; width:var(--cm-consent-size,18px)!important;
  height:var(--cm-consent-size,18px)!important; min-width:0!important; min-height:0!important;
  margin:var(--cm-consent-offset,0px) 0 0!important; padding:0!important;
  position:static!important; float:none!important; transform:none!important;
  pointer-events:auto!important; cursor:pointer;
}
.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) .cm-consent-row > .cm-consent-text {
  grid-column:2; grid-row:1; width:auto!important; min-width:0;
  display:block!important; margin:0!important; padding:0!important;
  text-indent:0!important; float:none!important; white-space:normal!important;
  overflow-wrap:anywhere; cursor:pointer;
}

/* Zero specificity lets Elementor's consent override win when configured. */
:where(.cm-phone-flags .cm-consent-text) {
  font-family:var(--cm-consent-font-family,inherit);
  font-size:var(--cm-consent-font-size,inherit);
  font-weight:var(--cm-consent-font-weight,inherit);
  font-style:var(--cm-consent-font-style,inherit);
  line-height:var(--cm-consent-font-line,inherit);
  letter-spacing:var(--cm-consent-font-spacing,inherit);
  text-transform:var(--cm-consent-font-transform,inherit);
  text-decoration:var(--cm-consent-font-decoration,inherit);
}
.cm-phone-flags .cm-consent-text a { font:inherit; letter-spacing:inherit; }

/* Rounded consent checkbox, including the native Checkbox field. */
.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) input[type="checkbox"] {
  appearance:none!important; -webkit-appearance:none!important;
  box-sizing:border-box; border:1px solid #a7b0bd!important;
  border-radius:4px!important; background:#fff!important;
  background-image:none!important; box-shadow:none!important; cursor:pointer;
}
.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) input[type="checkbox"]:checked {
  border-color:#1678fa!important; background-color:#1678fa!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M4 10l4 4 8-9' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='square'/%3E%3C/svg%3E")!important;
  background-position:center!important; background-repeat:no-repeat!important;
  background-size:100% 100%!important;
}
.cm-phone-flags :is(.elementor-field-type-acceptance, .elementor-field-group-field_n57aru6) input[type="checkbox"]:focus-visible {
  outline:2px solid #1678fa!important; outline-offset:3px;
}
/* Reference select fields: pill shape and one inset chevron. */
.cm-phone-flags .elementor-field-type-select .elementor-select-wrapper {
  position:relative; width:100%; border:0!important; background:transparent!important;
}
.cm-phone-flags .elementor-field-type-select .elementor-select-wrapper::before,
.cm-phone-flags .elementor-field-type-select .elementor-select-wrapper::after,
.cm-phone-flags .elementor-field-type-select .select-caret-down-wrapper {
  display:none!important;
}
.cm-phone-flags .elementor-field-type-select select.elementor-field-textual {
  appearance:none!important; -webkit-appearance:none!important;
  box-sizing:border-box; width:100%; min-height:50px;
  border:0!important; border-radius:999px!important;
  background-color:#fff!important; color:#758194;
  padding:var(--cm-field-pad-top,12px) var(--cm-field-pad-right,24px) var(--cm-field-pad-bottom,12px) var(--cm-field-pad-left,24px)!important; box-shadow:none!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%231e272e' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important; background-position:right 30px center!important;
  background-size:12px 8px!important; cursor:pointer;
}
.cm-phone-flags .elementor-field-group-field_94025c1,
.cm-phone-flags .elementor-field-group-field_456f89d {
  width:50%!important; padding-left:12px!important; padding-right:12px!important;
}
@media (max-width:767px) {
  .cm-phone-flags .elementor-field-type-select select.elementor-field-textual {

    background-position:right 20px center!important;
  }
}
.cm-phone-flags select.cm-select-native {
  position:absolute!important; opacity:0!important; pointer-events:none!important;
}
.cm-phone-flags .cm-select-trigger {
  display:block; width:100%; box-sizing:border-box; min-height:50px;
  border:0!important; margin:0!important; text-align:left; cursor:pointer;
  box-shadow:none!important; transform:none!important;
}
.cm-select-trigger:focus-visible { outline:2px solid #1678fa; outline-offset:3px; }
.cm-select-list {
  position:fixed; z-index:2147483000; box-sizing:border-box;
  padding:6px; border:1px solid #dce1e8; border-radius:20px;
  background:#fff; box-shadow:0 8px 24px #09213b14;
  overflow-y:auto; overscroll-behavior:contain;
}
.cm-select-list button {
  display:block; box-sizing:border-box; width:100%; border:0; border-radius:14px;
  background:#fff; color:inherit; font:inherit; text-align:left;
  padding:10px 18px; margin:0; cursor:pointer; white-space:normal;
}
.cm-select-list button:hover,.cm-select-list button:focus-visible,
.cm-select-list button[aria-selected="true"] { background:#eff5ff; color:#1678fa; outline:none; }
.cm-select-list button:disabled { opacity:.5; cursor:default; }
.cm-phone-flags[data-cm-phone-arrow="hidden"] .cm-phone-arrow { display:none!important; }
.cm-phone-flags .elementor-field-type-upload { position:relative; display:block; width:100%; }
.cm-phone-flags input.cm-upload-native {
  position:absolute!important; width:1px!important; height:1px!important;
  opacity:0!important; padding:0!important; margin:0!important; pointer-events:none;
}
.cm-upload-heading { display:flex; align-items:baseline; gap:8px; margin-bottom:8px; font-size:14px; color:#1e272e; }
.cm-upload-heading span { font-size:12px; color:#758194; }
.cm-upload-zone { border:1px dashed #dce1e8; border-radius:16px; background:#fff; }
.cm-upload-zone[hidden] { display:none; }
.cm-phone-flags .cm-upload-browse {
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:8px; width:100%; min-height:120px; padding:22px 12px;
  border:0; border-radius:16px; background:transparent; color:#1e272e;
  font:inherit; font-size:14px; text-align:center; cursor:pointer; transform:none;
}
.cm-upload-browse svg { width:24px; height:24px; fill:none; stroke:#566470; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; margin-bottom:6px; }
.cm-upload-browse small { color:#758194; font-size:11px; }
.cm-upload-drag { border-color:#1678fa; background:#eff5ff; }
.cm-upload-file { display:flex; align-items:center; gap:12px; padding:12px; margin-bottom:8px; border:1px solid #dce1e8; border-radius:12px; background:#fff; color:#1e272e; font-size:13px; }
.cm-upload-file > div { flex:1; min-width:0; overflow-wrap:anywhere; }
.cm-upload-file small { display:block; color:#758194; font-size:11px; margin-top:4px; }
.cm-phone-flags .cm-upload-file button { flex-shrink:0; border:0; background:transparent; color:#566470; font-size:24px; line-height:1; padding:6px; margin:0; cursor:pointer; }
.cm-upload-browse:focus-visible,.cm-upload-file button:focus-visible { outline:2px solid #1678fa; outline-offset:3px; }
.cm-upload-error { color:#b42318; font-size:12px; }
.cm-upload-error:empty { display:none; }
/* Elementor controls own field dimensions on desktop, tablet and mobile. */
/* Elementor appends server errors inside .elementor-select-wrapper for selects;
   wrap so the message sits below the field like text inputs. */
.cm-phone-flags .elementor-field-type-select .elementor-select-wrapper {
  display:flex!important; flex-wrap:wrap!important; align-items:stretch;
}
.cm-phone-flags .elementor-select-wrapper > .cm-select-trigger { flex:0 0 100%; max-width:100%; }
.cm-phone-flags .elementor-field-group,
.cm-phone-flags .elementor-field-group.elementor-error { flex-wrap:wrap!important; }
/* Keep side-by-side fields top-aligned when one grows (Other write-in, error text). */
.cm-phone-flags .elementor-field-group { align-content:flex-start!important; }
.cm-phone-flags .elementor-field-group > .elementor-select-wrapper { flex:0 0 100%; max-width:100%; }
.cm-phone-flags :is(.elementor-field-group, .elementor-select-wrapper) > .elementor-message {
  flex:0 0 calc(100% - 25px)!important; width:calc(100% - 25px)!important; max-width:calc(100% - 25px)!important;
  order:10; float:none!important; position:static!important; margin-left:25px!important;
}

/* Searchable multi-select (Countries, Checks): mirrors the phone country panel. */
.cm-phone-flags select.cm-select-native[multiple] {
  top:0; left:0; width:100%!important; height:100%!important; min-height:0!important; overflow:hidden!important;
}
.cm-phone-flags .cm-ms-trigger {
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
/* Dropdown text: muted placeholder, solid once something is chosen. */
.cm-phone-flags .cm-select-trigger { color:#1d252d!important; }
.cm-phone-flags .cm-select-trigger.cm-select-empty,
.cm-phone-flags .cm-ms-trigger.cm-ms-empty { color:#1d252d99!important; }
.cm-phone-panel.cm-ms-panel .cm-phone-option { gap:10px; }
.cm-phone-panel.cm-ms-panel .cm-phone-option .cm-ms-check {
  flex:0 0 18px; width:18px; height:18px; box-sizing:border-box;
  border:1px solid #a7b0bd; border-radius:4px; background:#fff;
}
.cm-phone-panel.cm-ms-panel .cm-phone-option[aria-selected="true"] { background:#eff5ff; }
.cm-phone-panel.cm-ms-panel .cm-phone-option[aria-selected="true"] .cm-ms-check {
  border-color:#1678fa; background:#1678fa url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M4 10l4 4 8-9' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='square'/%3E%3C/svg%3E") center/100% 100% no-repeat;
}
.cm-phone-panel.cm-ms-panel .cm-phone-option span.cm-ms-name { flex:1; }
.cm-ms-panel .cm-ms-bar {
  display:flex; justify-content:space-between; align-items:center; gap:8px;
  flex-shrink:0; padding:6px 8px 0; margin-top:6px; border-top:1px solid #dce1e8;
  font-size:.875em; color:#66758a;
}
.cm-phone-panel.cm-ms-panel .cm-ms-bar button {
  margin:0; padding:4px 8px; border:0; border-radius:5px; background:transparent;
  color:#1678fa; font:inherit; cursor:pointer; box-shadow:none; transform:none;
}
.cm-phone-panel.cm-ms-panel .cm-ms-bar button:hover { background:#eff5ff; }
.cm-phone-panel.cm-ms-panel .cm-ms-bar button:focus-visible { outline:2px solid #2878ff; outline-offset:-2px; }
.cm-ms-panel .cm-phone-list p { margin:8px; color:#66758a; }

/* Round flags in select triggers and select/multi-select panels. */
img.cm-flag-round,
.cm-phone-control .cm-phone-trigger img.cm-flag-round,
.cm-phone-panel .cm-phone-option img.cm-flag-round {
  width:18px!important; height:18px!important; flex:0 0 18px; object-fit:cover;
  border-radius:50%!important; box-shadow:0 0 0 1px #09213b14; display:block; margin:0;
}
.cm-phone-flags .cm-select-trigger.cm-select-has-flag,
.cm-select-list button.cm-select-has-flag {
  display:flex!important; align-items:center; gap:10px;
}
.cm-select-has-flag .cm-select-text { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; }

/* "Other" write-in that appears when an Other option is chosen. */
.cm-phone-flags .elementor-field-group > .cm-other-input {
  flex:0 0 100%; width:100%; max-width:100%; margin-top:12px; box-sizing:border-box;
  order:5;
}
.cm-phone-flags .elementor-field-group > .cm-other-input[hidden] { display:none!important; }

.cm-phone-flags .elementor-field-group .elementor-field-textual:not(.cm-phone-probe):not(textarea),
.cm-phone-flags .elementor-field-group .cm-select-trigger {
  min-height:var(--cm-field-min-height,48px)!important;
  height:auto!important;
}
.cm-phone-flags .elementor-field-group .elementor-field-textual,
.cm-phone-flags .elementor-field-group .cm-select-trigger {
  padding:var(--cm-field-pad-top,12px) var(--cm-field-pad-right,24px) var(--cm-field-pad-bottom,12px) var(--cm-field-pad-left,24px)!important;
}
.cm-phone-flags .elementor-field-type-select select.elementor-field-textual,
.cm-phone-flags .elementor-field-group .cm-select-trigger {
  padding-right:max(var(--cm-field-pad-right,24px),44px)!important;
}
/* Measurement probe must retain zero height; upload input remains visually hidden. */
.cm-phone-flags .elementor-field-group input.cm-upload-native { padding:0!important; min-height:0!important; height:1px!important; }
/* Native textarea rows and Elementor padding determine its initial height. */
.cm-phone-flags .elementor-field-group textarea.elementor-field-textual {
  height:auto!important; min-height:0!important; resize:vertical;
}