/* shell.css — casca comum (tokens, sidebar, header, nav, botões, cards) do Apis App Web */
:root{
  --honey-400:#fbbf24; --honey-500:#f59e0b; --honey-600:#d97706; --honey-700:#b45309; --honey-800:#92400e;
  --amber-tint:#fdf6e9; --amber-tint-2:#fbeccc;
  --ink:#1f2937; --muted:#6b7280; --faint:#9ca3af;
  --line:#e5e7eb; --line-soft:#eef0f2;
  --bg:#f4f5f7; --card:#ffffff;
  --ok:#16a34a; --danger:#dc2626; --info:#0369a1;
  /* S1-13 (MAX): tokens novos de status. --warn = "aprovado com restrição" /
     atenção (laudo com ressalva, documento vencendo); --quarantine = estado
     de quarentena/análise pendente (lote recebido, ainda não liberado) —
     conceito novo no Apis App, cor própria pra não colidir com --info/--danger. */
  --warn:#b45309; --warn-light:#fef3c7;
  --quarantine:#7c3aed; --quarantine-light:#f5f3ff;
  --ff:"DM Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --serif:"Fraunces",Georgia,serif;
  --mono:"JetBrains Mono",ui-monospace,monospace;
  /* S7 — camadas (z-index) únicas do site. Ordem: header < menus < mapa <
     painel lateral < gaveta < modal < menu dentro de modal < toast < banner.
     wizard-kit.js e ui-kit.js usam estes tokens (modal do ui-kit abre por
     cima da gaveta do wizard). */
  --z-header:30; --z-menu:300; --z-mapa:1000; --z-painel-lateral:1001;
  --z-gaveta:9400; --z-modal:9500; --z-menu-modal:9600; --z-toast:9900; --z-banner:9999;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--ff);background:var(--bg);color:var(--ink);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}
.app{display:grid;grid-template-columns:226px 1fr;grid-template-rows:60px 1fr;height:100vh;min-width:1100px}

