/* ══════════════════════════════════════════════════════════════════════════
   BASE VISUAL TECGORILA v2 — copie este arquivo inteiro para o próximo painel.

   Extraído de status_admin.js, que é a referência viva do padrão. As regras de
   USO (quando um botão é roxo, quando é neutro) estão em DESIGN.md, na raiz.

   Depois do CSS, cole também design/sprite.html logo no início do <body>:
   são os 33 ícones SVG que substituem emoji na interface.
   ══════════════════════════════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');
:root{
  /* Superfícies — degraus de 4–8% de luminosidade (medido: +4,1 / +4,5 / +5,7).
     Antes ficavam em 3,1–4,4% e o card quase sumia no fundo. A base saiu de
     #08080f (praticamente preto puro, cansa a vista) para #0a0a12. */
  --bg:#0a0a12; --bg2:#12121f; --bg3:#1a1a2e; --bg4:#232342; --bg5:#1a1a2e;
  /* Linhas NEUTRAS — o roxo deixa de ser contorno e passa a significar "ação/ativo" */
  --border:rgba(255,255,255,.08); --border2:rgba(255,255,255,.14);
  /* Elevação empilhada + anel interno (técnica do sistema da Vercel). No escuro,
     o fio de luz de 5% na borda de cima "acende" o card por cima. */
  --elev:inset 0 0 0 1px rgba(255,255,255,.07), inset 0 1px 0 rgba(255,255,255,.05),
         0 1px 2px rgba(0,0,0,.4), 0 8px 24px -10px rgba(0,0,0,.6);
  --mono:ui-monospace,'SF Mono',SFMono-Regular,Menlo,Consolas,monospace;
  /* Roxo cheio nos estados selecionados; --purple-l só para texto/ícone sobre fundo escuro */
  --purple:#7c3aed; --purple-d:#6d28d9; --purple-l:#a78bfa; --purple-ll:#c4b5fd;
  --purple-bg:rgba(124,58,237,.16); --purple-bd:rgba(124,58,237,.45);
  --purple-glow:0 2px 12px rgba(124,58,237,.38);
  /* Roxo VIVO para NÚMERO/identificador em destaque sobre o card. O --purple-l
     é o roxo de TEXTO corrido; num número solto ele fica lavado. Medido:
     7,02 sobre o card escuro. */
  --purple-num:#c084fc;
  /* --text-3 era #646a80: contraste 3,57 sobre o card, abaixo do mínimo de 4,5
     para texto. Como ele veste TODO .hint do painel, as explicações dos campos
     estavam ilegíveis. #7a819a dá 4,80 e continua discreto. */
  --text:#eceef5; --text-2:#9aa0b4; --text-3:#7a819a;
  --red:#f87171; --red-bg:rgba(248,113,113,.12); --red-bd:rgba(248,113,113,.3);
  --green:#34d399; --green-bg:rgba(52,211,153,.12); --green-bd:rgba(52,211,153,.3);
  --amber:#fbbf24; --amber-bg:rgba(251,191,36,.12); --amber-bd:rgba(251,191,36,.3);
  --blue:#818cf8; --blue-bg:rgba(129,140,248,.12);
  --r-sm:9px; --r-md:12px; --r-lg:16px;
  /* Cores que antes estavam cravadas na regra. Viraram token porque cada uma
     precisa de valor próprio no tema claro — sem isso, branco sobre branco. */
  --topbar-bg:rgba(8,8,15,.82);      /* topo com desfoque */
  --foot-bg:rgba(255,255,255,.012);  /* rodapé de card */
  --grade:rgba(124,58,237,.025);     /* grade do fundo */
  --flutua:0 10px 30px -8px rgba(0,0,0,.7); /* barra de salvar / elemento solto */
}

