/* ============================================================
   CRM Luthieria — design glass / iOS, temas dark e light
   Troca via [data-theme] no <html>. Destaque: azul iOS.
   ============================================================ */

/* ---- Tema escuro (padrão) ---- */
:root, [data-theme="dark"] {
  color-scheme: dark;   /* faz o dropdown nativo do <select> renderizar escuro */
  --accent: #0a84ff;
  --accent-2: #4aa3ff;
  --bg-1: #181a21;
  --bg-2: #0b0c10;
  --bg-glow: rgba(150,170,205,.07);
  --text: #eef1f7;
  --muted: #8b93a4;
  --nav: #aeb6c6;
  --glass: rgba(255,255,255,.045);
  --glass-2: rgba(255,255,255,.08);
  --surface: rgba(23,26,33,.94);
  --card: rgba(255,255,255,.04);
  --border: rgba(255,255,255,.08);
  --field: rgba(255,255,255,.05);
  --solid: #161922;           /* fundo sólido p/ <option> */
  --danger: #ff5c6c;
  --ok: #2fd07a;
  /* Cores dos status da OS (selo + filtros) — fonte única. A personalização
     sobrescreve estas variáveis e selo/botões mudam juntos. */
  --st-aberta: var(--accent-2);
  --st-aguardando_analise: #e0a64a;
  --st-aguardando_aprovacao: #e0a64a;
  --st-em_reparo: var(--accent-2);
  --st-recusado: var(--danger);
  --st-pronto: var(--ok);
  --st-encerrado: var(--muted);
  --shadow: 0 14px 34px -12px rgba(0,0,0,.55);
  --shadow-hover: 0 22px 46px -16px rgba(0,0,0,.62);
  --rim: rgba(255,255,255,.10);          /* brilho sutil na borda de cima */
  /* base fumê escura (~80% opaca): dá pra ver que o fundo mudou por baixo, mas
     sem comprometer a legibilidade do texto dos cards */
  --card-grad: linear-gradient(180deg, rgba(30,33,42,.80), rgba(21,23,30,.85) 78%);
  --dot: transparent;                     /* fundo liso, sem pontos */
}

/* ---- Tema claro ---- */
[data-theme="light"] {
  color-scheme: light;  /* dropdown nativo do <select> renderiza claro */
  --accent: #007aff;
  --accent-2: #0a84ff;
  --bg-1: #eaf0f9;
  --bg-2: #d7e1f0;
  --bg-glow: rgba(0,122,255,.12);
  --text: #19202e;
  --muted: #5b6478;
  --nav: #3e4659;
  --glass: rgba(255,255,255,.60);
  --glass-2: rgba(255,255,255,.85);
  --surface: rgba(255,255,255,.90);
  --card: rgba(244,247,251,.62);
  --border: rgba(20,30,52,.13);
  --field: rgba(255,255,255,.80);
  --solid: #ffffff;
  --danger: #e23b4e;
  --ok: #128a4b;
  --shadow: 0 18px 44px -18px rgba(40,65,120,.32);
  --shadow-hover: 0 26px 52px -18px rgba(40,65,120,.40);
  --rim: rgba(255,255,255,.95);          /* brilho da borda superior (rim light) */
  --card-grad: linear-gradient(140deg, rgba(255,255,255,.86), rgba(238,243,249,.80) 70%);
  --dot: rgba(20,40,90,.05);             /* textura de pontos do fundo */
}

/* ---- Escala de raios (arredondamento) — compartilhada entre os temas ---- */
:root {
  --r-xs: 10px;    /* chips, botão ✕ */
  --r-sm: 13px;    /* botões mini, itens de lista */
  --r-md: 15px;    /* campos, botões, itens de nav */
  --r-lg: 20px;    /* cards */
  --r-xl: 24px;    /* painéis: sidebar, modal, placeholder */
  --r-2xl: 28px;   /* card de login */
  --r-pill: 999px; /* badges e botões redondos */
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  min-height: 100%;
  color: var(--text);
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, system-ui, sans-serif;
  background:
    radial-gradient(var(--dot) 1px, transparent 1.6px) 0 0 / 24px 24px,
    radial-gradient(1200px 680px at 50% -12%, var(--bg-glow), transparent 62%),
    linear-gradient(180deg, var(--bg-1), var(--bg-2));
  background-attachment: fixed;
}

[hidden] { display: none !important; }
button { font-family: inherit; cursor: pointer; }

/* ---- Campos ---- */
input, select, textarea {
  width: 100%;
  padding: 11px 13px;
  background: var(--field);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  color: var(--text);
  font-size: 15px;
  font-family: inherit;
}
input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--bg-glow);
}
textarea { resize: vertical; min-height: 70px; }
/* O popup nativo do <select> às vezes ignora variáveis CSS — cores FIXAS por tema */
[data-theme="dark"]  select option { background-color: #151b2a; color: #eef1f7; }
[data-theme="light"] select option { background-color: #ffffff; color: #19202e; }
::placeholder { color: var(--muted); opacity: .8; }

/* ---- Botões ---- */
.btn-primary {
  padding: 11px 20px; border: 0; border-radius: var(--r-md);
  background: linear-gradient(180deg, var(--accent-2), var(--accent));
  color: #fff; font-size: 15px; font-weight: 600;
  box-shadow: 0 6px 18px -6px var(--accent);
}
.btn-primary:hover { filter: brightness(1.07); }
.btn-primary:disabled { opacity: .6; cursor: default; }
.btn-ghost {
  padding: 11px 20px; border: 1px solid var(--border);
  background: transparent; color: var(--text);
  border-radius: var(--r-md); font-size: 15px; font-weight: 600;
}
.btn-ghost:hover { background: var(--glass-2); }

/* ============ LOGIN ============ */
.tela-login { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 20px; }
.card-login {
  width: 100%; max-width: 380px; border-radius: var(--r-2xl); padding: 38px 30px; text-align: center;
  background: var(--surface); border: 1px solid var(--border);
  backdrop-filter: blur(26px) saturate(150%); -webkit-backdrop-filter: blur(26px) saturate(150%);
  box-shadow: var(--shadow), inset 1px 1px 0 var(--rim);
}
/* ============================================================
   Marca "PRIMETONE GUITARS" — wordmark em SVG, não em imagem.
   Por que SVG e não PNG: acompanha [data-theme] sozinha (o PNG neon tem fundo
   preto embutido e virava um retângulo escuro no tema claro), fica nítida em
   qualquer tamanho, e o textLength/lengthAdjust do SVG dá o tracking EXATO que
   o desenho aprovado pede — coisa que nem CSS letter-spacing nem gerador de
   imagem entregam.
   O registro (mono + neon) é o mesmo do dossiê dos Instrumentos, mas usa o
   --accent do SISTEMA e não o --hud-acc (ciano) do dossiê: a marca pertence ao
   produto inteiro, não a uma tela.
   ============================================================ */
:root {
  /* Mesma stack declarada em .modal-hud; promovida aqui para a marca poder usar
     o mesmo tipo do dossiê sem depender do escopo daquele modal. */
  --hud-mono: ui-monospace, 'SF Mono', 'Cascadia Code', 'Segoe UI Mono', Consolas, monospace;
}
.pt-lockup      { display: block; height: auto; }
.pt-lockup text { font-family: var(--hud-mono); }
.pt-nome        { font-size: 30px; fill: var(--accent); }
.pt-regua       { stroke: var(--accent); stroke-width: 2.5; }
.pt-modelo      { font-size: 15px; fill: var(--muted); }
/* Brilho neon só no tema escuro — no claro vira borrão em vez de luz. */
[data-theme="dark"] .pt-nome,
[data-theme="dark"] .pt-regua { filter: drop-shadow(0 0 6px rgba(10,132,255,.55)); }

/* Login */
.marca-login { margin: 0 0 12px; }
.marca-login .pt-lockup { width: 100%; max-width: 260px; margin: 0 auto; }

/* Sidebar: a marca ocupa o que sobra depois do botão de recolher.
   ⚠️ NÃO usar largura fixa aqui: o .sidebar-top é flex e o espaço livre muda
   (botão de 30px + gap, e a media query de tela baixa encolhe tudo). Com valor
   fixo o SVG transborda e passa por baixo do botão — medido: sobravam 148px e
   um width:176px vazava 28px. O min-width:0 é o que permite o flex encolher. */
.sidebar .logo,
.sidebar .logo-tx { flex: 1 1 auto; min-width: 0; }
.sidebar .logo-tx .pt-lockup { width: 100%; max-width: 170px; }
.card-login h1 { margin: 6px 0 2px; font-size: 23px; letter-spacing: -.3px; }
.card-login .sub { margin: 0 0 22px; color: var(--muted); font-size: 14px; }
.card-login label { display: block; text-align: left; font-size: 12px; font-weight: 600; color: var(--muted); margin: 14px 0 6px; }
.card-login .btn-primary { width: 100%; margin-top: 22px; padding: 13px; }
.erro { margin: 14px 0 0; color: var(--danger); font-size: 14px; }

/* ============ APP SHELL ============ */
.app {
  --col-l: 250px; --col-r: 272px;
  display: grid; grid-template-columns: var(--col-l) 1fr var(--col-r);
  height: 100vh; gap: 0;
  overflow: hidden;            /* sidebars fixas: só o miolo (.conteudo) rola */
}
.app.sidebar-colapsada   { --col-l: 76px; }
.app.sidebar-r-colapsada { --col-r: 76px; }

.sidebar {
  margin: 14px; padding: 16px 13px; border-radius: var(--r-xl); display: flex; flex-direction: column;
  background: var(--card-grad); border: 1px solid var(--border);
  backdrop-filter: blur(22px) saturate(160%); -webkit-backdrop-filter: blur(22px) saturate(160%);
  box-shadow: var(--shadow), inset 1px 1px 0 var(--rim);
}
.sidebar-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 6px 4px 18px; }
.logo { display: flex; align-items: center; gap: 8px; font-size: 19px; font-weight: 700; letter-spacing: -.3px; min-width: 0; }
.logo-ic { font-size: 20px; line-height: 1; }
.logo-tx { color: var(--accent-2); white-space: nowrap; }
.btn-sidebar {
  flex: none; width: 30px; height: 30px; border-radius: var(--r-sm);
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--border); background: var(--glass);
  color: var(--muted); font-size: 17px; line-height: 1;
  transition: background .15s, color .15s;
}
.btn-sidebar:hover { background: var(--glass-2); color: var(--text); }
.nav { display: flex; flex-direction: column; gap: 3px; flex: 1; }
.nav-sep { height: 1px; margin: 7px 12px; background: var(--border); flex: none; }
.nav-item {
  display: flex; align-items: center; gap: 11px;
  padding: 11px 13px; border-radius: var(--r-md);
  color: var(--nav); font-size: 14.5px; font-weight: 500;
  cursor: pointer; text-decoration: none; user-select: none;
  transition: background .15s, color .15s, transform .05s;
}
.nav-ic { font-size: 21px; line-height: 1; width: 30px; text-align: center; flex: none; }
/* ícones em imagem (PNG) ganham um chip claro pra ficarem uniformes e visíveis no escuro */
/* ícones PNG transparentes (com traçado branco próprio) — sem chip, direto no fundo */
.nav-ic.ic-img { width: 30px; height: 30px; padding: 0; background: transparent; box-shadow: none; border-radius: 0; }
.logo-ic.ic-img { width: 28px; height: 28px; flex: none; }
.ic-img img { width: 100%; height: 100%; object-fit: contain; display: block; }
.stat-ic.ic-img { background: transparent; border: 0; padding: 0; }
.acao-ic.ic-img { background: transparent; box-shadow: none; padding: 0; }
.vazio-icone.ic-img { width: 66px; height: 66px; margin: 0 auto; padding: 0; background: transparent; box-shadow: none; border-radius: 0; }
.nav-tx { white-space: nowrap; overflow: hidden; }
.nav-item:hover { background: var(--glass-2); color: var(--text); }
.nav-item:active { transform: scale(.98); }
.nav-item.ativo {
  background: linear-gradient(180deg, var(--accent-2), var(--accent));
  color: #fff; font-weight: 600;
  box-shadow: 0 8px 20px -8px var(--accent);
}
.nav-item.em-breve { opacity: .45; cursor: not-allowed; }
.nav-item.em-breve::after {
  content: "em breve"; margin-left: auto; font-size: 10px; font-weight: 600;
  background: var(--glass-2); color: var(--muted); padding: 2px 7px; border-radius: var(--r-pill);
}

.btn-logout {
  margin-top: 14px; padding: 11px 13px; border-radius: var(--r-md);
  display: flex; align-items: center; justify-content: center; gap: 11px;
  border: 1px solid var(--border); background: var(--glass-2);
  color: var(--muted); font-size: 14px; font-weight: 500;
  transition: color .15s, border-color .15s;
}
.btn-logout .nav-ic { font-size: 16px; }
.btn-logout:hover { color: var(--danger); border-color: var(--danger); }

/* ---- Sidebar recolhida (só ícones) ---- */
/* a largura recolhida vem da variável --col-l (definida junto ao .app);
   NÃO redefinir grid-template-columns aqui, senão a 3ª coluna (barra direita) quebra de linha */
.sidebar-colapsada .sidebar { padding: 16px 10px; }
.sidebar-colapsada .sidebar-top { flex-direction: column; gap: 10px; }
.sidebar-colapsada .logo-tx,
.sidebar-colapsada .nav-tx { display: none; }
/* Marca: expandida mostra o lockup, recolhida troca pelo ícone da guitarra.
   ⚠️ Inverte o comportamento antigo — antes o ícone ficava SEMPRE visível e só
   o texto sumia. Agora os dois se revezam, então mexer num exige olhar o outro. */
.sidebar .logo-ic { display: none; }
.sidebar-colapsada .sidebar .logo-ic { display: block; }
.sidebar-colapsada .nav-item { justify-content: center; padding: 11px; gap: 0; }
.sidebar-colapsada .nav-item.em-breve::after { display: none; }
.sidebar-colapsada .btn-logout { padding: 11px; }

/* ---- Telas desktop baixas: encolhe a barra esquerda pra caber SEM rolagem ----
   (só desktop: min-width evita o mobile; clamp com vh encolhe suave conforme a
   altura cai — gap, padding, ícone e texto diminuem juntos.) */
@media (min-width: 761px) and (max-height: 900px) {
  .sidebar-top { margin-bottom: clamp(8px, 1.8vh, 18px); }
  .nav { gap: clamp(1px, 0.5vh, 3px); }
  .nav-sep { margin-top: clamp(3px, 0.9vh, 7px); margin-bottom: clamp(3px, 0.9vh, 7px); }
  .nav-item {
    padding-top: clamp(7px, 1.25vh, 11px); padding-bottom: clamp(7px, 1.25vh, 11px);
    font-size: clamp(13px, 1.6vh, 14.5px); gap: clamp(8px, 1.2vh, 11px);
  }
  .nav-ic { font-size: clamp(17px, 2.3vh, 21px); width: clamp(25px, 3.2vh, 30px); }
  .nav-ic.ic-img { width: clamp(25px, 3.2vh, 30px); height: clamp(25px, 3.2vh, 30px); }
  .sidebar-r-foot .nav-item {
    padding-top: clamp(7px, 1.25vh, 11px); padding-bottom: clamp(7px, 1.25vh, 11px);
  }
}

/* ============ PAINEL DIREITO (relógio + calendário) ============ */
.sidebar-r {
  margin: 14px; padding: 14px 13px; border-radius: var(--r-xl);
  display: flex; flex-direction: column; gap: 16px;
  background: var(--card-grad); border: 1px solid var(--border);
  backdrop-filter: blur(22px) saturate(160%); -webkit-backdrop-filter: blur(22px) saturate(160%);
  box-shadow: var(--shadow), inset 1px 1px 0 var(--rim);
}
.sidebar-r-top { display: flex; justify-content: flex-start; }
.sidebar-r-body { display: flex; flex-direction: column; gap: 18px; }

/* Rodapé da barra direita: Ajuda + Sair, fixos no fundo */
.sidebar-r-foot {
  margin-top: auto; display: flex; flex-direction: column; gap: 6px;
  padding-top: 12px; border-top: 1px solid var(--border);
}
.sidebar-r-foot .btn-logout { margin-top: 0; }
.sidebar-r-foot .nav-item.ativo {   /* Ajuda ativa: destaque sutil, sem o gradiente azul cheio */
  background: var(--glass-2); color: var(--text); font-weight: 600; box-shadow: none;
}

/* recolhido: faixa fina com o botão + ícones (igual à barra esquerda) */
.sidebar-r-colapsada .sidebar-r { padding: 16px 10px; }
.sidebar-r-colapsada .sidebar-r-top { justify-content: center; }
.sidebar-r-colapsada .sidebar-r-body { display: none; }
/* recolhido: Ajuda + Sair continuam acessíveis como ícones no fundo */
.sidebar-r-colapsada .sidebar-r-foot { align-items: center; border-top: none; padding-top: 0; }
.sidebar-r-colapsada .sidebar-r-foot .nav-tx { display: none; }
.sidebar-r-colapsada .sidebar-r-foot .nav-item { justify-content: center; padding: 11px; gap: 0; }
.sidebar-r-colapsada .sidebar-r-foot .btn-logout { padding: 11px; }
.sidebar-r-mini { display: none; }
.sidebar-r-colapsada .sidebar-r-mini {
  display: flex; flex-direction: column; align-items: center; gap: 10px; margin-top: 14px;
}
.sbr-mini-ic {
  width: 32px; height: 32px; border-radius: var(--r-md);
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--border); background: var(--glass);
  font-size: 17px; line-height: 1; cursor: pointer;
  transition: background .15s, transform .05s;
}
.sbr-mini-ic:hover { background: var(--glass-2); }
.sbr-mini-ic:active { transform: scale(.95); }

