/* Estoque: composições de marketing, operação e loja.
   Fundação e identidade permanecem em tokens.css + app.css. */
body { min-height: 100dvh; display: flex; flex-direction: column; }
main { flex: 1; min-width: 0; }
header.shell .desktop-navigation { margin-left: auto; }
.mobile-navigation { display: none; }
.mobile-navigation summary { padding: var(--space-3) var(--space-4); border: 1px solid var(--border-subtle); border-radius: var(--radius-pill); font-weight: 600; }
.hero {
  width: min(100%, calc(var(--container-max) + 2 * var(--page-gutter)));
  padding: var(--section-space) var(--page-gutter);
  margin-inline: auto;
}
.hero > p { max-width: var(--measure); }
.hero > h2 { margin-top: var(--space-8); }
.hero h1 { max-width: var(--measure); }
body[data-surface="marketing"] .hero h1 { font-size: var(--text-display); }
body[data-surface="marketing"] .hero > p { font-size: 1rem; line-height: 1.65; }
body[data-surface="marketing"] .hero:not(.marketing-home) { max-width: calc(1064px + 2 * var(--page-gutter)); }
.marketing-intro { max-width: var(--measure); padding-bottom: var(--space-8); }
.marketing-intro h1 { font-size: var(--text-display); font-weight: 500; line-height: 1.08; }
.marketing-intro .slogan { font-size: var(--text-xs); font-weight: 600; letter-spacing: 0.04em; margin-block: var(--space-5); }
.hero-lead { font-size: 1.125rem; line-height: 1.65; max-width: 42rem; }
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-4); margin-block: var(--space-6) 0; }
.hero-actions > a:last-child { min-height: 44px; display: inline-flex; align-items: center; }
.movements { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-6); list-style: none; margin: 0 0 var(--space-8); padding: var(--space-8) 0; border-block: 1px solid var(--border-subtle); }
.movements li { padding-left: var(--space-4); border-left: 2px solid var(--brand-orange); font-weight: 500; }
.coverage { color: var(--ink-muted); font-size: var(--text-sm); }
.faq { max-width: var(--measure); margin-top: var(--space-8); }
.faq details { border-bottom: 1px solid var(--border-subtle); padding-block: var(--space-4); }
.faq summary { font-weight: 500; }
.faq p { padding-block: var(--space-3); line-height: 1.65; }

/* O app mantém os mesmos destinos, com trilho lateral apenas onde há espaço. */
body[data-surface="app"][data-authenticated="true"] {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  grid-template-rows: 1fr auto;
  background: var(--brand-gray-100);
}
body[data-surface="app"][data-authenticated="true"] header.shell {
  grid-row: 1 / -1;
  align-content: start;
  align-items: flex-start;
  padding: var(--space-6) var(--space-5);
  background: var(--brand-white);
  border-right: 1px solid var(--border-subtle);
}
body[data-surface="app"] header.shell .desktop-navigation { margin: 0; }
body[data-surface="app"][data-authenticated="true"] header.shell nav { flex-direction: column; gap: var(--space-1); width: 100%; }
body[data-surface="app"][data-authenticated="true"] header.shell nav a { padding: var(--space-2) var(--space-3); border-radius: var(--radius-sm); }
body[data-surface="app"][data-authenticated="true"] header.shell nav a[aria-current] { background: var(--brand-orange); }
body[data-surface="app"] .hero { padding-block: var(--space-6); padding-inline: var(--space-6); }
body[data-surface="app"] .hero > form { background: var(--brand-white); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: var(--space-5); margin-block: var(--space-5); }
body[data-surface="app"] .table-scroll { background: var(--brand-white); border-radius: var(--radius-md); }
body[data-surface="app"][data-authenticated="false"] .hero { max-width: calc(640px + 2 * var(--page-gutter)); padding-block: var(--section-space); }
.hero form p { display: flex; flex-wrap: wrap; align-items: end; gap: var(--space-4); }
.hero form label:not(:has(input[type="checkbox"], input[type="radio"])) { display: inline-flex; flex-direction: column; gap: var(--space-2); max-width: 100%; font-weight: 500; }
.hero form label input:not([type="checkbox"]):not([type="radio"]), .hero form label select, .hero form label textarea { width: 100%; }
.hero form textarea { min-height: 7rem; }
.hero[data-operational="identity"] form label { width: 100%; }
.card-metric { min-width: 0; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: var(--space-5); background: var(--brand-white); }
.card-metric h2 { font-size: var(--text-sm); font-weight: 500; margin: 0 0 var(--space-3); }
.card-metric p { margin: 0; font-size: var(--text-title); font-weight: 600; font-variant-numeric: tabular-nums; }
.skeleton { background: var(--brand-gray-100); }
.preview-desktop, .preview-mobile { border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: var(--space-4); margin: var(--space-4) 0; }
.preview-mobile { max-width: 22rem; }
.partner-content { font-family: var(--font-sans); }
.type-preview h1 { font-weight: 700; }
.type-preview h2 { font-weight: 600; }

/* Vitrine: busca e quantidades continuam disponíveis em telas pequenas. */
.search { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; flex: 1 1 60%; }
.search label { margin: 0; font-size: var(--text-sm); }
.search input { flex: 1 1 180px; }
.cart-link { color: var(--brand-blue); display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; }
.store-title { font-weight: 600; }
.promo { flex-basis: 100%; background: var(--brand-beige); color: var(--brand-blue); font-weight: 500; padding: var(--space-3) var(--space-4); margin: 0; border-radius: var(--radius-sm); }
.promo[data-promo-color="navy"] { background: var(--brand-blue); color: var(--brand-white); }
.promo[data-promo-color="sand"] { background: var(--brand-beige); color: var(--brand-blue); }
.combo { font-weight: 700; }
body[data-surface="storefront"] .hero { padding-block: var(--space-8); }
body[data-surface="storefront"] .card { display: flex; flex-direction: column; }
body[data-surface="storefront"] .card form { margin-top: auto; display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: end; }
body[data-surface="storefront"] .card input[type="number"] { width: 6rem; }
body[data-surface="storefront"] .card form label { margin: 0; }
body[data-surface="storefront"] .card .btn { width: 100%; }
#cart-drawer { border-top: 1px solid var(--border-subtle); padding: var(--space-6) max(var(--page-gutter), calc((100% - var(--container-max)) / 2)); }
.cart-inner { max-width: var(--measure); }
.cart-inner ul { padding: 0; list-style: none; }
.cart-inner li { padding-block: var(--space-5); border-bottom: 1px solid var(--border-subtle); }
.cart-inner form { margin-block: var(--space-3); }
.cart-inner .inline { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: end; }
.cart-inner input[type="number"] { width: 6rem; }
.cart-inner [data-cart-total] { font-size: 1.25rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.chat-widget { display: block; background: var(--brand-white); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: var(--space-4) var(--space-5); width: min(calc(100% - 2 * var(--page-gutter)), 40rem); margin: var(--space-5) var(--page-gutter); }
.chat-widget summary { font-weight: 600; color: var(--brand-blue); }
.chat-panel { margin-top: var(--space-3); }
.chat-panel textarea { width: 100%; min-height: 5rem; }
#age-gate { border: 2px solid var(--brand-blue); border-radius: var(--radius-md); background: var(--brand-white); color: var(--brand-blue); padding: var(--space-5); max-width: calc(100% - 2rem); }
#age-gate::backdrop { background: transparent; }
.list { columns: 2; column-gap: var(--space-8); padding-left: var(--space-5); }
.list li { break-inside: avoid; padding-block: var(--space-2); }
.inline { display: inline; }
.empty { padding: var(--space-6); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); grid-column: 1 / -1; }
@media (min-width: 768px) {
  body[data-surface="marketing"] .hero-actions .btn { min-height: 48px; }
}
@media (min-width: 1280px) {
  body[data-surface="marketing"] .hero-actions .btn { min-height: 52px; }
}
@media (max-width: 1279px) {
  header.shell .desktop-navigation { display: none; }
  .mobile-navigation { display: block; margin-left: auto; }
  .mobile-navigation[open] { flex-basis: 100%; }
  .mobile-navigation nav { padding-top: var(--space-4); }
}
@media (min-width: 1024px) {
  body[data-surface="app"][data-authenticated="true"] .desktop-navigation { display: flex; }
  body[data-surface="app"][data-authenticated="true"] .mobile-navigation { display: none; }
}
@media (max-width: 1023px) {
  body[data-surface="app"][data-authenticated="true"] { display: flex; }
  body[data-surface="app"][data-authenticated="true"] header.shell { align-items: center; padding: var(--space-4) var(--page-gutter); }
  body[data-surface="app"][data-authenticated="true"] .mobile-navigation nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body[data-surface="app"] .hero { padding-inline: var(--page-gutter); }
}
@media (max-width: 767px) {
  header.shell { gap: var(--space-3); padding-block: var(--space-4); }
  header.shell .brand-word { flex-basis: calc(100% - 176px); }
  .movements { grid-template-columns: 1fr; gap: var(--space-5); }
  .list { columns: 1; }
  .hero form p { align-items: stretch; }
  .hero form label:not(:has(input[type="checkbox"], input[type="radio"])) { width: 100%; margin-right: 0; }
  .hero .card form label:not(:has(input[type="checkbox"], input[type="radio"])) { width: auto; }
  .hero form button { align-self: end; }
}