/* ── TEMA CLARO ────────────────────────────────────────────────────────────
   Ligado por `document.body.classList.add('light')` — mesma convenção que o
   src/painel.html já usa, para não quebrar o que existe. Só troca token:
   nenhuma regra de componente é reescrita aqui embaixo.

   Não é o tema escuro com as cores invertidas. Três coisas mudam de natureza:

   1. A ELEVAÇÃO inverte. No escuro o card é mais CLARO que a página e um fio de
      luz o "acende". No claro o card é branco puro sobre página cinza, e quem
      levanta é a SOMBRA — o anel de luz interno some (branco sobre branco não
      existe) e vira um fio escuro.
   2. O ROXO PRECISA ESCURECER. #7c3aed com texto branco dá 4,40 sobre o botão —
      abaixo do mínimo de 4,5. #6d28d9 dá 7,10. E como texto sobre fundo claro,
      o #a78bfa do escuro é ilegível: --purple-l passa a ser o mesmo #6d28d9.
   3. OS SEMÂNTICOS ESCURECEM JUNTO. #34d399 / #fbbf24 / #f87171 foram feitos
      para brilhar no escuro; sobre branco somem. Medidos: verde 4,63,
      âmbar 5,88, vermelho 5,46.
   ────────────────────────────────────────────────────────────────────────── */
body.light{
  /* Página cinza, card BRANCO: no claro o card é mais claro que o fundo.
     Degraus medidos: página→card 9,3% · card→campo 11,7% · campo→hover 10,1% */
  --bg:#f4f4f8; --bg2:#ffffff; --bg3:#f1f1f6; --bg4:#e4e4ee; --bg5:#eaeaf2;
  /* Linhas neutras ESCURAS (o v1 usava borda roxa; o v2 não) */
  --border:rgba(16,16,40,.11); --border2:rgba(16,16,40,.20);
  /* Sem anel de luz interno: no claro ele não existe. Fio escuro + sombra suave. */
  --elev:inset 0 0 0 1px rgba(16,16,40,.07),
         0 1px 2px rgba(16,16,40,.05), 0 8px 24px -12px rgba(16,16,40,.16);
  --purple:#6d28d9; --purple-d:#5b21b6; --purple-l:#6d28d9; --purple-ll:#5b21b6;
  --purple-bg:rgba(109,40,217,.10); --purple-bd:rgba(109,40,217,.34);
  --purple-glow:0 2px 10px rgba(109,40,217,.26);
  /* No claro o #c084fc dá só 2,64 sobre o branco — ilegível. #6d28d9 dá 7,10. */
  --purple-num:#6d28d9;
  /* text-3 veste todo .hint: 5,80 sobre o card, acima do mínimo de 4,5 */
  --text:#12121c; --text-2:#4a4a63; --text-3:#63637f;
  --red:#b91c1c; --red-bg:rgba(185,28,28,.10); --red-bd:rgba(185,28,28,.28);
  --green:#047857; --green-bg:rgba(4,120,87,.12); --green-bd:rgba(4,120,87,.28);
  --amber:#92400e; --amber-bg:rgba(146,64,14,.12); --amber-bd:rgba(146,64,14,.28);
  --blue:#4338ca; --blue-bg:rgba(67,56,202,.10);
  --topbar-bg:rgba(255,255,255,.82);
  --foot-bg:rgba(16,16,40,.022);
  --grade:rgba(109,40,217,.02);
  --flutua:0 10px 30px -10px rgba(16,16,40,.25);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}
body::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;background-image:linear-gradient(var(--grade) 1px,transparent 1px),linear-gradient(90deg,var(--grade) 1px,transparent 1px);background-size:56px 56px}
/* ── Ícones (SVG próprio, herda a cor do texto — nada de emoji do sistema) ── */
.ic{width:17px;height:17px;flex:0 0 auto;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-3px}
.ic-sm{width:14px;height:14px;vertical-align:-2px}
.ic-lg{width:20px;height:20px}
.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;padding:0 20px;height:58px;background:var(--topbar-bg);backdrop-filter:blur(18px);border-bottom:1px solid var(--border)}
.logo{display:flex;align-items:center;gap:11px;text-decoration:none}
.logo-icon{width:34px;height:34px;object-fit:contain;border-radius:9px;background:transparent}
.logo-txt{display:flex;flex-direction:column;line-height:1.15;font-weight:800;letter-spacing:1.4px;color:var(--text);font-size:13.5px}
.logo-txt small{font-size:9.5px;letter-spacing:2.4px;color:var(--text-3);font-weight:600;margin-top:2px;text-transform:uppercase}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--r-sm);border:1px solid var(--border);background:transparent;color:var(--text-2);cursor:pointer;text-decoration:none;flex-shrink:0;transition:.15s}
.icon-btn:hover{background:var(--bg3);color:var(--text);border-color:var(--border2)}
.logout{margin-left:auto;display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text-3);text-decoration:none;padding:7px 12px;border-radius:var(--r-sm);border:1px solid transparent;transition:.15s}
.logout:hover{color:#fca5a5;border-color:rgba(248,113,113,.45);background:rgba(248,113,113,.12)}
.container{position:relative;z-index:1;max-width:1120px;margin:0 auto;padding:26px 20px 70px}
/* Pesos com teto 600: a hierarquia vem de tamanho e espaço, não de negrito.
   Só o logotipo "TECGORILA" passa disso — ali é marca, não texto. */
.page-title{font-size:24px;font-weight:600;letter-spacing:-.5px;margin-bottom:3px}
.page-sub{color:var(--text-2);font-size:13.5px;margin-bottom:20px;max-width:62ch}
/* Rótulo em fonte mono: dá ar técnico e alinha número com número. */
label,.eyebrow{font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3);font-weight:500}
label{display:block;margin-bottom:6px}
/* UM sistema de cabeçalho no painel inteiro: título de card é h2/h3, 15.5px.
   Antes o h2 era mono-maiúsculo e o h3 era título, então Config e Promoção
   mostravam cards de mesma patente com duas caras diferentes. O mono maiúsculo
   agora é só RÓTULO (de campo e de número) — nunca título de card. */