/* --- relógio digital (LCD) --- */
.clock { text-align: center; }
.clock-lcd {
  position: relative; display: inline-block;
  font-family: "Consolas", "SF Mono", ui-monospace, "Courier New", monospace;
  font-weight: 700; font-size: 44px; letter-spacing: 3px; line-height: 1;
}
.clock-ghost { color: rgba(74,222,128,.10); }
.clock-time {
  position: absolute; left: 0; top: 0; right: 0;
  color: #4ade80; text-shadow: 0 0 14px rgba(74,222,128,.55);
}
.clock-colon { animation: clock-blink 1s step-start infinite; }
@keyframes clock-blink { 50% { opacity: .25; } }
.clock-date { margin-top: 9px; font-size: 12.5px; color: var(--muted); text-transform: capitalize; }
[data-theme="light"] .clock-ghost { color: rgba(22,163,74,.10); }
[data-theme="light"] .clock-time  { color: #16a34a; text-shadow: 0 0 10px rgba(22,163,74,.35); }

/* --- calendário --- */
.cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.cal-titulo { font-size: 14.5px; font-weight: 600; text-transform: capitalize; }
.cal-nav { display: flex; gap: 4px; }
.cal-btn {
  width: 26px; height: 26px; border-radius: var(--r-sm); flex: none;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--border); background: var(--glass);
  color: var(--muted); font-size: 14px; line-height: 1;
  transition: background .15s, color .15s;
}
.cal-btn:hover { background: var(--glass-2); color: var(--text); }
.cal-btn-hoje { font-size: 18px; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.cal-dow {
  text-align: center; font-size: 10.5px; font-weight: 600;
  color: var(--muted); padding: 2px 0 6px;
}
.cal-day {
  display: flex; align-items: center; justify-content: center; aspect-ratio: 1;
  font-size: 12.5px; color: var(--text); border-radius: var(--r-pill);
  cursor: default; transition: background .12s;
}
.cal-day:not(.vazio):not(.hoje):hover { background: var(--glass-2); }
.cal-day.outro { color: var(--muted); opacity: .35; }
.cal-day.hoje { background: #22c55e; color: #fff; font-weight: 700; }
.cal-day.cal-click { cursor: pointer; }
.cal-day.cal-click:hover:not(.hoje) { background: var(--glass-2); }

/* ============ QUADRO DE SERVIÇOS (calendário central) ============ */
/* Hoje à esquerda · ‹ período › ao centro · seletor de visão à direita.
   Grid 1fr/auto/1fr garante o grupo central no meio real da barra. */
.cal2-toolbar { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 14px; margin-bottom: 18px; }
.cal2-toolbar > #cal2-hoje { justify-self: start; }
.cal2-nav { display: flex; align-items: center; justify-content: center; gap: 8px; justify-self: center; }
.cal2-titulo { margin: 0; text-align: center; font-size: 19px; letter-spacing: -.3px; text-transform: capitalize; min-width: 150px; }
.cal2-views { display: flex; gap: 6px; justify-self: end; flex-wrap: wrap; }

/* --- visão Mês --- */
.cal2-mes { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; }
.cal2-dow { text-align: center; font-size: 12px; font-weight: 600; color: var(--muted); padding-bottom: 2px; }
.cal2-cell {
  position: relative; min-height: 96px; border-radius: var(--r-md);
  border: 1px solid var(--border); background: var(--card-grad);
  padding: 8px 10px 10px; display: flex; flex-direction: column; align-items: center; gap: 6px;
  cursor: pointer; transition: border-color .15s, box-shadow .15s;
}
.cal2-cell:hover { border-color: var(--accent); }
.cal2-cell.outro { opacity: .4; cursor: default; background: transparent; }
.cal2-cell.outro:hover { border-color: var(--border); }
.cal2-cell.hoje { border-color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent); }
.cal2-num { align-self: flex-start; font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; }
.cal2-cell.hoje .cal2-num { color: var(--accent-2); }
.cal2-marks { margin-top: auto; display: flex; align-items: center; justify-content: center; gap: 6px; }
.cal2-dot {
  min-width: 30px; height: 30px; padding: 0 8px;
  display: flex; align-items: center; justify-content: center;
  border-radius: var(--r-pill); background: linear-gradient(180deg, var(--accent-2), var(--accent));
  color: #fff; font-size: 13px; font-weight: 700; box-shadow: 0 6px 14px -6px var(--accent);
}

/* --- visão Semana --- */
.cal2-semana { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; align-items: start; }
.cal2-col { border-radius: var(--r-md); border: 1px solid var(--border); overflow: hidden; background: var(--card-grad); min-height: 280px; }
.cal2-colhead {
  padding: 9px 8px; text-align: center; font-size: 12px; color: var(--muted);
  border-bottom: 1px solid var(--border); text-transform: capitalize; cursor: pointer;
  font-variant-numeric: tabular-nums;
}
.cal2-colhead:hover { background: var(--glass); }
.cal2-colhead b { color: var(--text); display: block; font-size: 13px; }
.cal2-colhead.hoje, .cal2-colhead.hoje b { color: var(--accent-2); }
.cal2-col-body { padding: 8px; display: flex; flex-direction: column; gap: 8px; }
.cal2-vazio { text-align: center; color: var(--muted); opacity: .45; font-size: 13px; padding: 6px 0; }

/* --- visão Dia --- */
.cal2-dia-lista { display: flex; flex-direction: column; gap: 10px; max-width: 560px; }

/* --- chip de OS --- */
.cal2-os {
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left;
  width: 100%; padding: 9px 11px; border-radius: var(--r-sm); cursor: pointer; color: var(--text);
  background: var(--glass); border: 1px solid var(--border); border-left: 3px solid var(--accent-2);
  font-family: inherit; transition: background .15s, transform .05s;
}
.cal2-os:hover { background: var(--glass-2); }
.cal2-os:active { transform: scale(.99); }
.cal2-os b { font-size: 13px; font-variant-numeric: tabular-nums; }
.cal2-os-sub { font-size: 12px; color: var(--muted); line-height: 1.3; }
.cal2-os-serv {
  font-size: 12px; color: var(--text); opacity: .9; line-height: 1.3; margin-top: 2px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.cal2-os.st-aguardando_analise, .cal2-os.st-aguardando_aprovacao { border-left-color: #e0a64a; }
.cal2-os.st-em_reparo { border-left-color: var(--accent); }
.cal2-os.st-recusado { border-left-color: var(--danger); }

/* contas a pagar no calendário: círculo vermelho (mês) + chip (semana/dia) */
.cal2-pagar {
  min-width: 30px; height: 30px; padding: 0 8px;
  display: flex; align-items: center; justify-content: center;
  border-radius: var(--r-pill); background: linear-gradient(180deg, #ff6b78, var(--danger));
  color: #fff; font-size: 13px; font-weight: 700; box-shadow: 0 6px 14px -6px var(--danger);
}
.cal2-conta {
  display: flex; align-items: center; gap: 8px; width: 100%; text-align: left;
  padding: 8px 11px; border-radius: var(--r-sm); cursor: pointer; color: var(--text);
  background: var(--glass); border: 1px solid var(--border); border-left: 3px solid var(--danger);
  font-family: inherit; transition: background .15s, transform .05s;
}
.cal2-conta:hover { background: var(--glass-2); }
.cal2-conta:active { transform: scale(.99); }
.cal2-conta-tx { flex: 1; min-width: 0; font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal2-conta-val { flex: none; font-size: 12.5px; font-weight: 700; color: var(--danger); font-variant-numeric: tabular-nums; }

/* lembrete no calendário (chip âmbar) + pino no mês */
.cal2-pin { font-size: 30px; line-height: 1; }
.cal2-lemb {
  display: flex; align-items: center; gap: 6px; width: 100%;
  padding: 8px 10px; border-radius: var(--r-sm); border: 1px solid var(--border);
  border-left: 3px solid #e0a64a; background: var(--glass);
}
.cal2-lemb-tx { flex: 1; min-width: 0; font-size: 12.5px; color: var(--text); }
.cal2-lemb-done {
  flex: none; width: 22px; height: 22px; border-radius: var(--r-xs); cursor: pointer;
  border: 1px solid var(--border); background: transparent; color: var(--muted); font-size: 12px; line-height: 1;
}
.cal2-lemb-done:hover { border-color: var(--ok); color: var(--ok); }

@media (max-width: 760px) {
  .cal2-mes, .cal2-semana { gap: 4px; }
  .cal2-cell { min-height: 64px; padding: 5px; }
  .cal2-os-sub { display: none; }
}

/* ---- Lembretes (barra direita) ---- */
.lembretes { display: flex; flex-direction: column; gap: 8px; }
.lembretes-tit { font-size: 14.5px; font-weight: 600; }
.lemb-texto, .lemb-data { width: 100%; padding: 8px 10px; font-size: 13px; }
.lemb-linha { display: flex; gap: 8px; }
.lemb-linha .lemb-data { flex: 1; }
.lemb-linha .btn-acao { flex: none; padding: 8px 12px; }
.lemb-cancela { flex: none; padding: 8px 12px; }
.lemb-divisor { border: 0; border-top: 1px solid var(--border); opacity: .6; margin: 12px 0 10px; }
.lemb-filtro-lbl { font-size: 11.5px; font-weight: 600; color: var(--muted); }
.lemb-filtro-linha { display: flex; align-items: center; gap: 8px; }
.lemb-filtro-linha .lemb-data { flex: 1; }
.lemb-todos {
  flex: none; padding: 6px 12px; border-radius: var(--r-sm); cursor: pointer;
  font-size: 12px; font-weight: 600; font-family: inherit;
  border: 1px solid var(--border); background: var(--glass-2); color: var(--muted);
  transition: background .15s, border-color .15s, color .15s;
}
.lemb-todos:hover { color: var(--text); border-color: var(--accent); }
.lemb-todos.ativo { background: var(--accent); border-color: var(--accent); color: #fff; }
.lembretes-lista { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.lemb-vazio { font-size: 12.5px; color: var(--muted); opacity: .7; }
.lemb-item {
  display: flex; align-items: center; gap: 6px;
  padding: 7px 8px; border-radius: var(--r-sm); border: 1px solid var(--border);
  border-left: 3px solid #e0a64a; background: var(--glass);
}
.lemb-item-meio { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.lemb-item-data { font-size: 11px; color: var(--muted); font-variant-numeric: tabular-nums; }
.lemb-item-tx { font-size: 13px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lemb-ic {
  flex: none; width: 24px; height: 24px; border-radius: var(--r-xs); cursor: pointer; font-size: 12px; line-height: 1;
  border: 1px solid transparent; background: transparent; color: var(--muted);
  transition: background .15s, border-color .15s, color .15s;
}
.lemb-ic:hover { background: var(--glass-2); }
.lemb-done:hover { border-color: var(--ok); color: var(--ok); }
.lemb-del:hover { border-color: var(--danger); color: var(--danger); }

.conteudo { position: relative; z-index: 0; padding: 22px 26px 40px; min-width: 0; min-height: 0; overflow-y: auto; transition: background-color .2s; }

/* marca d'água (logo) centralizada no quadrante central, atrás do conteúdo */
.marca-dagua {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: min(46%, 360px); max-height: 60%; object-fit: contain;
  opacity: .08; pointer-events: none; user-select: none; z-index: -1;
}

/* nome da empresa — marca no topo da tela (acima do título da página) */
.home-empresa {
  font-size: 26px; font-weight: 800; letter-spacing: -.4px;
  color: var(--text); margin: 0 0 10px;
}

/* ============ PERSONALIZAÇÃO › APARÊNCIA ============ */
.pers { max-width: 980px; display: flex; align-items: flex-start; gap: 12px; }
.pers-col { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
@media (max-width: 760px) { .pers { flex-direction: column; } }
/* Área separada do Superadmin: card com borda de destaque agrupando as seções */
.pers-grupo {
  max-width: 980px; margin-top: 20px; padding: 16px 18px;
  border-radius: var(--r-xl); border: 1px solid var(--accent);
  background: color-mix(in srgb, var(--accent) 6%, transparent);
}
.pers-grupo-tit { margin: 0; font-size: 15px; display: flex; align-items: center; gap: 7px; }
.pers-grupo-desc { margin: 4px 0 14px; font-size: 12.5px; color: var(--muted); }
.pers-grupo-secs { display: flex; flex-direction: column; gap: 12px; }
.pers-sec {
  background: var(--card-grad); border: 1px solid var(--border); border-radius: var(--r-xl);
  box-shadow: var(--shadow), inset 1px 1px 0 var(--rim); overflow: hidden;
  backdrop-filter: blur(22px) saturate(160%); -webkit-backdrop-filter: blur(22px) saturate(160%);
}
.pers-sec-head {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 18px 22px; background: transparent; border: 0; color: var(--text);
  font-size: 16px; font-weight: 600; text-align: left;
}
.pers-sec-head:not(:disabled):hover { background: var(--glass); }
.pers-sec-chev { color: var(--muted); font-size: 18px; line-height: 1; transition: transform .2s; }
.pers-sec.aberto .pers-sec-chev { transform: rotate(180deg); }
.pers-sec-body { display: none; padding: 0 22px 22px; }
.pers-sec.aberto .pers-sec-body { display: block; }
.pers-sec.em-breve { opacity: .55; }
.pers-sec.em-breve .pers-sec-head { cursor: not-allowed; }
.pers-sec-soon {
  font-size: 10px; font-weight: 600; background: var(--glass-2); color: var(--muted);
  padding: 2px 8px; border-radius: var(--r-pill);
}
.pers-desc { margin: 0 0 6px; color: var(--muted); font-size: 13.5px; }
.oscampos { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; margin-top: 14px; }
.oscampo {
  display: flex; align-items: center; gap: 10px; cursor: pointer;
  padding: 11px 13px; border-radius: var(--r-md);
  border: 1px solid var(--border); background: var(--glass);
  font-size: 14px; user-select: none;
}
.oscampo:hover { background: var(--glass-2); }
.oscampo input { width: 17px; height: 17px; flex: none; accent-color: var(--accent); cursor: pointer; }
.oscampo span { color: var(--text); }
/* Subtítulo dentro de uma seção de personalização */
.pers-subtit { margin: 22px 0 4px; font-size: 14px; font-weight: 700; color: var(--text); }
/* Cor do selo de status da OS: amostra + seletor + restaurar, por status */
.oscores { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 8px; margin-top: 12px; }
.oscor {
  display: flex; align-items: center; gap: 10px; padding: 9px 12px;
  border-radius: var(--r-md); border: 1px solid var(--border); background: var(--glass);
}
.oscor-amostra { flex: none; }
.oscor-input {
  margin-left: auto; flex: none; width: 34px; height: 26px; padding: 0; cursor: pointer;
  border: 1px solid var(--border); border-radius: var(--r-sm); background: var(--glass-2);
}
.oscor-reset {
  flex: none; width: 28px; height: 26px; font-size: 14px; line-height: 1;
  border: 1px solid var(--border); border-radius: var(--r-sm); background: var(--glass-2); color: var(--muted);
}
.oscor-reset:hover { color: var(--text); }
.pers label { display: block; font-size: 12px; font-weight: 600; color: var(--muted); margin: 18px 0 7px; }
.pers input[type="text"], .pers-sec-body select {
  width: 100%; padding: 10px 12px; border-radius: var(--r-md); font-family: inherit;
  border: 1px solid var(--border); background: var(--glass); color: var(--text); font-size: 14px;
}
.pers-sec-body select { color-scheme: dark light; }
.pers input[type="text"]:focus, .pers-sec-body select:focus { outline: none; border-color: var(--accent); }
.pers-cor { display: flex; align-items: center; gap: 10px; }
.pers-cor input[type="color"] {
  width: 48px; height: 40px; padding: 3px; flex: none; cursor: pointer;
  border: 1px solid var(--border); border-radius: var(--r-sm); background: var(--glass);
}
.pers-cor-hex { max-width: 150px; }
.pers-logo { display: flex; align-items: center; gap: 16px; }
.pers-logo-prev {
  width: 96px; height: 96px; flex: none; border-radius: var(--r-md);
  border: 1px dashed var(--border); background: var(--glass);
  display: flex; align-items: center; justify-content: center;
  color: var(--muted); font-size: 12px; overflow: hidden; text-align: center;
}
.pers-logo-prev img { width: 100%; height: 100%; object-fit: contain; }
.pers-logo-acoes { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.pers-dica { font-size: 12px; color: var(--muted); margin: 8px 0 0; }
.pers-rodape { margin-top: 24px; }
.topo { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 22px; }
.topo h2 { margin: 0; font-size: 22px; letter-spacing: -.3px; }
.topo-acoes { display: flex; align-items: center; gap: 14px; }
.usuario { color: var(--muted); font-size: 14px; }
.usuario b { color: var(--text); }

.btn-tema {
  width: 38px; height: 38px; border-radius: 50%;
  border: 1px solid var(--border); background: var(--glass);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  font-size: 16px; line-height: 1;
}
.btn-tema:hover { background: var(--glass-2); }

/* ---- Central de notificações (sininho) ---- */
.inbox-wrap { position: relative; }
.btn-inbox {
  width: 38px; height: 38px; border-radius: 50%;
  border: 1px solid var(--border); background: var(--glass);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  font-size: 16px; line-height: 1; position: relative;
}
.btn-inbox:hover { background: var(--glass-2); }
.inbox-badge {
  position: absolute; top: -4px; right: -4px; min-width: 18px; height: 18px;
  border-radius: var(--r-pill); background: var(--danger); color: #fff;
  font-size: 10px; font-weight: 700; display: flex; align-items: center; justify-content: center;
  padding: 0 4px;
}
/* Sino com aviso NÃO LIDO: o número no canto passava despercebido — o botão
   inteiro ganha um halo vermelho borrado que pulsa até tudo ser lido. O ::before
   fica entre o fundo do botão e o emoji (z-index negativo dentro do stacking
   context que o backdrop-filter do .btn-inbox já cria). */
.btn-inbox.tem-nao-lidas {
  border-color: color-mix(in srgb, var(--danger) 55%, var(--border));
  background: color-mix(in srgb, var(--danger) 13%, var(--glass));
}
.btn-inbox.tem-nao-lidas::before {
  content: ''; position: absolute; inset: -3px; border-radius: 50%; z-index: -1;
  pointer-events: none; filter: blur(6px);
  background: radial-gradient(circle,
              color-mix(in srgb, var(--danger) 85%, transparent) 0%,
              color-mix(in srgb, var(--danger) 30%, transparent) 55%,
              transparent 72%);
  animation: sino-halo 1.9s ease-in-out infinite;
}
@keyframes sino-halo {
  0%, 100% { opacity: .42; transform: scale(.9); }
  50%      { opacity: 1;   transform: scale(1.2); }
}
@media (prefers-reduced-motion: reduce) {
  .btn-inbox.tem-nao-lidas::before { animation: none; opacity: .85; }
}

/* Selo "canal bloqueado" (Fase 5B): mesmo botão-círculo do sino, com o corte
   vermelho de proibição por cima do glifo do WhatsApp. Só aparece quando o
   superadmin cortou o envio automático — o title/aria explica e manda procurar
   o suporte. */
.btn-canal-bloq {
  display: flex; align-items: center; justify-content: center;
  color: var(--muted); cursor: help;
}
.btn-canal-bloq:hover { color: var(--text); }
.btn-canal-bloq svg { width: 19px; height: 19px; display: block; }
.btn-canal-bloq::after {
  content: ''; position: absolute; left: 50%; top: 50%;
  width: 26px; height: 3px; border-radius: 2px; pointer-events: none;
  background: var(--danger);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--bg-1) 75%, transparent);
  transform: translate(-50%, -50%) rotate(-45deg);
}
.inbox-painel {
  position: absolute; right: 0; top: calc(100% + 8px); width: 340px; max-height: 60vh;
  overflow: auto; z-index: 50; background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--r-lg); box-shadow: var(--shadow);
}
.inbox-head {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 12px 14px; border-bottom: 1px solid var(--border); position: sticky; top: 0;
  background: var(--surface);
}
/* Título encolhe (reticências) para os dois botões caberem sem alargar o painel. */
.inbox-head > b { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inbox-head-acoes { display: flex; align-items: center; gap: 6px; flex: none; }
.inbox-head-acoes .btn-mini { flex: none; padding: 6px 9px; font-size: 12px; }
.inbox-lista { display: flex; flex-direction: column; gap: 6px; padding: 8px; }
.inbox-item {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 10px; border-radius: var(--r-sm); border: 1px solid var(--border);
  border-left: 3px solid transparent; background: var(--glass);
}
.inbox-item.nao-lida { border-left-color: var(--accent); }
.inbox-item[data-inbox-os] { cursor: pointer; }
.inbox-item[data-inbox-os]:hover { background: var(--glass-2); }
.inbox-item-tx { flex: 1; min-width: 0; font-size: 13px; color: var(--text); }
.inbox-item-os { color: var(--accent); text-decoration: underline; text-decoration-color: transparent; transition: text-decoration-color .15s; }
.inbox-item[data-inbox-os]:hover .inbox-item-os { text-decoration-color: var(--accent); }
.inbox-item-tempo { flex: none; font-size: 11px; color: var(--muted); white-space: nowrap; }
.inbox-ic {
  flex: none; width: 22px; height: 22px; border-radius: var(--r-xs); cursor: pointer; font-size: 11px; line-height: 1;
  border: 1px solid transparent; background: transparent; color: var(--muted);
  transition: background .15s, border-color .15s, color .15s;
}
.inbox-ic:hover { background: var(--glass-2); border-color: var(--danger); color: var(--danger); }
.inbox-vazio { color: var(--muted); padding: 20px; text-align: center; font-size: 13px; }
@media (max-width: 600px) {
  .inbox-painel { position: fixed; left: 8px; right: 8px; top: 64px; width: auto; }
}

.page { display: none; }
.page.ativa { display: block; }

/* ---- Início (painel) ---- */
.home-saudacao { margin-bottom: 22px; }
.home-greeting { margin: 0; font-size: 27px; font-weight: 700; letter-spacing: -.4px; }
.home-sub { margin: 4px 0 0; color: var(--muted); font-size: 14.5px; }

.home-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; }
.stat-card {
  position: relative; display: flex; align-items: center; gap: 14px;
  border-radius: var(--r-lg); padding: 18px 20px;
  background: var(--card-grad); border: 1px solid var(--border);
  backdrop-filter: blur(16px) saturate(140%); -webkit-backdrop-filter: blur(16px) saturate(140%);
  box-shadow: var(--shadow), inset 0 1px 0 var(--rim);
}
.stat-ic {
  flex: none; width: 46px; height: 46px; border-radius: var(--r-md);
  display: flex; align-items: center; justify-content: center; font-size: 22px;
  background: var(--glass-2); border: 1px solid var(--border);
}
.stat-meio { min-width: 0; }
.stat-val { font-size: 26px; font-weight: 700; letter-spacing: -.5px; line-height: 1.1; }
.stat-lbl { color: var(--muted); font-size: 13px; margin-top: 2px; }
.chip-soon {
  position: absolute; top: 12px; right: 12px;
  font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: var(--r-pill);
  background: var(--glass-2); color: var(--muted); border: 1px solid var(--border);
}

/* Resumo do painel na home (card clicável → Painel) */
.home-resumo {
  border-radius: var(--r-lg); padding: 16px 18px; cursor: pointer;
  background: var(--card-grad); border: 1px solid var(--border);
  backdrop-filter: blur(16px) saturate(140%); -webkit-backdrop-filter: blur(16px) saturate(140%);
  box-shadow: var(--shadow), inset 0 1px 0 var(--rim);
  transition: transform .14s, box-shadow .14s, border-color .14s;
}
.home-resumo:hover { transform: translateY(-2px); border-color: var(--accent); box-shadow: var(--shadow-hover), inset 0 1px 0 var(--rim); }
.home-resumo-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.home-resumo-head h3 { margin: 0; font-size: 15px; }
.home-resumo-ir { font-size: 12.5px; color: var(--accent-2); white-space: nowrap; }
.home-resumo-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(215px, 1fr)); gap: 14px; }
.home-resumo-bloco {
  padding: 14px 15px; border-radius: var(--r-md);
  background: var(--glass); border: 1px solid var(--border);
}
.home-resumo-tit { font-size: 12px; color: var(--muted); margin-bottom: 10px; text-transform: uppercase; letter-spacing: .03em; }

.home-h3 { margin: 26px 0 12px; font-size: 15px; font-weight: 600; color: var(--muted); }
.home-acoes { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; }
.acao-card {
  display: flex; align-items: center; gap: 14px; text-align: left;
  border-radius: var(--r-lg); padding: 16px 18px;
  background: var(--card-grad); border: 1px solid var(--border);
  backdrop-filter: blur(16px) saturate(140%); -webkit-backdrop-filter: blur(16px) saturate(140%);
  box-shadow: var(--shadow), inset 0 1px 0 var(--rim);
  color: var(--text); font-family: inherit;
  transition: transform .14s, box-shadow .14s, border-color .14s;
}
.acao-card:not(:disabled):hover {
  transform: translateY(-2px); border-color: var(--accent);
  box-shadow: var(--shadow-hover), inset 0 1px 0 var(--rim);
}
.acao-card:not(:disabled):active { transform: translateY(0); }
.acao-ic {
  flex: none; width: 44px; height: 44px; border-radius: var(--r-md);
  display: flex; align-items: center; justify-content: center; font-size: 20px;
  background: linear-gradient(180deg, var(--accent-2), var(--accent)); color: #fff;
  box-shadow: 0 8px 18px -8px var(--accent);
}
.acao-tx { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.acao-tx b { font-size: 15px; font-weight: 600; }
.acao-tx small { color: var(--muted); font-size: 12.5px; }
.acao-card.em-breve { opacity: .55; cursor: not-allowed; }
.acao-card.em-breve .acao-ic { background: var(--glass-2); color: var(--muted); box-shadow: none; }

/* ============ CLIENTES ============ */
.page-toolbar { display: flex; gap: 12px; margin-bottom: 18px; }
.page-toolbar .busca { flex: 1; max-width: 420px; }
.btn-acao {
  padding: 11px 18px; border: 0; border-radius: var(--r-md); white-space: nowrap;
  background: linear-gradient(180deg, var(--accent-2), var(--accent));
  color: #fff; font-size: 14px; font-weight: 600;
  box-shadow: 0 6px 18px -6px var(--accent);
}
.btn-acao:hover { filter: brightness(1.07); }

.cli-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(285px, 1fr)); gap: 14px; }
.ver-mais-wrap { display: flex; justify-content: center; margin-top: 18px; }
.ver-mais {
  padding: 10px 22px; border-radius: var(--r-pill); cursor: pointer; font-family: inherit;
  font-size: 14px; font-weight: 600; color: var(--accent-2);
  background: var(--glass); border: 1px solid var(--border);
  transition: background .15s, border-color .15s, transform .05s;
}
.ver-mais:hover { background: var(--glass-2); border-color: var(--accent); }
.ver-mais:active { transform: scale(.98); }
.cli-card {
  border-radius: var(--r-lg); padding: 17px; cursor: pointer;
  background: var(--card-grad); border: 1px solid var(--border);
  backdrop-filter: blur(16px) saturate(140%); -webkit-backdrop-filter: blur(16px) saturate(140%);
  box-shadow: var(--shadow), inset 0 1px 0 var(--rim);
  transition: transform .14s, box-shadow .14s;
}
.cli-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-hover), inset 0 1px 0 var(--rim);
}
.cli-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.cli-nome { font-weight: 600; font-size: 16px; }
.cli-codigo { font-size: 11px; color: var(--muted); font-variant-numeric: tabular-nums; margin-top: 2px; }
.badge {
  font-size: 11px; font-weight: 600; padding: 3px 9px; border-radius: var(--r-pill);
  background: var(--glass-2); color: var(--muted); white-space: nowrap; border: 1px solid var(--border);
}
.badge.empresa { color: var(--accent-2); }
/* Status de pagamento da compra (cards Sem NF). */
.badge-ok   { color: #34c759; border-color: rgba(52,199,89,.4); }
.badge-pend { color: #e0a64a; border-color: rgba(224,166,74,.4); white-space: normal; }
.badge-red  { color: #ff453a; border-color: rgba(255,69,58,.45); background: rgba(255,69,58,.08); }
/* Acento na borda do card de compra pelo status de pagamento. */
.cli-card.nao-lancado   { border-left: 3px solid #ff453a; }  /* sem lançamento */
.cli-card.compra-apagar { border-left: 3px solid #e0a64a; }  /* a pagar */
.cli-card.compra-paga   { border-left: 3px solid #34c759; }  /* paga */
.btn-mini.btn-lancar { color: var(--accent); border-color: rgba(10,132,255,.4); font-weight: 600; }
/* Estoque travado na edição do produto (campo readonly + cadeado pequeno). */
.pec-estoque-lock { display: flex; align-items: center; gap: 8px; }
.pec-estoque-ro { flex: 1; opacity: .6; cursor: not-allowed; }
.pec-cadeado-btn {
  flex: none; width: 38px; height: 38px; padding: 0; font-size: 15px; line-height: 1;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--glass-2); border: 1px solid var(--border); border-radius: 10px;
  color: var(--muted); cursor: pointer;
}
.pec-cadeado-btn:hover { color: var(--text); border-color: var(--accent); }
.pec-estoque-ajuste { margin-top: 10px; padding: 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--glass-2); }
/* VAT/IVA na entrada de estoque (oficinas UE/UK): rótulo + toggle ON/OFF azul +
   dica, alinhado à direita na mesma linha do nº da NF. */
.pec-nf-topo { display: flex; gap: 14px; align-items: flex-start; }
.pec-nf-numero-wrap { flex: 1; min-width: 0; }
.pec-vat-box { flex: none; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; text-align: right; }
.pec-vat-lbl { font-size: 13px; font-weight: 600; color: var(--text); }
.pec-vat-hint { font-size: 11px; color: var(--muted); max-width: 150px; line-height: 1.3; }
.vat-switch { position: relative; display: inline-block; width: 64px; height: 30px; }
.vat-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.vat-slider { position: absolute; inset: 0; border-radius: 30px; background: var(--border); cursor: pointer; transition: background .2s; }
.vat-slider::before { content: ''; position: absolute; top: 3px; left: 3px; width: 24px; height: 24px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.45); transition: transform .2s; z-index: 2; }
.vat-on, .vat-off { position: absolute; top: 0; line-height: 30px; font-size: 10.5px; font-weight: 700; letter-spacing: .03em; }
.vat-on  { left: 9px;  color: #fff; opacity: 0; }
.vat-off { right: 9px; color: var(--muted); opacity: 1; }
.vat-switch input:checked + .vat-slider { background: var(--accent); }
.vat-switch input:checked + .vat-slider::before { transform: translateX(34px); }
.vat-switch input:checked + .vat-slider .vat-on  { opacity: 1; }
.vat-switch input:checked + .vat-slider .vat-off { opacity: 0; }
.vat-switch input:focus-visible + .vat-slider { outline: 2px solid var(--accent); outline-offset: 2px; }
/* Data | Desconto | Total na mesma linha — data e total estreitos, desconto no meio. */
.pec-nf-vals { display: flex; gap: 10px; align-items: flex-end; }
.pec-nf-vals > div { min-width: 0; }
.pec-nf-vals input { width: 100%; }
.pec-nf-data-fld  { flex: 1 1 150px; }
.pec-nf-desc-fld  { flex: 0 0 112px; }
.pec-nf-total-fld { flex: 0 0 112px; }
/* Linha do frete: tudo em linha — Frete [campo pequeno] … Incluir no custo [toggle]. */
.pec-frete-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 6px 0 0; }
.pec-frete-lbl { font-size: 13px; font-weight: 600; color: var(--text); }
.pec-frete-input { width: 100px; flex: none; }
.pec-frete-incluir { margin-left: 8px; font-size: 13px; font-weight: 600; color: var(--text); }
.pec-frete-hint { margin: 5px 0 8px; }
/* Seções do modal de compra/produto: título discreto (label maiúsculo + fio),
   pra dividir e escanear melhor (Dados da compra · Produto · Preço e estoque). */
.pec-sec-tit {
  display: flex; align-items: center; gap: 10px;
  margin: 20px 0 12px; font-size: 11px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .05em; color: var(--muted);
}
.pec-sec-tit::after { content: ''; flex: 1; height: 1px; background: var(--border); }
/* Bloco da compra (NF) vira um card, separando visualmente do editor de produto. */
#pec-nf-header { padding: 2px 14px 14px; border: 1px solid var(--border); border-radius: 14px; background: var(--glass-2); }
#pec-nf-header .pec-sec-tit { margin-top: 14px; }
.cli-info { margin-top: 12px; display: flex; flex-direction: column; gap: 5px; font-size: 13px; color: var(--muted); }
.cli-info span b { color: var(--text); font-weight: 500; }
/* Fornecedor: infos em fluxo horizontal (distribui melhor a largura do card) */
.forn-info { flex-flow: row wrap; gap: 6px 18px; }
.forn-info span { display: inline-flex; align-items: center; gap: 4px; }
/* Linha de ações (Clientes/Fornecedores/Compras/Serviços/Peças): divisória antes,
   igual ao rodapé de OS/Venda. flex-wrap p/ Peças (4 botões) não estourar em card estreito. */
.cli-acoes { margin-top: 13px; padding-top: 12px; border-top: 1px solid var(--border);
  display: flex; gap: 8px; flex-wrap: wrap; }
.btn-mini {
  flex: 1; padding: 8px; border-radius: var(--r-sm); font-size: 13px; font-weight: 500;
  border: 1px solid var(--border); background: var(--glass-2); color: var(--muted);
}
.btn-mini:hover { color: var(--text); }
.btn-mini.del:hover { color: var(--danger); border-color: var(--danger); }
.btn-mini:disabled { opacity: .4; cursor: not-allowed; }
.btn-mini:disabled:hover { color: var(--muted); }

.vazio { text-align: center; color: var(--muted); padding: 56px 20px; }
.vazio-icone { font-size: 38px; }

/* ============ ORDENS DE SERVIÇO ============ */
.os-filtros { margin-top: -4px; }

.os-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.os-card {
  border-radius: var(--r-lg); padding: 17px; cursor: pointer;
  background: var(--card-grad); border: 1px solid var(--border);
  backdrop-filter: blur(16px) saturate(140%); -webkit-backdrop-filter: blur(16px) saturate(140%);
  box-shadow: var(--shadow), inset 0 1px 0 var(--rim);
  transition: transform .14s, box-shadow .14s;
}
.os-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-hover), inset 0 1px 0 var(--rim); }
.os-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
/* Selo de status no card da OS: maior que o .badge padrão. */
.os-card-top .badge { font-size: 13px; padding: 5px 12px; }
.os-codigo { font-weight: 700; font-size: 16px; font-variant-numeric: tabular-nums; }
.os-tipo { font-size: 12px; color: var(--muted); margin-top: 2px; }
.os-desc {
  margin-top: 11px; font-size: 13px; color: var(--muted);
  display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
/* Nº de série ao lado do modelo, em verde sutil (números alinhados) */
.os-serie { color: color-mix(in srgb, var(--ok) 72%, var(--muted)); font-weight: 600; font-variant-numeric: tabular-nums; }

/* ===== Card de OS (v2): faixa colorida do status no topo + glow sutil na cor.
   --osh-c vem inline no card = var(--st-<status>) (segue as cores customizadas). ===== */
.oscard2 {
  padding: 0; overflow: hidden;
  border-color: color-mix(in srgb, var(--osh-c) 14%, var(--border));
  box-shadow: var(--shadow), 0 8px 24px -18px var(--osh-c), inset 0 1px 0 var(--rim);
}
.oscard2:hover {
  box-shadow: var(--shadow-hover), 0 11px 28px -17px var(--osh-c), inset 0 1px 0 var(--rim);
}
/* Faixa do topo: tinte translúcido da cor do status sobre o vidro (discreto) + barriga suave.
   Texto usa --text/--muted (adapta aos dois temas; contraste vem do card por baixo). */
.oscard2-head {
  position: relative; text-align: center; padding: 10px 14px 13px;
  background: linear-gradient(160deg,
    color-mix(in srgb, var(--osh-c) 32%, transparent),
    color-mix(in srgb, var(--osh-c) 16%, transparent));
  border-radius: 0 0 50% 50% / 0 0 13px 13px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
}
.oscard2-status {
  display: block; font-size: 13.5px; font-weight: 700; line-height: 1.2;
  color: var(--text); letter-spacing: .01em;
}
/* Linha do código com badges nas pontas: grid 3 colunas mantém o código centralizado */
.oscard2-tags { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 6px; margin-top: 3px; }
.oscard2-cod {
  grid-column: 2; font-size: 12px; font-weight: 600;
  color: var(--muted); font-variant-numeric: tabular-nums; letter-spacing: .04em;
}
/* Badges = só o ícone (sem pílula), um pouco maiores, nas pontas da faixa.
   translateY corrige o glifo do emoji, que renderiza mais baixo que o centro da linha. */
.oscard2-tag { font-size: 15px; line-height: 1; transform: translateY(-4px); }
.oscard2-tag.ttipo { grid-column: 1; justify-self: start; margin-left: 5px; }
.oscard2-tag.testoque { grid-column: 3; justify-self: end; margin-right: 5px; }
.oscard2-body { padding: 12px 16px 16px; }
.oscard2-meta {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
}
.oscard2-tipo { font-size: 13.5px; font-weight: 600; color: var(--text); }
.oscard2-data { font-size: 12.5px; color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
/* Cliente à esquerda + nº de série à direita, na mesma linha */
.oscard2-cliline { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.oscard2-serie { font-size: 15px; flex: none; }
.oscard2 .cli-info { margin-top: 11px; }
.oscard2 .os-desc { margin-top: 10px; }

/* selos de status — cor vem das variáveis --st-* (selo e filtros usam a mesma) */
.badge.st-aberta                { color: var(--st-aberta); }
.badge.st-aguardando_analise    { color: var(--st-aguardando_analise); }
.badge.st-aguardando_aprovacao  { color: var(--st-aguardando_aprovacao); }
.badge.st-em_reparo             { color: var(--st-em_reparo); }
.badge.st-recusado              { color: var(--st-recusado); }
.badge.st-pronto                { color: var(--st-pronto); }
.badge.st-encerrado             { color: var(--st-encerrado); }
.badge.st-em_andamento          { color: #e0a64a; }   /* legados */
.badge.st-concluida,
.badge.st-entregue              { color: var(--ok); }
.badge.st-cancelada             { color: var(--danger); }
/* Selos de status da Venda (aberta / finalizada) */
.badge.vnd-aberta               { color: #e0a64a; }
.badge.vnd-finalizada           { color: var(--ok); }
/* Acento na borda do card de venda pelo status (mesmas cores dos selos). */
.os-card.venda-aberta           { border-left: 3px solid #e0a64a; }
.os-card.venda-finalizada       { border-left: 3px solid var(--ok); }

/* ---- Modal de abrir OS (cliente → instrumento → detalhes) ---- */
.modal.modal-lg { max-width: 620px; }
.modal.modal-xl { max-width: 920px; }
.os-passo { padding-bottom: 14px; }
.os-passo + .os-passo { border-top: 1px solid var(--border); padding-top: 16px; }
.os-passo-titulo { display: flex; align-items: center; gap: 9px; font-weight: 600; font-size: 14px; margin-bottom: 12px; }
.os-passo-num {
  width: 22px; height: 22px; border-radius: 50%; flex: none;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700; color: #fff;
  background: linear-gradient(180deg, var(--accent-2), var(--accent));
}
.os-busca-linha { display: flex; gap: 8px; }
/* "Construir para estoque (sem cliente)" no passo de cliente do Nova OS */
.os-estoque-btn {
  width: 100%; margin-top: 10px; padding: 10px 12px; border-radius: var(--r-md);
  border: 1px dashed var(--border); background: transparent; color: var(--muted);
  font-size: 13px; font-weight: 600; cursor: pointer; transition: border-color .15s, color .15s, background .15s;
}
.os-estoque-btn:hover { border-color: var(--accent); color: var(--accent-2); background: color-mix(in srgb, var(--accent) 8%, transparent); }
/* Tag "🏭 Estoque" onde iria o cliente (card e detalhe da OS de construção da loja) */
.os-estoque-tag b { color: #c79a4e; }
/* Badge "🏭 Para estoque" no topo do card de OS (build da loja) */
.os-badge-estoque { display: inline-flex; align-items: center; gap: 3px; margin-left: 5px; vertical-align: middle;
  font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; color: #c79a4e;
  background: color-mix(in srgb, #c79a4e 12%, transparent); border: 1px solid color-mix(in srgb, #c79a4e 45%, transparent);
  border-radius: var(--r-pill); padding: 1px 7px; }
/* Nota no lugar do campo de cliente quando a construção é "para estoque" */
.cons-estoque-nota { display: flex; align-items: center; gap: 8px; margin: 2px 0 14px;
  padding: 10px 13px; border-radius: var(--r-md); border: 1px dashed var(--border);
  background: color-mix(in srgb, #c79a4e 8%, transparent); color: var(--muted); font-size: 13px; font-weight: 600; }
.btn-inline {
  flex: none; width: 46px; border-radius: var(--r-md); font-size: 16px;
  border: 1px solid var(--border); background: var(--glass-2); color: var(--text);
}
.btn-inline:hover { background: var(--accent); color: #fff; border-color: transparent; }
/* Botão "+ Cliente" das buscas (OS, consignado, venda): texto em vez do ➕,
   largura automática — o que encolhe um pouco o campo de busca ao lado. */
.btn-cli-add { width: auto; padding: 0 16px; font-size: 13px; font-weight: 600; white-space: nowrap; }
.btn-bloco { width: 100%; margin-top: 8px; }

.os-result { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; max-height: 230px; overflow-y: auto; }
.os-result:empty { margin: 0; }
.os-opt {
  display: flex; flex-direction: column; gap: 2px; text-align: left;
  padding: 10px 13px; border-radius: var(--r-sm); min-width: 0; overflow-wrap: anywhere;
  border: 1px solid var(--border); background: var(--field); color: var(--text);
}
.os-opt:hover { border-color: var(--accent); background: var(--glass-2); }
.os-opt b { font-size: 14px; font-weight: 600; }
.os-opt span { font-size: 12px; color: var(--muted); }
.os-result-vazio { font-size: 13px; color: var(--muted); padding: 10px 2px; }

/* Dropdown bonito sobre <select> (mesmo visual da busca da OS) — usado em Contas. */
.nicesel { position: relative; width: 100%; }
.nicesel-auto { width: auto; }
.nicesel-native { display: none; }
.nicesel-trigger {
  display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%;
  padding: 11px 13px; background: var(--field); border: 1px solid var(--border);
  border-radius: var(--r-md); color: var(--text); font-size: 15px; font-family: inherit;
  cursor: pointer; text-align: left; transition: border-color .15s, box-shadow .15s;
}
.nicesel-auto .nicesel-trigger { min-width: 140px; }
.nicesel-trigger:hover { border-color: var(--accent); }
.nicesel.aberto .nicesel-trigger { border-color: var(--accent); box-shadow: 0 0 0 3px var(--bg-glow); }
.nicesel-val { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nicesel-chev { color: var(--muted); font-size: 11px; flex: none; transition: transform .15s; }
.nicesel.aberto .nicesel-chev { transform: rotate(180deg); }
.nicesel-pop {
  position: fixed; z-index: 200;   /* fixed → escapa do overflow:hidden de modais (JS posiciona) */
  display: flex; flex-direction: column; gap: 6px; max-height: 70vh; overflow-y: auto;
  padding: 8px; background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--r-md); box-shadow: 0 16px 40px -12px rgba(0,0,0,.45);
}
.nicesel-opt {
  display: flex; align-items: center; text-align: left; width: 100%;
  padding: 10px 13px; border-radius: var(--r-sm); border: 1px solid var(--border);
  background: var(--field); color: var(--text); font-size: 14px; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.nicesel-opt:hover { border-color: var(--accent); background: var(--glass-2); }
.nicesel-opt.sel { border-color: var(--accent); color: var(--accent-2); font-weight: 600; }

.os-sel {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 12px 14px; border-radius: var(--r-md);
  background: var(--glass-2); border: 1px solid var(--border); font-size: 14px;
}
.os-tipo-opcoes { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.os-tipo-card {
  display: flex; flex-direction: column; align-items: flex-start; gap: 4px; text-align: left;
  padding: 16px; border-radius: var(--r-md); cursor: pointer; color: var(--text); font-family: inherit;
  background: var(--glass); border: 1px solid var(--border); transition: border-color .15s, transform .05s, background .15s;
}
.os-tipo-card:hover { border-color: var(--accent); background: var(--glass-2); }
.os-tipo-card:active { transform: scale(.99); }
.os-tipo-ic { font-size: 22px; line-height: 1; }
.os-tipo-card b { font-size: 15px; }
.os-tipo-card small { color: var(--muted); font-size: 12.5px; line-height: 1.3; }
@media (max-width: 560px) { .os-tipo-opcoes { grid-template-columns: 1fr; } }
.os-trocar {
  flex: none; font-size: 12px; font-weight: 600; padding: 5px 12px; border-radius: var(--r-pill);
  border: 1px solid var(--border); background: transparent; color: var(--accent-2);
}
.os-trocar:hover { background: var(--glass); }

.os-inst-form {
  margin-top: 10px; padding: 14px; border-radius: var(--r-md);
  background: var(--field); border: 1px dashed var(--border);
}
.os-inst-form-acoes { display: flex; justify-content: flex-end; gap: 10px; margin-top: 12px; }

/* Rodapé do card (OS/Venda): divisória, grupo esquerdo (lixeira + forma) e total à direita */
.os-card-rod { margin-top: 13px; padding-top: 12px; border-top: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 34px; }
.os-rod-esq { display: flex; align-items: center; gap: 8px; min-width: 0; }
.os-total-card { font-weight: 700; font-size: 16px; }
/* Rodapé do card: bloco de total com adiantamento (💰) acima e Total abaixo */
.os-card-tot { display: flex; flex-direction: column; align-items: flex-end; gap: 1px; line-height: 1.15; }
.os-card-adiant { font-size: 12px; font-weight: 600; color: #e0a64a; }
.os-tot-lbl { font-size: 11px; font-weight: 500; color: var(--muted); }
.os-card-rod .btn-mini { flex: none; }
/* Chip de forma de pagamento */
.card-forma { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600;
  color: var(--muted); background: var(--glass-2); border: 1px solid var(--border);
  border-radius: 999px; padding: 3px 10px; white-space: nowrap; line-height: 1.2; }
.card-forma .cf-ic { font-size: 12px; line-height: 1; }
/* Lixeira discreta: cinza por padrão, ganha cor no hover do card / vermelho ao passar nela */
.os-del-btn { font-size: 15px; padding: 4px 6px; background: transparent; border: 0; border-radius: var(--r-sm);
  cursor: pointer; line-height: 1; opacity: .32; filter: grayscale(1);
  transition: opacity .15s, filter .15s, background .15s; }
.os-card:hover .os-del-btn { opacity: .65; }
.os-del-btn:hover { opacity: 1; filter: none; background: rgba(255,69,58,.14); }

/* ============ SERVIÇOS / PEÇAS (catálogos) ============ */
.cat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.cat-card {
  border-radius: var(--r-lg); padding: 17px; cursor: pointer;
  background: var(--card-grad); border: 1px solid var(--border);
  backdrop-filter: blur(16px) saturate(140%); -webkit-backdrop-filter: blur(16px) saturate(140%);
  box-shadow: var(--shadow), inset 0 1px 0 var(--rim);
  transition: transform .14s, box-shadow .14s;
}
.cat-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-hover), inset 0 1px 0 var(--rim); }
.cat-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.cat-nome { font-weight: 600; font-size: 15px; }
.cat-valor { font-weight: 700; color: var(--accent-2); white-space: nowrap; }
.cat-cod { font-size: 11px; color: var(--muted); margin-top: 2px; font-variant-numeric: tabular-nums; }
.pec-estoque { margin-top: 10px; font-size: 13px; color: var(--muted); }
.pec-estoque b { color: var(--text); }
.pec-estoque.baixo b { color: var(--danger); }
.pec-baixo-chip { font-size: 10px; font-weight: 700; color: var(--danger); border: 1px solid var(--danger); border-radius: var(--r-pill); padding: 1px 7px; margin-left: 4px; }

.cfg-estoque { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: -4px 0 16px; font-size: 13px; color: var(--muted); }
.cfg-estoque select { width: auto; flex: none; }

/* movimentar estoque + histórico */
.est-peca { margin: 0 0 6px; font-size: 14px; font-weight: 600; }
.mov-item { display: flex; align-items: center; gap: 12px; padding: 9px 4px; border-bottom: 1px solid var(--border); }
.mov-item:last-child { border-bottom: 0; }
.mov-delta { flex: none; width: 46px; text-align: center; font-weight: 700; border-radius: var(--r-sm); padding: 4px 0; background: var(--glass-2); font-variant-numeric: tabular-nums; }
.mov-in { color: var(--ok); }
.mov-out { color: var(--danger); }
.mov-meio { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.mov-meio b { font-size: 13px; font-weight: 600; }
.mov-meio small { font-size: 11px; color: var(--muted); }
.mov-saldo { flex: none; font-weight: 700; color: var(--muted); font-variant-numeric: tabular-nums; }

/* ============ NOTAS FISCAIS ============ */
/* Entrada com NF — toggle reusa .ct-form-tipo/.cat-chip; lista de itens adicionados */
.pec-nf-lista { display: flex; flex-direction: column; gap: 6px; margin: 4px 0; }
.pec-nf-row { display: grid; grid-template-columns: 1fr auto auto auto; gap: 10px; align-items: center;
  padding: 7px 10px; background: var(--glass-2); border-radius: var(--r-sm); }
.pec-nf-desc { font-size: 13px; font-weight: 600; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pec-nf-qc { font-size: 12px; color: var(--muted); font-variant-numeric: tabular-nums; }
.pec-nf-sub { font-weight: 700; font-variant-numeric: tabular-nums; }
/* Botão "Adicionar item à nota": vira botão de texto (sem o 46px fixo do .btn-inline) */
.pec-nf-add { width: auto; padding: 9px 16px; font-size: 13px; font-weight: 600; white-space: nowrap; margin-top: 4px; }
/* Número da NF é curto — não ocupa a linha inteira */
#pec-nf-numero { max-width: 160px; }
.pec-nf-reconc { margin-right: auto; font-size: 13px; color: var(--muted); font-variant-numeric: tabular-nums; }
.pec-nf-reconc b { color: var(--text); }
.nf-dif-ok { color: var(--ok); font-weight: 700; }
.nf-dif-alerta { color: var(--danger); font-weight: 700; }

/* Lista de notas fiscais: cards no padrão do sistema (reusa .cli-card/.cli-grid) */

/* Detalhe da NF */
.nf-det-info { display: flex; flex-wrap: wrap; gap: 10px 26px; margin-bottom: 16px; }
.nf-det-info > div { display: flex; flex-direction: column; gap: 2px; }
.nf-det-info span { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.nf-det-info b { font-size: 14px; }
.nf-itens-tab { width: 100%; border-collapse: collapse; }
.nf-itens-tab th { text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); padding: 6px 8px; border-bottom: 1px solid var(--border); }
.nf-itens-tab th:not(:first-child), .nf-itens-tab td:not(:first-child) { text-align: right; font-variant-numeric: tabular-nums; }
.nf-itens-tab td { padding: 8px; border-bottom: 1px solid var(--border); font-size: 13px; }
.nf-itens-tab td small { color: var(--muted); font-size: 11px; }
/* Espelho da compra — bloco de totais (recibo). Alinhado à direita, números tabulares. */
.cmp-tot { margin: 14px 0 4px auto; width: 100%; max-width: 280px; display: flex; flex-direction: column; gap: 2px; }
.cmp-tot-l { display: flex; justify-content: space-between; align-items: baseline; gap: 18px; padding: 4px 2px; font-size: 13px; }
.cmp-tot-l > span { color: var(--muted); }
.cmp-tot-l > b { font-variant-numeric: tabular-nums; font-weight: 500; }
.cmp-tot-l > b.neg { color: #34c759; }                 /* desconto: abatimento (verde) */
.cmp-tot-l.grand { margin-top: 4px; padding-top: 10px; border-top: 1px solid var(--border); }
.cmp-tot-l.grand > span { color: inherit; font-weight: 600; }
.cmp-tot-l.grand > b { font-size: 17px; font-weight: 700; }
.cmp-parc-tit { margin-top: 18px; }

/* NF: badge de reabastecimento (produto existente selecionado) */
.pec-nf-ref { display: flex; align-items: center; gap: 8px; margin: 8px 0 2px; padding: 8px 12px;
  background: var(--glass-2); border-radius: var(--r-sm); font-size: 13px; }
.pec-nf-ref b { color: var(--text); }
.pec-nf-ref-x { margin-left: auto; background: none; border: 0; color: var(--muted); cursor: pointer; font-size: 13px; }
.pec-nf-ref-x:hover { color: var(--danger); }
.pec-nf-reabastece { color: var(--accent); font-weight: 700; }

/* Histórico de custos do item (accordion) */
.pec-hist-item { display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center;
  padding: 8px 4px; border-bottom: 1px solid var(--border); font-size: 13px; }
.pec-hist-item:last-child { border-bottom: 0; }
.pec-hist-data { color: var(--muted); font-variant-numeric: tabular-nums; }
.pec-hist-nf { font-weight: 600; }
.pec-hist-custo { font-weight: 700; font-variant-numeric: tabular-nums; }

/* ============ DETALHE DA OS ============ */
.osd-info { margin-bottom: 4px; }
.osd-info-linhas { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 10px; font-size: 14px; color: var(--muted); }
.osd-info-linhas b { color: var(--text); font-weight: 600; }
/* accordions de cliente / instrumento no detalhe da OS */
.osd-acc { border: 1px solid var(--border); border-radius: var(--r-md); margin-top: 8px; overflow: hidden; }
.osd-acc-head {
  width: 100%; display: flex; align-items: center; gap: 10px; cursor: pointer;
  padding: 11px 13px; background: var(--field); color: var(--text); border: 0; font-size: 14px; text-align: left;
}
.osd-acc-head:hover { background: var(--glass-2); }
.osd-acc-tit { flex: 1; min-width: 0; }
.osd-acc-tit b { font-weight: 600; }

/* lápis pequeno (editar instrumento / data no detalhe da OS) */
.osd-mini-edit {
  flex: none; padding: 3px 7px; border-radius: var(--r-xs); line-height: 1; font-size: 12px;
  border: 1px solid transparent; background: transparent; cursor: pointer;
  transition: background .15s, border-color .15s;
}
.osd-mini-edit:hover { background: var(--glass-2); border-color: var(--accent); }
.osd-data { display: inline-flex; align-items: center; gap: 6px; }
.osd-data-input { width: auto; padding: 4px 8px; font-size: 13px; }
.osd-acc-ch { color: var(--muted); font-size: 12px; transition: transform .18s; flex: none; }
.osd-acc.aberto .osd-acc-ch { transform: rotate(180deg); }
.osd-acc-body { display: none; flex-wrap: wrap; gap: 6px 16px; padding: 2px 13px 12px; font-size: 13px; color: var(--muted); }
.osd-acc.aberto .osd-acc-body { display: flex; }
/* Ficha de construção completa no accordion do instrumento: janela limitada
   com rolagem própria — consulta rápida sem abrir a edição da ficha. */
.osd-ficha-scroll {
  flex: 1 1 100%; max-height: 300px; overflow-y: auto; scrollbar-gutter: stable;
  margin-top: 8px; padding: 4px 12px 8px; border-radius: 10px;
  background: var(--glass); border: 1px solid var(--border);
}
.osd-ficha-tit {
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em;
  color: var(--accent-2); margin: 12px 0 4px;
}
.osd-ficha-sec:first-child .osd-ficha-tit { margin-top: 8px; }
.osd-ficha-row {
  display: flex; justify-content: space-between; gap: 14px; padding: 5px 0;
  border-bottom: 1px dashed var(--border); font-size: 12.5px;
}
.osd-ficha-sec .osd-ficha-row:last-child { border-bottom: 0; }
.osd-ficha-row span { color: var(--muted); white-space: nowrap; }
.osd-ficha-row b { color: var(--text); font-weight: 600; text-align: right; min-width: 0; overflow-wrap: anywhere; }
.osd-meta { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 10px; font-size: 13px; color: var(--muted); }

/* accordion de equipamentos no modal de cliente (só consulta) */
.cli-acc { border: 1px solid var(--border); border-radius: var(--r-md); margin-top: 16px; overflow: hidden; }
.cli-acc-head {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 11px 13px; background: var(--field); color: var(--text); border: 0; font-size: 14px; text-align: left;
}
.cli-acc-head:hover { background: var(--glass-2); }
.cli-acc-count { color: var(--muted); font-weight: 600; }
.cli-acc-ch { color: var(--muted); font-size: 12px; transition: transform .18s; flex: none; }
.cli-acc.aberto .cli-acc-ch { transform: rotate(180deg); }
.cli-acc-body { display: none; flex-direction: column; padding: 2px 13px 8px; }
.cli-acc.aberto .cli-acc-body { display: flex; }
.cli-acc-form .cli-acc-body { padding: 10px 13px 14px; }
.cp-bank { margin-top: 10px; padding: 9px 11px; border-radius: var(--r-sm); font-size: 13px; line-height: 1.6;
  background: rgba(10,132,255,.10); border: 1px solid rgba(10,132,255,.3); }
.cli-inst-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px dashed var(--border); }
.cli-inst-item:last-child { border-bottom: 0; }
.cli-inst-info { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.cli-inst-item b { font-weight: 600; font-size: 14px; }
.cli-inst-item span { color: var(--muted); font-size: 12px; }
.cli-consig-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px dashed var(--border); }
.cli-consig-item:last-child { border-bottom: 0; }
.cli-consig-info { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.cli-consig-item b { font-weight: 600; font-size: 14px; }
.cli-consig-info span { color: var(--muted); font-size: 12px; }
.cli-consig-status { font-size: 11.5px; font-weight: 600; color: var(--muted); white-space: nowrap; text-align: right; }
.cli-consig-item.vendido .cli-consig-status { color: #e0a64a; }
.cli-consig-item.pago .cli-consig-status { color: var(--ok); }
.cli-consig-item.retirado .cli-consig-status { color: var(--muted); font-style: italic; }
.cli-inst-edit {
  flex: none; padding: 6px 9px; border-radius: var(--r-sm); line-height: 1; font-size: 14px;
  border: 1px solid var(--border); background: transparent; cursor: pointer;
  transition: background .15s, border-color .15s;
}
.cli-inst-edit:hover { background: var(--glass-2); border-color: var(--accent); }
.cli-inst-vazio { font-size: 13px; color: var(--muted); padding: 6px 0; }
.osd-defeito { margin-top: 10px; font-size: 13px; color: var(--muted); background: var(--field); border: 1px solid var(--border); border-radius: var(--r-md); padding: 10px 12px; }
.osd-acessorios { margin-top: 8px; font-size: 13px; color: var(--muted); }
.osd-acessorios b { color: var(--text); font-weight: 600; }
/* Abas estilo "pasta": a ativa tem a MESMA cor do painel (conectada a ele);
   as inativas ficam transparentes (cor de fora), parecendo atrás. */
.osd-tabs { display: flex; gap: 5px; margin: 6px 0 0; }
.osd-tab {
  display: flex; align-items: center; gap: 8px; padding: 9px 18px;
  border: 1px solid var(--border); border-bottom: 0;
  border-radius: var(--r-md) var(--r-md) 0 0;
  background: transparent; color: var(--muted); font-size: 14px; font-weight: 600;
  transition: color .15s, background .15s;
}
.osd-tab:hover { color: var(--text); background: var(--glass); }
.osd-tab.ativo {
  background: var(--glass-2); color: var(--text);
  margin-bottom: -1px; padding-bottom: 10px;   /* cobre a borda do painel = vira uma peça só */
}
.osd-tab-tot { font-size: 12px; font-weight: 700; color: var(--accent-2); }
.osd-panel {
  background: var(--glass-2); border: 1px solid var(--border);
  border-radius: 0 var(--r-lg) var(--r-lg) var(--r-lg);
  padding: 15px 16px; margin-bottom: 6px;
}
.osd-pane[hidden] { display: none; }
.osd-itens { display: flex; flex-direction: column; min-height: 36px; }
.osd-it { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px dashed var(--border); }
.osd-it:last-child { border-bottom: 0; }
.osd-it-desc { flex: 1; font-size: 14px; min-width: 0; }
.osd-it-qtd { color: var(--muted); font-weight: 600; }
.osd-it-val { font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.osd-it-del { flex: none; width: 24px; height: 24px; border-radius: var(--r-xs); border: 1px solid var(--border); background: var(--glass-2); color: var(--muted); font-size: 12px; }
.osd-it-del:hover { color: var(--danger); border-color: var(--danger); }
.osd-vazio { font-size: 13px; color: var(--muted); padding: 6px 0; }
.osd-addbar { display: flex; gap: 6px; margin-top: 12px; flex-wrap: wrap; align-items: flex-start; }
.osd-busca-wrap { position: relative; flex: 1; min-width: 180px; }
.osd-busca { width: 100%; }
.osd-result-pop {
  position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 5;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-md);
  box-shadow: var(--shadow); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  max-height: 240px; overflow-y: auto;
}
.osd-result-pop:empty { display: none; }
/* Item de resultado responsivo: nome (truncado) em cima; info + valor embaixo.
   Evita textos se atropelando em popups estreitos (ex.: coluna da venda). */
.osd-r {
  display: flex; flex-wrap: wrap; align-items: center; gap: 2px 10px; width: 100%; text-align: left;
  padding: 8px 12px; border: 0; border-bottom: 1px solid var(--border);
  background: transparent; color: var(--text); font-size: 13.5px;
}
.osd-r:last-child { border-bottom: 0; }
.osd-r:hover { background: var(--glass-2); }
.osd-r-nome { flex: 1 1 100%; min-width: 0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.osd-r-est { flex: 1 1 auto; min-width: 0; color: var(--muted); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.osd-r-val { flex: 0 0 auto; margin-left: auto; color: var(--accent-2); font-weight: 700; white-space: nowrap; }
.osd-result-vazio { padding: 9px 12px; font-size: 12.5px; color: var(--muted); }
.osd-valor { flex: none; width: 96px; }
.osd-qtd { flex: none; width: 62px; }
.osd-addbar .btn-acao { flex: none; }
.osd-total { display: flex; align-items: center; justify-content: space-between; margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--border); font-size: 15px; }
.osd-total b { font-size: 20px; font-weight: 700; color: var(--accent-2); }
/* Totais do detalhe da OS como mini-cards (tiles): mais fáceis de escanear.
   Total em destaque ocupa a linha inteira; os demais vão num grid de 2 colunas. */
.osd-totais {
  margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--border);
  display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
}
.osd-totais .osd-total {
  display: flex; flex-direction: column; align-items: stretch; justify-content: flex-start;
  gap: 3px; margin: 0; padding: 10px 12px; font-size: inherit;
  border: 1px solid var(--border); border-radius: 12px; background: var(--glass-2);
}
.osd-totais .osd-total[hidden] { display: none; }   /* mantém ocultos fora do grid */
.osd-totais .osd-total span {
  font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--muted);
}
.osd-totais .osd-total b {
  font-size: 18px; font-weight: 700; color: var(--text); font-variant-numeric: tabular-nums;
}
/* Total: destaque azul, linha cheia. */
.osd-totais > .osd-total:first-child { grid-column: 1 / -1; background: rgba(10,132,255,.10); border-color: rgba(10,132,255,.30); }
.osd-totais > .osd-total:first-child b { font-size: 22px; color: var(--accent-2); }
/* Cores semânticas (com rótulo, não só cor). */
.osd-totais .osd-total-lucro b { color: #34c759; }
.osd-totais .osd-total-saldo b { color: #e0a64a; }
/* Blocos da OS de construção (valores/extras + peças a custo). */
#osd-cons-wrap, #osd-cons-extras { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--border); }
.osd-cons-tit { font-size: 14px; font-weight: 600; color: var(--text); margin-bottom: 10px; }
/* Modal de despesa da compra (lançamento). */
.dsp-ref-linha { font-size: 14px; color: var(--muted); margin: 0 0 12px; }
.dsp-ref-linha b { color: var(--text); font-weight: 600; }
.dsp-cond { display: flex; gap: 8px; margin: 4px 0 12px; }
.dsp-cond .cat-chip { flex: 1; justify-content: center; }
.dsp-parcelas { margin-top: 10px; display: flex; flex-direction: column; gap: 8px; }
.dsp-parc { display: flex; align-items: center; gap: 10px; }
.dsp-parc-n { min-width: 42px; font-size: 13px; color: var(--muted); }
.dsp-parc-venc { flex: 1; }
.dsp-parc-val { width: 110px; text-align: right; }
.dsp-footer { justify-content: space-between; }

/* ===== Vendas ===== */
.btn-acao-ghost {
  background: var(--glass-2); color: var(--text);
  box-shadow: none; border: 1px solid var(--border);
}
.btn-acao-ghost:hover { filter: none; background: var(--glass); }
/* "dashboard" do produto destacado na nova venda */
.vnd-destaque {
  margin: 12px 0 4px; padding: 14px 16px; border-radius: var(--r-lg);
  background: linear-gradient(180deg, rgba(10,132,255,.14), rgba(10,132,255,.05));
  border: 1px solid rgba(10,132,255,.35); box-shadow: inset 1px 1px 0 var(--rim);
}
.vnd-dest-nome { font-size: 16px; font-weight: 700; margin-bottom: 8px; }
.vnd-dest-nome small { font-weight: 500; color: var(--muted); font-size: 13px; }
.vnd-dest-grid { display: flex; gap: 26px; flex-wrap: wrap; }
.vnd-dest-cel { display: flex; flex-direction: column; gap: 2px; }
.vnd-dest-cel span { font-size: 12px; color: var(--muted); }
.vnd-dest-cel b { font-size: 18px; color: var(--accent-2); }
.vnd-total b { color: var(--accent-2); }
.vnd-det-cab { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.vnd-det-data { color: var(--muted); font-size: 13px; white-space: nowrap; }
.vnd-det-tot { width: 100%; margin-top: 14px; }
/* checkbox de opção na Personalização */
.pers-check { display: flex; align-items: center; gap: 9px; margin: 6px 0 2px; font-size: 14px; cursor: pointer; }
.pers-check input { width: 17px; height: 17px; accent-color: var(--accent); flex: none; }

/* Migrações (superadmin) */
.mig-status { font-size: 13.5px; margin: 4px 0 8px; }
.mig-status .mig-pend { color: var(--danger); font-size: 16px; }
.mig-lista { display: flex; flex-direction: column; gap: 2px; max-height: 220px; overflow-y: auto; margin-bottom: 6px; }
.mig-item { font-size: 12px; font-family: ui-monospace, monospace; color: var(--muted); }
.mig-item.pend { color: var(--accent-2); font-weight: 600; }
.mig-rodape { display: flex; gap: 8px; justify-content: flex-end; }
.mig-aviso { margin-top: 8px; opacity: .8; }

/* ===== Modal de venda — dashboard de 2 colunas ===== */
.modal-body.venda-grid { display: grid; grid-template-columns: 1fr 360px; gap: 0; padding: 0; }
.venda-col { padding: 18px 22px; }
.venda-col-esq { border-right: 1px solid var(--border); }
.venda-col-dir {
  background: linear-gradient(180deg, rgba(255,255,255,.02), transparent);
  display: flex; flex-direction: column; gap: 12px;
}
.vnd-cart {
  padding: 12px 14px; border-radius: var(--r-md);
  background: var(--glass); border: 1px solid var(--border); box-shadow: inset 1px 1px 0 var(--rim);
}
.vnd-cart-tit { font-size: 13px; font-weight: 700; display: flex; align-items: center; gap: 7px; color: var(--text); margin-bottom: 4px; }
.vnd-cart-lista { margin: 0; max-height: 220px; overflow-y: auto; }
.vnd-cart-lista .osd-it:last-child { border-bottom: 0; }
.vnd-cart-vazio { text-align: center; color: var(--muted); padding: 18px 0; font-size: 13px; }
.vnd-resumo {
  margin-top: 4px; padding: 12px 14px; border-radius: var(--r-md);
  background: var(--glass); border: 1px solid var(--border); display: flex; flex-direction: column; gap: 7px;
}
.vnd-resumo-linha { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 13.5px; }
.vnd-resumo-linha label { margin: 0; color: var(--muted); }
.vnd-resumo-linha .enc-num { width: 110px; text-align: right; }
.vnd-resumo-total { padding-top: 7px; border-top: 1px solid var(--border); font-size: 15px; }
.vnd-resumo-total b { font-size: 19px; color: var(--accent-2); }
/* bloco do parcelamento (destaque azul) */
.vnd-parc {
  padding: 12px 14px; border-radius: var(--r-md);
  background: linear-gradient(180deg, rgba(10,132,255,.14), rgba(10,132,255,.05));
  border: 1px solid rgba(10,132,255,.35); box-shadow: inset 1px 1px 0 var(--rim);
}
.vnd-parc > label { margin: 0 0 6px; color: var(--text); font-weight: 600; }
.vnd-parc select { width: 100%; }
.vnd-parc-info { margin-top: 10px; text-align: center; }
.vnd-parc-big { font-size: 24px; font-weight: 700; color: var(--accent-2); line-height: 1.1; }
.vnd-parc-big b { font-weight: 800; }
.vnd-parc-sub { font-size: 12.5px; color: var(--muted); margin-top: 3px; }
@media (max-width: 760px) {
  .venda-grid { grid-template-columns: 1fr; }
  .venda-col-esq { border-right: 0; border-bottom: 1px solid var(--border); }
}
/* tabela de parcelas na Personalização */
.pers-sub-lbl { display: block; margin: 16px 0 2px; font-weight: 600; }
.parc-cfg-head, .parc-cfg-row { display: grid; grid-template-columns: 1fr 1fr 34px; gap: 8px; align-items: center; }
.parc-cfg-head { font-size: 12px; color: var(--muted); margin: 6px 0 4px; }
.parc-cfg-row { margin-bottom: 7px; }
.parc-cfg-row input { width: 100%; }
.parc-cfg-add { width: auto; padding: 8px 14px; font-size: 13px; margin-top: 2px; }
/* OS: rodapé em 2 linhas — (status | editar+print) em cima; (lixeira | ações) embaixo.
   Especificidade .modal-footer.X para vencer o .modal-footer base (definido depois no arquivo). */
.modal-footer.osd-footer { flex-direction: column; align-items: stretch; gap: 10px; }
.osd-footer-row { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.osd-footer-acoes { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
/* Venda: lixeira (esquerda) | comprovante (meio) | ações (direita). */
.modal-footer.vnd-det-footer { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 10px; }
.vnd-det-footer > #venda-det-excluir { justify-self: start; }
.vnd-det-footer > #venda-det-imprimir { justify-self: center; }
.vnd-det-acoes { justify-self: end; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
@media (max-width: 560px) {
  .modal-footer.vnd-det-footer { grid-template-columns: auto 1fr; }
  .vnd-det-footer > #venda-det-imprimir { justify-self: end; }
  .vnd-det-acoes { grid-column: 1 / -1; justify-self: stretch; }
}
.osd-head-tit { display: flex; align-items: center; gap: 10px; min-width: 0; }
.osd-head-tit h3 { margin: 0; }
.osd-head-acoes { display: flex; align-items: center; gap: 8px; flex: none; }
.osd-email-btn {
  width: 36px; height: 36px; border-radius: var(--r-sm); font-size: 17px; line-height: 1; cursor: pointer;
  border: 1px solid var(--accent); background: color-mix(in srgb, var(--accent) 14%, transparent); color: var(--accent-2);
  transition: background .15s, transform .05s;
}
.osd-email-btn:hover { background: var(--accent); color: #fff; }
.osd-email-btn:active { transform: scale(.94); }
.osd-email-btn:disabled { opacity: .55; cursor: progress; }
.osd-status-wrap { display: flex; align-items: center; gap: 8px; }
.osd-status-wrap label { font-size: 12px; font-weight: 600; color: var(--muted); }
.osd-status-sel { width: auto; min-width: 180px; }
.osd-footer-left { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.osd-footer-right { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }

/* ============ ENCERRAMENTO ============ */
.enc-totais {
  border: 1px solid var(--border); border-radius: var(--r-md);
  padding: 10px 12px; margin-bottom: 6px; background: var(--glass); display: flex; flex-direction: column; gap: 6px;
}
.enc-tot-linha { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 14px; }
.enc-tot-linha label { margin: 0; color: var(--text); font-weight: 500; font-size: 14px; }
.enc-tot-linha .enc-num { max-width: 130px; text-align: right; }
.enc-tot-final { border-top: 1px solid var(--border); padding-top: 6px; font-weight: 700; }
.enc-tot-final b { font-size: 17px; color: var(--accent-2); }
.enc-num { width: 100%; }
.enc-pendente { margin-top: 6px; font-size: 13px; font-weight: 600; color: var(--danger); }
.osd-encerramento {
  margin-top: 12px; padding: 10px 12px; border-radius: var(--r-md);
  border: 1px solid var(--border); background: var(--glass);
  display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: 13px; color: var(--muted);
}
.osd-enc-tit { width: 100%; font-weight: 700; color: var(--ok); font-size: 13.5px; margin-bottom: 2px; }
.osd-encerramento b { color: var(--text); }
.osd-pend { color: var(--danger); font-weight: 600; }

/* Resposta do cliente ao orçamento pelo portal (aprovacao_status) */
.osd-aprov {
  margin-bottom: 12px; padding: 8px 12px; border-radius: var(--r-md);
  border: 1px solid var(--border); background: var(--glass);
  display: flex; flex-direction: column; gap: 3px; font-size: 13px;
}
.osd-aprov.ok { color: var(--ok); }
.osd-aprov.recusado { color: var(--danger); }
.osd-aprov.pendente { color: var(--st-aguardando_aprovacao); }
.osd-aprov-alerta { color: var(--danger); font-size: 12px; font-weight: 600; }
/* resposta anterior enquanto se espera a nova: histórico, não o estado atual */
.osd-aprov-hist { color: var(--muted); font-size: 12px; }

/* Adiantamento (sinal/depósito) no detalhe da OS */
.osd-adiant {
  margin-top: 12px; padding: 10px 12px; border-radius: var(--r-md);
  border: 1px solid var(--border); background: var(--glass);
}
.osd-adiant-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.osd-adiant-tit { font-size: 13.5px; color: var(--muted); }
.osd-adiant-tit b { color: var(--text); }
.osd-adiant-btn { flex: none; padding: 7px 12px; font-size: 13px; }
.osd-adiant-lista { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 8px; font-size: 12.5px; color: var(--muted); }
.osd-adiant-lista b { color: var(--text); font-weight: 600; }

/* ============ COMPROVANTE (paper, sempre claro p/ imprimir) ============ */
.comprovante {
  background: #fff; color: #1a1a1a; border-radius: var(--r-md);
  padding: 22px 24px; font-size: 13px; line-height: 1.5; max-width: 620px; margin: 0 auto;
}
.comp-head { display: flex; align-items: center; gap: 14px; border-bottom: 2px solid #222; padding-bottom: 12px; margin-bottom: 12px; }
.comp-logo { width: 56px; height: 56px; object-fit: contain; }
.comp-empresa { font-size: 19px; font-weight: 800; }
.comp-os { color: #555; font-variant-numeric: tabular-nums; }
.comp-bloco { margin: 6px 0; }
.comp-tab { width: 100%; border-collapse: collapse; margin: 10px 0; }
.comp-tab th { text-align: left; border-bottom: 1px solid #999; padding: 4px 0; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: #555; }
.comp-tab td { padding: 4px 0; border-bottom: 1px solid #eee; }
.comp-tab td.r, .comp-tot td.r { text-align: right; white-space: nowrap; }
.comp-tot { width: 100%; border-collapse: collapse; margin-top: 10px; }
.comp-tot td { padding: 3px 0; }
.comp-tot .comp-final td { font-weight: 800; font-size: 16px; border-top: 2px solid #222; padding-top: 6px; }
.comp-rodape { margin-top: 18px; text-align: center; color: #777; font-size: 12px; }
.comp-tipo { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: #444; margin-bottom: 8px; }
.comp-termos { margin-top: 12px; padding-top: 10px; border-top: 1px dashed #bbb; font-size: 11.5px; color: #444; white-space: pre-wrap; }
.comp-assinatura { margin-top: 26px; }
.comp-ass-linha { display: block; border-top: 1px solid #444; width: 230px; }
.comp-assinatura small { color: #666; font-size: 11px; }
.comp-assinaturas-2 { display: flex; gap: 30px; margin-top: 34px; }
.comp-assinaturas-2 .comp-assinatura { flex: 1; margin-top: 0; }
.comp-assinaturas-2 .comp-ass-linha { width: 100%; }
/* ficha de construção: gap maior entre o fim dos campos e as assinaturas (duas vias) */
.cons-assinaturas { margin-top: 60px; break-inside: avoid; page-break-inside: avoid; }

/* textareas da Personalização (recibos) */
.pers textarea {
  width: 100%; padding: 10px 12px; border-radius: var(--r-md); resize: vertical; min-height: 64px;
  border: 1px solid var(--border); background: var(--glass); color: var(--text); font-size: 14px; font-family: inherit;
}
.pers textarea:focus { outline: none; border-color: var(--accent); }

/* Personalização › Email */
/* ===== Comunicação / Personalização — folha master-detail =====
   Visual NATIVO do sistema (mesma pele das abas de Contas): superfície sólida
   --com-surface, bordas/sombras padrão do tema, acento azul. Adapta ao tema
   claro. --bp = alias do acento (usado por chips/nav/barra/checkboxes). */
:root { --com-surface: #181b23; }            /* usado também pelas abas de Contas */
[data-theme="light"] { --com-surface: #ffffff; }

.comu {
  --bp: var(--accent-2);
  /* Fluida e centralizada: ocupa a largura disponível até um teto e encolhe
     junto com o monitor — nunca fica "colada" à esquerda. */
  position: relative; width: 100%; max-width: 1440px; margin: 0 auto;
  padding: 22px 22px 20px; border-radius: var(--r-lg);
  background: var(--com-surface);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
}
.comu-eyebrow {
  font-size: 12px; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; color: var(--muted); margin: 2px 2px 16px;
}

/* Canais no topo (Email · SMS · WhatsApp) */
.comu-canais { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 18px; }
.comu-canal {
  display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
  padding: 10px 18px; border-radius: var(--r-md);
  font-size: 13.5px; font-weight: 600;
  color: var(--muted); background: var(--glass);
  border: 1px solid var(--border);
  transition: color .15s, border-color .15s, background .15s;
}
.comu-canal:not(:disabled):not(.ativo):hover { color: var(--text); background: var(--glass-2); }
.comu-canal:disabled { opacity: .45; cursor: not-allowed; }
.comu-canal.ativo {
  color: var(--bp); border-color: color-mix(in srgb, var(--bp) 45%, transparent);
  background: color-mix(in srgb, var(--bp) 10%, transparent);
}
.comu-breve {
  font-size: 9px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--muted); border: 1px solid var(--border); background: var(--glass-2);
  border-radius: 999px; padding: 2px 7px;
}

/* Master-detail: botões na lateral + caixa central */
.comu-main { display: flex; align-items: stretch; gap: 16px; }
.comu-nav { flex: 0 0 205px; width: 205px; display: flex; flex-direction: column; gap: 8px; }
.comu-navbtn {
  width: 100%; text-align: left; cursor: pointer; padding: 11px 14px; border-radius: var(--r-md);
  background: var(--glass); border: 1px solid var(--border); border-left: 2px solid transparent;
  color: var(--muted); font-size: 13.5px; font-weight: 600;
  transition: color .15s, border-color .15s, background .15s;
}
.comu-navbtn:hover { color: var(--text); background: var(--glass-2); }
.comu-navbtn.ativo {
  color: var(--bp); border-left-color: var(--bp);
  background: linear-gradient(90deg, color-mix(in srgb, var(--bp) 12%, transparent), transparent);
}
/* Grupo extra no nav (Superadmin): divisor bem discreto + botões */
.comu-nav-grupo { display: flex; flex-direction: column; gap: 8px; }
.comu-nav-div {
  margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border);
  font-size: 10px; font-weight: 700; letter-spacing: .1em;
  text-transform: uppercase; color: var(--muted);
}
.comu-panel {
  position: relative; flex: 1 1 0; min-width: 0; padding: 18px 20px; border-radius: var(--r-md);
  background: var(--glass);
  border: 1px solid var(--border);
}
.comu-panel-tit {
  font-size: 14px; font-weight: 700; color: var(--text);
  margin-bottom: 14px; padding-bottom: 10px;
  border-bottom: 1px solid var(--border);
}
.comu-pane[hidden] { display: none; }
@media (max-width: 760px) {
  .comu { padding: 18px 14px; }
  .comu-main { flex-direction: column; }
  .comu-nav { flex: none; width: 100%; flex-direction: row; flex-wrap: wrap; }
  .comu-navbtn { width: auto; flex: 1 1 auto; border-left: 1px solid var(--border); }
  .comu-navbtn.ativo { border-left-color: var(--bp); }
}

/* Formulários dentro da folha (padrão do sistema).
   Exceções: labels-container (.com-card/.com-chave/.pers-check) têm layout próprio. */
.comu label:not(.com-card):not(.com-chave):not(.pers-check) {
  display: block; font-size: 12px; font-weight: 600;
  color: var(--muted); margin: 16px 0 7px; }
.comu input[type="text"], .comu input[type="time"], .comu textarea {
  width: 100%; background: var(--glass); border: 1px solid var(--border);
  border-radius: var(--r-md); color: var(--text); padding: 9px 12px; font-size: 13.5px;
  color-scheme: dark light;
}
.comu textarea { resize: vertical; line-height: 1.55; font-family: inherit; }
.comu select {
  background: var(--glass); border: 1px solid var(--border);
  border-radius: var(--r-md); color: var(--text); padding: 8px 10px; font-size: 13.5px;
  color-scheme: dark light;
}
.comu input:focus, .comu textarea:focus, .comu select:focus { outline: none; border-color: var(--accent); }
.comu .pers-desc { color: var(--muted); }
.comu .pers-subtit { color: var(--text); font-size: 14px; font-weight: 700; margin: 22px 0 2px; }
.comu .pers-rodape { margin-top: 20px; }

.com-aviso { padding: 8px 2px; }
.com-aviso .btn-acao { margin-top: 6px; }
.com-cards { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
.com-card {
  display: flex; align-items: center; gap: 12px; cursor: pointer;
  padding: 13px 15px; border-radius: var(--r-md);
  background: var(--glass); border: 1px solid var(--border);
  transition: border-color .14s, background .14s;
}
.com-card:hover { background: var(--glass-2); }
.com-card:has(input:checked) {
  border-color: color-mix(in srgb, var(--bp) 50%, transparent);
  background: color-mix(in srgb, var(--bp) 8%, transparent);
}
.com-card input[type="checkbox"] { width: 17px; height: 17px; accent-color: var(--accent); flex: none; }
.com-card-ic { font-size: 20px; flex: none; }
.com-card-tx { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }
.com-card-tx b { font-size: 14px; color: var(--text); }
.com-card-tx small { font-size: 12px; color: var(--muted); }
.com-nums { font-size: 12px; color: var(--muted); text-align: right; flex: none; font-variant-numeric: tabular-nums; }
.com-nums b { color: var(--text); font-size: 14px; }
.com-chave { display: flex; align-items: center; gap: 8px; margin-top: 14px; font-size: 13.5px; cursor: pointer; }
.com-chave input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--accent); }

/* Rotinas agendadas: seletor de dias da semana (chips) */
.rot-dias { display: flex; flex-wrap: wrap; gap: 8px; }
.rot-dia {
  display: flex; align-items: center; gap: 6px; cursor: pointer; user-select: none;
  padding: 8px 12px; border-radius: 999px; font-size: 13px;
  background: var(--glass); border: 1px solid var(--border);
  transition: border-color .14s, background .14s;
}
.rot-dia:hover { background: var(--glass-2); }
.rot-dia:has(input:checked) {
  border-color: color-mix(in srgb, var(--bp) 50%, transparent);
  background: color-mix(in srgb, var(--bp) 8%, transparent);
  color: var(--text); font-weight: 600;
}
.rot-dia input[type="checkbox"] { width: 14px; height: 14px; accent-color: var(--accent); }
.rot-lista-tit { margin-top: 22px; }
.sa-lista-tit { margin-top: 22px; }
.rot-item {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 11px 13px; border-radius: var(--r-md);
  background: var(--glass); border: 1px solid var(--border); margin-bottom: 8px;
}
.rot-item-tx { font-size: 13.5px; color: var(--text); min-width: 0; }
.rot-item-tx small { display: block; color: var(--muted); font-size: 12px; margin-top: 2px; }
.rot-item-acoes { display: flex; gap: 6px; flex: none; }
#com-restantes { margin-top: 10px; font-size: 12.5px; color: var(--muted); }
.com-bar {
  height: 8px; border-radius: 999px; background: var(--glass-2); overflow: hidden; margin: 14px 0 8px;
}
#com-bar-fill { display: block; height: 100%; width: 0; background: var(--accent); border-radius: 999px; transition: width .25s; }
.com-result { margin-top: 12px; color: var(--text); }
.com-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 4px; }
.com-tags code {
  font-size: 12px; padding: 3px 8px; border-radius: 7px;
  background: var(--glass-2); border: 1px solid var(--border); color: var(--accent-2);
}

/* Comunicação no detalhe da OS */
.osd-com { margin-top: 16px; border-top: 1px solid var(--border); }
.osd-com-head {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 8px;
  background: none; border: 0; color: var(--text); cursor: pointer;
  padding: 12px 2px 10px; font-size: 14px; font-weight: 600; text-align: left;
}
.osd-com-head:hover { color: var(--accent-2); }
.osd-com.aberto .pers-sec-chev { transform: rotate(180deg); }
.osd-com-badge {
  font-size: 10.5px; font-weight: 700; color: #e0a64a; margin-left: 6px;
  background: color-mix(in srgb, #e0a64a 13%, transparent);
  border: 1px solid color-mix(in srgb, #e0a64a 28%, transparent);
  border-radius: 999px; padding: 2px 8px; vertical-align: middle;
}
.osd-com-body { padding: 2px 2px 6px; }
.osd-com-ctrl { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.osd-com-ctrl .com-chave { margin-top: 0; }
.osd-com-pausa { display: flex; align-items: center; gap: 7px; }
.osd-com-pausa label { font-size: 12.5px; color: var(--muted); font-weight: 600; }
.osd-com-pausa input[type="date"] {
  background: var(--glass); border: 1px solid var(--border); border-radius: 9px;
  color: var(--text); padding: 5px 8px; font-size: 13px; color-scheme: dark light;
}
.osd-com-tl { margin-top: 12px; display: flex; flex-direction: column; gap: 6px; }
.osd-com-vazio { color: var(--muted); font-size: 13px; margin: 4px 0; }
.osd-com-item {
  display: flex; align-items: baseline; gap: 8px; font-size: 13px;
  padding: 7px 10px; border-radius: 10px; background: var(--glass); border: 1px solid var(--border);
}
/* Entrada (cliente respondeu — manual ou portal): acento à esquerda + seta,
   distinguindo de um relance quem falou (oficina x cliente). */
.osd-com-item.dir-entrada { border-left: 3px solid var(--accent-2); padding-left: 8px; }
.osd-com-item.dir-entrada .osd-com-tx::before { content: "↩ "; color: var(--accent-2); }
.osd-com-ic { flex: none; }
.osd-com-tx { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.osd-com-ok    { color: var(--ok); font-weight: 700; flex: none; }
.osd-com-falha { color: #ff453a; font-weight: 700; flex: none; cursor: help; }
.osd-com-dt { color: var(--muted); font-size: 11.5px; white-space: nowrap; flex: none; font-variant-numeric: tabular-nums; }
.osd-com-add { display: flex; gap: 7px; margin-top: 12px; flex-wrap: wrap; }
.osd-com-add select {
  background: var(--glass); border: 1px solid var(--border); border-radius: 9px;
  color: var(--text); padding: 6px 8px; font-size: 13px; color-scheme: dark light;
}
.osd-com-add input {
  flex: 1; min-width: 140px; background: var(--glass); border: 1px solid var(--border);
  border-radius: 9px; color: var(--text); padding: 6px 10px; font-size: 13px;
}
.osd-com-add input:focus, .osd-com-add select:focus { outline: none; border-color: var(--accent); }

.em-tabs { margin-top: 8px; }
.em-panel { padding: 15px 16px; }
.em-panel input[type="text"], .em-panel input[type="email"],
.em-panel input[type="number"], .em-panel input[type="password"], .em-panel select {
  width: 100%; padding: 10px 12px; border-radius: var(--r-md); font-family: inherit; font-size: 14px;
  border: 1px solid var(--border); background: var(--glass); color: var(--text);
}
.em-panel select { color-scheme: dark light; }
.em-panel input:focus, .em-panel select:focus { outline: none; border-color: var(--accent); }
.em-panel .linha { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.em-panel .osd-pane > label:first-child,
.em-panel .osd-pane > .pers-desc:first-child { margin-top: 2px; }
@media (max-width: 760px) { .em-panel .linha { grid-template-columns: 1fr; } }

.seg-aviso {
  margin: 0 0 4px; padding: 9px 11px; border-radius: var(--r-md); font-size: 13px;
  background: rgba(224,166,74,.12); border: 1px solid #e0a64a; color: var(--text);
}
.seg-ok   { margin: 8px 0 0; font-size: 13px; font-weight: 600; color: var(--ok); }
.seg-erro { margin: 8px 0 0; font-size: 13px; font-weight: 600; color: var(--danger); }
.comp-modal .modal-body { background: var(--surface); }

@media print {
  /* Margem TOPO/RODAPÉ pelo @page → vale em TODAS as páginas (resolve o "corte" nas quebras:
     fim de uma folha e início da próxima ganham respiro). As laterais ficam no padding do corpo.
     Obs.: com margem vertical > 0 o navegador pode voltar a imprimir o cabeçalho/rodapé dele
     (URL/data/nº da página); pra tirar, desmarque "Cabeçalhos e rodapés" no diálogo de impressão
     (o navegador lembra a escolha). */
  @page { margin: 14mm 0; }
  #app, #tela-login, .toast, #outbox-badge { display: none !important; }
  .modal-overlay:not(#modal-comprovante) { display: none !important; }
  #modal-comprovante { position: static; display: block !important; background: #fff; padding: 0; }
  #modal-comprovante .modal { box-shadow: none; border: 0; max-width: none; width: 100%; background: #fff; max-height: none; overflow: visible; }
  /* laterais (o topo/rodapé já vêm do @page, repetindo em cada página) */
  #modal-comprovante .modal-body { padding: 0 14mm; background: #fff; overflow: visible; max-height: none; }
  .comprovante { max-width: none; }
  .no-print { display: none !important; }
  /* deixa o conteúdo fluir pra próxima folha em vez de cortar */
  #comprovante { overflow: visible; }
  #comprovante .comp-head, #comprovante .comp-tot,
  #comprovante .comp-assinaturas-2 { break-inside: avoid; page-break-inside: avoid; }
}
.osd-del-btn, .os-del-btn {
  background: transparent; border: 1px solid transparent; border-radius: var(--r-sm);
  line-height: 1; color: var(--muted); cursor: pointer;
  transition: background .15s, border-color .15s, transform .05s;
}
.osd-del-btn { font-size: 18px; padding: 7px 9px; }
.osd-del-btn:hover { border-color: var(--danger); background: var(--glass); }
.osd-del-btn:active, .os-del-btn:active { transform: scale(.94); }

.btn-danger {
  padding: 11px 18px; border: 0; border-radius: var(--r-md);
  background: var(--danger); color: #fff; font-weight: 600; font-family: inherit;
  transition: filter .15s;
}
.btn-danger:hover { filter: brightness(1.07); }
.btn-danger:disabled { opacity: .6; cursor: default; }
.osdel-msg { margin: 0 0 6px; color: var(--muted); font-size: 13.5px; }

.cli-cep-linha { display: flex; align-items: center; gap: 10px; }
.cli-cep-linha input { max-width: 160px; }
.cli-cep-status { font-size: 12.5px; color: var(--muted); white-space: nowrap; }
.cli-cep-status.ok { color: var(--ok); font-weight: 700; }
.cli-cep-status.erro { color: var(--danger); }
.cli-cep-addr { margin-top: 8px; }

/* ============ MODAL ============ */
.modal-overlay {
  position: fixed; inset: 0; display: none; align-items: center; justify-content: center; padding: 18px;
  background: rgba(8,12,22,.55); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); z-index: 50;
}
.modal-overlay.aberto { display: flex; animation: fadein .15s ease; }
.modal-overlay.dedup { z-index: 60; }
/* Aviso de produto duplicado: nasce de dentro do modal de peça / da NF, então
   precisa vencê-los explicitamente — não por ordem no HTML. */
#modal-dup-prod { z-index: 60; }
#modal-instrumento { z-index: 60; }   /* abre por cima do modal de cliente / detalhe da OS */
.modal-overlay.modal-acima { z-index: 70; }   /* cliente aberto por cima do form de consignação */
@keyframes fadein { from { opacity: 0 } to { opacity: 1 } }

.modal {
  width: 100%; max-width: 540px; max-height: 92vh; display: flex; flex-direction: column; overflow: hidden;
  border-radius: var(--r-xl);
  background: var(--surface); border: 1px solid var(--border);
  backdrop-filter: blur(30px) saturate(160%); -webkit-backdrop-filter: blur(30px) saturate(160%);
  box-shadow: var(--shadow), inset 1px 1px 0 var(--rim);
  animation: pop .16s ease;
}
.modal.modal-sm { max-width: 420px; }
@keyframes pop { from { transform: translateY(10px) scale(.98); opacity: 0 } to { transform: none; opacity: 1 } }

.modal-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 22px; border-bottom: 1px solid var(--border);
}
.modal-header h3 { margin: 0; font-size: 18px; font-weight: 700; letter-spacing: -.3px; }
.modal-x {
  width: 32px; height: 32px; border-radius: var(--r-xs); font-size: 15px;
  border: 1px solid var(--border); background: var(--glass-2); color: var(--muted);
}
.modal-x:hover { color: var(--text); }

.modal-body { padding: 18px 22px; overflow-y: auto; }
.modal-body .linha { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.modal-body label { display: block; font-size: 12px; font-weight: 600; color: var(--muted); margin: 12px 0 6px; }
.modal-body > label:first-of-type, .modal-body .linha:first-child label { margin-top: 0; }

/* Ficha de construção: seções com campos pequenos em 2 colunas */
.cons-sec-tit { margin: 18px 0 6px; font-size: 12.5px; font-weight: 700; color: var(--accent-2); text-transform: uppercase; letter-spacing: .04em; }
.cons-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; }
.cons-grid-1 { grid-template-columns: 1fr; }
.cons-fld { display: flex; flex-direction: column; gap: 5px; }
.cons-fld > span { font-size: 11.5px; font-weight: 600; color: var(--muted); }
.cons-fld-wide { grid-column: 1 / -1; }
@media (max-width: 560px) { .cons-grid { grid-template-columns: 1fr; } }
/* Extras da ficha: descrição + valor + remover, com botão "add linha" */
.cons-extras-lista { margin: 6px 0 8px; display: flex; flex-direction: column; gap: 8px; }
.cons-extra-row { display: grid; grid-template-columns: 1fr 130px auto; gap: 8px; align-items: center; }
.cons-extra-v { text-align: right; }
.cons-extra-del { flex: none; }
.cons-extras-add { margin-bottom: 4px; }
.cons-fim-grid { margin-top: 16px; align-items: end; }
.cons-total { font-weight: 700; }
@media (max-width: 560px) { .cons-extra-row { grid-template-columns: 1fr 100px auto; } }
/* Impressão da ficha de construção (worksheet) — 2 colunas, compacto */
.comp-sub { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em;
  color: #444; margin: 14px 0 6px; border-bottom: 1px solid #d2d2d2; padding-bottom: 3px; }
/* responsivo: encaixa quantas colunas couberem (A4 ~3, térmica 1) — sem config à parte */
.comp-ff-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(185px, 1fr)); gap: 7px 20px; margin: 4px 0 6px; }
.comp-ff { display: flex; flex-direction: column; gap: 2px; break-inside: avoid; }
.comp-ff-wide { grid-column: 1 / -1; }
.comp-ff-l { font-size: 8.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #888; }
.comp-ff-v { font-size: 12.5px; line-height: 1.3; color: #111; }
/* Total da ficha (preço base + extras) na impressão */
.comp-total-ficha { display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
  margin-top: 12px; padding-top: 8px; border-top: 1.5px solid #bbb; break-inside: avoid; }
.comp-total-ficha span { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #555; }
.comp-total-ficha strong { font-size: 15px; color: #111; }

.modal-footer {
  display: flex; justify-content: flex-end; gap: 10px;
  padding: 15px 22px; border-top: 1px solid var(--border);
}
/* Confirmação: sem cabeçalho (a pergunta É o conteúdo) e acima de qualquer
   outro modal — quase sempre nasce de dentro de um. pre-line porque algumas
   perguntas têm um parágrafo de explicação depois da linha em branco. */
.modal-overlay.confirma { z-index: 80; }
.confirma-msg { margin: 0; font-size: 15px; line-height: 1.5; white-space: pre-line; }
.modal-overlay.confirma .modal-body { padding-top: 22px; }
.modal-footer.dup-footer { flex-direction: column; gap: 8px; }
.modal-footer.dup-footer .btn-primary, .modal-footer.dup-footer .btn-ghost { width: 100%; }

/* duplicados */
.dup-msg { margin: 0 0 12px; color: var(--muted); font-size: 14px; }
.dup-item {
  padding: 11px 13px; border-radius: var(--r-sm); font-size: 14px;
  background: var(--card); border: 1px solid var(--border); margin-bottom: 8px;
}
.dup-item b { color: var(--accent-2); }
.dup-item span { display: block; color: var(--muted); font-size: 12px; margin-top: 3px; }

/* ============ TOAST ============ */
.toast {
  position: fixed; bottom: 22px; left: 50%; transform: translateX(-50%);
  padding: 13px 20px; border-radius: var(--r-lg); z-index: 80; font-size: 14px; font-weight: 500;
  background: var(--surface); border: 1px solid var(--border);
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); box-shadow: var(--shadow);
}
.toast.erro { color: var(--danger); }
.toast.ok { color: var(--ok); }

/* Selo de alterações pendentes (outbox) — reenvia quando a conexão volta */
#outbox-badge {
  position: fixed; bottom: 22px; left: 22px; z-index: 81;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 9px 14px; border-radius: var(--r-lg); border: none; cursor: pointer;
  font-size: 13px; font-weight: 600; color: #fff; background: #c8801b;
  box-shadow: var(--shadow);
}
#outbox-badge:hover { filter: brightness(1.08); }

/* ============ Responsivo ============ */
@media (max-width: 760px) {
  .app, .app.sidebar-colapsada, .app.sidebar-r-colapsada { grid-template-columns: 1fr; }
  /* no mobile o menu vira barra no topo: a página rola normal (sem travar) */
  .app { height: auto; min-height: 100vh; overflow: visible; }
  .conteudo { overflow: visible; min-height: 0; }
  /* mobile: relógio/calendário some, mas o rodapé (Ajuda/Sair) fica como barrinha */
  .sidebar-r { margin: 0 10px 10px; padding: 10px 12px; }
  .sidebar-r-top, .sidebar-r-mini, .sidebar-r-body { display: none; }
  .sidebar-r-foot { flex-direction: row; justify-content: flex-end; gap: 8px; margin-top: 0; padding-top: 0; border-top: none; }
  .sidebar { flex-direction: row; align-items: center; flex-wrap: wrap; gap: 8px; margin: 10px; }
  .sidebar-top { width: 100%; }
  .btn-sidebar { display: none; }            /* recolher é recurso de desktop */
  .nav { flex-direction: row; flex-wrap: wrap; }
  .nav-sep { display: none; }
  .nav-item.em-breve::after { display: none; }
  .btn-logout { margin-top: 0; }
  .conteudo { padding: 16px; }
  .modal-body .linha { grid-template-columns: 1fr; }
  /* no mobile o menu nunca fica só-ícones */
  .sidebar-colapsada .sidebar-top { flex-direction: row; }
  .sidebar-colapsada .logo-tx, .sidebar-colapsada .nav-tx { display: inline; }
  .sidebar-colapsada .nav-item { gap: 11px; padding: 11px 13px; }
  .ct-fluxo-bar { flex-direction: column; align-items: stretch; }
  .ct-form-grid { grid-template-columns: 1fr; }
  .ct-row3 { grid-template-columns: 1fr; }
  .ct-lanc, .ct-lanc-head { grid-template-columns: 64px minmax(0,1fr) 78px 96px; gap: 10px; }
  .ct-cards { flex-direction: column; }
}

/* ============ CONTAS (Financeiro) ============ */
.ct-tabs { margin-top: 4px; }
/* Aba ativa + painel na MESMA cor sólida: a aba (margin-bottom -1px) cobre a
   borda do painel de verdade — com fundo translúcido a linha vazava por baixo. */
.ct-tabs .osd-tab.ativo { background: var(--com-surface); }
.ct-panel { padding: 16px 18px; background: var(--com-surface); box-shadow: var(--shadow); }

/* --- Fluxo: barra de navegação --- */
.ct-fluxo-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.ct-nav { display: flex; align-items: center; gap: 8px; }
.ct-navbtn {
  width: 34px; height: 34px; border-radius: var(--r-sm); font-size: 18px; line-height: 1;
  border: 1px solid var(--border); background: var(--glass-2); color: var(--text);
}
.ct-navbtn:hover { background: var(--glass); border-color: var(--accent); }
.ct-nav input[type="date"] { width: auto; }
.ct-hoje {
  padding: 7px 14px; border-radius: var(--r-sm); font-size: 13px; font-weight: 600;
  border: 1px solid var(--border); background: var(--glass-2); color: var(--muted);
}
.ct-hoje:hover { color: var(--text); border-color: var(--accent); }
.ct-view { width: auto; min-width: 140px; }
.ct-periodo { text-align: center; font-size: 17px; font-weight: 700; letter-spacing: -.2px; margin: 16px 0 12px; text-transform: capitalize; }

/* --- Cards de resumo --- */
.ct-cards { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }
.ct-card {
  flex: 1; min-width: 150px; padding: 14px 16px; border-radius: var(--r-md);
  background: var(--glass); border: 1px solid var(--border);
  display: flex; flex-direction: column; gap: 5px;
}
.ct-card-lbl { font-size: 12.5px; color: var(--muted); font-weight: 600; }
.ct-card-val { font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -.5px; }
.ct-card-in  { border-left: 3px solid var(--ok); }
.ct-card-out { border-left: 3px solid var(--danger); }
.ct-card-saldo { border-left: 3px solid var(--accent); }
.ct-card-in .ct-card-val  { color: var(--ok); }
.ct-card-out .ct-card-val { color: var(--danger); }
.ct-card-saldo .ct-card-val { color: var(--accent-2); }
.ct-card-val.neg { color: var(--danger); }

/* --- Tabelas (fluxo/relatório) --- */
.ct-tab { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: var(--r-md); overflow: hidden; }
.ct-tab-head, .ct-tab-row {
  display: grid; grid-template-columns: 1.6fr 1fr auto; gap: 12px; align-items: center;
  padding: 10px 14px; font-size: 14px;
}
.ct-tab-4 .ct-tab-head, .ct-tab-4 .ct-tab-row { grid-template-columns: 1.1fr 1fr 1fr 1fr; }
/* Fluxo view Dia: 4 colunas (descrição | categoria | forma | valor).
   Larguras em fr (sem 'auto') p/ todas as linhas alinharem — 'auto' variava com o valor. */
.ct-tab-dia .ct-tab-head, .ct-tab-dia .ct-tab-row { grid-template-columns: minmax(0, 1.8fr) minmax(0, 1.2fr) minmax(0, 1.1fr) minmax(0, 0.9fr); }
.ct-tab-row .ct-tforma { color: var(--muted); font-size: 13px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Vencimento original, só aparece quando difere do dia efetivo (pago fora do prazo). */
.ct-tvenc { display: block; color: var(--muted); font-size: 11.5px; font-weight: 400; margin-top: 1px; }
.ct-forma-vazio { opacity: .45; }
.ct-tab-head { background: var(--glass); color: var(--muted); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; }
/* Cabeçalho de coluna clicável (ordenação) nas tabelas de fluxo e relatório. */
.ct-th-sort { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; color: inherit; transition: color .15s ease; }
.ct-th-sort.ct-r { justify-content: flex-end; }
.ct-th-sort:hover { color: var(--text); }
.ct-th-sort.ativo { color: var(--accent-2); }
.ct-tab-row { border-top: 1px solid var(--border); }
.ct-tab-row .ct-tdesc { font-weight: 600; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ct-tab-row .ct-tcat { color: var(--muted); font-size: 13px; }
.ct-r { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ct-tab-row .ct-entrada, .ct-tval { font-weight: 600; }
.ct-tab-row .ct-entrada { color: var(--ok); }
.ct-tab-row .ct-saida { color: var(--danger); }
.ct-tab-row .neg { color: var(--danger); }
/* Relatório com a coluna Forma: 5 colunas (data | descrição | categoria | forma | valor). */
.ct-tab-5 .ct-tab-head, .ct-tab-5 .ct-tab-row {
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
}
/* Relatório (itens): valor colorido por tipo — a classe do tipo fica na linha ct-row4/5 */
.ct-row4.ct-entrada .ct-tval, .ct-row5.ct-entrada .ct-tval { color: var(--ok); }
.ct-row4.ct-saida .ct-tval, .ct-row5.ct-saida .ct-tval { color: var(--danger); }
/* Resumo por forma: percentual discreto ao lado do nome da forma. */
.ct-rel-pct { color: var(--muted); font-size: 11.5px; font-weight: 600; }
/* Fluxo view Dia: valor colorido por tipo (a classe do tipo fica na linha, não numa célula) */
.ct-tab-dia .ct-tab-row.ct-entrada .ct-tval { color: var(--ok); }
.ct-tab-dia .ct-tab-row.ct-saida .ct-tval { color: var(--danger); }
.ct-detalhe { margin-top: 4px; }
.ct-vazio { color: var(--muted); font-size: 14px; text-align: center; padding: 22px 0; }

/* --- Totais por forma de pagamento (só formas com valor no período) --- */
.ct-formas:empty { display: none; }
.ct-formas { margin: -4px 0 16px; }
.ct-formas-lbl { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em;
  color: var(--muted); margin-bottom: 8px; }
.ct-formas-row { display: flex; flex-wrap: wrap; gap: 10px; }
.ct-forma-card { display: flex; align-items: center; gap: 9px; padding: 9px 13px;
  border: 1px solid var(--border); border-radius: var(--r-md); background: var(--glass); }
.ct-fc-ic { font-size: 17px; line-height: 1; }
.ct-fc-body { display: flex; flex-direction: column; gap: 1px; line-height: 1.2; }
.ct-fc-nome { font-size: 12px; color: var(--muted); font-weight: 600; }
.ct-fc-vals { display: flex; gap: 10px; font-weight: 700; font-variant-numeric: tabular-nums; font-size: 14.5px; }
.ct-fc-in  { color: var(--ok); }
.ct-fc-out { color: var(--danger); }

/* --- Lançamentos: formulário --- */
.ct-form { background: var(--glass); border: 1px solid var(--border); border-radius: var(--r-md); padding: 16px; margin-bottom: 18px; }
/* Toggle Entrada/Saída como segmented control: cor + sinal (+/−) + texto. */
.ct-form-tipo { display: flex; gap: 6px; margin-bottom: 14px; }
.ct-form-tipo .cat-chip { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 9px 16px; font-size: 13px; }
/* Chevron do accordion de lançamento: centralizado abaixo dos botões, em pílula de destaque */
.ct-lanc-toggle-wrap { display: flex; justify-content: center; margin-top: 12px; }
.ct-lanc-chevron {
  min-width: 92px; height: 30px; padding: 0 20px; border-radius: 999px; cursor: pointer;
  border: 1px solid color-mix(in srgb, var(--accent) 45%, var(--border));
  background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent-2);
  font-size: 16px; font-weight: 700; line-height: 1;
  transition: color .15s, border-color .15s, background .15s;
}
.ct-lanc-chevron:hover { background: color-mix(in srgb, var(--accent) 20%, transparent); border-color: var(--accent); }
#ct-tipo-btns .cat-chip[data-tipo="entrada"]::before { content: '+'; font-weight: 800; font-size: 15px; }
#ct-tipo-btns .cat-chip[data-tipo="saida"]::before   { content: '−'; font-weight: 800; font-size: 15px; }
#ct-tipo-btns .cat-chip[data-tipo="entrada"].ativo {
  color: #fff; border-color: var(--ok);
  background: linear-gradient(180deg, color-mix(in srgb, var(--ok) 82%, #fff), var(--ok));
  box-shadow: 0 0 0 1px var(--ok), 0 6px 18px -5px var(--ok);
}
#ct-tipo-btns .cat-chip[data-tipo="saida"].ativo {
  color: #fff; border-color: var(--danger);
  background: linear-gradient(180deg, color-mix(in srgb, var(--danger) 82%, #fff), var(--danger));
  box-shadow: 0 0 0 1px var(--danger), 0 6px 18px -5px var(--danger);
}
/* O tipo "contamina" o form: faixa lateral, cor do valor e botão Salvar. */
.ct-form { transition: box-shadow .2s ease; }
#ct-lanc-form.tipo-entrada { box-shadow: inset 3px 0 0 var(--ok); }
#ct-lanc-form.tipo-saida   { box-shadow: inset 3px 0 0 var(--danger); }
#ct-lanc-form.tipo-entrada #ct-l-valor { border-color: color-mix(in srgb, var(--ok) 50%, var(--border)); }
#ct-lanc-form.tipo-saida   #ct-l-valor { border-color: color-mix(in srgb, var(--danger) 50%, var(--border)); }
#ct-lanc-form.tipo-entrada .ct-form-acoes .btn-acao {
  background: linear-gradient(180deg, color-mix(in srgb, var(--ok) 82%, #fff), var(--ok)); box-shadow: 0 6px 18px -6px var(--ok);
}
#ct-lanc-form.tipo-saida .ct-form-acoes .btn-acao {
  background: linear-gradient(180deg, color-mix(in srgb, var(--danger) 82%, #fff), var(--danger)); box-shadow: 0 6px 18px -6px var(--danger);
}
.ct-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.ct-fld { display: flex; flex-direction: column; gap: 6px; }
.ct-fld > span { font-size: 12px; font-weight: 600; color: var(--muted); }
.ct-fld-wide { grid-column: 1 / -1; }
/* Linha Categoria · Forma de pagamento · Já pago (este último compacto à direita). */
.ct-row3 { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr auto; gap: 12px; align-items: end; }
.ct-row3 .ct-fld { min-width: 0; }
/* "Já pago / recebido": pill com ícone 💰 ao lado da forma; fica verde quando ligado. */
.ct-fld-pago {
  flex-direction: row; align-items: center; gap: 9px; white-space: nowrap;
  padding: 9px 14px; border: 1.5px solid var(--border); border-radius: var(--r-md);
  background: var(--glass-2); cursor: pointer; user-select: none;
  transition: border-color .15s, background .15s, box-shadow .15s;
}
.ct-fld-pago:hover { border-color: color-mix(in srgb, var(--ok) 60%, var(--border)); }
.ct-fld-pago .ct-pago-ic { font-size: 17px; line-height: 1; }
.ct-fld-pago .ct-pago-txt { font-size: 13.5px; font-weight: 600; color: var(--text); }
.ct-fld-pago input { width: 20px; height: 20px; accent-color: var(--ok); cursor: pointer; }
.ct-fld-pago:has(input:checked) {
  border-color: var(--ok); background: color-mix(in srgb, var(--ok) 13%, transparent);
  box-shadow: inset 0 0 0 1px var(--ok);
}
.ct-fld-pago:has(input:checked) .ct-pago-txt { color: var(--ok); }
.ct-form-acoes { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 16px; flex-wrap: wrap; }
.ct-form-hint { font-size: 12.5px; color: var(--muted); }

/* --- Itens do lançamento (saída): detalhe + reconciliação --- */
.ct-itens { margin-top: 14px; padding: 14px; border: 1px solid var(--border); border-radius: var(--r-sm); background: var(--glass-2); }
.ct-itens-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.ct-itens-tit { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
.ct-itens-add { width: auto; padding: 6px 14px; font-size: 13px; font-weight: 600; white-space: nowrap; }
.ct-itens-lista { display: flex; flex-direction: column; gap: 8px; }
.ct-item-row { display: grid; grid-template-columns: 1fr 118px auto; gap: 8px; align-items: center; }
.ct-item-row input { width: 100%; }
.ct-item-val { text-align: right; font-variant-numeric: tabular-nums; }
.ct-itens-vazio { color: var(--muted); font-size: 12.5px; margin: 2px 0 0; }
.ct-itens-reconc { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--border); font-size: 13px; color: var(--muted); font-variant-numeric: tabular-nums; text-align: right; }
.ct-itens-reconc b { color: var(--text); }

/* --- Itens na lista: chip que expande o detalhe --- */
.ct-itens-chip {
  display: inline-flex; align-items: center; gap: 3px; vertical-align: middle;
  padding: 1px 8px; border-radius: 999px; border: 1px solid var(--border);
  background: var(--glass-2); color: var(--muted); font-size: 11px; font-weight: 600;
  cursor: pointer; transition: color .15s ease, border-color .15s ease;
}
.ct-itens-chip:hover { color: var(--text); border-color: var(--accent); }
.ct-itens-chip.aberto { color: var(--accent-2); border-color: var(--accent); }
.ct-lanc-itens { display: flex; flex-direction: column; gap: 3px; padding: 2px 8px 12px; }
.ct-lanc-item { display: flex; justify-content: space-between; gap: 14px; padding: 5px 10px; border-radius: var(--r-xs); background: var(--glass-2); font-size: 12.5px; }
.ct-lanc-item span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ct-lanc-item b { font-variant-numeric: tabular-nums; color: var(--muted); white-space: nowrap; }

/* --- Lançamentos: filtro + lista --- */
.ct-lanc-filtro { display: flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.ct-chip {
  padding: 7px 14px; border-radius: 999px; font-size: 13px; font-weight: 600;
  border: 1px solid var(--border); background: var(--glass-2); color: var(--muted);
}
.ct-chip:hover { color: var(--text); }
.ct-chip.ativo { color: #fff; background: var(--accent); border-color: var(--accent); }
/* Lista de lançamentos: rolagem só aqui (não na página toda). */
.ct-lista { display: flex; flex-direction: column; max-height: 56vh; overflow-y: auto; overscroll-behavior: contain; margin: 0 -6px; padding: 0 6px; }
.ct-lista::-webkit-scrollbar { width: 8px; }
.ct-lista::-webkit-scrollbar-thumb { background: var(--border); border-radius: 8px; }
.ct-lista::-webkit-scrollbar-thumb:hover { background: var(--muted); }
.ct-lista::-webkit-scrollbar-track { background: transparent; }
/* Cabeçalho ordenável: dentro da lista (alinha às colunas) e fixo ao rolar. */
.ct-lanc-head {
  position: sticky; top: 0; z-index: 2;
  display: grid; grid-template-columns: 78px minmax(0,1fr) 104px 124px; gap: 18px; align-items: center;
  padding: 8px; background: var(--surface); border-bottom: 1px solid var(--border);
}
.ct-sort {
  display: inline-flex; align-items: center; gap: 4px; min-width: 0;
  background: none; border: 0; padding: 0; cursor: pointer; font: inherit;
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  color: var(--muted); transition: color .15s ease;
}
.ct-sort:hover { color: var(--text); }
.ct-sort.ativo { color: var(--accent-2); }
.ct-sort-r { justify-content: flex-end; }
.ct-sort-ar { font-size: 11px; font-weight: 800; }
.ct-lanc-wrap { border-bottom: 1px solid var(--border); }
.ct-lanc-wrap:last-child { border-bottom: 0; }
.ct-lanc {
  display: grid; grid-template-columns: 78px minmax(0,1fr) 104px 124px; gap: 18px; align-items: center;
  padding: 11px 8px; border-radius: var(--r-sm); transition: background .15s ease;
}
.ct-lanc:hover { background: var(--glass-2); }
.ct-lanc-data { font-size: 12.5px; color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.ct-lanc-desc { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ct-lanc-desc b { font-size: 14px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ct-lanc-desc small { font-size: 12px; color: var(--muted); }
.ct-lanc-val { font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; }
.ct-entrada > .ct-lanc-val, .ct-lanc.ct-entrada .ct-lanc-val { color: var(--ok); }
.ct-lanc.ct-saida .ct-lanc-val { color: var(--danger); }
/* Pendente: esmaece a linha (opacidade + texto "a pagar/receber"), mas mantém a cor
   do valor (verde entrada / vermelho saída) em vez de deixar cinza. */
.ct-lanc.pendente { opacity: .82; }
.ct-lanc-acoes { display: flex; gap: 6px; justify-content: flex-end; }
.ct-mini {
  width: 30px; height: 30px; border-radius: var(--r-xs); font-size: 13px; line-height: 1;
  border: 1px solid var(--border); background: var(--glass-2); color: var(--muted);
}
.ct-mini-ok:hover { color: var(--ok); border-color: var(--ok); }
.ct-mini-undo:hover { color: var(--accent-2); border-color: var(--accent); }
.ct-mini-del:hover { color: var(--danger); border-color: var(--danger); }
/* Botão de texto (Pagar/Receber) no lugar do ✓ */
.ct-mini-txt { width: auto; min-width: 30px; height: 30px; padding: 0 12px; font-size: 12px; font-weight: 700; letter-spacing: .02em; }

/* --- Relatórios --- */
.ct-rel-tipos { display: flex; gap: 8px; margin-bottom: 14px; }
.consig-pend { color: #e0a64a; font-weight: 600; font-size: 12px; }
/* Filtros do relatório — seções espaçadas (Período · O que incluir · Categorias). */
.ct-rel-filtros { background: var(--glass); border: 1px solid var(--border); border-radius: var(--r-md); padding: 2px 18px 16px; margin-bottom: 16px; }
.ct-rel-sec { padding: 16px 0; border-top: 1px solid var(--border); }
.ct-rel-sec:first-child { border-top: 0; }
.ct-rel-sec-lbl { display: block; font-size: 11px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .05em; margin-bottom: 12px; }
/* O botão "Marcar todas / Limpar" fica JUNTO do rótulo, não jogado na borda
   direita: assim se lê como ação daquela seção, e não como um controle solto do
   painel. flex-start + gap segura os dois lado a lado. */
.ct-rel-sec-head { display: flex; align-items: center; justify-content: flex-start; gap: 30px; margin-bottom: 12px; }
.ct-rel-sec-head .ct-rel-sec-lbl { margin-bottom: 0; }
.ct-rel-row { display: flex; gap: 14px; flex-wrap: wrap; align-items: flex-end; }
.ct-rel-row .ct-fld { min-width: 150px; }
/* Presets de período */
.ct-rel-presets { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.ct-chip-sm {
  padding: 9px 14px; border-radius: var(--r-pill); border: 1px solid var(--border);
  background: var(--glass-2); color: var(--muted); font-size: 12.5px; font-weight: 600;
  cursor: pointer; transition: color .15s, border-color .15s, background .15s;
}
.ct-chip-sm:hover { color: var(--text); border-color: var(--accent); }
/* "O que incluir" — pills de toggle (entradas verde, saídas vermelho, demais azul) */
.ct-rel-opts { display: flex; flex-wrap: wrap; gap: 10px; }
.ct-toggle {
  display: inline-flex; align-items: center; gap: 8px; cursor: pointer; user-select: none;
  padding: 8px 14px; border-radius: var(--r-pill); border: 1px solid var(--border);
  background: var(--glass-2); color: var(--muted); font-size: 13.5px; font-weight: 600;
  transition: color .15s, border-color .15s, background .15s;
}
.ct-toggle input { width: 16px; height: 16px; accent-color: var(--accent); cursor: pointer; }
.ct-toggle:has(input:checked) { color: var(--text); border-color: var(--accent); background: color-mix(in srgb, var(--accent) 12%, transparent); }
.ct-toggle-in input { accent-color: var(--ok); }
.ct-toggle-in:has(input:checked) { color: var(--ok); border-color: var(--ok); background: color-mix(in srgb, var(--ok) 13%, transparent); }
.ct-toggle-out input { accent-color: var(--danger); }
.ct-toggle-out:has(input:checked) { color: var(--danger); border-color: var(--danger); background: color-mix(in srgb, var(--danger) 13%, transparent); }
/* Categorias — chips (checkbox escondido; o chip é o controle) */
.ct-rel-cats { display: flex; flex-wrap: wrap; gap: 8px; }
.ct-check-cat {
  display: inline-flex; align-items: center; cursor: pointer; user-select: none;
  padding: 6px 13px; border-radius: var(--r-pill); border: 1px solid var(--border);
  background: var(--glass-2); color: var(--muted); font-size: 12.5px; font-weight: 600;
  transition: color .15s, border-color .15s, background .15s;
}
.ct-check-cat input { position: absolute; opacity: 0; width: 0; height: 0; }
.ct-check-cat:hover { color: var(--text); border-color: var(--accent); }
.ct-check-cat:has(input:checked) { color: var(--accent-2); background: color-mix(in srgb, var(--accent) 14%, transparent); border-color: var(--accent); }
.ct-rel-allbtn { background: none; border: 0; color: var(--accent-2); font-size: 12.5px; font-weight: 600; cursor: pointer; padding: 2px 4px; }
.ct-rel-allbtn:hover { text-decoration: underline; }
.ct-rel-acoes { display: flex; gap: 10px; padding-top: 16px; border-top: 1px solid var(--border); }
.ct-rel-saida:empty { display: none; }
.ct-rel-doc h3 { margin: 0 0 4px; font-size: 18px; }
.ct-rel-per { margin: 0 0 16px; color: var(--muted); font-size: 13px; }
.ct-rel-totais { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 18px; }
.ct-rel-plano { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; }
.ct-rel-plano-bloco { flex: 1; min-width: 220px; border: 1px solid var(--border); border-radius: var(--r-md); overflow: hidden; }
.ct-rel-plano-bloco h4 { margin: 0; padding: 9px 13px; font-size: 13px; background: var(--glass); border-bottom: 1px solid var(--border); }
.ct-rel-plano-row { display: flex; justify-content: space-between; gap: 12px; padding: 8px 13px; font-size: 14px; border-top: 1px solid var(--border); }
.ct-rel-plano-row:first-of-type { border-top: 0; }
.ct-rel-itens-tit { margin: 0 0 10px; font-size: 15px; }

/* Modal de confirmação de pagamento */
.pag-resumo {
  text-align: center; padding: 14px; margin-bottom: 6px;
  border-radius: var(--r-md); background: var(--glass); border: 1px solid var(--border);
}
.pag-resumo-desc { font-size: 15px; font-weight: 600; }
.pag-resumo-val { font-size: 26px; font-weight: 700; letter-spacing: -.5px; margin: 4px 0; font-variant-numeric: tabular-nums; }
.pag-resumo-val.ct-saida { color: var(--danger); }
.pag-resumo-val.ct-entrada { color: var(--ok); }
.pag-resumo-sub { font-size: 12.5px; color: var(--muted); }

/* Relatório impresso (renderizado dentro do #comprovante) — força texto escuro */
@media print {
  #comprovante .ct-rel-doc, #comprovante .ct-rel-doc * { color: #111 !important; }
  #comprovante .ct-card, #comprovante .ct-tab, #comprovante .ct-tab-head,
  #comprovante .ct-rel-plano-bloco, #comprovante .ct-rel-plano-bloco h4 { background: #fff !important; border-color: #ccc !important; }
  #comprovante .ct-card-in .ct-card-val { color: #0a7a43 !important; }
  #comprovante .ct-card-out .ct-card-val, #comprovante .ct-saida, #comprovante .neg { color: #b3203a !important; }
}

/* ============ BUSCA POR IA (home) ============ */
.ia-busca { margin: 4px 0 22px; }
.ia-form {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 6px 6px 14px; border-radius: var(--r-lg);
  background: var(--glass); border: 1px solid var(--border);
  box-shadow: var(--shadow), inset 1px 1px 0 var(--rim);
  transition: border-color .15s, box-shadow .15s;
}
.ia-form:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent); }
.ia-ic { font-size: 18px; line-height: 1; flex: none; filter: saturate(1.2); }
.ia-input {
  flex: 1; min-width: 0; border: 0; background: transparent; color: var(--text);
  font-size: 15px; font-family: inherit; padding: 10px 4px; outline: none;
}
.ia-enviar {
  flex: none; padding: 10px 20px; border: 0; border-radius: var(--r-md);
  background: linear-gradient(180deg, var(--accent-2), var(--accent)); color: #fff;
  font-weight: 600; font-family: inherit; font-size: 14px; cursor: pointer;
  box-shadow: 0 6px 18px -6px var(--accent); transition: filter .15s, opacity .15s;
}
.ia-enviar:hover { filter: brightness(1.07); }
.ia-enviar:disabled { opacity: .6; cursor: default; }
.ia-enviar.carregando { opacity: .7; cursor: progress; }

.ia-resultado {
  position: relative; margin-top: 12px; padding: 16px 18px;
  border-radius: var(--r-lg); background: var(--glass-2); border: 1px solid var(--border);
  box-shadow: inset 1px 1px 0 var(--rim); animation: fadein .18s ease;
}
.ia-fechar {
  position: absolute; top: 10px; right: 10px; width: 28px; height: 28px;
  border-radius: var(--r-xs); border: 1px solid var(--border); background: var(--glass-2);
  color: var(--muted); font-size: 13px; cursor: pointer;
}
.ia-fechar:hover { color: var(--text); border-color: var(--accent); }
.ia-pergunta-eco { font-size: 13px; color: var(--muted); margin: 0 28px 10px 0; font-style: italic; }
.ia-pergunta-eco::before { content: "“"; }
.ia-pergunta-eco::after { content: "”"; }
.ia-resposta { font-size: 14.5px; line-height: 1.6; color: var(--text); }
/* Botão de código clicável (OS-0007, VND-0001...) — usado na resposta da IA e em
   qualquer lugar que cite um registro (fluxo de caixa, lançamentos, relatório). */
.codigo-link {
  display: inline; padding: 1px 7px; margin: 0 1px; border-radius: var(--r-pill);
  border: 1px solid var(--accent); background: color-mix(in srgb, var(--accent) 14%, transparent);
  color: var(--accent-2); font-weight: 700; font-size: 13px; font-family: inherit;
  cursor: pointer; vertical-align: baseline; font-variant-numeric: tabular-nums;
}
.codigo-link:hover { background: var(--accent); color: #fff; }
/* Markdown da resposta (ver iaFormatarResposta): título, listas, tabela. */
.ia-resposta p { margin: 0 0 10px; }
.ia-resposta p:last-child { margin-bottom: 0; }
.ia-resposta .ia-tit { margin: 14px 0 8px; font-size: 14.5px; font-weight: 700; }
.ia-resposta .ia-tit:first-child { margin-top: 0; }
.ia-resposta ul, .ia-resposta ol { margin: 0 0 10px; padding-left: 20px; }
.ia-resposta li { margin-bottom: 3px; }
.ia-resposta code {
  padding: 1px 5px; border-radius: var(--r-xs); font-size: 13px;
  background: var(--glass-2); border: 1px solid var(--border);
}
/* Tabela larga rola sozinha em vez de esticar o card da resposta. */
.ia-tabela-wrap { overflow-x: auto; margin: 0 0 10px; }
/* width auto: com 2-3 colunas, 100% espalha os dados pelas pontas da tela e o
   olho perde a ligação entre rótulo e valor. */
.ia-tabela { border-collapse: collapse; width: auto; max-width: 100%; font-size: 13.5px; }
.ia-tabela th, .ia-tabela td {
  padding: 7px 12px; text-align: left; border-bottom: 1px solid var(--border);
  white-space: nowrap; font-variant-numeric: tabular-nums;
}
.ia-tabela th { font-size: 11.5px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.ia-tabela tbody tr:last-child td { border-bottom: 0; }
.ia-tabela tbody tr:hover td { background: var(--glass); }
/* Linha de total: o modelo põe "TOTAL" em negrito, então destaca por :has(). */
.ia-tabela tbody tr:has(strong) td { border-top: 1px solid var(--border); font-weight: 600; }
.ia-loading { display: flex; align-items: center; gap: 10px; color: var(--muted); font-size: 14px; }
.ia-spinner {
  width: 16px; height: 16px; border-radius: 50%; flex: none;
  border: 2px solid var(--border); border-top-color: var(--accent); animation: ia-spin .7s linear infinite;
}
@keyframes ia-spin { to { transform: rotate(360deg); } }
.ia-erro { color: var(--danger); font-size: 14px; }
.ia-aviso { margin: 14px 0 0; font-size: 11.5px; color: var(--muted); opacity: .8; }
/* Barra de uso de IA no mês */
.ia-uso { margin-top: 12px; }
.ia-uso-top { display: flex; justify-content: space-between; align-items: baseline; font-size: 12px; color: var(--muted); margin-bottom: 5px; }
.ia-uso-top b { color: var(--text); font-variant-numeric: tabular-nums; }
.ia-uso-bar { height: 7px; border-radius: var(--r-pill); background: var(--glass-2); overflow: hidden; }
.ia-uso-fill { height: 100%; border-radius: var(--r-pill); background: var(--accent); transition: width .3s; }
.ia-uso-fill.quase { background: #e0a106; }
.ia-uso-fill.cheio { background: var(--danger); }

/* ============ ESTOQUE — filtro por categoria (chips) + form de produto ============ */
.cat-filtro { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 16px; }
.cat-chip {
  padding: 8px 16px; border-radius: var(--r-pill); font-size: 13px; font-weight: 600; cursor: pointer;
  font-family: inherit; border: 1px solid var(--border); background: var(--glass); color: var(--muted);
  transition: color .15s, border-color .15s, background .15s, box-shadow .15s;
}
.cat-chip:hover { color: var(--text); border-color: var(--accent-2); }
.cat-chip.ativo {
  color: #fff; border-color: var(--accent);
  background: linear-gradient(180deg, var(--accent-2), var(--accent));
  box-shadow: 0 0 0 1px var(--accent), 0 6px 18px -4px var(--accent);
}
/* Filtros de status da OS: mesmo formato do chip, mas o ativo usa a cor do
   status (var --st-*, que a personalização sobrescreve) em vez do azul. */
.os-fchip.st-aberta               { --st-color: var(--st-aberta); }
.os-fchip.st-aguardando_analise   { --st-color: var(--st-aguardando_analise); }
.os-fchip.st-aguardando_aprovacao { --st-color: var(--st-aguardando_aprovacao); }
.os-fchip.st-em_reparo            { --st-color: var(--st-em_reparo); }
.os-fchip.st-recusado             { --st-color: var(--st-recusado); }
.os-fchip.st-pronto               { --st-color: var(--st-pronto); }
.os-fchip.st-encerrado            { --st-color: var(--st-encerrado); }
.os-fchip:hover { color: var(--text); border-color: var(--st-color); }
.os-fchip.ativo {
  color: var(--st-color); border-color: var(--st-color);
  background: color-mix(in srgb, var(--st-color) 16%, transparent);
  box-shadow: 0 0 0 1px var(--st-color);
}
/* Filtros de status da Venda (aberta / finalizada) — mesma mecânica da OS. */
.vnd-fchip.vnd-st-aberta     { --st-color: #e0a64a; }
.vnd-fchip.vnd-st-finalizada { --st-color: var(--ok); }
.vnd-fchip:hover { color: var(--text); border-color: var(--st-color); }
.vnd-fchip.ativo {
  color: var(--st-color); border-color: var(--st-color);
  background: color-mix(in srgb, var(--st-color) 16%, transparent);
  box-shadow: 0 0 0 1px var(--st-color);
}
/* dica do campo de adiantamento na nova venda */
.vnd-adiant-hint { margin-top: 4px; }
/* bloco de sinal no detalhe da venda (reusa .osd-adiant) */
.vnd-det-adiant { margin-top: 14px; }
/* 2ª linha: subcategorias como toggles, ramificando da categoria (hierarquia) */
.cat-subfiltro { margin: -2px 0 16px; align-items: center; }
.cat-subfiltro:empty { display: none; }
/* conector "└" alinhado (via JS) sob a categoria pai selecionada */
.cat-sub-branch {
  width: 16px; height: 18px; flex: none; margin: -14px 4px 0 8px;
  border-left: 2px solid var(--accent-2); border-bottom: 2px solid var(--accent-2);
  border-bottom-left-radius: 7px; opacity: .7;
}
.cat-chip-sub { padding: 5px 13px; font-size: 12px; border-radius: var(--r-pill); }
/* ligada (incluída no filtro) = azul suave, com ✓ */
.cat-chip-sub.ativo {
  background: color-mix(in srgb, var(--accent) 18%, transparent);
  border-color: var(--accent); color: var(--accent-2); box-shadow: none;
}
/* desligada (excluída) = apagada e tracejada */
.cat-chip-sub:not(.ativo) { opacity: .5; color: var(--muted); border-style: dashed; }
.pec-cat-tag { color: var(--accent-2); font-weight: 600; }
.pec-consign-tag {
  display: inline-block; margin-left: 8px; padding: 1px 8px; border-radius: var(--r-pill);
  font-size: 11px; font-weight: 700; vertical-align: middle;
  background: color-mix(in srgb, #e0a64a 22%, transparent); color: #e0a64a; border: 1px solid #e0a64a;
}
.pec-consign-cli { font-size: 12.5px; color: var(--muted); margin-top: 2px; }
.pec-cond { font-size: 12.5px; color: var(--muted); margin-top: 2px; }
.pec-cond b { color: var(--text); font-weight: 600; }
.cat-card.consig { border-left: 3px solid #e0a64a; }
.pec-avulso-tag {
  display: inline-block; margin-left: 8px; padding: 1px 8px; border-radius: var(--r-pill);
  font-size: 11px; font-weight: 700; vertical-align: middle;
  background: color-mix(in srgb, var(--accent) 18%, transparent); color: var(--accent-2); border: 1px solid color-mix(in srgb, var(--accent) 55%, transparent);
}
/* status do ciclo da consignação no card */
.consig-status {
  display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap;
  margin-top: 8px; font-size: 12.5px; color: var(--muted);
}
.consig-status.vendido span { color: #e0a64a; font-weight: 600; }
.consig-status.pago { color: var(--ok); font-weight: 600; }
.consig-status.retirado { color: var(--muted); font-weight: 600; font-style: italic; }
.consig-btn { border-color: #e0a64a; color: #e0a64a; }
.consig-btn:hover { background: #e0a64a; color: #1a1205; }
/* tags de consignado na tela de Vendas */
.osd-r-est.vnd-r-consig { color: #c79a4e; font-weight: 600; }
.osd-r-est.vnd-r-instr { color: var(--accent-2); font-weight: 600; }
.vnd-it-instr { font-size: 12px; margin-left: 4px; vertical-align: middle; }
.vnd-dest-tag { font-size: 11px; font-weight: 600; color: #c79a4e; border: 1px solid #c79a4e55; border-radius: var(--r-pill); padding: 1px 8px; vertical-align: middle; }
.vnd-it-novo { font-size: 10px; font-weight: 600; color: var(--accent-2); border: 1px solid rgba(10,132,255,.4); border-radius: var(--r-pill); padding: 0 6px; margin-left: 4px; vertical-align: middle; }
/* botão de filtro Consignados (toggle, cor âmbar) */
/* grupo de filtros do estoque (Todos/Próprios/Consignados) — chips iguais aos de categoria,
   empurrados pra direita, separados do "+ Novo item" */
.pec-filtros { display: flex; gap: 8px; margin-left: auto; flex: none; flex-wrap: wrap; }
/* Consignados: igual aos outros; quando ativo, fonte âmbar (em vez de branco) */
.cat-chip.cat-chip-consig.ativo { color: #e0a64a; }
/* input de busca do consignante no form */
.pec-cli-input {
  width: 100%; padding: 10px 12px; border-radius: var(--r-md); font-family: inherit; font-size: 14px;
  border: 1px solid var(--border); background: var(--glass); color: var(--text);
}
.pec-cli-input:focus { outline: none; border-color: var(--accent); }
#pec-cli-result { margin-top: 6px; }

/* dica/cálculo do form de produto */
.pec-hint { margin: 8px 0 0; font-size: 12px; color: var(--muted); }
.pec-parcelar-box { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--border); }
.pec-check { display: flex; align-items: center; gap: 9px; cursor: pointer; font-size: 14px; }
.pec-check input { width: auto; accent-color: var(--accent); }
#pec-parcela-wrap { margin-top: 12px; }
.pec-parcela-result {
  margin-top: 10px; padding: 12px 14px; border-radius: var(--r-md);
  background: color-mix(in srgb, var(--accent) 12%, transparent); border: 1px solid var(--accent);
  font-size: 15px; color: var(--text);
}
.pec-parcela-result:empty { display: none; }
.pec-parcela-result b { color: var(--accent-2); font-size: 17px; }
.pec-parcela-result small { display: block; margin-top: 3px; font-size: 12.5px; color: var(--muted); }
.pec-parcela-result.aviso {
  background: var(--glass); border-color: var(--border); color: var(--muted); font-size: 13px;
}

/* ============ PLANO E USO (Personalização) ============ */
.plano-nome {
  font-size: 16px; font-weight: 700; color: var(--accent-2); margin: 4px 0 14px;
}
.plano-item { margin-bottom: 14px; }
.plano-item-top { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-size: 13.5px; }
.plano-item-val { font-weight: 600; font-variant-numeric: tabular-nums; color: var(--muted); }
.plano-item-val.cheio { color: var(--danger); }
.plano-bar { margin-top: 6px; height: 7px; border-radius: 999px; background: var(--glass-2); overflow: hidden; }
.plano-bar-fill {
  height: 100%; border-radius: 999px;
  background: linear-gradient(90deg, var(--accent-2), var(--accent)); transition: width .2s;
}
.plano-bar-fill.cheio { background: var(--danger); }
.plano-nota { margin-top: 6px; }

/* ============ CANAL (Superadmin › Fase 5B anti-abuso) ============ */
.canal-lista { display: flex; flex-direction: column; gap: 10px; }
.canal-item {
  padding: 12px 14px; border-radius: var(--r-lg);
  background: var(--glass); border: 1px solid var(--border);
}
.canal-item.bloqueada { border-color: var(--danger); }
.canal-item-top { display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: 14px; }
.canal-badge {
  font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: var(--r-pill);
  background: var(--glass-2); color: var(--muted); border: 1px solid var(--border);
}
.canal-badge.bloqueada { color: #fff; background: var(--danger); border-color: var(--danger); }
.canal-metricas {
  display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 8px;
  font-size: 12.5px; color: var(--muted); font-variant-numeric: tabular-nums;
}
.canal-motivo { margin: 8px 0 0; font-size: 12.5px; color: var(--danger); }
.canal-acoes { margin-top: 10px; }
.btn-ghost.btn-perigo:hover { color: var(--danger); border-color: var(--danger); }

/* ============ BACKSTAGE (Superadmin › Fase 5C) ============
   Mesmo desenho do Canal — é a mesma natureza de painel (uma linha por oficina,
   cross-tenant, só leitura). A 2ª faixa de métricas (adoção) fica mais apagada
   para o olho ir primeiro em licença/cota, que é o que exige ação. */
.bks-total {
  margin-bottom: 12px; padding: 10px 14px; border-radius: var(--r-lg);
  background: var(--glass-2); border: 1px solid var(--border);
  font-size: 13px; color: var(--muted); font-variant-numeric: tabular-nums;
}
.bks-total b { color: var(--text); }
.bks-lista { display: flex; flex-direction: column; gap: 10px; }
.bks-item {
  padding: 12px 14px; border-radius: var(--r-lg);
  background: var(--glass); border: 1px solid var(--border);
}
.bks-item.alerta { border-color: var(--danger); }
.bks-item-top { display: flex; justify-content: space-between; align-items: center; gap: 10px; font-size: 14px; }
.bks-plano {
  font-size: 11.5px; font-weight: 600; padding: 2px 9px; border-radius: var(--r-pill);
  background: var(--glass-2); color: var(--muted); border: 1px solid var(--border); white-space: nowrap;
}
.bks-metricas {
  display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 8px;
  font-size: 12.5px; color: var(--muted); font-variant-numeric: tabular-nums;
}
.bks-adocao { font-size: 12px; opacity: .75; }
.bks-cheio { color: var(--danger); font-weight: 600; }
.bks-nota { margin: 8px 0 0; font-size: 12.5px; color: var(--danger); }

/* ============ ERROS (Superadmin › plano-crescimento A7) ============ */
.erros-lista { display: flex; flex-direction: column; gap: 10px; }
.erro-item {
  padding: 12px 14px; border-radius: var(--r-lg);
  background: var(--glass); border: 1px solid var(--border);
}
.erro-item-top { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-size: 14px; }
.erro-quando { font-size: 11.5px; color: var(--muted); white-space: nowrap; font-variant-numeric: tabular-nums; }
.erro-msg { margin: 6px 0 0; font-size: 13px; color: var(--text); word-break: break-word; }
.erro-meta {
  display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 8px;
  font-size: 11.5px; color: var(--muted); font-family: ui-monospace, monospace;
}

/* ============ PAINEL (dashboard) ============ */
/* Grid de colunas EXPLÍCITAS (1 / 2 / 4 por faixa de largura) em vez de
   auto-fit: o painel precisa caber na tela sem rolagem, e para isso é preciso
   saber quantas colunas existem — com auto-fit o número variava com a largura
   e não dava para dizer "metade da linha". */
/* minmax(0, 1fr) e NÃO 1fr: "1fr" equivale a minmax(auto, 1fr), e o mínimo
   "auto" deixa o conteúdo esticar a própria coluna — os cards de texto largo
   (Top 5, Reparo × Construção) roubavam largura e espremiam o faturamento
   (medido: 98px 98px 225px 320px em vez de 4 colunas iguais). */
.dash-board { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; align-items: stretch; }
@media (min-width: 700px)  { .dash-board { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1180px) { .dash-board { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.dash-full { grid-column: 1 / -1; }
/* Meia linha na tela larga (2 de 4 colunas); linha inteira quando há menos
   colunas, senão o card ficaria espremido. */
.dash-half { grid-column: 1 / -1; }
@media (min-width: 1180px) { .dash-half { grid-column: span 2; } }

/* 150px (não 170) para os 6 KPIs caberem numa linha só — em 170 o sexto
   quebrava para uma segunda linha e custava ~100px de altura do painel. */
.dash-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.dash-kpi {
  padding: 11px 14px; border-radius: var(--r-lg);
  background: var(--card-grad); border: 1px solid var(--border);
  box-shadow: var(--shadow), inset 0 1px 0 var(--rim);
}
.dash-kpi.neg { border-color: color-mix(in srgb, var(--danger) 45%, var(--border)); }
/* Luz de cor por KPI (suave): borda esquerda + brilho discreto na cor. */
.dash-kpi[class*="dash-kpi-cor-"] {
  border-left: 3px solid var(--kpi-c);
  box-shadow: var(--shadow), inset 0 1px 0 var(--rim), 0 6px 22px -12px var(--kpi-c);
}
.dash-kpi-cor-verde    { --kpi-c: var(--ok); }
.dash-kpi-cor-vermelho { --kpi-c: var(--danger); }
.dash-kpi-cor-amarelo  { --kpi-c: #f5b50a; }
.dash-kpi-cor-azul     { --kpi-c: var(--accent); }
.dash-kpi-cor-laranja  { --kpi-c: #ff8c2b; }
.dash-kpi-lbl { font-size: 12.5px; color: var(--muted); }
.dash-kpi-val { margin-top: 6px; font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.dash-kpi-delta { font-size: 12px; font-weight: 600; }
.dash-kpi-delta.pos { color: var(--ok); }
.dash-kpi-delta.neg { color: var(--danger); }

/* Espaçamentos enxutos de propósito: o painel inteiro precisa caber na tela
   sem rolagem, e com 9 cards cada folga se multiplica por 4 linhas. */
.dash-card {
  padding: 13px 15px; border-radius: var(--r-lg);
  background: var(--card-grad); border: 1px solid var(--border);
  box-shadow: var(--shadow), inset 0 1px 0 var(--rim);
  display: flex; flex-direction: column;        /* cabeçalho em cima, conteúdo preenche */
}
.dash-card-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; flex-wrap: wrap; }
.dash-card-head h3 { margin: 0; font-size: 15px; }
.dash-views { display: flex; gap: 6px; }
.dash-views .cat-chip { padding: 5px 12px; font-size: 12px; }

.dash-chart { width: 100%; }
.dash-svg { width: 100%; height: auto; display: block; }
.dash-bar { fill: var(--accent); transition: fill .15s; }
.dash-bar:hover { fill: var(--accent-2); }
.dash-bar-x { fill: var(--muted); font-size: 11px; }
.dash-bar-v { fill: var(--text); font-size: 10px; font-weight: 600; }
.dash-bar-grid { stroke: var(--border); stroke-dasharray: 3 4; }
.dash-bar-max { fill: var(--muted); font-size: 10px; }
.dash-bar-avg { stroke: var(--text); stroke-opacity: .45; stroke-dasharray: 5 4; }
.dash-bar-avg-t { fill: var(--muted); font-size: 10px; }
.dash-fat-periodo { font-size: 11px; color: var(--muted); margin-bottom: 4px; text-transform: uppercase; letter-spacing: .04em; }
.dash-vazio { padding: 40px 10px; text-align: center; color: var(--muted); font-size: 13px; }

/* Faturamento: gráfico (~70%) à esquerda + receita/custos/lucro empilhados à direita */
.dash-fat-row { display: flex; gap: 16px; align-items: stretch; }
.dash-fat-row .dash-chart { flex: 1 1 0; min-width: 0; }
.dash-fat-stats { flex: 0 0 30%; min-width: 165px; display: flex; flex-direction: column; gap: 10px; }
.dash-fat-stats .dash-mini { flex: 1; }
.dash-mini {
  padding: 8px 11px; border-radius: var(--r-md); background: var(--glass); border: 1px solid var(--border);
  display: flex; flex-direction: column; justify-content: center;
}
.dash-mini-lbl { font-size: 11.5px; color: var(--muted); }
.dash-mini-val { margin-top: 2px; font-size: 16.5px; font-weight: 700; font-variant-numeric: tabular-nums; }
.dash-mini.pos .dash-mini-val { color: var(--ok); }
.dash-mini.neg .dash-mini-val { color: var(--danger); }
@media (max-width: 640px) {
  .dash-fat-row { flex-direction: column; }
  .dash-fat-stats { flex-basis: auto; }
}
/* Faturamento em MEIA linha: não cabe gráfico ao lado dos totais — sobrariam
   ~200px para a barra e ela ficava achatada. Os totais viram uma faixa
   horizontal abaixo, devolvendo a largura inteira do card ao gráfico. */
@media (min-width: 1180px) {
  .dash-half .dash-fat-row { flex-direction: column; gap: 12px; }
  .dash-half .dash-fat-stats { flex: none; min-width: 0; flex-direction: row; flex-wrap: wrap; gap: 10px; }
  /* min-width é o que impede o valor de vazar da caixa: sem ele os três minis
     se espremiam abaixo da largura do texto e "R$ 4.440,00" invadia o vizinho.
     Com ele, quando não cabem em uma linha eles QUEBRAM para a de baixo. */
  .dash-half .dash-fat-stats .dash-mini { flex: 1 1 120px; min-width: 120px; }
}

.dash-osstatus { display: flex; flex-direction: column; gap: 8px; }
/* O rótulo leva mais espaço que a barra (era 1fr/2fr, o inverso): a barra é
   decorativa e o nome é o dado — em coluna estreita "teste b..." virava "1...". */
.dash-osrow { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(26px, 1fr) auto; align-items: center; gap: 8px; font-size: 13px; }
/* Card estreito (1/4 de linha em telas ~1366): nem assim cabe nome + barra +
   valor, e o que sobrava para o nome eram ~43px ("1...", "D..."). A barra sai
   e o nome fica com o espaço dela. Container query mede o CARD, não a janela —
   é a largura do card que decide, e ela depende do grid, não do viewport. */
.dash-card { container-type: inline-size; }
/* 180px é a largura de CONTEÚDO do card (a container query desconta padding e
   borda): ~153px no card de 1/4 a 1366px (esconde) e ~212px a 1600px (mostra). */
@container (max-width: 180px) {
  .dash-osrow { grid-template-columns: minmax(0, 1fr) auto; }
  .dash-osrow-bar { display: none; }
}
.dash-osrow-lbl { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dash-osrow-bar { height: 10px; border-radius: 999px; background: var(--glass-2); overflow: hidden; }
.dash-osrow-fill { display: block; height: 100%; border-radius: 999px; min-width: 2px; transition: width .2s; }
.dash-osrow-n { font-weight: 700; font-variant-numeric: tabular-nums; min-width: 22px; text-align: right; }
.dash-osrow-money { font-size: 12.5px; min-width: 64px; }
.dash-top-rank { color: var(--muted); font-variant-numeric: tabular-nums; margin-right: 3px; }
.dash-osrow-fill.pior { box-shadow: 0 0 0 1px var(--danger), 0 0 8px -1px var(--danger); }

/* fase 2: recortes */
.dash-sub { font-size: 11.5px; color: var(--muted); }
.dash-gargalo-nota { margin: 12px 0 0; }
.dash-gargalo-nota b { color: var(--text); }

/* pizza/rosca de categorias */
.dash-pie-wrap { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
/* 112px: num quarto de linha a legenda não cabe ao lado e quebra para baixo,
   então o diâmetro do donut entra inteiro na altura da linha. */
.dash-donut { width: 112px; height: 112px; flex: none; transform: rotate(-90deg); }
.dash-leg { display: flex; flex-direction: column; gap: 7px; flex: 1; min-width: 150px; }
.dash-leg-item { display: flex; align-items: center; gap: 8px; font-size: 12.5px; }
.dash-leg-dot { width: 11px; height: 11px; border-radius: 3px; flex: none; }
.dash-leg-nome { color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dash-leg-val { margin-left: auto; color: var(--muted); white-space: nowrap; font-variant-numeric: tabular-nums; }

/* reparo × construção */
/* minmax(0,…) + min-width:0: sem isso os dois blocos não encolhiam abaixo do
   próprio texto ("R$ 5.500,00") e vazavam do card, criando rolagem horizontal
   na página inteira depois que as colunas do painel viraram todas iguais. */
.dash-tipos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.dash-tipo { padding: 12px 14px; border-radius: var(--r-md); background: var(--glass); border: 1px solid var(--border); min-width: 0; }
.dash-tipo-rec, .dash-tipo .dash-sub { overflow-wrap: anywhere; }
/* Card estreito: lado a lado os dois blocos ficam ilegíveis — empilha. */
@container (max-width: 235px) { .dash-tipos { grid-template-columns: minmax(0, 1fr); } }
.dash-tipo-top { display: flex; align-items: center; gap: 7px; font-size: 13.5px; }
.dash-tipo-n { margin-left: auto; font-weight: 700; font-variant-numeric: tabular-nums; }
.dash-tipo-rec { margin: 6px 0 2px; font-size: 19px; font-weight: 700; color: var(--accent-2); }

/* fase 3: análise por IA (accordion recolhível) */
.dash-ia-btn { padding: 7px 14px; font-size: 13px; }
.dash-ia-head { margin-bottom: 0; cursor: pointer; }
.dash-ia-head h3 { display: flex; align-items: center; gap: 7px; }
.dash-ia-ch { color: var(--muted); font-size: 12px; transition: transform .15s; display: inline-block; }
.dash-ia.aberto .dash-ia-ch { transform: rotate(90deg); }
.dash-ia-body { font-size: 13.5px; line-height: 1.5; margin-top: 14px; }
.dash-ia:not(.aberto) .dash-ia-body,
.dash-ia:not(.aberto) .dash-ia-ask,
.dash-ia:not(.aberto) .dash-ia-resposta { display: none; }
/* Pergunta livre sobre o negócio (consultor) */
.dash-ia-ask { display: flex; gap: 8px; margin-top: 14px; }
.dash-ia-ask input { flex: 1; }
.dash-ia-ask .btn-acao { flex: none; }
.dash-ia-resposta:not(:empty) { margin-top: 12px; }
.dash-ia-load { padding: 14px 2px; color: var(--muted); }
.dash-ia-sec { margin-top: 12px; }
.dash-ia-sec:first-child { margin-top: 0; }
.dash-ia-sec-tit { font-weight: 700; color: var(--accent-2); margin-bottom: 4px; }
.dash-ia-sec p { margin: 0; color: var(--text); }
.dash-ia-sec ul { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 4px; }
.dash-ia-sec li { color: var(--text); }
.dash-ia-quando { margin-top: 14px; }

/* ============================================================
   INSTRUMENTOS PRÓPRIOS — cards + dossiê HUD (sci-fi/FUI premium)
   ============================================================ */
.inst-card { cursor: pointer; }
.inst-badge { font-variant-numeric: tabular-nums; letter-spacing: .03em; }
.inst-loja b { color: var(--muted); }
.inst-built { font-size: 12px; font-weight: 600; color: var(--ok); }

/* Modal dossiê: dark sci-fi sempre (independe do tema), com molduras e neon. */
.modal-hud {
  --hud-acc: #22d3ee;
  --hud-mono: ui-monospace, 'SF Mono', 'Cascadia Code', 'Segoe UI Mono', Consolas, monospace;
  position: relative; width: 100%; max-width: 1000px; max-height: 92vh; overflow: hidden;
  display: flex; flex-direction: column; border-radius: 14px;
  background:
    radial-gradient(1100px 320px at 50% -12%, rgba(34,211,238,.12), transparent 62%),
    linear-gradient(180deg, #0b1118 0%, #070b11 100%);
  border: 1px solid rgba(34,211,238,.34);
  box-shadow: 0 40px 90px -24px rgba(0,0,0,.75), inset 0 0 70px rgba(34,211,238,.05);
  backdrop-filter: none; -webkit-backdrop-filter: none;
}
.hud-corner { position: absolute; width: 20px; height: 20px; border: 2px solid var(--hud-acc); pointer-events: none; z-index: 3; opacity: .9; }
/* Escopados em .hud-corner: senão a cor de seção .hud-bl (azul) colidia com o canto
   inferior-esquerdo e deslocava o painel (left/bottom 9px = 9px p/ direita e p/ cima). */
.hud-corner.hud-tl { top: 9px; left: 9px; border-right: 0; border-bottom: 0; }
.hud-corner.hud-tr { top: 9px; right: 9px; border-left: 0; border-bottom: 0; }
.hud-corner.hud-bl { bottom: 9px; left: 9px; border-right: 0; border-top: 0; }
.hud-corner.hud-br { bottom: 9px; right: 9px; border-left: 0; border-top: 0; }
.hud-x {
  position: absolute; top: 16px; right: 18px; z-index: 6; width: 32px; height: 32px; border-radius: 8px;
  background: rgba(34,211,238,.12); border: 1px solid rgba(34,211,238,.45); color: #cffafe; cursor: pointer;
  transition: background .15s, box-shadow .15s;
}
.hud-x:hover { background: rgba(34,211,238,.24); box-shadow: 0 0 14px rgba(34,211,238,.4); }

.instd { padding: 32px 30px 28px; overflow-y: auto; scrollbar-gutter: stable; }
.instd-hero { display: flex; justify-content: space-between; align-items: flex-start; gap: 22px; flex-wrap: wrap;
  padding-bottom: 20px; margin-bottom: 22px; border-bottom: 1px solid rgba(34,211,238,.18); }
.instd-eyebrow { font-family: var(--hud-mono); font-size: 12px; letter-spacing: .14em; color: var(--hud-acc); text-transform: uppercase; }
/* Lápis de edição no dossiê (linha do código) */
.instd-edit-btn { background: transparent; border: 1px solid rgba(148,163,184,.3); color: #94a3b8;
  border-radius: 6px; font-size: 12px; line-height: 1; padding: 2px 6px; margin-left: 8px; cursor: pointer;
  vertical-align: middle; transition: color .15s, border-color .15s, background .15s; }
.instd-edit-btn:hover { color: var(--hud-acc); border-color: var(--hud-acc); background: rgba(34,211,238,.12); }
/* Nota de senha no form de instrumento (build vendido) */
.inst-senha-nota { display: flex; align-items: center; gap: 7px; margin: 4px 0 8px; padding: 9px 12px;
  border-radius: var(--r-md); border: 1px dashed color-mix(in srgb, #ff8c2b 45%, var(--border));
  background: color-mix(in srgb, #ff8c2b 8%, transparent); color: var(--text); font-size: 13px; }
.instd-nome { margin: 9px 0 5px; font-size: clamp(22px, 4vw, 32px); font-weight: 800; color: #f1f5f9; letter-spacing: -.5px; line-height: 1.05; }
.instd-sub { font-size: 14px; color: #94a3b8; }
.instd-hero-r { display: flex; flex-direction: column; align-items: flex-end; gap: 12px; margin-right: 40px; }
.hud-status { font-family: var(--hud-mono); font-size: 12px; letter-spacing: .08em; padding: 5px 13px; border-radius: 999px;
  border: 1px solid #475569; color: #94a3b8; white-space: nowrap; }
.hud-status.ok { border-color: #34d399; color: #34d399; box-shadow: 0 0 14px rgba(52,211,153,.25); }
.instd-serial { text-align: right; font-family: var(--hud-mono); }
.instd-serial span { display: block; font-size: 10px; letter-spacing: .16em; color: #64748b; text-transform: uppercase; }
.instd-serial b { font-size: 19px; color: var(--hud-acc); letter-spacing: .05em; text-shadow: 0 0 12px rgba(34,211,238,.5); }

/* Topo em destaque: 3 blocos sempre visíveis (Identidade · Proprietário · OS). */
.instd-top { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px 24px; margin-bottom: 24px; align-items: stretch; }
.instd-block { --hud-c: #22d3ee; min-width: 0; border-left: 2px solid var(--hud-c); padding: 2px 0 2px 16px; }
.instd-block-tit { font-family: var(--hud-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--hud-c); margin-bottom: 9px; }

/* Ficha técnica → master-detail: lateral de seções + painel central. */
.instd-secoes-tit { font-family: var(--hud-mono); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: #64748b;
  padding-top: 18px; margin-bottom: 14px; border-top: 1px solid rgba(34,211,238,.16); }
/* Flexbox rígido: lateral fixa em 210px, painel ocupa o resto e pode encolher (min-width:0).
   Assim o conteúdo NUNCA empurra/desloca a caixa central. */
.instd-main { display: flex; align-items: stretch; gap: 18px; }
.instd-nav { flex: 0 0 210px; width: 210px; display: flex; flex-direction: column; gap: 8px; }
.instd-navbtn {
  --hud-c: #22d3ee; width: 100%; text-align: left; cursor: pointer; padding: 11px 14px; border-radius: 9px;
  background: rgba(148,163,184,.05); border: 1px solid rgba(148,163,184,.14); border-left: 2px solid transparent;
  color: #94a3b8; font-family: var(--hud-mono); font-size: 12px; letter-spacing: .06em; text-transform: uppercase;
  transition: color .15s, border-color .15s, background .15s, box-shadow .15s;
}
.instd-navbtn:hover { color: #e2e8f0; border-color: rgba(148,163,184,.32); }
.instd-navbtn.ativo {
  color: var(--hud-c); border-left-color: var(--hud-c);
  background: linear-gradient(90deg, color-mix(in srgb, var(--hud-c) 16%, transparent), transparent);
  box-shadow: inset 2px 0 14px -7px var(--hud-c);
}
.instd-panel {
  /* Sem altura fixa: o align-items:stretch do .instd-main faz o painel acompanhar a
     altura da lista de botões (nav é constante) → rodapé do box alinha com o último botão. */
  --hud-c: #22d3ee; position: relative; flex: 1 1 0; min-width: 0; min-height: 0; padding: 18px 20px; border-radius: 11px;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(148,163,184,.06), rgba(148,163,184,.015));
  border: 1px solid rgba(148,163,184,.16); border-top: 2px solid var(--hud-c);
  box-shadow: 0 14px 30px -20px var(--hud-c);
}
.instd-panel-tit { font-family: var(--hud-mono); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--hud-c);
  margin-bottom: 12px; padding-bottom: 10px; border-bottom: 1px solid rgba(148,163,184,.14); }
.instd-panel-rows { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 32px; }

.hud-row { display: flex; justify-content: space-between; gap: 14px; padding: 6px 0; border-bottom: 1px dashed rgba(148,163,184,.12); font-size: 13px; }
.hud-row:last-child { border-bottom: 0; }
.hud-k { color: #94a3b8; white-space: nowrap; }
.hud-v { color: #e2e8f0; font-weight: 600; text-align: right; min-width: 0; overflow-wrap: anywhere; }
.hud-obs { grid-column: 1 / -1; margin: 0; color: #cbd5e1; font-size: 13px; line-height: 1.6; white-space: pre-wrap; }
/* Lucro na aba Custo do dossiê: verde (positivo) / vermelho (negativo) */
.instd-lucro { color: #34d399; font-weight: 700; }
.instd-lucro.neg { color: #f87171; }
.hud-cy { --hud-c: #22d3ee; } .hud-gn { --hud-c: #34d399; } .hud-bl { --hud-c: #38bdf8; }
.hud-am { --hud-c: #f59e0b; } .hud-mg { --hud-c: #e879f9; } .hud-rd { --hud-c: #fb7185; }
.hud-pp { --hud-c: #a78bfa; } .hud-nt { --hud-c: #64748b; }
@media (max-width: 720px) {
  .instd { padding: 24px 16px 20px; }
  .instd-hero-r { margin-right: 0; }
  .instd-top { grid-template-columns: 1fr; gap: 14px; }
  .instd-main { flex-direction: column; }
  .instd-nav { flex: none; width: auto; flex-direction: row; flex-wrap: wrap; }
  .instd-navbtn { width: auto; }
  .instd-panel { height: auto; min-height: 0; overflow: visible; }
}

/* ============================================================
   AJUDA — central de passo a passo (docs)
   ============================================================ */
.ajuda-grid { display: grid; grid-template-columns: 264px 1fr; gap: 18px; align-items: start; }
.ajuda-lista { display: flex; flex-direction: column; gap: 3px; padding: 10px;
  background: var(--glass); border: 1px solid var(--border); border-radius: var(--r-md); position: sticky; top: 12px; }
.ajuda-sec { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); padding: 12px 10px 6px; }
.ajuda-sec:first-child { padding-top: 4px; }
.ajuda-topico { text-align: left; padding: 9px 12px; border: 0; border-radius: var(--r-sm);
  background: none; color: var(--text); font-size: 13.5px; font-family: inherit; cursor: pointer;
  transition: background .15s, color .15s; }
.ajuda-topico:hover { background: var(--glass-2); }
.ajuda-topico.ativo { background: color-mix(in srgb, var(--accent) 16%, transparent); color: var(--accent-2); font-weight: 600; }
.ajuda-vazio { color: var(--muted); font-size: 13px; padding: 12px 10px; }

.ajuda-conteudo { min-width: 0; }
.ajuda-art { background: var(--glass); border: 1px solid var(--border); border-radius: var(--r-md); padding: 26px 28px; }
.ajuda-art-tit { margin: 0 0 10px; font-size: 23px; font-weight: 700; letter-spacing: -.3px; }
.ajuda-art-intro { margin: 0 0 22px; color: var(--muted); font-size: 14px; line-height: 1.6; max-width: 70ch; }
.ajuda-passos { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; counter-reset: passo; max-width: 76ch; }
.ajuda-passos li { position: relative; padding-left: 44px; padding-top: 3px; line-height: 1.55; font-size: 14.5px; counter-increment: passo; }
.ajuda-passos li::before { counter-increment: none; content: counter(passo); position: absolute; left: 0; top: 0;
  width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700; color: #fff; background: linear-gradient(180deg, var(--accent-2), var(--accent));
  box-shadow: 0 4px 12px -4px var(--accent); }
.ajuda-passos strong, .ajuda-dica strong {
  font-weight: 600; color: var(--text); background: var(--glass-2);
  padding: 1px 7px; border-radius: 6px; border: 1px solid var(--border); white-space: nowrap; }
.ajuda-dica { margin-top: 24px; padding: 13px 16px; border-radius: var(--r-sm); font-size: 13.5px; line-height: 1.55; max-width: 76ch;
  background: color-mix(in srgb, var(--accent) 8%, transparent); border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--border)); }
.ajuda-dica > span { font-weight: 700; color: var(--accent-2); }
@media (max-width: 760px) {
  .ajuda-grid { grid-template-columns: 1fr; }
  .ajuda-lista { position: static; flex-direction: row; flex-wrap: wrap; }
  .ajuda-sec { width: 100%; }
  .ajuda-art { padding: 20px 18px; }
}

/* Botão Reabrir (OS/venda) — ação cautelar (âmbar), distinta do excluir (vermelho). */
.btn-reabrir {
  display: inline-flex; align-items: center; gap: 6px; padding: 9px 14px; border-radius: var(--r-md);
  border: 1px solid color-mix(in srgb, #ff8c2b 48%, var(--border));
  background: color-mix(in srgb, #ff8c2b 10%, transparent);
  color: #ff9f0a; font-size: 13.5px; font-weight: 600; font-family: inherit; cursor: pointer;
  transition: background .15s, border-color .15s;
}
.btn-reabrir:hover { background: color-mix(in srgb, #ff8c2b 18%, transparent); border-color: #ff8c2b; }