/* ==========================================================================
   Camada premium — reconcilia o Estoque com o contrato compartilhado.
   No fim do arquivo para vencer as regras legadas por ordem, sem !important.
   Decisões: docs/ui-premium/CONTRACT.md.
   ========================================================================== */

/* Eyebrow igual à dos outros dois produtos. */
.eyebrow {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--ink-soft);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
}
.eyebrow::before { content: ""; width: var(--space-5); height: 2px; background: var(--brand-orange); flex: none; }

/* --- Cabeçalho e busca da vitrine ---------------------------------------- */
header.shell { box-shadow: var(--shadow-1); }
header.shell .search { display: flex; align-items: end; gap: var(--space-2); flex-wrap: wrap; }
header.shell .search input { border-radius: var(--radius-field); }
.cart-link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-height: var(--control-min-height);
  padding-inline: var(--space-3);
  border-radius: var(--radius-control);
  text-decoration: none;
  font-weight: 600;
  transition: background-color var(--dur-state) var(--ease-standard);
}
.cart-link:hover { background: var(--surface-sunken); }
/* A contagem é um dado, não um enfeite: lida junto do rótulo. */
.cart-count {
  display: inline-grid;
  place-items: center;
  min-width: 22px;
  height: 22px;
  padding-inline: var(--space-1);
  border-radius: var(--radius-pill);
  background: var(--brand-orange);
  color: var(--brand-blue);
  font-size: var(--text-caption);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
body[data-header="blue"] .cart-link:hover { background: color-mix(in srgb, var(--brand-white) 14%, transparent); }

/* --- Superfícies ---------------------------------------------------------- */
.card { border-radius: var(--radius-card); transition: box-shadow var(--dur-state) var(--ease-standard); }
.card:hover { box-shadow: var(--shadow-2); }
.flash, .error { border-radius: var(--radius-control); display: flex; align-items: center; gap: var(--space-2); }
.table-scroll { border-radius: var(--radius-card); }
.promo { border-radius: var(--radius-control); }

/* --- Densidade operacional do painel do lojista --------------------------- */
body[data-density="operational"] h1 { font-size: var(--text-op-title); }
body[data-density="operational"] .cards { gap: var(--space-4); }

/* --- Overlays: diálogo de idade e carrinho -------------------------------- */
#age-gate { padding: var(--space-6); }
#cart-drawer { border-radius: var(--radius-card) var(--radius-card) 0 0; }
.chat-widget { border-radius: var(--radius-card); }
.chat-widget .chat-panel { border-radius: 0 0 var(--radius-card) var(--radius-card); }

/* --- Listas que são grades não carregam marcador ------------------------- */
.cards, .grid { list-style: none; padding-inline-start: 0; }

/* --- Mobile: alvos confortáveis e sem estouro ----------------------------- */
@media (max-width: 767px) {
  header.shell .search { width: 100%; }
  header.shell .search input { flex: 1 1 12rem; }
  header.shell .search .btn { flex: 0 0 auto; }
  .cart-link { margin-left: auto; }
}

/* --- Painel do lojista: indicadores, passos e atalhos --------------------- */
.metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
  gap: var(--space-3);
  margin-block: var(--space-5);
}
.metric {
  padding: var(--space-4) var(--space-5);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
  background: var(--brand-white);
  box-shadow: var(--shadow-1);
}
.metric p { margin: 0 0 var(--space-1); color: var(--ink-muted); font-size: var(--text-caption); font-weight: 600; letter-spacing: var(--tracking-wide); text-transform: uppercase; }
/* Valor não quebra no meio: "R$ 545,26" partido em duas linhas engana. */
.metric strong { display: block; font-size: clamp(1.125rem, 1rem + 0.8vw, 1.5rem); letter-spacing: var(--tracking-tight); font-variant-numeric: tabular-nums; white-space: nowrap; }
.next-steps { margin-block: var(--space-5); }
.next-steps h2 { margin-top: 0; font-size: 1.0625rem; }
.checklist { margin: 0; padding-inline-start: var(--space-5); color: var(--ink-muted); font-size: var(--text-sm); }
.checklist li { margin-block: var(--space-2); }
.quick-links { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-block: var(--space-5); }
.quick-links a {
  display: inline-flex; align-items: center;
  min-height: 40px; padding-inline: var(--space-4);
  border: 1px solid var(--border-strong); border-radius: var(--radius-pill);
  font-size: var(--text-sm); font-weight: 600; text-decoration: none;
  transition: background-color var(--dur-state) var(--ease-standard);
}
.quick-links a:hover { background: var(--surface-sunken); }

/* ==========================================================================
   Estoque — reconstrução de 2026-09-12.
   Mesma gramática de Portfólio e Financeiro (docs/ui-premium/CONTRACT.md):
   grade assimétrica, contraste real de escala, campo de cor da marca e
   entrada coordenada via [data-reveal]. Sem matiz novo — só var(--brand-*).
   ========================================================================== */

/* --- Marketing: herói com âncora ------------------------------------------ */
.hero.marketing-home {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(var(--space-6), 4vw, var(--space-9));
  /* A dobra anterior era só texto com metade da largura vazia. */
  min-height: min(72vh, 660px);
  max-width: none;
  padding-block: var(--density-section);
  padding-inline: max(var(--page-gutter), calc((100% - var(--container-max)) / 2));
}
.marketing-intro { max-width: none; padding-bottom: 0; }
.marketing-intro h1 {
  max-width: 15ch;
  font-weight: 600;
  letter-spacing: var(--tracking-tighter);
}
.marketing-intro .slogan { color: var(--ink-soft); }
.marketing-intro .hero-lead { max-width: 44ch; color: var(--ink-muted); }
.link-quiet {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-height: 44px;
  font-size: var(--text-sm);
  font-weight: 600;
}
.link-quiet svg { transition: transform var(--dur-state) var(--ease-standard); }
.link-quiet:hover svg { transform: translateX(3px); }

/* Painel da operação: superfície grande, raio grande, elevação real. Clara
   porque representa a interface do catálogo, que é clara. */