h2,h3{font-size:15.5px;font-weight:600;letter-spacing:-.2px;color:var(--text)}
h2{display:flex;align-items:center;gap:8px;margin:0 0 12px}
/* Zebrado de tabela densa: leva o MATIZ da marca, não branco neutro. Branco a
   1,4% não aparece, e numa lista de 80+ linhas o zebrado é o que deixa o olho
   seguir da esquerda até o valor sem trocar de linha. */
.zebra tbody tr:nth-child(even){background:rgba(124,58,237,.045)}
body.light .zebra tbody tr:nth-child(even){background:rgba(124,58,237,.045)}
.card{background:var(--bg2);border:0;border-radius:var(--r-lg);box-shadow:var(--elev);padding:20px;margin-bottom:14px}
/* Rodapé de card: ação à direita, separada por um fio. Substitui o botão roxo
   de largura total, que virava uma barra roxa de 870px e puxava o olho para o
   lugar errado. O que for secundário vai em .esq, no canto oposto. */
.card-foot{display:flex;justify-content:flex-end;align-items:center;gap:8px;flex-wrap:wrap;
  margin:18px -20px -20px;padding:13px 20px;border-top:1px solid var(--border);
  background:var(--foot-bg);border-radius:0 0 var(--r-lg) var(--r-lg)}
.card-foot .esq{margin-right:auto}
/* Barra de salvar: aparece só quando há mudança pendente. As Configurações
   tinham 4 botões "Salvar X" que chamavam a MESMA função e gravavam o config
   inteiro — o rótulo prometia um salvamento por seção que não existia. */
.savebar{display:none;position:sticky;bottom:16px;z-index:20;align-items:center;gap:10px;flex-wrap:wrap;
  margin-top:18px;padding:12px 14px;border-radius:var(--r-md);background:var(--bg3);
  box-shadow:inset 0 0 0 1px var(--border2),var(--flutua)}
.savebar.on{display:flex}
.savebar .sb-txt{flex:1 1 auto;display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--amber)}
input:not([type=checkbox]):not([type=radio]),select,textarea{width:100%;padding:10px 12px;background:var(--bg3);border:1px solid var(--border);border-radius:10px;color:var(--text);font-family:'Inter',sans-serif;font-size:13px;margin-bottom:14px;transition:border-color .15s,background .15s}
/* Foco: a borda usa --purple-l (o roxo "de contraste" de cada tema), não a
   versão translúcida. Medido, o --purple-bd .45 dava 1,55 no escuro e 2,18 no
   claro — abaixo do mínimo de 3,0 para indicador de foco, ou seja, quem navega
   por teclado não via onde estava. Com --purple-l dá 6,27 no escuro e 6,31 no
   claro, e um único valor resolve os dois porque o token já troca de tema. */
/* O seletor REPETE o :not() da regra de cima de propósito. Sem isso a
   especificidade fica 0,1,1 contra 0,2,1 e a regra base ganha: o border-color
   do foco simplesmente nunca era aplicado — medido com getComputedStyle, o
   campo em foco devolvia a borda normal. O foco existia no CSS e não na tela. */
