/* ============================================================
   Loja Core · geo.css — "Enviar para": chip do header, aviso de primeira visita e o modal
   "Escolha onde receber" (template-parts/geo/*, assets/js/geo.js, inc/geo.php).
   Carrega depois do lc-chrome.css (wp_enqueue_scripts 30) e só onde lc_geo_enabled().
   O chip reaproveita a anatomia dos utilitários do header (tile 42px + small/strong) e as cores
   --hdr-* do tom escolhido; o modal usa a linguagem do checkout/PDP (tokens locais --lcg-*).
   ============================================================ */

/* [hidden] sempre vence o display dos componentes (senão o modal nasceria aberto). */
.lcg[hidden], .lc-geo-pop[hidden], .lcg [hidden], .lc-geo [hidden] { display: none !important; }

/* ─── Chip ───────────────────────────────────────────────── */
.lc-geo { position: relative; display: flex; flex: none; min-width: 0; }

/* Reset de botão (0,2,0): o Blocksy só zera margin/padding/border/font; o fundo nativo do <button> fica. */
.mo-hdr-main__utils .lc-geo-chip {
  margin: 0; padding: 0; border: 0; border-radius: 12px;
  background: none; box-shadow: none; transform: none;
  color: inherit; font: inherit; text-align: start;
  min-height: 42px; min-width: 0;
  cursor: pointer; -webkit-tap-highlight-color: transparent;
  -webkit-appearance: none; appearance: none;
}
.mo-hdr-main__utils .lc-geo-chip:hover,
.mo-hdr-main__utils .lc-geo-chip:focus { background: none; transform: none; }
.mo-hdr-main__utils .lc-geo-chip:focus-visible { outline: 2px solid var(--hdr-ink, #FFFFFF); outline-offset: 2px; box-shadow: none; }
.mo-hdr-main__utils .lc-geo-chip .lc-geo-chip__ic {
  transition-property: background-color, border-color, scale;
  transition-duration: .15s;
  transition-timing-function: cubic-bezier(.2, 0, 0, 1);
}
.mo-hdr-main__utils .lc-geo-chip:active .lc-geo-chip__ic { scale: .96; }

/* Linha pequena "Enviar para 13050-060": o CEP nunca é cortado (flex none); se faltar espaço, quem encolhe é o
   "Enviar para". Linha grande só com a cidade, que trunca com reticências. */
.lc-geo-chip__txt { min-width: 0; }
.mo-hdr-main__utils .lc-geo-chip__kick { display: flex; min-width: 0; white-space: nowrap; }
.lc-geo-chip__kt { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.mo-hdr-main__utils .lc-geo-chip__kick .lc-geo-chip__cep {
  flex: none; margin-left: .25em;
  font: inherit; color: inherit; font-variant-numeric: tabular-nums;
}
.lc-geo-chip__cep:empty { display: none; }
.mo-hdr-main__utils .lc-geo-chip__val { display: flex; min-width: 0; white-space: nowrap; }
.lc-geo-chip__city { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ─── Colapso progressivo (só com o chip: .lc-has-geo) ─────
   Largura     texto do chip (piso–teto)                 Pedidos / Conta           busca (min)
   ≥ 1400      130–160px                                 normal (conta ≤ 120px)    360px
   1281–1399   130–160px                                 normal (conta ≤ 110px)    320px
   1101–1280   130–160px                                 só o tile                 300px
   981–1100    118–140px (texto a 12px)                  só o tile                 260px
   721–980     até clamp(96px, 100vw − 611px, 150px)     ocultos (como antes)      220px
   ≤ 720       até min(160px, 100vw − 250px)             ocultos                   (coluna)
   O texto acompanha o conteúdo (o chip fica colado em "Meus Pedidos", com o mesmo espaço dos vizinhos) e o
   PISO fica na caixa .lc-geo, com a folga à ESQUERDA do chip: quando a estimativa troca "Informe seu CEP"
   (≈ o piso) por "Campinas, SP", a busca não pula. O teto garante o carrinho dentro do inner em toda largura
   (conta com nome longo incluída). */
.mo-hdr-main__utils.lc-has-geo .lc-geo { justify-content: flex-end; min-width: calc(42px + 10px + 130px); }
.mo-hdr-main__utils.lc-has-geo .lc-geo-chip__txt { width: auto; max-width: 160px; }
.mo-hdr-main__utils.lc-has-geo > .mo-hdr-main__util .mo-hdr-main__util-txt strong {
  max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.mo-hdr-main__inner:has(> .mo-hdr-main__utils.lc-has-geo) > .mo-hdr-main__search { min-width: 360px; }
/* Busca estreita: o placeholder termina em reticências em vez de ser fatiado pela borda. */
.mo-hdr-main__search .mo-hdr-main__search-input,
.mo-hdr-main__search .mo-hdr-main__search-input::placeholder { text-overflow: ellipsis; }

@media (max-width: 1399px) {
  .mo-hdr-main__utils.lc-has-geo > .mo-hdr-main__util .mo-hdr-main__util-txt strong { max-width: 110px; }
  .mo-hdr-main__inner:has(> .mo-hdr-main__utils.lc-has-geo) > .mo-hdr-main__search { min-width: 320px; }
}
/* 981–1280: "Meus Pedidos" e a conta viram só o tile (texto fora da tela, mas com nome acessível). */
@media (max-width: 1280px) {
  .mo-hdr-main__utils.lc-has-geo > .mo-hdr-main__util .mo-hdr-main__util-txt {
    position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0;
    overflow: hidden; clip-path: inset(50%); white-space: nowrap;
  }
  .mo-hdr-main__inner:has(> .mo-hdr-main__utils.lc-has-geo) > .mo-hdr-main__search { min-width: 300px; }
}
@media (max-width: 1100px) {
  .mo-hdr-main__utils.lc-has-geo .lc-geo { min-width: calc(42px + 10px + 118px); }
  .mo-hdr-main__utils.lc-has-geo .lc-geo-chip__txt { max-width: 140px; }
  .mo-hdr-main__inner:has(> .mo-hdr-main__utils.lc-has-geo) > .mo-hdr-main__search { min-width: 260px; }
}
/* 721–980: as utilidades somem (como antes), menos o chip, que fica entre a busca e o carrinho. */
@media (max-width: 980px) {
  .mo-hdr-main__utils.lc-has-geo { display: flex; }
  .mo-hdr-main__utils.lc-has-geo > .mo-hdr-main__util { display: none; }
  .mo-hdr-main__utils.lc-has-geo .lc-geo { min-width: 0; }
  .mo-hdr-main__utils.lc-has-geo .lc-geo-chip__txt { max-width: clamp(96px, calc(100vw - 611px), 150px); }
}
@media (min-width: 721px) and (max-width: 980px) {
  .mo-hdr-main__inner:has(> .mo-hdr-main__utils.lc-has-geo) > .mo-hdr-main__search { min-width: 220px; }
}
/* ≤720: chip compacto na linha do logo (absoluto, centrado na caixa de 48px do logo), sem crescer o header. */
@media (max-width: 720px) {
  .mo-hdr-main__utils.lc-has-geo {
    position: absolute; top: 0; right: 16px;
    height: 48px; align-items: center; gap: 8px;
  }
  .mo-hdr-main__utils.lc-has-geo .lc-geo { position: static; }
  .mo-hdr-main__utils.lc-has-geo .lc-geo-chip { gap: 8px; min-height: 40px; }
  .mo-hdr-main__utils.lc-has-geo .lc-geo-chip .lc-geo-chip__ic { width: 36px; height: 36px; border-radius: 10px; }
  .mo-hdr-main__utils.lc-has-geo .lc-geo-chip__txt { width: auto; max-width: min(160px, calc(100vw - 250px)); }
  .mo-hdr-main__utils.lc-has-geo .lc-geo-chip__txt small { font-size: 11px; }
  .mo-hdr-main__utils.lc-has-geo .lc-geo-chip__txt strong { font-size: 13px; }
}
@media (max-width: 379px) {
  .mo-hdr-main__utils.lc-has-geo .lc-geo-chip__cep { display: none; }
  /* 360 (Android mais comum): "São José dos Campos" vira duas linhas em vez de "São José dos …". O pino e o
     aria-label continuam dizendo "Enviar para". */
  .mo-hdr-main__utils.lc-has-geo .lc-geo-chip__kick { display: none; }
  .mo-hdr-main__utils.lc-has-geo .lc-geo-chip__val { display: block; white-space: normal; line-height: 1.15; }
  .mo-hdr-main__utils.lc-has-geo .lc-geo-chip__city {
    display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
    white-space: normal; overflow: hidden; text-wrap: balance;
  }
}

/* ─── Aviso de primeira visita (não modal) ─────────────────── */
.mo-hdr-main .lc-geo-pop {
  position: absolute; top: calc(100% + 10px); left: 0; z-index: 20;
  box-sizing: border-box; width: min(344px, calc(100vw - 32px)); padding: 16px;   /* os dois botões numa linha */
  background: #FFFFFF; color: #1A1C21; border-radius: 12px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .08), 0 8px 24px rgba(12, 36, 64, .18);
  text-align: start; white-space: normal; cursor: auto;
  opacity: 0; translate: 0 -4px;
  transition-property: opacity, translate;
  transition-duration: 120ms;
  transition-timing-function: ease-in;
}
.mo-hdr-main .lc-geo-pop.is-open {
  opacity: 1; translate: 0 0;
  transition-duration: 180ms;
  transition-timing-function: cubic-bezier(.2, 0, 0, 1);
}
/* O header força Archivo em todos os filhos (.nob-hdr-v2 *): o aviso usa a fonte do corpo. */
.mo-hdr-main .lc-geo-pop,
.mo-hdr-main .lc-geo-pop * { font-family: var(--lc-font-body, Inter, system-ui, -apple-system, "Segoe UI", sans-serif); }
.mo-hdr-main .lc-geo-pop__t {
  margin: 0; padding-right: 30px;
  font-size: 15px; font-weight: 700; line-height: 1.3; letter-spacing: 0; text-transform: none;
  color: #1A1C21; text-wrap: balance;
}
.mo-hdr-main .lc-geo-pop__txt { margin: 4px 0 0; font-size: 13.5px; line-height: 1.45; color: #454A54; text-wrap: pretty; }
.mo-hdr-main .lc-geo-pop__acts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
/* Quando os dois botões não cabem numa linha (≈ 360px), cada um ocupa a sua inteira — nada de fileiras tortas. */
.mo-hdr-main .lc-geo-pop__btn {
  flex: 1 1 auto;
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 40px; margin: 0; padding: 0 14px; border: 0; border-radius: 6px;
  background: #E3EDFB; color: #3483FA; box-shadow: none; transform: none;
  font-size: 14px; font-weight: 600; line-height: 1.2; white-space: nowrap;
  cursor: pointer; -webkit-tap-highlight-color: transparent;
  transition-property: background-color, scale;
  transition-duration: .15s;
  transition-timing-function: cubic-bezier(.2, 0, 0, 1);
}
.mo-hdr-main .lc-geo-pop__btn:hover { background: #D3E3F9; color: #3483FA; }
.mo-hdr-main .lc-geo-pop__btn--main,
.mo-hdr-main .lc-geo-pop__btn--main:hover { color: #FFFFFF; }
.mo-hdr-main .lc-geo-pop__btn--main { background: #3483FA; }
.mo-hdr-main .lc-geo-pop__btn--main:hover { background: #2968C8; }
.mo-hdr-main .lc-geo-pop__btn:active { scale: .96; }
.mo-hdr-main .lc-geo-pop__btn[aria-busy="true"] { cursor: progress; }
/* Ocupado: o texto fica transparente (a largura do botão não muda — nada quebra de linha nem pula sob o dedo) e
   um spinner aparece no centro. O nome acessível continua o mesmo; aria-busy avisa o leitor de tela. */
.mo-hdr-main .lc-geo-pop__btn[aria-busy="true"] { position: relative; color: transparent; }
.mo-hdr-main .lc-geo-pop__btn[aria-busy="true"]::before {
  content: ""; position: absolute; inset: 0; margin: auto; box-sizing: border-box; width: 16px; height: 16px;
  border-radius: 50%; border: 2px solid rgba(52, 131, 250, .3); border-top-color: #3483FA;
  animation: lcg-spin .7s linear infinite;
}
.mo-hdr-main .lc-geo-pop__btn:focus-visible,
.mo-hdr-main .lc-geo-pop__x:focus-visible { outline: 2px solid #3483FA; outline-offset: 2px; box-shadow: none; }
.mo-hdr-main .lc-geo-pop__legal { display: block; margin-top: 12px; font-size: 12px; line-height: 1.4; color: #6B7280; text-wrap: balance; }
.mo-hdr-main .lc-geo-pop__x {
  position: absolute; top: 6px; right: 6px;
  display: flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; margin: 0; padding: 0; border: 0; border-radius: 8px;
  background: transparent; color: rgba(0, 0, 0, .55); box-shadow: none; transform: none;
  cursor: pointer; -webkit-tap-highlight-color: transparent;
  transition-property: background-color, color, scale;
  transition-duration: .15s;
}
.mo-hdr-main .lc-geo-pop__x:hover { background: #F5F5F5; color: rgba(0, 0, 0, .9); }
.mo-hdr-main .lc-geo-pop__x:active { scale: .96; }
.mo-hdr-main .lc-geo-pop__x svg { display: block; }

/* 721–1100 o chip fica perto do carrinho: o aviso alinha pela DIREITA (o JS ainda corrige a borda). */
@media (max-width: 1100px) {
  .mo-hdr-main .lc-geo-pop { left: auto; right: 0; }
}
/* ≤720: preso à borda de baixo do header (top vem do JS; 136px é a conta do header de 390px). */
@media (max-width: 720px) {
  .mo-hdr-main .lc-geo-pop { top: 136px; right: 0; width: calc(100vw - 32px); }
}

/* ─── Modal "Escolha onde receber" ─────────────────────────
   Linguagem do checkout/PDP (azul #3483FA, raio 6px). Tokens locais: --mp-* só existem dentro da .pdv. */
html.lcg-lock { overflow: hidden; scrollbar-gutter: stable; }

.lcg {
  --lcg-blue: #3483FA;
  --lcg-blue-h: #2968C8;
  --lcg-soft: #E3EDFB;
  --lcg-soft-h: #D3E3F9;
  --lcg-ink: rgba(0, 0, 0, .9);
  --lcg-ink2: rgba(0, 0, 0, .55);
  --lcg-line: rgba(0, 0, 0, .10);
  --lcg-green: #00A650;
  --lcg-red: #C22536;
  --lcg-r: 6px;
  --lcg-font: var(--lc-font-body, Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
  /* Botões do Blocksy ([type=submit]) sobem 3px e ganham um brilho borrado no hover: desligados aqui. */
  --theme-button-shadow: none;
  --theme-button-transform: none;
  position: fixed; top: var(--lcg-vt, 0px); right: 0; bottom: var(--lcg-kb, 0px); left: 0; z-index: 1700;
  display: flex; align-items: center; justify-content: center; padding: 20px;
  font-family: var(--lcg-font); font-size: 15px; line-height: 1.4; color: var(--lcg-ink); text-align: start;
  -webkit-font-smoothing: antialiased;
}
.lcg *, .lcg *::before, .lcg *::after { box-sizing: border-box; }
.lcg__scrim {
  position: absolute; inset: 0; background: rgba(13, 36, 64, .55);
  opacity: 0;
  transition-property: opacity; transition-duration: 150ms; transition-timing-function: ease-in;
}
.lcg.is-open .lcg__scrim { opacity: 1; transition-duration: 220ms; transition-timing-function: cubic-bezier(.2, 0, 0, 1); }
.lcg__dialog {
  position: relative; display: flex; flex-direction: column;
  width: 100%; max-width: 480px;
  max-height: calc(100vh - 40px); max-height: calc(100dvh - 40px);
  background: #FFFFFF; border-radius: 12px; box-shadow: 0 24px 64px rgba(0, 0, 0, .30);
  overflow: hidden; outline: none;
  opacity: 0; translate: 0 8px;
  transition-property: opacity, translate; transition-duration: 150ms; transition-timing-function: ease-in;
}
.lcg.is-open .lcg__dialog { opacity: 1; translate: 0 0; transition-duration: 220ms; transition-timing-function: cubic-bezier(.2, 0, 0, 1); }
.lcg--kb .lcg__dialog { max-height: calc(var(--lcg-vh, 100dvh) - 40px); }

/* Cabeçalho: reset explícito do h2 (há regras globais com caixa alta e outra cor). */
.lcg__head { flex: none; display: flex; align-items: flex-start; gap: 8px; padding: 18px 12px 0 24px; }
.lcg .lcg__title {
  flex: 1; min-width: 0; margin: 0; padding: 8px 0 0;
  font: 600 20px/1.25 var(--lcg-font); color: var(--lcg-ink);
  text-transform: none; letter-spacing: 0; text-wrap: balance;
}
.lcg__sub { flex: none; margin: 2px 24px 0; font-size: 14px; line-height: 1.4; color: var(--lcg-ink2); text-wrap: pretty; }
.lcg__body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 16px 24px 20px; }
.lcg__actions { flex: none; display: flex; gap: 8px; padding: 12px 24px 16px; background: #FFFFFF; box-shadow: 0 -1px 0 var(--lcg-line); }
.lcg__actions .lcg-btn { flex: 1 1 0; min-width: 0; }

/* Botões e links (0,2,0 contra o Blocksy) */
.lcg .lcg__x,
.lcg .lcg-btn,
.lcg .lcg-link,
.lcg .lcg-back,
.lcg .lcg-gps,
.lcg .lcg-forget,
.lcg .lcg-res__btn {
  margin: 0; border: 0; box-shadow: none; transform: none;
  font-family: var(--lcg-font); letter-spacing: 0; text-transform: none; text-decoration: none;
  cursor: pointer; -webkit-tap-highlight-color: transparent; -webkit-appearance: none; appearance: none;
}
.lcg :is(button, a, [tabindex]):focus-visible,
.lcg .lcg-opt__radio:focus-visible { outline: 2px solid var(--lcg-blue); outline-offset: 2px; box-shadow: none; }
.lcg .lcg__dialog:focus-visible, .lcg .lcg-h3:focus-visible { outline: none; }

.lcg .lcg__x {
  flex: none; display: flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; padding: 0; border-radius: 8px;
  background: transparent; color: var(--lcg-ink2);
  transition-property: background-color, color, scale; transition-duration: .15s;
}
.lcg .lcg__x:hover { background: #F5F5F5; color: var(--lcg-ink); }
.lcg .lcg__x svg { display: block; }

.lcg .lcg-btn {
  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 48px; padding: 0 20px; border-radius: var(--lcg-r);
  font-size: 15px; font-weight: 600; line-height: 1.2; white-space: nowrap;
  transition-property: background-color, color, scale, opacity; transition-duration: .15s; transition-timing-function: cubic-bezier(.2, 0, 0, 1);
}
.lcg .lcg-btn--main, .lcg .lcg-btn--main:hover, .lcg .lcg-btn--main:focus { color: #FFFFFF; }
.lcg .lcg-btn--main { background: var(--lcg-blue); }
.lcg .lcg-btn--main:hover { background: var(--lcg-blue-h); }
.lcg .lcg-btn--soft, .lcg .lcg-btn--soft:hover, .lcg .lcg-btn--soft:focus { color: var(--lcg-blue); }
.lcg .lcg-btn--soft { background: var(--lcg-soft); }
.lcg .lcg-btn--soft:hover { background: var(--lcg-soft-h); }
.lcg .lcg-btn--block { display: flex; width: 100%; }
.lcg .lcg-btn--use { flex: none; min-width: 88px; }
.lcg .lcg-btn:disabled { opacity: .5; cursor: not-allowed; }
/* Ocupado: o texto some e um aro gira no lugar (a largura do botão não muda). */
.lcg .lcg-btn.is-busy { color: transparent; pointer-events: none; }
.lcg .lcg-btn.is-busy::after {
  content: ""; position: absolute; inset: 0; margin: auto; width: 18px; height: 18px; border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, .45); border-top-color: #FFFFFF;
  animation: lcg-spin .7s linear infinite;
}
.lcg .lcg-btn--soft.is-busy::after { border-color: rgba(52, 131, 250, .3); border-top-color: var(--lcg-blue); }
.lcg .lcg__x:active, .lcg .lcg-btn:active, .lcg .lcg-gps:active { scale: .96; }

.lcg .lcg-link {
  display: inline-flex; align-items: center; min-height: 40px; padding: 0;
  background: none; color: var(--lcg-blue); font-size: 15px; font-weight: 500; line-height: 1.2;
}
.lcg .lcg-link:hover { background: none; color: var(--lcg-blue-h); text-decoration: underline; text-underline-offset: 3px; }
.lcg .lcg-back {
  display: inline-flex; align-items: center; gap: 4px; min-height: 40px; margin: -6px 0 8px -8px; padding: 0 10px 0 4px;
  border-radius: 6px; background: none; color: var(--lcg-blue); font-size: 14px; font-weight: 500; line-height: 1;
  transition-property: background-color; transition-duration: .15s;
}
.lcg .lcg-back:hover { background: #F5F5F5; color: var(--lcg-blue); }
.lcg .lcg-back svg { flex: none; }

/* Campos: 16px (o iOS não dá zoom), 44px, anel por sombra interna. */
.lcg-label { display: block; margin: 0 0 6px; font-size: 14px; font-weight: 600; line-height: 1.3; color: var(--lcg-ink); }
.lcg .lcg-input {
  display: block; width: 100%; height: 44px; margin: 0; padding: 0 12px;
  border: 0; border-radius: var(--lcg-r); background-color: #FFFFFF; color: var(--lcg-ink);
  font: 400 16px/1.2 var(--lcg-font); text-overflow: ellipsis;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .18); outline: none;
  -webkit-appearance: none; appearance: none;
  transition-property: box-shadow; transition-duration: .15s;
}
.lcg .lcg-input::placeholder { color: rgba(0, 0, 0, .4); opacity: 1; text-overflow: ellipsis; }
.lcg .lcg-input:focus { background-color: #FFFFFF; color: var(--lcg-ink); box-shadow: inset 0 0 0 2px var(--lcg-blue); outline: none; }
.lcg .lcg-input[aria-invalid="true"],
.lcg .lcg-input[aria-invalid="true"]:focus { box-shadow: inset 0 0 0 2px var(--lcg-red); }
.lcg .lcg-input--cep { flex: 1 1 auto; min-width: 0; font-variant-numeric: tabular-nums; }
.lcg .lcg-select {
  padding-right: 34px; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23737373' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 10px center; background-size: 16px 16px;
}
.lcg-row { display: flex; gap: 8px; }
.lcg-grid { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 12px; }
.lcg-grid[data-lcg-street-row] { grid-template-columns: minmax(0, 1fr); }
.lcg-field { min-width: 0; }
.lcg-field--wide { grid-column: 1 / -1; }

/* Mensagens (role=status): vazias não ocupam espaço, mas continuam no DOM para o leitor de tela. */
.lcg-msg { margin: 8px 0 0; font-size: 13.5px; line-height: 1.4; color: var(--lcg-ink2); text-wrap: pretty; }
.lcg-msg:empty { margin: 0; }
.lcg-msg.is-err { color: var(--lcg-red); }

/* Vista CEP: alternativas (GPS e "Não sei meu CEP") */
.lcg-alt { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; margin-top: 16px; }
.lcg .lcg-gps {
  display: flex; width: 100%; align-items: center; justify-content: center; gap: 8px;
  min-height: 48px; padding: 0 18px 0 16px; border-radius: var(--lcg-r);   /* lado do ícone 2px menor (óptico) */
  background: var(--lcg-soft); color: var(--lcg-blue); font-size: 15px; font-weight: 600; line-height: 1.2;
  transition-property: background-color, scale; transition-duration: .15s; transition-timing-function: cubic-bezier(.2, 0, 0, 1);
}
.lcg .lcg-gps:hover { background: var(--lcg-soft-h); color: var(--lcg-blue); }
.lcg .lcg-gps[aria-busy="true"] { cursor: progress; }
.lcg-gps-off { display: flex; align-items: center; gap: 8px; min-height: 40px; margin: 0; font-size: 14px; color: var(--lcg-ink2); }
.lcg-gps-off svg { flex: none; opacity: .7; }

/* Troca de ícone pino → aro girando (os dois no DOM; cruzam com opacity/scale/blur). */
.lcg-ico { position: relative; display: inline-flex; flex: none; width: 18px; height: 18px; }
.lcg-ico__a, .lcg-ico__b {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  transition-property: opacity, scale, filter; transition-duration: 300ms; transition-timing-function: cubic-bezier(.2, 0, 0, 1);
}
.lcg-ico__a svg { display: block; translate: 0 -.5px; }   /* o pino pesa em cima: sobe meio pixel */
.lcg-ico__b, [aria-busy="true"] > .lcg-ico > .lcg-ico__a { opacity: 0; scale: .25; filter: blur(4px); }
[aria-busy="true"] > .lcg-ico > .lcg-ico__b { opacity: 1; scale: 1; filter: blur(0); }
.lcg-spin { display: block; width: 16px; height: 16px; border-radius: 50%; border: 2px solid rgba(52, 131, 250, .3); border-top-color: var(--lcg-blue); animation: lcg-spin .7s linear infinite; }
@keyframes lcg-spin { to { rotate: 360deg; } }

/* Endereço achado + número/complemento. O CEP (e o separador antes dele) nunca fica sozinho na linha. */
.lcg-found { margin-top: 16px; }
.lcg-found__addr { margin: 0; font-size: 15px; font-weight: 600; line-height: 1.4; color: var(--lcg-ink); text-wrap: pretty; }
.lcg .lcg-nowrap { white-space: nowrap; font-variant-numeric: tabular-nums; }
.lcg-found__note { margin: 6px 0 0; font-size: 13.5px; line-height: 1.4; color: var(--lcg-ink2); text-wrap: pretty; }
.lcg .lcg-more-toggle { margin-top: 4px; }
/* Seta do expansor: aponta para baixo fechado e para cima aberto (gira com aria-expanded). */
.lcg .lcg-more-toggle::after {
  content: ""; flex: none; width: 7px; height: 7px; margin-left: 8px;
  border: solid currentColor; border-width: 0 1.5px 1.5px 0;
  rotate: 45deg; translate: 0 -2px;
  transition-property: rotate, translate; transition-duration: .15s; transition-timing-function: cubic-bezier(.2, 0, 0, 1);
}
.lcg .lcg-more-toggle[aria-expanded="true"]::after { rotate: -135deg; translate: 0 2px; }
.lcg-more { display: flex; flex-direction: column; gap: 12px; margin-top: 8px; }
.lcg-more .lcg-msg { margin-top: -4px; }
.lcg-more .lcg-msg:empty { margin: -12px 0 0; }
.lcg-found > .lcg-btn--block { margin-top: 16px; }
/* Expansor aberto: "Salvar endereço" é a ação principal e o "Pronto" sai de cena (volta depois de salvar). */
.lcg .lcg-more:not([hidden]) ~ [data-lcg-done] { display: none; }

/* Vista busca */
.lcg .lcg-h3 { margin: 0 0 12px; font: 600 16px/1.3 var(--lcg-font); color: var(--lcg-ink); text-transform: none; letter-spacing: 0; text-wrap: balance; }
.lcg-search { display: flex; flex-direction: column; gap: 12px; }
.lcg-search .lcg-grid { grid-template-columns: 96px minmax(0, 1fr); }
.lcg-res { list-style: none; margin: 8px -8px 0; padding: 0; }
.lcg-res__it { margin: 0; padding: 0; border-bottom: 1px solid var(--lcg-line); }
.lcg-res__it:last-child { border-bottom: 0; }
.lcg .lcg-res__btn {
  display: block; width: 100%; min-height: 48px; padding: 12px 8px; border-radius: var(--lcg-r);
  background: none; color: var(--lcg-ink); font-size: 14.5px; font-weight: 400; line-height: 1.4; text-align: start; text-wrap: pretty;
  transition-property: background-color; transition-duration: .15s;
}
.lcg .lcg-res__btn:hover { background: #F5F5F5; color: var(--lcg-ink); }
.lcg .lcg-res__cep { white-space: nowrap; font-weight: 600; font-variant-numeric: tabular-nums; }

/* Vista lista: rádios nativos em cartões */
.lcg .lcg-list { display: flex; flex-direction: column; gap: 8px; min-width: 0; margin: 0; padding: 0; border: 0; }
.lcg .lcg-opt {
  display: flex; align-items: flex-start; gap: 12px; margin: 0; padding: 14px 16px;
  border-radius: 8px; background: #FFFFFF; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .14);
  font-size: 15px; font-weight: 400; cursor: pointer;
  transition-property: box-shadow, background-color; transition-duration: .15s;
}
.lcg .lcg-opt:hover { background: #FAFAFA; }
.lcg .lcg-opt.is-on { background: #FFFFFF; box-shadow: inset 0 0 0 2px var(--lcg-blue); }
.lcg .lcg-opt__radio {
  flex: none; width: 18px; height: 18px; margin: 1px 0 0; padding: 0; border: 0; border-radius: 50%;
  background: #FFFFFF; box-shadow: inset 0 0 0 1.5px rgba(0, 0, 0, .25); cursor: pointer;
  -webkit-appearance: none; appearance: none;
  transition-property: box-shadow, background-color; transition-duration: .15s;
}
.lcg .lcg-opt__radio:checked { background: var(--lcg-blue); box-shadow: inset 0 0 0 2px var(--lcg-blue), inset 0 0 0 5px #FFFFFF; }
.lcg-opt__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.lcg-opt__l1 { font-size: 15px; font-weight: 600; line-height: 1.35; color: var(--lcg-ink); overflow-wrap: anywhere; }
.lcg-opt__l2 { font-size: 13.5px; line-height: 1.4; color: var(--lcg-ink2); }
.lcg-opt__tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.lcg-tag { display: inline-flex; align-items: center; height: 20px; padding: 0 8px; border-radius: 999px; background: #F5F5F5; color: var(--lcg-ink2); font-size: 12px; font-weight: 500; line-height: 1; }
.lcg-loading { margin: 4px 0 0; font-size: 14px; color: var(--lcg-ink2); }

/* Rodapé: esquecer + linha legal */
.lcg__foot { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; margin-top: 24px; }
.lcg .lcg-forget {
  display: inline-flex; align-items: center; min-height: 40px; padding: 0;
  background: none; color: var(--lcg-ink2); font-size: 13.5px; font-weight: 500; line-height: 1.2;
  text-decoration: underline; text-decoration-color: rgba(0, 0, 0, .25); text-underline-offset: 3px;
}
.lcg .lcg-forget:hover { background: none; color: var(--lcg-ink); text-decoration-color: currentColor; }
.lcg-legal { margin: 0; font-size: 12.5px; line-height: 1.4; color: rgba(0, 0, 0, .5); text-wrap: balance; }

/* ≤560: folha de baixo (bottom sheet), acima do teclado virtual quando há campo focado. */
@media (max-width: 560px) {
  .lcg { align-items: flex-end; padding: 0; }
  .lcg__dialog {
    max-width: none; border-radius: 16px 16px 0 0;
    max-height: 88vh; max-height: 88dvh;
    padding-bottom: env(safe-area-inset-bottom);
    box-shadow: 0 -8px 32px rgba(0, 0, 0, .18);
    translate: 0 24px;
  }
  .lcg--kb .lcg__dialog { max-height: calc(var(--lcg-vh, 88dvh) - 12px); padding-bottom: 0; }
  .lcg__head { padding: 14px 8px 0 20px; }
  .lcg__sub { margin: 2px 20px 0; }
  .lcg__body { padding: 16px 20px 20px; }
  .lcg__actions { flex-direction: column; padding: 12px 20px; }
  .lcg__actions .lcg-btn { flex: none; width: 100%; }
  /* Número com "123 ou S/N" inteiro (83px + 24px de respiro); o resto vai para o complemento ("Apto, sala (opcional)"). */
  .lcg-more .lcg-grid { grid-template-columns: 108px minmax(0, 1fr); }
}

/* Desktop/tablet: o cartão fica ancorado no alto e cresce para baixo (o campo que o cliente usa não pula). */
@media (min-width: 561px) and (min-height: 600px) {
  .lcg { align-items: flex-start; padding-top: max(20px, 10vh); }
  .lcg__dialog {
    max-height: calc(100vh - max(20px, 10vh) - 20px);
    max-height: calc(100dvh - max(20px, 10vh) - 20px);
  }
  .lcg.lcg--kb { padding-top: 20px; }                            /* teclado aberto (tablet): sobe o cartão */
}
/* Paisagem baixa (celular deitado): o espaço vai para o conteúdo e as ações. */
@media (max-height: 480px) and (min-width: 561px) {
  .lcg { padding: 8px; align-items: flex-start; }
  .lcg__dialog { max-height: calc(100vh - 16px); max-height: calc(100dvh - 16px); }
  .lcg--kb .lcg__dialog { max-height: calc(var(--lcg-vh, 100dvh) - 16px); }
  .lcg__sub { display: none; }
  .lcg__head { padding-top: 10px; }
  .lcg .lcg__title { padding-top: 6px; font-size: 18px; }
  .lcg__body { padding-top: 8px; padding-bottom: 14px; }
  .lcg__foot { margin-top: 12px; }
  .lcg__actions { padding-top: 10px; padding-bottom: 10px; }
}

@media (prefers-reduced-motion: reduce) {
  .lcg__scrim, .lcg__dialog, .lcg-ico__a, .lcg-ico__b,
  .lcg .lcg-more-toggle::after,
  .mo-hdr-main .lc-geo-pop,
  .mo-hdr-main__utils .lc-geo-chip .lc-geo-chip__ic { transition: none; }
  .lcg__dialog, .mo-hdr-main .lc-geo-pop { translate: none; }
  .lcg-ico__a, .lcg-ico__b { filter: none; scale: 1; }
  .mo-hdr-main__utils .lc-geo-chip:active .lc-geo-chip__ic,
  .lcg .lcg__x:active, .lcg .lcg-btn:active, .lcg .lcg-gps:active,
  .mo-hdr-main .lc-geo-pop__btn:active, .mo-hdr-main .lc-geo-pop__x:active { scale: none; }
  .mo-hdr-main .lc-geo-pop__btn[aria-busy="true"]::before { animation-duration: 2s; }
}