.ops-preview {
  display: grid;
  gap: var(--space-5);
  min-width: 0;
  padding: clamp(var(--space-5), 2.2vw, var(--space-7));
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-media);
  background: var(--brand-white);
  box-shadow: var(--shadow-3);
}
.ops-head { display: flex; align-items: center; gap: var(--space-3); padding-bottom: var(--space-4); border-bottom: 1px solid var(--border-subtle); }
.ops-head strong { display: block; font-size: var(--text-sm); }
.ops-head span span, .ops-head div span { display: block; margin-top: var(--space-1); color: var(--ink-muted); font-size: var(--text-xs); }
.ops-mark { display: grid; place-items: center; width: 40px; height: 40px; flex: none; border-radius: var(--radius-control); background: var(--brand-blue); color: var(--brand-white); }
.ops-rows { display: grid; margin: 0; padding-inline-start: 0; list-style: none; }
.ops-rows li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding-block: var(--space-3);
  border-bottom: 1px solid var(--border-subtle);
  font-size: var(--text-sm);
}
.ops-rows li:last-child { border-bottom: 0; }
.ops-name { font-weight: 500; }
.ops-name small { display: block; margin-top: 2px; color: var(--ink-muted); font-size: var(--text-xs); font-weight: 400; }
/* Estado por ÍCONE + texto + cor, nunca só cor. */
.ops-stock { display: inline-flex; align-items: center; gap: var(--space-2); white-space: nowrap; font-size: var(--text-xs); font-weight: 600; }
.ops-stock svg { flex: none; }
.ops-stock[data-level="ok"] { color: var(--brand-blue); }
.ops-stock[data-level="low"] { color: color-mix(in srgb, var(--brand-orange) 82%, var(--brand-blue)); }
.ops-stock[data-level="out"] { color: var(--ink-soft); }
.ops-flow {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-3);
  padding: var(--space-4);
  border-radius: var(--radius-control);
  background: var(--surface-sunken);
  font-size: var(--text-xs);
  font-weight: 600;
}
.ops-flow > span { display: inline-flex; align-items: center; gap: var(--space-2); }
.ops-note { display: flex; align-items: flex-start; gap: var(--space-2); margin: 0; color: var(--ink-soft); font-size: var(--text-caption); line-height: 1.45; }
.ops-note svg { flex: none; margin-top: 2px; }
.campaign-note { max-width: var(--container-max); margin-inline: auto; padding-inline: var(--page-gutter); color: var(--ink-muted); font-size: var(--text-sm); }

/* --- Seções do marketing -------------------------------------------------- */
.section {
  max-width: var(--container-max);
  margin-inline: auto;
  padding-block: var(--density-section);
  padding-inline: var(--page-gutter);
}
.section-head-est { margin-bottom: var(--space-7); }
.section-head-est h2 {
  max-width: 20ch;
  font-size: var(--text-title);
  font-weight: 600;
  line-height: var(--leading-title);
  letter-spacing: var(--tracking-tight);
}

/* Cinco movimentos numa grade de 3 colunas deixavam uma célula solta na
   segunda linha. Lista editorial aceita cinco itens sem buraco. */
.movements-section .movements {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
  margin: 0;
  padding: 0;
  border-block: 0;
}
.movements-section .movements li {
  display: grid;
  grid-template-columns: 4rem minmax(0, 1fr);
  align-items: baseline;
  gap: var(--space-5);
  padding: 0;
  padding-block: var(--space-5);
  border-left: 0;
  border-top: 1px solid var(--border-strong);
  font-weight: 400;
}
.movements-section .movements li:last-child { border-bottom: 1px solid var(--border-strong); }
.movements-section .mv-n { color: var(--brand-orange); font-size: var(--text-sm); font-weight: 600; font-variant-numeric: tabular-nums; }
.movements-section .movements p { margin: 0; font-size: 1.0625rem; font-weight: 500; }
.movements-section .coverage { display: flex; align-items: flex-start; gap: var(--space-2); margin-top: var(--space-6); }
.movements-section .coverage svg { flex: none; margin-top: 2px; }

/* --- FAQ: o <details> deixa de parecer elemento quebrado ------------------ */
.faq-section-est {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  gap: clamp(var(--space-6), 5vw, var(--space-9));
  align-items: start;
}
.faq-intro-est h2 {
  font-size: var(--text-title);
  font-weight: 600;
  line-height: var(--leading-title);
  letter-spacing: var(--tracking-tight);
}
.faq-section-est .faq { max-width: none; margin-top: 0; }
.faq-section-est .faq details { padding-block: 0; border-bottom: 1px solid var(--border-strong); }
.faq-section-est .faq summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  min-height: 64px;
  padding-block: var(--space-4);
  list-style: none;
  font-size: 1.0625rem;
  font-weight: 500;
  cursor: pointer;
}
.faq-section-est .faq summary::-webkit-details-marker { display: none; }
.faq-section-est .faq summary svg { flex: none; color: var(--brand-orange); transition: transform var(--dur-overlay) var(--ease-standard); }
/* O "+" vira "×" ao abrir: mesmo glifo Hugeicons, girado. */
.faq-section-est .faq details[open] summary svg { transform: rotate(45deg); }
.faq-section-est .faq details > p { margin: 0; padding-block: 0 var(--space-5); max-width: 62ch; color: var(--ink-muted); line-height: var(--leading-body); }

@media (max-width: 900px) {
  .faq-section-est { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 767px) {
  .hero.marketing-home { grid-template-columns: minmax(0, 1fr); min-height: 0; padding-inline: var(--page-gutter); }
  .marketing-intro h1 { max-width: 100%; }
  .movements-section .movements li { grid-template-columns: 2.5rem minmax(0, 1fr); gap: var(--space-4); }
}

/* --- Vitrine (loja demonstrativa) ----------------------------------------
   Três defeitos reais, todos de apresentação — corrigidos sem tocar no
   markup, porque o e2e assere `.banners` com os títulos e
   `[data-home-section="categorias"]` visível:

   1. Os banners saíam como <ul> com marcador: dezenas de sobras de execuções
      e2e ("Banner A 1789158993000") empilhadas como lista de compras.
   2. As seções configuradas da home renderizam SÓ o <h2> (o template não tem
      corpo para elas): liam como cinco títulos órfãos sobre o vazio. Elas
      vivem dentro de um <nav>, então passam a ler como índice de navegação —
      que é o que de fato são.
   3. O grid repetia 28 cartões idênticos, cada um com um botão laranja: a
      página inteira gritava. A ação do cartão vira secundária; a primária da
      vitrine é a busca.
   -------------------------------------------------------------------------- */

.hero[data-operational="storefront"] > h1 {
  max-width: 18ch;
  font-size: var(--text-title);
  font-weight: 600;
  line-height: var(--leading-title);
  letter-spacing: var(--tracking-tight);
}

/* 1. Banners como fichas, não lista com marcador. */
.banners {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin: var(--space-5) 0 0;
  padding-inline-start: 0;
  list-style: none;
}
.banners li { min-width: 0; }
.banners a {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  max-width: 22ch;
  padding: var(--space-2) var(--space-4);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-pill);
  background: var(--brand-white);
  color: var(--brand-blue);
  font-size: var(--text-xs);
  font-weight: 500;
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: border-color var(--dur-state) var(--ease-standard), background-color var(--dur-state) var(--ease-standard);
}
.banners a:hover { border-color: var(--brand-orange); background: var(--accent-soft); }

/* 2. Índice de seções da home: navegação, não títulos órfãos. */
nav[data-home-sections] {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-top: var(--space-5);
  padding-top: var(--space-5);
  border-top: 1px solid var(--border-subtle);
}
nav[data-home-sections] [data-home-section] { min-width: 0; }
nav[data-home-sections] [data-home-section] h2 {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  margin: 0;
  padding: var(--space-2) var(--space-4);
  border-radius: var(--radius-pill);
  background: var(--surface-sunken);
  color: var(--ink-muted);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
}