input:not([type=checkbox]):not([type=radio]):focus,select:focus,textarea:focus{
  outline:none;border-color:var(--purple-l);background:var(--purple-bg);
  box-shadow:0 0 0 3px var(--purple-bg)}
textarea{resize:vertical;min-height:66px;line-height:1.5}
input::placeholder,textarea::placeholder{color:var(--text-3)}
select option{background:var(--bg2)}
input[type=time]{max-width:150px;font-variant-numeric:tabular-nums}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
/* ── Botões — hierarquia padrão TecGorila v2 ────────────────────────────────
   REGRA: uma única ação roxa por bloco de decisão. É "o que a pessoa veio
   fazer ali". Todo o resto é neutro. Se dois botões disputam o roxo, um
   deles não é a ação principal.

   .btn-grad / .btn-save  roxo cheio  ação principal do bloco (Gerar…, Salvar…)
   .btn                   neutro      apoio, QUANDO já existe uma principal
   .btn-post              verde       publica para o CLIENTE / vai ao ar
   .btn-danger            vermelho    destrutivo: cancelar, recusar, remover
   .btn-only              só ícone    terciária — exige title= sempre

   "Bloco de decisão" = card onde se edita/decide algo (card do dia, Regras,
   Automação). Item de lista/galeria NÃO é bloco: lá nada é roxo, senão a
   grade vira parede de roxo e nada se destaca.

   Nenhum bloco fica sem âncora — âncora é o roxo, ou o verde quando a ação
   principal é publicar (ex.: "Aprovar e postar"). Se as ações do bloco são
   todas de consulta, a principal delas leva o roxo mesmo assim (ex.:
   "Simular"). Card só com botão apagado é o que o Victor apontou em
   04/08/2026 — parece desligado.

   Verde nunca é "ação principal genérica" — é só o que sai para o cliente.
   Por isso Postar é verde mesmo sendo o principal, e Gerar é roxo.
   ────────────────────────────────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 14px;border-radius:10px;border:1px solid var(--border);background:var(--bg3);color:var(--text-2);cursor:pointer;font-family:'Inter',sans-serif;font-size:12.5px;font-weight:600;white-space:nowrap;transition:.15s}
.btn:hover:not(:disabled){background:var(--bg4);border-color:var(--border2);color:var(--text)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn-grad{background:var(--purple);border-color:var(--purple);color:#fff;box-shadow:var(--purple-glow)}
.btn-grad:hover:not(:disabled){background:var(--purple-d);border-color:var(--purple-d);color:#fff}
.btn-grad .ic{color:#fff}
.btn-post{background:var(--green-bg);border-color:var(--green-bd);color:var(--green)}
.btn-post:hover:not(:disabled){background:#10b981;border-color:#10b981;color:#04140e}
.btn-danger{background:transparent;border-color:var(--red-bd);color:var(--red)}
.btn-danger:hover:not(:disabled){background:var(--red-bg);border-color:var(--red);color:var(--red)}
.btn-save{background:var(--purple);border-color:var(--purple);color:#fff;box-shadow:var(--purple-glow)}
.btn-save:hover:not(:disabled){background:var(--purple-d);border-color:var(--purple-d);color:#fff}
.btn-sm{padding:8px 12px;font-size:12px}
.btn-only{padding:9px;width:36px}
/* ── Abas: um segmento único, não pílulas soltas ── */
.tabs{display:inline-flex;gap:2px;padding:3px;background:var(--bg2);border:1px solid var(--border);border-radius:11px;margin-bottom:22px;flex-wrap:wrap}
.tab{display:inline-flex;align-items:center;gap:7px;background:none;border:0;border-radius:8px;color:var(--text-2);padding:8px 14px;cursor:pointer;font-family:'Inter',sans-serif;font-size:13px;font-weight:600;transition:.15s}
.tab:hover{color:var(--text)}
.tab.active{background:var(--purple);color:#fff;box-shadow:var(--purple-glow)}
.tab.active .ic{color:#fff}
.pane{display:none;animation:fade .25s ease}
.pane.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.toggle{display:flex;align-items:center;gap:10px;font-size:13.5px;font-weight:500;color:var(--text)}
.switch{position:relative;width:38px;height:21px;flex-shrink:0}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;inset:0;background:var(--bg4);border:1px solid var(--border);border-radius:99px;cursor:pointer;transition:.2s}
.slider:before{content:'';position:absolute;width:15px;height:15px;left:2px;top:2px;background:var(--text-3);border-radius:50%;transition:.2s}
input:checked+.slider{background:var(--purple);border-color:var(--purple)}
input:checked+.slider:before{transform:translateX(17px);background:#fff}
.status{display:none;align-items:center;justify-content:center;gap:8px;padding:10px 14px;border-radius:var(--r-md);text-align:center;font-weight:600;font-size:13px;margin-top:12px}
.status.ok,.status.err,.status.info{display:flex}
.status.ok{background:var(--green-bg);color:var(--green);box-shadow:inset 0 0 0 1px var(--green-bd)}
.status.err{background:var(--red-bg);color:var(--red);box-shadow:inset 0 0 0 1px var(--red-bd)}
.status.info{background:var(--blue-bg);color:var(--blue)}
.spinner{display:none;text-align:center;padding:22px;color:var(--purple-l);font-size:12.5px}
.spinner.show{display:block}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--purple-l);margin:0 3px;animation:bounce 1.2s infinite}
.dot:nth-child(2){animation-delay:.2s}.dot:nth-child(3){animation-delay:.4s}
@keyframes bounce{0%,80%,100%{opacity:.3;transform:scale(.85)}40%{opacity:1;transform:scale(1)}}
.hint{font-size:12px;color:var(--text-3);margin:-6px 0 12px;line-height:1.5}
.head-row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:99px;font-size:11px;font-weight:700;white-space:nowrap}
/* ── Barra de resumo ("north star": o número que importa, grande, no topo) ── */
.summary{display:grid;grid-template-columns:auto 1px repeat(3,1fr);gap:22px;align-items:center;
  background:var(--bg2);border-radius:var(--r-lg);box-shadow:var(--elev);padding:20px 24px;margin-bottom:16px}