/* Header */
header{grid-column:1/3;display:flex;align-items:center;gap:14px;background:var(--card);border-bottom:1px solid var(--line);padding:0 22px;z-index:var(--z-header)}
.brand{display:flex;align-items:center;gap:11px;width:204px;flex-shrink:0;text-decoration:none;color:inherit}
.brand .mark{width:30px;height:30px;flex-shrink:0}
.brand .wd{display:flex;flex-direction:column;line-height:1.05}
.brand .wd b{font-size:15px;font-weight:700;letter-spacing:-.2px;white-space:nowrap}
.brand .wd span{font-size:10.5px;color:var(--faint);font-weight:500;letter-spacing:.4px;text-transform:uppercase}
.crumb{font-size:13px;color:var(--muted)}
.crumb b{color:var(--ink);font-weight:600}
.h-spacer{flex:1}
.user{display:flex;align-items:center;gap:11px}
.user .av{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--honey-500),var(--honey-700));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}
.user .un{display:flex;flex-direction:column;line-height:1.15;align-items:flex-end}
.user .un b{font-size:13px;font-weight:600}
.badge-pro{font-size:10px;font-weight:700;letter-spacing:.5px;color:var(--honey-700);background:var(--amber-tint-2);padding:1px 7px;border-radius:4px}
.logout{border:1px solid var(--line);background:#fff;color:var(--muted);width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s}
.logout:hover{border-color:var(--honey-500);color:var(--honey-700);background:var(--amber-tint)}

/* Sidebar */
/* Navegação entre páginas sem "piscar" (08/10): o navegador cruza a página
   velha com a nova; header e sidebar ficam parados (a nova já nasce pintada
   pelo snapshot — ver _navSnapSalvar no shared.js). Navegador sem suporte
   ignora e navega como antes. */
@view-transition{navigation:auto}
.app>header{view-transition-name:apis-header}
.app>nav{view-transition-name:apis-nav}
::view-transition-old(apis-header),::view-transition-old(apis-nav){display:none}
::view-transition-new(apis-header),::view-transition-new(apis-nav){animation:none}
::view-transition-group(root){animation-duration:.15s}
@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}}
nav{background:var(--card);border-right:1px solid var(--line);padding:14px 12px;display:flex;flex-direction:column;gap:2px;overflow-y:auto}
.nav-sec{font-size:10.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);padding:14px 12px 6px}
.nav-i{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:8px;color:#374151;font-weight:500;cursor:pointer;text-decoration:none;position:relative;transition:.13s}
.nav-i svg{width:18px;height:18px;flex-shrink:0;stroke:currentColor;stroke-width:1.7;fill:none}
.nav-i:hover{background:#f3f4f6}
.nav-i.active{background:var(--amber-tint);color:var(--honey-800);font-weight:600}
.nav-i.active::before{content:"";position:absolute;left:-12px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--honey-600)}
.nav-i .pill{margin-left:auto;font-size:11px;font-weight:700;background:#eef0f2;color:var(--muted);border-radius:20px;padding:1px 7px;font-family:var(--mono)}
.nav-i.active .pill{background:#fff;color:var(--honey-700)}
nav .grow{flex:1}
.nav-foot{border-top:1px solid var(--line-soft);padding:12px 12px 4px;font-size:11.5px;color:var(--faint);line-height:1.5}
.nav-foot b{color:var(--muted);font-weight:600}

/* Sidebar — grupos em acordeão (Apicultura, Meliponicultura, ...) */
.nav-group{display:flex;flex-direction:column}
.nav-group-h{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:8px;color:#374151;font-weight:600;cursor:pointer;background:none;border:0;font-family:var(--ff);font-size:14px;width:100%;text-align:left;transition:.13s}
.nav-group-h:hover{background:#f3f4f6}
.nav-group-h svg.gic{width:18px;height:18px;flex-shrink:0;stroke:currentColor;stroke-width:1.7;fill:none}
.nav-group-h svg.chev{width:13px;height:13px;margin-left:auto;flex-shrink:0;stroke:var(--faint);stroke-width:2.2;fill:none;transition:transform .15s}
.nav-group.open .nav-group-h svg.chev{transform:rotate(90deg)}
.nav-group.open .nav-group-h{color:var(--honey-800)}
.nav-group-items{display:none;flex-direction:column;gap:2px;padding:2px 0 4px 16px;border-left:1.5px solid var(--line-soft);margin-left:21px}
.nav-group.open .nav-group-items{display:flex}
.nav-group-items .nav-i{padding:8px 12px}
/* ─── S7 — navegação: espaço de trabalho, upsell, foco, flyout, Ctrl+K ─── */
/* Camada CSS de defesa do gate MAX: nó do Entreposto só aparece quando
   renderSideNav marcou html[data-nav-max] (quem tem acesso). */
:root:not([data-nav-max]) [data-max-nav]{display:none!important}
.nav-espaco{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:#f3f4f6;border:1px solid var(--line);border-radius:9px;padding:3px;margin:0 0 10px}
.nav-esp-op{display:flex;align-items:center;justify-content:center;gap:4px;padding:6px 2px;border-radius:7px;font-size:11.5px;font-weight:600;color:var(--muted);text-decoration:none;min-width:0;transition:background .13s,color .13s}
.nav-esp-op svg{width:14px;height:14px;flex-shrink:0;stroke:currentColor;stroke-width:1.8;fill:none}
.nav-esp-op span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-esp-op:hover{color:var(--ink)}
.nav-esp-op.on{background:#fff;color:var(--honey-800);box-shadow:0 1px 2px rgba(17,24,39,.1)}
.nav-esp-op.is-loading{opacity:.55;cursor:progress}
.nav-upsell{color:var(--muted)}
.nav-upsell .nav-lock{width:14px;height:14px;margin-left:auto;stroke:var(--faint)}
.nav-upsell:hover .nav-lock{stroke:var(--honey-700)}
/* Foco de teclado visível (S7-12): anel honey-700 sobre branco (contraste > 3:1). */
nav .nav-i:focus-visible,.nav-group-h:focus-visible,.nav-esp-op:focus-visible,.nav-fly-a:focus-visible{outline:none;box-shadow:0 0 0 2px #fff,0 0 0 4px var(--honey-700)}
/* Flyout de ação rápida (S7-06): fixed para não ser cortado pelo overflow da
   sidebar e não empurrar nenhum outro elemento. */
.nav-fly{position:fixed;z-index:60;min-width:190px;max-width:260px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(17,24,39,.14);padding:6px}
.nav-fly[hidden]{display:none}
.nav-fly-t{font-size:10.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--faint);padding:4px 8px 6px}
.nav-fly-a{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:7px;color:var(--honey-800);font-weight:600;font-size:13px;text-decoration:none}
.nav-fly-a:hover{background:var(--amber-tint)}
.nav-fly-a svg{width:15px;height:15px;flex-shrink:0;stroke:currentColor;stroke-width:2;fill:none}
/* Busca rápida Ctrl+K (S7-15) */
.cmdk-ov{position:fixed;inset:0;z-index:25000;background:rgba(17,24,39,.38);display:flex;align-items:flex-start;justify-content:center;padding:12vh 16px 16px}
.cmdk{width:100%;max-width:540px;background:#fff;border-radius:14px;box-shadow:0 20px 50px rgba(17,24,39,.28);overflow:hidden;display:flex;flex-direction:column;max-height:70vh}
.cmdk-in{border:0;border-bottom:1px solid var(--line);padding:15px 18px;font-family:var(--ff);font-size:15px;color:var(--ink);outline:none;width:100%}
.cmdk-lista{list-style:none;overflow-y:auto;padding:6px;margin:0}
.cmdk-op{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;cursor:pointer;color:#374151;font-size:13.5px;min-width:0}
.cmdk-op svg{width:17px;height:17px;flex-shrink:0;stroke:currentColor;stroke-width:1.7;fill:none}
.cmdk-op .r{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;max-width:62%}
.cmdk-op .g{margin-left:auto;padding-left:12px;font-size:11.5px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}
.cmdk-op.atual .r{font-weight:700}
.cmdk-op[aria-selected="true"]{background:var(--amber-tint);color:var(--honey-800)}
.cmdk-op[aria-selected="true"] .g{color:var(--honey-700)}
.cmdk-op.is-loading{opacity:.6;cursor:progress}
.cmdk-vazio{padding:18px;text-align:center;color:var(--muted);font-size:13px;list-style:none}
.cmdk-dica{border-top:1px solid var(--line-soft);padding:8px 14px;font-size:11.5px;color:var(--faint)}

/* Main + page head */
main{overflow:auto;padding:20px 26px 30px}
.page-h{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px;gap:16px}
.page-h h1{font-size:24px;font-weight:700;letter-spacing:-.5px}
.page-h .sub{font-size:13px;color:var(--muted);margin-top:2px}

/* Buttons + segmented */
.btn{border:0;border-radius:9px;padding:8px 14px;font-family:var(--ff);font-size:12.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:7px}
.btn svg{width:15px;height:15px;stroke:currentColor;stroke-width:1.8;fill:none}
.btn-ghost{background:#fff;border:1px solid var(--line);color:#374151}
.btn-ghost:hover{border-color:var(--honey-500);color:var(--honey-700)}
.btn-primary{background:var(--honey-600);color:#fff}
.btn-primary:hover{background:var(--honey-700)}
.seg{display:flex;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#fff}
.seg button{border:0;background:#fff;padding:7px 13px;font-family:var(--ff);font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;border-right:1px solid var(--line);display:inline-flex;align-items:center;gap:6px}
.seg button:last-child{border-right:0}
.seg button svg{width:15px;height:15px;stroke:currentColor;stroke-width:1.8;fill:none}
.seg button.on{background:var(--honey-600);color:#fff}

/* Dropdown-style select button */
.selctl{display:inline-flex;flex-direction:column;gap:3px}
.selctl .sl-lab{font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--faint)}
.selctl .sl-btn{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px 11px;font-family:var(--ff);font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;transition:.13s}
.selctl .sl-btn:hover{border-color:var(--honey-500)}
.selctl .sl-btn svg{width:14px;height:14px;stroke:var(--faint);stroke-width:2;fill:none}

/* Cards */
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.card-h{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--line-soft)}
.card-h h2{font-size:14.5px;font-weight:700}
.card-h .hsub{font-size:11.5px;color:var(--faint);margin-top:1px;font-weight:500}
.card-h a{font-size:12px;font-weight:600;color:var(--honey-700);text-decoration:none;cursor:pointer;white-space:nowrap}
.card-h a:hover{text-decoration:underline}

/* ───────────────────────────────────────────────────────────────
   S1-13 (MAX) — componentes únicos: .kpi / .badge / .empty.
   Consolidam 3 variantes de KPI (vendas.html .kpi, financas.html
   .stat, dashboard.html .kn) e badges ad hoc (.pay, .ctype) que cada
   página vinha reinventando. Toda tela nova (MAX ou não) usa isto —
   nunca CSS local de novo pra esse tipo de componente.

   .kpi — cartão de indicador único:
     <div class="kpi">
       <div class="kpi-lab">Rótulo</div>
       <div class="kpi-val">1.234</div>
       <div class="kpi-delta up">▲ 12%</div>   (opcional — up/down/flat)
       <div class="kpi-sub">texto pequeno</div> (opcional)
     </div>
   Use .kpi.feature pro KPI principal em destaque (mesmo gradiente que
   vendas.html já usava). Grid: envolva em <div class="kpi-row"> (grid
   4 colunas) ou reaproveite o grid da própria página. */
.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;position:relative}
.kpi.feature{background:linear-gradient(135deg,#fffaf0,#fef3da);border-color:var(--amber-tint-2)}
.kpi-lab{font-size:12px;color:var(--muted);font-weight:600;margin-bottom:9px;display:flex;align-items:center;gap:6px}
.kpi-lab svg{width:14px;height:14px;stroke:currentColor;stroke-width:1.8;fill:none;flex-shrink:0}
.kpi-val{font-family:var(--mono);font-size:25px;font-weight:600;letter-spacing:-1px;line-height:1}
/* S7-13: unidade pequena ao lado do número (kg, un, %). */
.kpi-val small{font-family:var(--ff);font-size:12px;font-weight:600;color:var(--muted);letter-spacing:0;margin-left:2px}
.kpi.feature .kpi-val{color:var(--honey-800)}
.kpi-sub{margin-top:8px;font-size:11.5px;color:var(--muted)}
.kpi-delta{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;margin-top:6px}
.kpi-delta.up{color:var(--ok)}
.kpi-delta.down{color:var(--danger)}
.kpi-delta.flat{color:var(--muted)}

/* .badge — status genérico parametrizável. Substitui .pay/.ctype (que
   viravam uma classe CSS nova por domínio a cada tela). Modificadores
   semânticos: -ok (sucesso/aprovado), -warn (atenção/restrição),
   -danger (erro/rejeitado/vencido), -neutral (padrão/sem status),
   -info (informativo/azul), -quarantine (aguardando análise). */
.badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;padding:3px 10px;border-radius:20px;white-space:nowrap}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}
.badge-ok{color:#15803d;background:#f0fdf4}
.badge-warn{color:var(--warn);background:var(--warn-light)}
.badge-danger{color:var(--danger);background:#fef2f2}
.badge-neutral{color:var(--muted);background:#f3f4f6}
.badge-info{color:var(--info);background:#eff6fb}
.badge-quarantine{color:var(--quarantine);background:var(--quarantine-light)}

/* .empty — estado vazio central. Sempre acionável quando fizer sentido
   (CTA opcional) — nunca só "Nada aqui". Uso:
   <div class="empty">
     <div class="empty-icon">🗂️</div>            (opcional — emoji ou svg)
     <div class="empty-text">Nenhum item ainda</div>
     <div class="empty-sub">texto de apoio</div>   (opcional)
     <button class="btn btn-primary empty-cta">Criar o primeiro</button> (opcional)
   </div> */
.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 24px;color:var(--faint);gap:6px}
.empty-icon{font-size:32px;margin-bottom:6px;line-height:1}
.empty-icon svg{width:32px;height:32px;stroke:var(--faint);stroke-width:1.5;fill:none}
.empty-text{font-size:13.5px;font-weight:600;color:var(--muted)}
.empty-sub{font-size:12px;color:var(--faint);max-width:320px}
.empty-cta{margin-top:10px}
/* S7-13: vazio dentro de tabela/lista (não ocupa a tela inteira). */
.empty.empty-inline{padding:18px 8px}
/* S7-11: esqueleto de carregamento (nunca "0 de tudo" enquanto carrega). */
.sk{display:block;border-radius:6px;background:linear-gradient(90deg,#eef0f2 0%,#f7f8f9 45%,#eef0f2 90%);background-size:220% 100%;animation:skbrilho 1.3s ease-in-out infinite}
@keyframes skbrilho{0%{background-position:100% 0}100%{background-position:-120% 0}}
@media (prefers-reduced-motion:reduce){.sk{animation:none}}

/* S1-14 (MAX) — table-kit.js: ordenação de coluna + paginação. */
.th-sortable{cursor:pointer;user-select:none}
.th-sortable:focus-visible{outline:2px solid var(--honey-500);outline-offset:-2px}
.sort-ind{color:var(--honey-700);font-size:10px}
.tk-pag{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 4px;flex-wrap:wrap}
.tk-perpage-sel{border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-family:var(--ff);font-size:12.5px;color:var(--ink);background:#fff}
.tk-pag-nav{display:flex;align-items:center;gap:10px}
.tk-pag-info{font-size:12.5px;color:var(--muted);font-family:var(--mono)}

/* ───────────────────────────────────────────────────────────────
   F1 (paridade app × site, 2026-09-24) — web/ui-kit.js: modal, gaveta,
   toast, confirmação em 2 cliques, menu de ações por linha, campo de
   formulário. Reusa os tokens do topo do arquivo — nunca cores soltas.
   Acrescentado no FIM do arquivo de propósito: nada acima foi tocado. */
.uik-overlay{position:fixed;inset:0;background:rgba(17,17,17,.42);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:16px;opacity:0;transition:opacity .16s;backdrop-filter:blur(1.5px)}
.uik-overlay.show{opacity:1}
.uik-drawer-overlay{justify-content:flex-end;padding:0;background:rgba(17,17,17,.32)}

.uik-modal{background:#fff;border-radius:16px;width:100%;max-width:520px;box-shadow:0 24px 64px rgba(0,0,0,.22);display:flex;flex-direction:column;max-height:92vh;transform:translateY(8px) scale(.98);transition:transform .16s}
.uik-overlay.show .uik-modal{transform:translateY(0) scale(1)}
.uik-modal.uik-size-sm{max-width:380px}
.uik-modal.uik-size-lg{max-width:720px}

.uik-drawer{background:#fff;width:420px;max-width:92vw;height:100%;box-shadow:-16px 0 40px rgba(0,0,0,.18);display:flex;flex-direction:column;transform:translateX(16px);transition:transform .2s}
.uik-drawer-overlay.show .uik-drawer{transform:translateX(0)}

.uik-head{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-shrink:0}
.uik-head h2{font-size:15px;font-weight:700;color:var(--ink)}
.uik-x{border:1px solid var(--line);background:#fff;border-radius:7px;width:28px;height:28px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--muted);padding:0;flex-shrink:0}
.uik-x:hover{border-color:var(--honey-500);color:var(--honey-700)}
.uik-body{padding:18px 20px;overflow-y:auto;flex:1}
.uik-foot{padding:12px 20px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;flex-shrink:0;flex-wrap:wrap}

.btn-danger-uik{background:#fef2f2;border:1px solid #fecaca;color:var(--danger)}
.btn-danger-uik:hover{background:#fee2e2}

.uik-field{margin-bottom:14px}
.uik-field label{display:block;font-size:11px;font-weight:700;color:var(--muted);margin-bottom:5px;text-transform:uppercase;letter-spacing:.3px}
.uik-field input,.uik-field select,.uik-field textarea{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:8px 11px;font-family:var(--ff);font-size:13.5px;color:var(--ink);background:#fff;outline:none}
.uik-field input:focus,.uik-field select:focus,.uik-field textarea:focus{border-color:var(--honey-500);box-shadow:0 0 0 3px rgba(245,158,11,.11)}
.uik-hint{font-size:11.5px;color:var(--faint);margin-top:4px}

.uik-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(12px);background:var(--ink);color:#fff;font-size:13px;font-weight:600;padding:11px 18px;border-radius:10px;box-shadow:0 12px 32px rgba(16,24,40,.28);opacity:0;pointer-events:none;transition:.2s;z-index:var(--z-toast);max-width:88vw;text-align:center}
.uik-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.uik-toast-erro{background:#7f1d1d}
.uik-toast-aviso{background:#78350f}

.uik-confirming{background:#fef2f2 !important;border-color:#fecaca !important;color:var(--danger) !important}

.uik-row-menu{position:absolute;z-index:var(--z-menu-modal);background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 32px rgba(16,24,40,.16);min-width:180px;padding:5px;display:flex;flex-direction:column}
.uik-row-menu-item{display:flex;align-items:center;gap:9px;border:0;background:none;text-align:left;padding:8px 10px;border-radius:7px;font-family:var(--ff);font-size:13px;font-weight:500;color:var(--ink);cursor:pointer}
.uik-row-menu-item:hover{background:#f3f4f6}
.uik-row-menu-item.danger{color:var(--danger)}
.uik-row-menu-item.danger:hover{background:#fef2f2}
.uik-row-menu-item svg{width:15px;height:15px;stroke:currentColor;stroke-width:1.8;fill:none;flex-shrink:0}

.uik-spinner{display:inline-block;width:12px;height:12px;border-radius:50%;border:2px solid rgba(255,255,255,.5);border-top-color:#fff;animation:uikspin .6s linear infinite;margin-right:2px}
@keyframes uikspin{to{transform:rotate(360deg)}}

/* Responsivo — sem scroll horizontal em telas estreitas (celular usado
   pra abrir o site por engano, ou DevTools em modo responsivo). */
@media (max-width:480px){
  .uik-overlay{padding:0}
  .uik-modal{max-width:100%;height:100%;max-height:100%;border-radius:0}
  .uik-drawer{width:100%;max-width:100%}
  .uik-foot{flex-direction:column-reverse}
  .uik-foot .btn{width:100%;justify-content:center}
}

/* ─── Aviso "app aberto no celular" (confirmarCelularFechado) ───── */
.uik-phone-warn{display:flex;gap:12px;align-items:flex-start;background:var(--amber-tint);border:1px solid var(--amber-tint-2);border-radius:10px;padding:12px 14px;margin-bottom:6px}
.uik-phone-warn .ic{font-size:22px;line-height:1;flex-shrink:0}
.uik-phone-warn p{font-size:13px;color:var(--ink);line-height:1.5;margin:0}