/* 3. Cartão de produto: hierarquia dentro do cartão e ação secundária. */
.hero[data-operational="storefront"] .grid > .card .promo-price { color: var(--brand-blue); font-weight: 600; }
.hero[data-operational="storefront"] .grid > .card .sold-out {
  align-self: flex-start;
  padding: 2px var(--space-2);
  border-radius: var(--radius-badge);
  background: var(--surface-sunken);
  color: var(--ink-soft);
  font-weight: 600;
}
/* Ação do cartão é secundária: a primária da vitrine é "Buscar". */
body[data-surface="storefront"] .product-card form .btn {
  border: 1px solid var(--brand-blue);
  background: var(--brand-white);
  color: var(--brand-blue);
  font-size: var(--text-xs);
  font-weight: 600;
}
body[data-surface="storefront"] .product-card form .btn:hover {
  background: var(--brand-blue);
  color: var(--brand-white);
}

/* --- App do lojista: ajustes operacionais --------------------------------
   O painel já vinha em forma razoável; estes são defeitos medidos, não
   redesenho. O agrupamento dos 18 itens da navegação NÃO está aqui: `Nav` é
   []Link plano montado por navFor() em render.go, um god node do owner
   `foundation`. Ver artifacts/change-requests/brand-ui.md.
   -------------------------------------------------------------------------- */

/* 1. H1 em escala de display (44px) num painel operacional. A tarefa aqui é
      trabalhar, não admirar o título. */
body[data-surface="app"][data-authenticated="true"] .hero > h1 {
  max-width: none;
  font-size: var(--text-op-title);
  font-weight: 600;
  line-height: var(--leading-title);
  letter-spacing: var(--tracking-tight);
}

/* 2. Sete métricas numa grade fixa deixavam a sétima sozinha na segunda
      linha. auto-fit distribui sem órfão em qualquer contagem.
      As classes reais são .metrics/.metric — `.card-metric`, que existe mais
      acima neste arquivo, não é usada nesta tela. */
/* Especificidade maior de propósito: existe uma `.metrics` anterior neste
   mesmo arquivo (linha ~216) com minmax(10rem) que dava 6 colunas e deixava a
   sétima métrica sozinha na segunda linha. 13.5rem dá 4 colunas: 7 itens viram
   4+3, que lê como composição em vez de quebra. */
body[data-surface="app"] .metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(13.5rem, 1fr));
  gap: var(--space-4);
  margin: 0;
  padding-inline-start: 0;
  list-style: none;
}
/* A tipografia do cartão (linhas ~229-231) já estava correta: rótulo em
   caption maiúsculo e valor com `white-space: nowrap` para o preço não
   partir. Eu tinha duplicado essas regras aqui e o rótulo foi a 32px,
   quebrando "ESGOTADOS" no meio da palavra. Duplicação removida — só o que
   de fato muda fica neste bloco. */
.metric { min-width: 0; }
/* A primeira métrica ancora a leitura, como no Financeiro e no Portfólio. */
.metrics > .metric:first-child {
  background: var(--brand-blue);
  border-color: transparent;
  color: var(--brand-white);
}
.metrics > .metric:first-child > p { color: var(--brand-beige); }

/* 3. Navegação lateral: marcador de rota atual em vez de bloco laranja
      cheio, que competia com as ações da página. */
body[data-surface="app"][data-authenticated="true"] header.shell nav a {
  position: relative;
  min-height: 40px;
  display: flex;
  align-items: center;
  border-radius: var(--radius-control);
  font-size: var(--text-sm);
  transition: background-color var(--dur-state) var(--ease-standard);
}
body[data-surface="app"][data-authenticated="true"] header.shell nav a:hover {
  background: color-mix(in srgb, var(--brand-white) 10%, transparent);
}
body[data-surface="app"][data-authenticated="true"] header.shell nav a[aria-current] {
  background: color-mix(in srgb, var(--brand-white) 14%, transparent);
  font-weight: 600;
}
body[data-surface="app"][data-authenticated="true"] header.shell nav a[aria-current]::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 3px;
  height: 20px;
  margin-top: -10px;
  border-radius: var(--radius-pill);
  background: var(--brand-orange);
  transform: scaleY(0);
  transform-origin: center;
  animation: nav-mark var(--dur-state) var(--ease-standard) forwards;
}
@keyframes nav-mark { to { transform: scaleY(1); } }
@media (prefers-reduced-motion: reduce) {
  body[data-surface="app"][data-authenticated="true"] header.shell nav a[aria-current]::before { animation: none; transform: scaleY(1); }
}

/* --- Marketing: páginas de conteúdo e catálogo ----------------------------
   /recursos, /blog, /segmento, /ferramentas, /planos, /lojas,
   /catalogo-digital, /integracoes e /sobre compartilham o mesmo template
   (`page.html`: h1 + lead + HTML gerado no Go).

   Defeitos medidos antes:
   - h1 em 80px (escala display) sobre conteúdo de índice;
   - `ul.list` com marcador e links sublinhados — aparência de página crua;
   - conteúdo solto numa faixa de 1440px, com metade direita vazia.
   -------------------------------------------------------------------------- */

/* O herói da home tem composição própria; estas páginas, não. */
body[data-surface="marketing"] .hero:not(.marketing-home) {
  max-width: var(--container-max);
  margin-inline: auto;
  padding-block: var(--density-section);
  padding-inline: var(--page-gutter);
}
body[data-surface="marketing"] .hero:not(.marketing-home) > h1 {
  max-width: 20ch;
  font-size: var(--text-title);
  font-weight: 600;
  line-height: var(--leading-title);
  letter-spacing: var(--tracking-tight);
}
body[data-surface="marketing"] .hero:not(.marketing-home) > p {
  max-width: 62ch;
  color: var(--ink-muted);
  font-size: var(--text-lead);
  line-height: var(--leading-body);
}

/* Índice de catálogo: fichas navegáveis, não lista com marcador. */
.hero ul.list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
  gap: var(--space-3);
  margin: var(--space-6) 0 0;
  padding-inline-start: 0;
  list-style: none;
}
.hero ul.list > li { min-width: 0; }
.hero ul.list > li > a {
  display: flex;
  align-items: center;
  min-height: 56px;
  height: 100%;
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-control);
  background: var(--brand-white);
  color: var(--brand-blue);
  font-size: var(--text-sm);
  font-weight: 500;
  line-height: 1.35;
  text-decoration: none;
  transition: border-color var(--dur-state) var(--ease-standard),
              box-shadow var(--dur-state) var(--ease-standard),
              transform var(--dur-state) var(--ease-standard);
}
.hero ul.list > li > a:hover {
  border-color: var(--brand-orange);
  box-shadow: var(--shadow-2);
  transform: translateY(-1px);
}
/* Contagem do catálogo e linha de spec: metadado, não corpo de texto. */
.hero p.meta {
  margin: var(--space-3) 0 0;
  color: var(--ink-soft);
  font-size: var(--text-caption);
}

/* O menu móvel usava o marcador nativo do <details> — o triângulo do
   navegador aparecia ao lado de "Menu" em toda página do produto. */
.mobile-navigation > summary { list-style: none; cursor: pointer; }
.mobile-navigation > summary::-webkit-details-marker { display: none; }

/* --- App do lojista: listas de registro ----------------------------------
   /customers, /suppliers, /products e o painel renderiam
   `<ul><li><a>Nome</a> — telefone — cidade</li></ul>`: lista com marcador do
   navegador, com campos separados por travessão. Vira lista de registros
   dentro de um painel, sem tocar no markup (é gerado em Go).
   -------------------------------------------------------------------------- */