.ns .eyebrow{margin-bottom:6px;display:block}
.ns .big{font-size:38px;font-weight:600;letter-spacing:-1.4px;line-height:1;font-variant-numeric:tabular-nums}
.ns .delta{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;margin-top:7px}
.vr{background:var(--border);width:1px;height:52px}
.kpi .eyebrow{margin-bottom:5px;display:block}
.kpi .v{font-size:19px;font-weight:600;letter-spacing:-.3px;font-variant-numeric:tabular-nums}
.kpi .v small{font-size:12.5px;color:var(--text-3);font-weight:500;letter-spacing:0}
/* No celular os 3 números vão lado a lado, senão o resumo come meia tela
   antes de a pessoa ver a semana. */
@media(max-width:760px){
  /* align-items:start: com "2 de 6" ocupando 2 linhas e "1" só uma, o
     centralizado desencontra os rótulos entre as colunas. */
  .summary{grid-template-columns:repeat(3,1fr);gap:14px 12px;padding:16px 18px;align-items:start}
  .vr{display:none}
  .ns{grid-column:1/-1}
  .ns .big{font-size:32px}
  .kpi .v{font-size:17px}
  .kpi .v small{display:block;font-size:11.5px}
}
/* ── Esqueleto de carregamento (no lugar da palavra "carregando…") ── */
.sk{background:linear-gradient(90deg,var(--bg3) 25%,var(--bg4) 37%,var(--bg3) 63%);background-size:400% 100%;animation:shine 1.4s ease infinite;border-radius:6px}
@keyframes shine{0%{background-position:100% 0}100%{background-position:0 0}}
.sk-l{height:11px;margin-bottom:8px}
/* ── Estado vazio: diz o que fazer, não o que falta ── */
.empty{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:26px 18px;color:var(--text-3)}
.empty .ring{width:44px;height:44px;border-radius:50%;background:var(--purple-bg);color:var(--purple-l);display:grid;place-items:center}
.empty .ring .ic{width:20px;height:20px;vertical-align:0}
.empty b{color:var(--text-2);font-weight:600;font-size:13.5px}
.empty span{font-size:12.5px;max-width:32ch;line-height:1.5}
/* A caixa precisa SER 9/16, senão o object-fit:cover corta a arte. Antes ela
   tinha max-height:270px e virava quase quadrada — o rodapé do Status (o
   "Peça já no WhatsApp") ficava de fora. Limita pela largura e centraliza. */
/* Sem imagem não precisa respeitar o 9/16: solta a largura para o texto do
   estado vazio caber, e o dia livre ocupa menos altura na grade. */
.mini{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:11.5px;color:var(--text-3)}
.mini .ic{color:inherit}
.sep{width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.4;flex-shrink:0}
/* "Reaproveitar" + o botão de postar não cabiam nos ~160px do card e o verde
   ficava metade para fora. O texto encolhe (min-width:0) e o de ícone tem
   largura fixa que não participa da divisão. */
/* ── Modal ── */
.overlay{display:none;position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.72);backdrop-filter:blur(4px);align-items:center;justify-content:center;padding:20px}
.overlay.show{display:flex}
.modal-actions{display:flex;gap:8px;flex-wrap:wrap}
.modal-actions .btn{flex:1}
/* ── Modal de confirmação ── */
.cfm-card{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--r-lg);max-width:460px;width:100%;box-shadow:0 24px 70px rgba(0,0,0,.65);overflow:hidden;animation:cfmIn .2s ease}
@keyframes cfmIn{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
.cfm-head{display:flex;align-items:center;gap:12px;padding:20px 22px 14px}
.cfm-icon{width:38px;height:38px;border-radius:10px;background:var(--purple-bg);color:var(--purple-l);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.cfm-icon .ic{width:19px;height:19px;vertical-align:0}
.cfm-head h3{color:var(--text);font-size:16px;margin:0;font-weight:700}
.cfm-body{padding:0 22px 4px;font-size:13.5px;color:var(--text-2);line-height:1.55;max-height:48vh;overflow-y:auto}
.cfm-body b{color:var(--text)}
.cfm-body select{margin-top:12px;margin-bottom:4px}
.cfm-actions{display:flex;gap:10px;padding:18px 22px 20px;justify-content:flex-end}
.cfm-btn{padding:10px 18px;border-radius:10px;border:1px solid var(--border);cursor:pointer;font-family:'Inter',sans-serif;font-size:13px;font-weight:600;transition:.15s}
.cfm-cancel{background:var(--bg3);color:var(--text-2)}
.cfm-cancel:hover{background:var(--bg4);color:var(--text)}
.cfm-ok{background:var(--purple);border-color:var(--purple);color:#fff;box-shadow:var(--purple-glow)}
.cfm-ok:hover{background:var(--purple-d);border-color:var(--purple-d)}
.cfm-ok.danger,.cfm-ok.ok{box-shadow:none}
.cfm-ok.danger{background:transparent;border-color:var(--red-bd);color:var(--red)}
.cfm-ok.danger:hover{background:var(--red-bg);border-color:var(--red)}
.cfm-ok.ok{background:var(--green-bg);border-color:var(--green-bd);color:var(--green)}
.cfm-ok.ok:hover{background:#10b981;border-color:#10b981;color:#04140e}
@media(max-width:560px){
  .container{padding:20px 14px 60px}
  /* Aba só com ícone é adivinhação — "Postadas" e "Promoção" viram o mesmo
     desenho para quem não decora. Empilha ícone e rótulo, que aí cabe. */
  .tabs{display:flex;width:100%}
  .tab{flex:1;flex-direction:column;gap:3px;justify-content:center;padding:8px 4px;font-size:10.5px;letter-spacing:-.1px}
  .row3{grid-template-columns:1fr}
  .empty span{max-width:26ch}
  /* ── Alvo de toque ──────────────────────────────────────────────
     Medido no celular: interruptor 21px, segmentado 29px, botões 34px.
     Tamanho de mouse, não de dedo — a régua da casa é ~44px. Só cresce
     no celular; no desktop 34px continua certo. */
  .btn,.btn-sm{padding-top:12px;padding-bottom:12px}
  .btn-only{width:44px;padding:12px}
  /* O interruptor não pode crescer sem virar outro desenho: em vez disso,
     um ::after invisível estica só a área de clique para ~62x46. */
  .switch::after{content:'';position:absolute;top:-10px;bottom:-10px;left:-8px;right:-8px}
  .icon-btn{width:40px;height:40px}
  .logout{padding:14px 13px}
  .switch{width:46px;height:26px}
  .slider:before{width:20px;height:20px;left:2px;top:2px}
  input:checked+.slider:before{transform:translateX(20px)}
}