body[data-surface="app"][data-authenticated="true"] .hero > div > ul,
body[data-surface="app"][data-authenticated="true"] .hero > ul {
  display: grid;
  margin-block: var(--space-5);
  padding: var(--space-2) var(--space-5);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
  background: var(--brand-white);
  box-shadow: var(--shadow-1);
  list-style: none;
}
body[data-surface="app"][data-authenticated="true"] .hero > div > ul > li,
body[data-surface="app"][data-authenticated="true"] .hero > ul > li {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2) var(--space-3);
  min-height: 52px;
  padding-block: var(--space-3);
  border-bottom: 1px solid var(--border-subtle);
  color: var(--ink-muted);
  font-size: var(--text-sm);
}
body[data-surface="app"][data-authenticated="true"] .hero > div > ul > li:last-child,
body[data-surface="app"][data-authenticated="true"] .hero > ul > li:last-child { border-bottom: 0; }
body[data-surface="app"][data-authenticated="true"] .hero > div > ul > li > a,
body[data-surface="app"][data-authenticated="true"] .hero > ul > li > a {
  color: var(--brand-blue);
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
}
body[data-surface="app"][data-authenticated="true"] .hero > div > ul > li > a:hover,
body[data-surface="app"][data-authenticated="true"] .hero > ul > li > a:hover {
  text-decoration: underline;
  text-underline-offset: 0.25em;
}

/* A linha `spec … · módulo … · tenant …` é diagnóstico de desenvolvimento e
   aparece em 8 telas do painel. Removê-la exige `generic.go`, god node do
   owner `foundation` — ver CR-3 em artifacts/change-requests/brand-ui.md.
   Até lá, deixa de competir com o conteúdo: nota de rodapé discreta. */
body[data-surface="app"] .hero p.meta {
  margin-top: var(--space-6);
  padding-top: var(--space-3);
  border-top: 1px solid var(--border-subtle);
  color: var(--ink-soft);
  font-size: var(--text-caption);
  font-variant-numeric: tabular-nums;
}

/* ==========================================================================
   Vitrine pública — loja de materiais. Só body[data-surface="storefront"].
   Tokens de tokens.css; sem hex cru. Painel do lojista não entra aqui.
   Diagnóstico 2026-09-16: em 390px a busca tinha largura 0 (logo+ferramentas
   comiam a linha). Busca vai para a segunda faixa. Hero em dobra 60/40.
   ========================================================================== */

html { scroll-padding-top: 5.5rem; }

.vh {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

body[data-surface="storefront"] header.shell {
  position: static;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  padding: 0;
  background: var(--brand-white);
  box-shadow: none;
}
body[data-surface="storefront"] .store-chrome {
  position: sticky;
  top: 0;
  z-index: 40;
  background: var(--brand-white);
  box-shadow: var(--shadow-1);
}
body[data-surface="storefront"][data-header="blue"] .store-chrome {
  background: var(--brand-blue);
}
body[data-surface="storefront"][data-header="blue"] header.shell {
  background: var(--brand-blue);
}
body[data-surface="storefront"] .promo {
  flex-basis: auto;
  margin: 0;
  border-radius: 0;
  text-align: center;
  font-size: var(--text-sm);
}
body[data-surface="storefront"] {
  background: var(--surface-warm);
}
body[data-surface="storefront"] .store-bar {
  display: grid;
  grid-template-columns: auto minmax(12rem, 1fr) auto;
  grid-template-areas: "brand search tools";
  align-items: center;
  gap: var(--space-3) var(--space-5);
  width: 100%;
  padding: var(--space-3) max(var(--page-gutter), calc((100% - var(--container-editorial)) / 2));
}
body[data-surface="storefront"] .brand-link { grid-area: brand; }
body[data-surface="storefront"] .search { grid-area: search; }
body[data-surface="storefront"] .store-tools { grid-area: tools; }
body[data-surface="storefront"] .brand-link {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2) var(--space-3);
  text-decoration: none;
  color: inherit;
  min-height: 44px;
}
body[data-surface="storefront"] .brand-link .logo { width: 132px; }
body[data-surface="storefront"] .brand-link .brand-word { display: none; }
body[data-surface="storefront"] .store-title {
  font-size: var(--text-caption);
  font-weight: 600;
  max-width: 18ch;
}
body[data-surface="storefront"] .store-tools {
  display: flex;
  align-items: center;
  gap: var(--space-1);
}
body[data-surface="storefront"] .tool-link,
body[data-surface="storefront"] .cart-link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-height: var(--control-min-height);
  padding-inline: var(--space-3);
  border-radius: var(--radius-control);
  text-decoration: none;
  font-weight: 600;
  font-size: var(--text-sm);
  color: inherit;
  transition: background-color var(--dur-state) var(--ease-standard);
}
body[data-surface="storefront"] .tool-link:hover,
body[data-surface="storefront"] .cart-link:hover { background: var(--surface-sunken); }
body[data-surface="storefront"][data-header="blue"] .tool-link:hover,
body[data-surface="storefront"][data-header="blue"] .cart-link:hover {
  background: color-mix(in srgb, var(--brand-white) 14%, transparent);
}
body[data-surface="storefront"] .search {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: stretch;
  gap: var(--space-2);
  min-width: 0;
  width: 100%;
}
body[data-surface="storefront"] .search input {
  width: 100%;
  min-width: 0;
  min-height: 48px;
}
body[data-surface="storefront"] .search .btn {
  min-height: 48px;
  padding-inline: var(--space-4);
}
body[data-surface="storefront"] .desktop-navigation {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-4);
  margin: 0;
  padding: 0 max(var(--page-gutter), calc((100% - var(--container-editorial)) / 2)) var(--space-2);
  border-top: 1px solid var(--border-subtle);
}
body[data-surface="storefront"] .desktop-navigation a[aria-current="page"] {
  border-bottom: 0;
}

/* Menu móvel: gaveta à direita, sem duplicar a barra. */
body[data-surface="storefront"] .mobile-navigation { display: none; }
body[data-surface="storefront"] .mobile-navigation > summary {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-height: var(--control-min-height);
  padding: 0 var(--space-3);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-control);
  font-weight: 600;
}
body[data-surface="storefront"] .nav-drawer {
  position: fixed;
  inset: 0 0 0 auto;
  z-index: 60;
  width: min(22rem, 100vw);
  padding: var(--space-5);
  background: var(--brand-white);
  color: var(--brand-blue);
  box-shadow: var(--shadow-3);
  overflow: auto;
  transform: translateX(100%);
  visibility: hidden;
  transition: transform var(--dur-overlay) var(--ease-standard), visibility var(--dur-overlay);
}
body[data-surface="storefront"] .mobile-navigation[open] .nav-drawer {
  transform: translateX(0);
  visibility: visible;
}
body[data-surface="storefront"] .nav-drawer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 0 0 var(--space-5);
  font-weight: 600;
}
body[data-surface="storefront"] .nav-drawer nav {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
body[data-surface="storefront"] .nav-drawer nav a {
  min-height: 48px;
  padding: var(--space-3);
  border-radius: var(--radius-control);
  border-bottom: 0;
}
body[data-surface="storefront"] .nav-drawer nav a[aria-current="page"] {
  background: var(--selected-fill);
  color: var(--selected-ink);
}
@media (hover: hover) {
  body[data-surface="storefront"] .nav-drawer nav a:hover {
    background: var(--hover-fill);
    color: var(--brand-blue);
  }
  body[data-surface="storefront"] .nav-drawer nav a[aria-current="page"]:hover {
    background: var(--selected-fill);
    color: var(--selected-ink);
  }
}

@media (max-width: 1279px) {
  body[data-surface="storefront"] .desktop-navigation { display: none; }
  body[data-surface="storefront"] .mobile-navigation { display: block; }
}
@media (max-width: 900px) {
  body[data-surface="storefront"] .store-bar {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "brand tools"
      "search search";
    gap: var(--space-2) var(--space-3);
    padding-block: var(--space-2);
  }
  body[data-surface="storefront"] .search .btn {
    width: 48px;
    padding: 0;
  }
  body[data-surface="storefront"] .search-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  body[data-surface="storefront"] .store-title { display: none; }
  body[data-surface="storefront"] .promo { padding-block: var(--space-2); font-size: var(--text-xs); }
  body[data-surface="storefront"] .tool-link span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  body[data-surface="storefront"] .cart-link span:not(.cart-count) { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  body[data-surface="storefront"] .mobile-navigation > summary span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  body[data-surface="storefront"] .tool-link,
  body[data-surface="storefront"] .cart-link,
  body[data-surface="storefront"] .mobile-navigation > summary {
    width: 44px;
    justify-content: center;
    padding-inline: 0;
  }
}

/* Hero da loja: dobra 60/40, categorias reais no painel, sem 100vh. */
body[data-surface="storefront"] .hero.store-hero {
  max-width: var(--container-editorial);
  margin-inline: auto;
  padding-block: var(--space-7);
}
body[data-surface="storefront"] .store-fold {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(16rem, 0.8fr);
  gap: var(--space-6) var(--space-8);
  align-items: start;
  margin-bottom: var(--space-7);
}
body[data-surface="storefront"] .store-intro {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
}
body[data-surface="storefront"] .store-intro h1 {
  max-width: 14ch;
  font-size: clamp(2.125rem, 1.7rem + 1.8vw, 3.5rem);
  font-weight: 600;
  letter-spacing: var(--tracking-tighter);
}
body[data-surface="storefront"] .store-intro .lead {
  max-width: 42ch;
  font-size: var(--text-lead);
  color: var(--ink-muted);
}
body[data-surface="storefront"] .store-cats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-2);
  margin: 0;
  padding: var(--space-5);
  border-radius: var(--radius-media);
  background: var(--brand-blue);
  color: var(--brand-white);
  align-content: start;
}
body[data-surface="storefront"] .store-cat {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  min-height: 52px;
  padding: var(--space-3) var(--space-4);
  border: 1px solid color-mix(in srgb, var(--brand-white) 18%, transparent);
  border-radius: var(--radius-control);
  background: color-mix(in srgb, var(--brand-white) 8%, transparent);
  color: var(--brand-white);
  text-decoration: none;
  font-weight: 600;
  transition: background-color var(--dur-state) var(--ease-standard), border-color var(--dur-state) var(--ease-standard);
}
body[data-surface="storefront"] .store-cat:hover {
  background: color-mix(in srgb, var(--brand-white) 16%, transparent);
  border-color: var(--brand-orange);
  transform: none;
}
body[data-surface="storefront"] .store-cat-ico {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: var(--radius-control);
  background: var(--brand-orange);
  color: var(--brand-blue);
}
body[data-surface="storefront"] .store-vitrine-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-3);
  margin: 0 0 var(--space-4);
}
body[data-surface="storefront"] .store-vitrine-head h2 {
  margin: 0;
  font-size: var(--text-section);
}
body[data-surface="storefront"] .catalog-head h1 { max-width: 20ch; }

body[data-surface="storefront"] .catalog-toolbar {
  margin: var(--space-5) 0 var(--space-3);
  padding: var(--space-4);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
  background: var(--brand-white);
}
body[data-surface="storefront"] .catalog-toolbar p {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: end;
  margin: 0;
}
body[data-surface="storefront"] .catalog-toolbar label {
  display: grid;
  gap: var(--space-2);
  flex: 1 1 12rem;
  min-width: 0;
  margin: 0;
}
body[data-surface="storefront"] .catalog-filter {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin: var(--space-4) 0;
}
body[data-surface="storefront"] .catalog-filter a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 var(--space-4);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-pill);
  background: var(--brand-white);
  color: var(--brand-blue);
  text-decoration: none;
  font-size: var(--text-sm);
  font-weight: 600;
  white-space: nowrap;
  transition: background-color var(--dur-state) var(--ease-standard), color var(--dur-state) var(--ease-standard), border-color var(--dur-state) var(--ease-standard);
}
@media (hover: hover) {
  body[data-surface="storefront"] .catalog-filter a:hover {
    background: var(--hover-fill);
    color: var(--brand-blue);
  }
  body[data-surface="storefront"] .catalog-filter a[aria-current="page"]:hover {
    background: var(--selected-fill);
    color: var(--selected-ink);
    border-color: var(--selected-fill);
  }
}
body[data-surface="storefront"] .catalog-filter a[aria-current="page"] {
  background: var(--selected-fill);
  color: var(--selected-ink);
  border-color: var(--selected-fill);
}
body[data-surface="storefront"] .catalog-filter a[aria-disabled="true"] {
  color: var(--control-disabled-ink);
  background: var(--surface-sunken);
  cursor: not-allowed;
}
body[data-surface="storefront"] .catalog-filter a:focus-visible,
body[data-surface="storefront"] .desktop-navigation a:focus-visible,
body[data-surface="storefront"] .nav-drawer nav a:focus-visible {
  outline: var(--focus-width) solid var(--focus-color);
  outline-offset: var(--focus-offset);
}
body[data-surface="storefront"] .catalog-filter a[aria-current="page"]:focus-visible,
body[data-surface="storefront"] .desktop-navigation a[aria-current="page"]:focus-visible,
body[data-surface="storefront"] .nav-drawer nav a[aria-current="page"]:focus-visible {
  outline-color: var(--brand-orange);
}
body[data-surface="storefront"] .active-filters {
  color: var(--ink-muted);
  font-size: var(--text-sm);
}

/* Cartão de produto: mídia, preço, unidade, ação alinhada. */
body[data-surface="storefront"] .grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
  gap: var(--space-5);
}
body[data-surface="storefront"] .product-card {
  display: flex;
  flex-direction: column;
  padding: 0;
  overflow: hidden;
  gap: 0;
  background: var(--brand-white);
  transition: border-color var(--dur-state) var(--ease-standard), box-shadow var(--dur-state) var(--ease-standard), transform var(--dur-state) var(--ease-standard);
}
body[data-surface="storefront"] .product-card:hover {
  border-color: var(--border-strong);
  box-shadow: var(--shadow-2);
  transform: translateY(-2px);
}
body[data-surface="storefront"] .product-media {
  position: relative;
  display: block;
  aspect-ratio: 4 / 3;
  background: var(--surface-sunken);
  overflow: hidden;
}
body[data-surface="storefront"] .product-media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
body[data-surface="storefront"] .product-fallback {
  position: absolute;
  inset: 0;
  border-radius: 0;
}
body[data-surface="storefront"] .product-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: var(--space-2);
  padding: var(--space-4);
}
body[data-surface="storefront"] .product-card h2,
body[data-surface="storefront"] .hero[data-operational="storefront"] .grid > .card h2 {
  margin: 0;
  font-size: 1.0625rem;
}
body[data-surface="storefront"] .product-card h2 a { text-decoration: none; }
body[data-surface="storefront"] .product-card .product-meta,
body[data-surface="storefront"] .product-card .stock-ok,
body[data-surface="storefront"] .product-card .sold-out,
body[data-surface="storefront"] .product-card .promo-price,
body[data-surface="storefront"] .product-card > p {
  margin: 0;
}
body[data-surface="storefront"] .product-fiche { margin-top: auto; font-size: var(--text-sm); }
body[data-surface="storefront"] .product-price {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2);
  color: var(--brand-blue);
  font-variant-numeric: tabular-nums;
}
body[data-surface="storefront"] .price-now {
  font-size: 1.25rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
body[data-surface="storefront"] .price-unit,
body[data-surface="storefront"] .price-was {
  color: var(--ink-muted);
  font-size: var(--text-sm);
}
body[data-surface="storefront"] .price-was { text-decoration: line-through; }
body[data-surface="storefront"] .stock-ok {
  color: var(--ink-muted);
  font-size: var(--text-xs);
}
body[data-surface="storefront"] .product-card form {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: var(--space-2);
  margin: var(--space-2) 0 0;
  padding-top: var(--space-3);
  border-top: 1px solid var(--border-subtle);
}
body[data-surface="storefront"] .product-card form label {
  display: grid;
  gap: 2px;
  width: 4.75rem;
  font-size: var(--text-caption);
  color: var(--ink-muted);
}
body[data-surface="storefront"] .product-card form input[type="number"] {
  width: 100%;
  min-height: 44px;
}
body[data-surface="storefront"] .product-card form .btn {
  flex: 1;
  min-height: 44px;
}

/* Ficha: mídia 58 / compra 42 */
body[data-surface="storefront"] .pdp-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(18rem, 0.85fr);
  gap: var(--space-7);
  align-items: start;
}
body[data-surface="storefront"] .pdp-media {
  border-radius: var(--radius-media);
  overflow: hidden;
  background: var(--brand-white);
  border: 1px solid var(--border-subtle);
}
body[data-surface="storefront"] .pdp-media img,
body[data-surface="storefront"] .pdp-media .media {
  width: 100%;
  border-radius: var(--radius-media);
  display: block;
}
body[data-surface="storefront"] .pdp-buy {
  padding: var(--space-6);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
  background: var(--brand-white);
  box-shadow: var(--shadow-1);
}
body[data-surface="storefront"] .pdp-buy h1 { font-size: var(--text-section); }
body[data-surface="storefront"] .pdp-price { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-3); margin-block: var(--space-3); }
body[data-surface="storefront"] .pdp-buy form {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: end;
  margin-top: var(--space-5);
}
body[data-surface="storefront"] .pdp-buy form label {
  display: grid;
  gap: var(--space-1);
  font-weight: 600;
  font-size: var(--text-sm);
}
body[data-surface="storefront"] .pdp-buy form input[type="number"] {
  width: 7rem;
  min-height: 48px;
}
body[data-surface="storefront"] .pdp-buy form .btn-primary { min-height: 48px; flex: 1; }
body[data-surface="storefront"] .pdp-ship {
  margin: var(--space-4) 0 0;
  color: var(--ink-muted);
  font-size: var(--text-sm);
}
body[data-surface="storefront"] .spec-list {
  display: grid;
  gap: var(--space-3);
  margin: 0 0 var(--space-5);
}
body[data-surface="storefront"] .spec-list > div {
  display: grid;
  grid-template-columns: minmax(7rem, 12rem) minmax(0, 1fr);
  gap: var(--space-3);
  padding-block: var(--space-3);
  border-bottom: 1px solid var(--border-subtle);
}
body[data-surface="storefront"] .spec-list dt { margin: 0; color: var(--ink-muted); font-weight: 600; font-size: var(--text-sm); }
body[data-surface="storefront"] .spec-list dd { margin: 0; }
body[data-surface="storefront"] .kit-parts {
  margin: 0 0 var(--space-5);
  padding: 0;
  list-style: none;
}
body[data-surface="storefront"] .kit-parts li {
  display: flex;
  justify-content: space-between;
  gap: var(--space-3);
  min-height: 44px;
  align-items: center;
  padding-block: var(--space-2);
  border-bottom: 1px solid var(--border-subtle);
}
body[data-surface="storefront"] .pdp-specs {
  margin-top: var(--space-7);
  padding-top: var(--space-6);
  border-top: 1px solid var(--border-subtle);
}
body[data-surface="storefront"] .crumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-5);
  font-size: var(--text-sm);
  color: var(--ink-muted);
}
body[data-surface="storefront"] .crumbs { color: var(--ink-muted); }
body[data-surface="storefront"] .reviews {
  display: grid;
  gap: var(--space-3);
  margin-top: var(--space-6);
}
body[data-surface="storefront"] .review {
  padding: var(--space-4);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
  background: var(--surface-raised);
}
body[data-surface="storefront"] .review-form {
  margin-top: var(--space-6);
  padding: var(--space-5);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
}

/* Carrinho e checkout */
body[data-surface="storefront"] .cart-page,
body[data-surface="storefront"] .checkout-page,
body[data-surface="storefront"] .order-page,
body[data-surface="storefront"] .auth-card {
  max-width: var(--container-editorial);
}
body[data-surface="storefront"] .cart-empty {
  display: grid;
  justify-items: start;
  gap: var(--space-4);
  max-width: 28rem;
  padding: var(--space-7);
  border-radius: var(--radius-card);
  background: var(--brand-white);
  border: 1px solid var(--border-subtle);
}
body[data-surface="storefront"] .cart-empty-ico {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: var(--radius-control);
  background: var(--accent-soft);
  color: var(--brand-blue);
}
body[data-surface="storefront"] .cart-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(16rem, 0.7fr);
  gap: var(--space-6);
  align-items: start;
}
body[data-surface="storefront"] .cart-lines {
  margin: 0;
  padding: 0;
  list-style: none;
  background: var(--brand-white);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
}
body[data-surface="storefront"] .cart-inner li {
  display: grid;
  gap: var(--space-2);
  padding: var(--space-5);
  border-bottom: 1px solid var(--border-subtle);
}
body[data-surface="storefront"] .cart-inner li:last-child { border-bottom: 0; }
body[data-surface="storefront"] .cart-line-name { margin: 0; font-weight: 600; }
body[data-surface="storefront"] .cart-line-meta { margin: 0; color: var(--ink-muted); font-variant-numeric: tabular-nums; }
body[data-surface="storefront"] .cart-line-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: end;
}
body[data-surface="storefront"] .cart-summary {
  display: grid;
  gap: var(--space-3);
  padding: var(--space-5);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
  background: var(--brand-white);
  box-shadow: var(--shadow-1);
}
body[data-surface="storefront"] .cart-summary [data-cart-total] {
  font-size: 1.25rem;
  font-weight: 700;
}
body[data-surface="storefront"] .cart-summary .field,
body[data-surface="storefront"] .checkout-page .field {
  display: grid;
  gap: var(--space-1);
}
body[data-surface="storefront"] .cart-checkout-links {
  display: grid;
  gap: var(--space-3);
}
body[data-surface="storefront"] .cart-checkout-links .btn { justify-content: center; }
body[data-surface="storefront"] #cart-drawer .cart-layout { grid-template-columns: minmax(0, 1fr); }
body[data-surface="storefront"] .choice-set {
  display: grid;
  gap: var(--space-2);
  margin: var(--space-5) 0;
  border: 0;
  padding: 0;
}
body[data-surface="storefront"] .choice-set legend { font-weight: 600; margin-bottom: var(--space-2); }
body[data-surface="storefront"] .checkout-page form {
  max-width: 36rem;
  padding: var(--space-6);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
  background: var(--brand-white);
}
body[data-surface="storefront"] .steps {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  padding: 0;
  list-style: none;
  counter-reset: step;
}
body[data-surface="storefront"] .steps li {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-height: 40px;
  padding: 0 var(--space-4);
  border-radius: var(--radius-pill);
  background: var(--surface-sunken);
  font-size: var(--text-sm);
  font-weight: 500;
}
body[data-surface="storefront"] .steps li.current {
  background: var(--brand-blue);
  color: var(--brand-white);
}

/* Auth */
body[data-surface="storefront"] .auth-card {
  max-width: 28rem;
  margin-inline: auto;
  padding: var(--space-7);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
  background: var(--brand-white);
  box-shadow: var(--shadow-1);
}
body[data-surface="storefront"] .password-field {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
body[data-surface="storefront"] .password-field input { flex: 1; }
body[data-surface="storefront"] .password-field .btn-quiet {
  flex: none;
  width: 44px;
  padding: 0;
}
body[data-surface="storefront"] input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="file"]),
body[data-surface="storefront"] select,
body[data-surface="storefront"] .ui-trigger {
  min-height: 48px;
  font-size: 1rem;
}
body[data-surface="storefront"] textarea { font-size: 1rem; }

/* Institucionais */
body[data-surface="storefront"] .page-editorial {
  max-width: var(--measure);
  margin-inline: auto;
}
body[data-surface="storefront"] .page-editorial h1 { font-size: var(--text-title); }
body[data-surface="storefront"] .page-body {
  max-width: var(--measure-narrow);
  line-height: var(--leading-body);
  padding: var(--space-6);
  border-radius: var(--radius-card);
  background: var(--brand-white);
  border: 1px solid var(--border-subtle);
}
body[data-surface="storefront"] [data-account="guest"] {
  padding: var(--space-6);
  border-radius: var(--radius-card);
  background: var(--brand-white);
  box-shadow: var(--shadow-1);
}
body[data-surface="storefront"] main {
  padding-bottom: max(var(--space-8), calc(4.5rem + env(safe-area-inset-bottom)));
}

/* Rodapé da loja */
body[data-surface="storefront"] footer.shell {
  padding-block: var(--space-7);
}
body[data-surface="storefront"] .footer-store {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) repeat(2, minmax(0, 1fr));
  gap: var(--space-6);
  align-items: start;
}
body[data-surface="storefront"] .footer-brand .logo { width: 160px; height: auto; margin-bottom: var(--space-3); }
body[data-surface="storefront"] .footer-store nav {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-1);
  margin: 0;
}

/* Gaveta do carrinho: fora do fluxo até uma adição HTMX. */
body[data-surface="storefront"] #cart-drawer {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 70;
  width: min(26rem, 100vw);
  height: 100dvh;
  margin: 0;
  padding: var(--space-5);
  overflow: auto;
  background: var(--brand-white);
  color: var(--brand-blue);
  border: 0;
  border-radius: 0;
  box-shadow: var(--shadow-3);
  transform: translateX(100%);
  visibility: hidden;
  transition: transform var(--dur-overlay) var(--ease-standard), visibility var(--dur-overlay);
}
body[data-surface="storefront"] #cart-drawer.is-open {
  transform: translateX(0);
  visibility: visible;
}
body[data-surface="storefront"] #cart-drawer .drawer-close {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  margin-left: auto;
  border: 0;
  background: transparent;
  color: var(--brand-blue);
}
body[data-surface="storefront"] .chat-widget {
  position: fixed;
  right: max(var(--page-gutter), 1rem);
  bottom: max(1rem, env(safe-area-inset-bottom));
  z-index: 25;
  width: auto;
  max-width: min(25rem, calc(100vw - 24px));
  margin: 0;
  padding: 0;
  overflow: hidden;
  background: var(--brand-white);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-2);
}
body[data-surface="storefront"] .chat-widget > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  min-height: 48px;
  padding: 0 var(--space-4);
  cursor: pointer;
  font-weight: 600;
  list-style: none;
  color: var(--brand-blue);
}
body[data-surface="storefront"] .chat-widget > summary::-webkit-details-marker { display: none; }
body[data-surface="storefront"] .chat-launch {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
body[data-surface="storefront"] .chat-close {
  display: none;
  place-items: center;
  width: 36px;
  height: 36px;
  flex: none;
}
body[data-surface="storefront"] .chat-widget[open] {
  display: flex;
  flex-direction: column;
  width: min(25rem, calc(100vw - 24px));
  max-height: min(32rem, calc(100dvh - 2rem - env(safe-area-inset-bottom, 0px)));
}
body[data-surface="storefront"] .chat-widget[open] > summary {
  background: var(--brand-blue);
  color: var(--brand-white);
}
body[data-surface="storefront"] .chat-widget[open] .chat-close { display: grid; }
body[data-surface="storefront"] .chat-panel {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  min-height: 0;
  margin: 0;
  padding: var(--space-4);
}
body[data-surface="storefront"] .chat-log {
  overflow: auto;
  max-height: 10rem;
  min-width: 0;
}
body[data-surface="storefront"] .chat-log:empty { display: none; }
body[data-surface="storefront"] .chat-log p {
  margin: 0 0 var(--space-2);
  overflow-wrap: anywhere;
}
body[data-surface="storefront"] .chat-panel form {
  display: grid;
  gap: var(--space-3);
  margin: 0;
}
body[data-surface="storefront"] .chat-panel .field { margin-bottom: 0; }
body[data-surface="storefront"] .chat-panel textarea {
  min-height: 5.5rem;
  max-height: 8.5rem;
  resize: vertical;
}
body[data-surface="storefront"] #age-gate {
  max-width: 26rem;
  padding: var(--space-7);
  border: 0;
  border-radius: var(--radius-media);
  box-shadow: var(--shadow-3);
}
body[data-surface="storefront"] #age-gate::backdrop {
  background: color-mix(in srgb, var(--brand-blue) 55%, transparent);
}
body[data-surface="storefront"] #age-gate form {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: var(--space-5);
}

@media (max-width: 900px) {
  body[data-surface="storefront"] .store-fold,
  body[data-surface="storefront"] .pdp-grid,
  body[data-surface="storefront"] .cart-layout,
  body[data-surface="storefront"] .footer-store { grid-template-columns: minmax(0, 1fr); }
  body[data-surface="storefront"] .store-intro h1 { max-width: none; }
  body[data-surface="storefront"] .store-cats { padding: var(--space-4); }
  body[data-surface="storefront"] .pdp-buy { padding: var(--space-5); }
  body[data-surface="storefront"] .spec-list > div { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 639px) {
  body[data-surface="storefront"] .catalog-filter {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    margin-inline: calc(-1 * var(--page-gutter));
    padding-inline: var(--page-gutter);
    padding-bottom: var(--space-2);
  }
  body[data-surface="storefront"] .catalog-filter a { flex: 0 0 auto; }
}
@media (max-width: 519px) {
  body[data-surface="storefront"] .grid { grid-template-columns: minmax(0, 1fr); }
  body[data-surface="storefront"] .chat-widget,
  body[data-surface="storefront"] .chat-widget[open] {
    right: 12px;
    left: 12px;
    width: auto;
    max-width: none;
    bottom: max(12px, env(safe-area-inset-bottom, 0px));
  }
}
@media (hover: none) {
  body[data-surface="storefront"] .product-card:hover,
  body[data-surface="storefront"] .store-cat:hover { transform: none; box-shadow: none; }
}
@media (prefers-reduced-motion: reduce) {
  body[data-surface="storefront"] .product-card,
  body[data-surface="storefront"] .store-cat,
  body[data-surface="storefront"] .catalog-filter a,
  body[data-surface="storefront"] .chat-widget,
  body[data-surface="storefront"] .nav-drawer,
  body[data-surface="storefront"] #cart-drawer {
    transition: none;
    transform: none;
  }
  body[data-surface="storefront"] .product-card:hover,
  body[data-surface="storefront"] .store-cat:hover { transform: none; }
}

body[data-surface="storefront"] .empty {
  display: grid;
  gap: var(--space-4);
  justify-items: start;
  padding: var(--space-7);
  background: var(--surface-raised);
  border-radius: var(--radius-card);
}

