/* ════════════════════════════════════════════════════════════════════
   CRM Vallevi · shell compartilhado
   Tokens, navegação, cabeçalho e componentes comuns a todas as telas.
   Cada tela adiciona só o que é dela.
   ════════════════════════════════════════════════════════════════════ */

:root{
  /* paleta registrada Vallevi — únicos literais de cor do sistema */
  --health:#005c58;
  --hope:#5da99b;
  --heat:#f2724d;
  --light:#ffe28c;
  --canvas:#f6f7f6;
  --sunken:#ecf1f0;
  --border:#d4e1e0;
  --balance:#eaeaea;

  --surface:#f6f7f6;                                        /* fallback */
  --surface:oklch(from var(--canvas) calc(l + 0.032) c h);  /* card, quase branco */

  --fg:  var(--health);
  --fg2: color-mix(in oklch, var(--health) 62%, var(--canvas));
  --fg3: color-mix(in oklch, var(--health) 40%, var(--canvas));
  --hairline: color-mix(in oklch, var(--border) 70%, var(--canvas));
  --rail-fg:  color-mix(in oklch, var(--canvas) 82%, var(--health));

  --font-display:'Fraunces', system-ui, -apple-system, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
  --font-body:'Outfit', system-ui, -apple-system, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
  --font-mono:ui-monospace,'JetBrains Mono','SF Mono',Menlo,monospace;

  --r:8px; --r-sm:6px; --r-pill:999px;
  --rail-w:76px;
  --sh-1:0 1px 2px color-mix(in oklch, var(--health) 8%, transparent);
  --sh-2:0 4px 14px color-mix(in oklch, var(--health) 12%, transparent);
  --sh-3:0 18px 48px color-mix(in oklch, var(--health) 22%, transparent);
}

*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--canvas);color:var(--fg);
  font-family:var(--font-body);font-size:14px;line-height:1.5;
  -webkit-font-smoothing:antialiased;overflow:hidden;
}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0}
svg{display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;margin:0;letter-spacing:-0.02em}
.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-0.02em}
.hidden{display:none !important}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:color-mix(in oklch,var(--health) 18%,transparent);border-radius:var(--r-pill)}
::-webkit-scrollbar-thumb:hover{background:color-mix(in oklch,var(--health) 32%,transparent)}
::-webkit-scrollbar-track{background:transparent}

/* ── shell ─────────────────────────────────────────────────────────── */
.app{display:grid;grid-template-columns:var(--rail-w) 1fr;height:100vh}
.main{display:flex;flex-direction:column;min-width:0;min-height:0}

.rail{background:var(--health);color:var(--rail-fg);display:flex;flex-direction:column;align-items:center;padding:18px 0 12px;gap:4px}
/* símbolo: 56px de largura ≈ 27px de altura, acima do mínimo de 24px da marca */
.rail .mark{width:56px;height:auto;margin-bottom:22px}
.rail a{
  width:56px;padding:9px 0 7px;border-radius:var(--r);
  display:grid;place-items:center;gap:5px;color:inherit;
  font-size:10px;position:relative;transition:background .14s,color .14s;
}
.rail a svg{width:19px;height:19px}
.rail a:hover{background:color-mix(in oklch,var(--hope) 20%,transparent);color:var(--canvas)}
.rail a.on{background:color-mix(in oklch,var(--hope) 30%,transparent);color:var(--canvas)}
.rail a.on::before{content:'';position:absolute;left:-10px;top:12px;bottom:12px;width:3px;border-radius:0 3px 3px 0;background:var(--hope)}
.rail .badge{
  position:absolute;top:4px;right:6px;min-width:17px;height:17px;padding:0 4px;border-radius:var(--r-pill);
  display:grid;place-items:center;font-family:var(--font-mono);font-size:10px;font-weight:700;line-height:1;
}
.rail .badge.b-us{background:var(--hope);color:var(--health)}
.rail .badge.b-late{background:var(--heat);color:var(--canvas)}
.rail .sp{flex:1}
.rail .me{
  width:34px;height:34px;border-radius:var(--r-pill);display:grid;place-items:center;
  background:var(--hope);color:var(--health);font-weight:600;font-size:12px;
}

/* ── topbar ────────────────────────────────────────────────────────── */
.topbar{display:flex;align-items:center;gap:10px;padding:11px 20px;background:var(--surface);border-bottom:1px solid var(--border)}
.ctx{display:flex;align-items:center;gap:8px}
.pickr{
  display:flex;align-items:center;gap:7px;padding:6px 10px;border-radius:var(--r);
  border:1px solid var(--border);background:var(--canvas);font-size:13px;font-weight:500;transition:border-color .14s;
}
.pickr:hover{border-color:var(--hope)}
.pickr .lbl{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg3);font-family:var(--font-mono)}
.pickr .cv{width:11px;height:11px;opacity:.5}
.sep{width:1px;height:22px;background:var(--border)}
.search{flex:1;max-width:400px;position:relative}
.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--fg3)}
.search input{width:100%;padding:8px 12px 8px 33px;border-radius:var(--r);border:1px solid var(--border);background:var(--canvas);font-size:13px}
.search input::placeholder{color:var(--fg3)}
.search input:focus{outline:none;border-color:var(--hope);background:var(--surface)}
.tb-right{margin-left:auto;display:flex;align-items:center;gap:8px}
.iconbtn{width:34px;height:34px;border-radius:var(--r);display:grid;place-items:center;border:1px solid transparent;color:var(--fg2);position:relative;transition:background .14s,color .14s}
.iconbtn:hover{background:var(--sunken);color:var(--fg)}
.iconbtn svg{width:17px;height:17px}
.iconbtn .dot{position:absolute;top:6px;right:6px;width:7px;height:7px;border-radius:50%;background:var(--heat);border:2px solid var(--surface)}
.roleswap{display:flex;padding:2px;background:var(--sunken);border-radius:var(--r);border:1px dashed color-mix(in oklch,var(--hope) 55%,transparent)}
.roleswap button{padding:5px 10px;border-radius:var(--r-sm);font-size:11.5px;font-weight:500;color:var(--fg2)}
.roleswap button.on{background:var(--surface);color:var(--fg);box-shadow:var(--sh-1)}
.demoflag{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg3);padding-right:4px}

/* ── central de notificações ───────────────────────────────────────── */
.bellwrap{position:relative}
.notifpanel{
  position:absolute;top:calc(100% + 9px);right:0;z-index:90;width:376px;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh-3);
  opacity:0;visibility:hidden;transform:translateY(-5px);transition:.16s;overflow:hidden;
}
.notifpanel.on{opacity:1;visibility:visible;transform:none}
.notifpanel > header{display:flex;align-items:center;gap:9px;padding:12px 14px 11px;border-bottom:1px solid var(--border)}
.notifpanel h4{font-size:15px}
.npill{font-family:var(--font-mono);font-size:9.5px;font-weight:700;padding:1px 7px;border-radius:var(--r-pill);background:var(--hope);color:var(--health)}
.nread{margin-left:auto;font-size:11.5px;color:var(--fg3);text-decoration:underline;text-underline-offset:3px}
.nread:hover{color:var(--fg)}
.nlist{max-height:420px;overflow-y:auto}
.ngrp{
  font-family:var(--font-mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--fg3);
  padding:11px 14px 5px;background:var(--canvas);border-bottom:1px solid var(--hairline);
}
.nitem{display:flex;gap:10px;padding:10px 14px;border-bottom:1px solid var(--hairline);transition:background .12s;position:relative}
.nitem:hover{background:var(--canvas)}
.nitem.unread{background:color-mix(in oklch,var(--hope) 8%,var(--surface))}
.nitem.unread::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2.5px;background:var(--hope)}
.nic{width:26px;height:26px;border-radius:var(--r-pill);display:grid;place-items:center;flex:none;background:var(--sunken);color:var(--fg2)}
.nic svg{width:13px;height:13px}
.nic.urg{background:color-mix(in oklch,var(--heat) 14%,var(--canvas));color:var(--heat)}
.ntx{flex:1;min-width:0;display:block}
.nti{display:block;font-size:12.5px;font-weight:600;line-height:1.35}
.nitem.unread .nti{font-weight:700}
.nbd{display:block;font-size:11.5px;color:var(--fg3);line-height:1.45;margin-top:2px}
.ntm{font-family:var(--font-mono);font-size:9px;color:var(--fg3);flex:none;padding-top:2px}
.notifpanel > footer{padding:9px 14px;background:var(--canvas);border-top:1px solid var(--border);font-size:11px;color:var(--fg3)}

/* ── barra de filtros ──────────────────────────────────────────────── */
.filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 20px;border-bottom:1px solid var(--border);background:var(--canvas)}
.chipf{
  display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:var(--r-pill);
  border:1px solid var(--border);background:var(--surface);font-size:12.5px;color:var(--fg2);transition:border-color .14s,color .14s;
}
.chipf:hover{border-color:var(--hope);color:var(--fg)}
.chipf.on{border-color:var(--health);color:var(--fg);background:color-mix(in oklch,var(--hope) 16%,var(--surface));font-weight:500}
.chipf .cv{width:10px;height:10px;opacity:.45}
.chipf .sw{width:8px;height:8px;border-radius:50%}
/* filtro em lista — usado quando as opções passam de meia dúzia (origens) */
.selectf{
  padding:5px 26px 5px 11px;border-radius:var(--r-pill);border:1px solid var(--border);
  background:var(--surface);font-size:12.5px;color:var(--fg2);cursor:pointer;
  appearance:none;-webkit-appearance:none;transition:border-color .14s,color .14s;
  background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);
  background-position:calc(100% - 14px) 12px, calc(100% - 10px) 12px;
  background-size:4px 4px, 4px 4px;background-repeat:no-repeat;
}
.selectf:hover{border-color:var(--hope);color:var(--fg)}
.selectf:focus{outline:none;border-color:var(--hope)}
.selectf.on{border-color:var(--health);color:var(--fg);background-color:color-mix(in oklch,var(--hope) 16%,var(--surface));font-weight:500}
.fspacer{flex:1}
.density{display:flex;gap:2px;padding:2px;background:var(--sunken);border-radius:var(--r);border:1px solid var(--border)}
.density button{padding:4px 9px;border-radius:var(--r-sm);font-size:11.5px;color:var(--fg2)}
.density button.on{background:var(--surface);color:var(--fg);box-shadow:var(--sh-1)}
.clearf{font-size:12px;color:var(--fg3);text-decoration:underline;text-underline-offset:3px}
.clearf:hover{color:var(--heat)}

/* ── cabeçalho de página ───────────────────────────────────────────── */
.pagehead{display:flex;align-items:flex-end;gap:14px;padding:16px 20px 13px;border-bottom:1px solid var(--border);background:var(--surface)}
.pagehead h1{font-size:23px}
.pagehead .sb{font-size:12.5px;color:var(--fg3);margin-top:3px}
.pagehead .acts{margin-left:auto;display:flex;gap:7px}

/* ── botões ────────────────────────────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:var(--r);
  border:1px solid var(--border);background:var(--surface);font-size:12.5px;font-weight:500;color:var(--fg2);
  transition:.14s;white-space:nowrap;
}
.btn:hover{border-color:var(--hope);color:var(--fg)}
.btn svg{width:14px;height:14px}
.btn-sm{padding:5px 9px;font-size:11.5px}
.btn-pri{background:var(--heat);border-color:var(--heat);color:var(--canvas);box-shadow:0 2px 6px color-mix(in oklch,var(--heat) 34%,transparent)}
.btn-pri:hover{background:color-mix(in oklch,var(--heat) 88%,var(--health));border-color:color-mix(in oklch,var(--heat) 88%,var(--health));color:var(--canvas)}
.btn-solid{background:var(--health);border-color:var(--health);color:var(--canvas)}
.btn-solid:hover{background:oklch(from var(--health) calc(l - 0.045) c h);color:var(--canvas)}

/* ── blocos, campos, chips ─────────────────────────────────────────── */
.blk{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:14px 15px}
.blk > h4{font-size:11px;font-family:var(--font-mono);font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--fg3);margin-bottom:11px;display:flex;align-items:center;gap:7px}
.blk > h4::after{content:'';flex:1;height:1px;background:var(--hairline)}
.fgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px 16px}
.fgrid.c2{grid-template-columns:repeat(2,1fr)}
.f .k{font-size:10.5px;color:var(--fg3);margin-bottom:2px}
.f .v{font-size:13.5px;font-weight:500}
.f .v.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.f input,.f select,.blk textarea,.blk input{
  width:100%;padding:6px 9px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--canvas);font-size:13px;
}
.f input:focus,.f select:focus,.blk textarea:focus,.blk input:focus{outline:none;border-color:var(--hope);background:var(--surface)}
.blk textarea{resize:vertical;min-height:70px;line-height:1.55}

.chips{display:flex;flex-wrap:wrap;gap:6px}
.ch{
  display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:var(--r-pill);
  border:1px solid var(--border);background:var(--canvas);font-size:12px;color:var(--fg2);transition:.14s;
}
.ch:hover{border-color:var(--hope);color:var(--fg)}
.ch.on{background:var(--health);border-color:var(--health);color:var(--canvas);font-weight:500}
.ch.on .when{color:color-mix(in oklch,var(--canvas) 74%,var(--health));font-family:var(--font-mono);font-size:9.5px}
.ch .plus{font-size:14px;line-height:1;opacity:.5}

.tg{display:inline-flex;padding:2px;background:var(--sunken);border:1px solid var(--border);border-radius:var(--r)}
.tg button{padding:6px 14px;border-radius:var(--r-sm);font-size:12.5px;font-weight:500;color:var(--fg2)}
.tg button.on{background:var(--surface);color:var(--fg);font-weight:600;box-shadow:var(--sh-1)}

.avat{
  width:21px;height:21px;border-radius:var(--r-pill);display:grid;place-items:center;flex:none;
  font-size:9.5px;font-weight:700;background:color-mix(in oklch,var(--hope) 34%,var(--canvas));color:var(--health);
}
/* ícone de origem do lead — usado no card, na lista do inbox e nas tabelas */
.src{width:14px;height:14px;color:var(--fg3);flex:none}

/* barra de progresso de meta — painel e configurações */
.gbar{height:7px;border-radius:var(--r-pill);background:var(--sunken);overflow:hidden}
.gbar i{display:block;height:100%;border-radius:var(--r-pill);background:var(--hope)}

/* ── linhas de lista ───────────────────────────────────────────────── */
.row-item{display:flex;gap:11px;padding:12px 13px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);margin-bottom:8px}
.row-item.late{border-color:color-mix(in oklch,var(--heat) 55%,var(--border));background:color-mix(in oklch,var(--heat) 6%,var(--surface))}
.row-item .ti{font-size:13.5px;font-weight:500}
.row-item.done .ti{text-decoration:line-through;color:var(--fg3)}
.row-item .mt{font-family:var(--font-mono);font-size:10px;color:var(--fg3);margin-top:2px}
.row-item .mt .due-late{color:var(--heat);font-weight:700}
.cbx{width:17px;height:17px;border-radius:var(--r-sm);border:1.5px solid var(--border);flex:none;margin-top:1px;display:grid;place-items:center;transition:.14s}
.cbx:hover{border-color:var(--health)}
.cbx.done{background:var(--hope);border-color:var(--hope)}
.cbx svg{width:11px;height:11px;color:var(--health);opacity:0}
.cbx.done svg{opacity:1}
.premsg{margin-top:9px;padding:9px 11px;border-radius:var(--r-sm);background:var(--sunken);border:1px solid var(--border);border-left:2px solid var(--hope);font-size:12.5px;line-height:1.5;color:var(--fg2)}
.rowacts{margin-left:auto;display:flex;flex-direction:column;gap:6px;align-items:flex-end;flex:none}

/* ── tabela ────────────────────────────────────────────────────────── */
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{
  text-align:left;padding:8px 12px;font-family:var(--font-mono);font-size:9.5px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;color:var(--fg3);border-bottom:1px solid var(--border);white-space:nowrap;
}
.tbl td{padding:10px 12px;border-bottom:1px solid var(--hairline);vertical-align:middle}
.tbl tbody tr:hover{background:color-mix(in oklch,var(--hope) 9%,transparent)}
.tbl .r{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}

/* ── conversa (inbox e ficha) ──────────────────────────────────────── */
.chat{flex:1;min-height:0;overflow-y:auto;padding:16px 20px;background:var(--sunken);display:flex;flex-direction:column;gap:8px}
.daysep{align-self:center;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg3);background:var(--canvas);border:1px solid var(--border);padding:2px 10px;border-radius:var(--r-pill);margin:6px 0}
.msg{max-width:74%;padding:8px 11px 6px;border-radius:var(--r);font-size:13.5px;line-height:1.5;box-shadow:var(--sh-1)}
.msg.in{align-self:flex-start;background:var(--surface);border:1px solid var(--border);border-bottom-left-radius:2px}
.msg.out{align-self:flex-end;background:color-mix(in oklch,var(--hope) 30%,var(--canvas));border:1px solid color-mix(in oklch,var(--hope) 48%,transparent);border-bottom-right-radius:2px}
.msg .t{display:block;text-align:right;font-family:var(--font-mono);font-size:9px;color:var(--fg3);margin-top:3px}
.msg .who{font-size:9.5px;font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--fg3);display:block;margin-bottom:2px}
.composer{border-top:1px solid var(--border);background:var(--surface);padding:11px 20px 13px}
.tsel{display:flex;gap:6px;overflow-x:auto;padding-bottom:9px;margin-bottom:9px;border-bottom:1px solid var(--hairline)}
.tsel button{flex:none;padding:5px 11px;border-radius:var(--r-pill);border:1px solid var(--border);background:var(--canvas);font-size:11.5px;color:var(--fg2);white-space:nowrap;transition:.14s}
.tsel button:hover{border-color:var(--hope);color:var(--fg)}
.tsel button.on{background:var(--health);border-color:var(--health);color:var(--canvas)}
.cbox{display:flex;gap:9px;align-items:flex-end}
.cbox textarea{flex:1;border:1px solid var(--border);border-radius:var(--r);padding:9px 11px;background:var(--canvas);resize:none;min-height:44px;max-height:130px;font-size:13.5px;line-height:1.5}
.cbox textarea:focus{outline:none;border-color:var(--hope);background:var(--surface)}
.wanum{font-family:var(--font-mono);font-size:9.5px;color:var(--fg3);margin-bottom:7px;display:flex;align-items:center;gap:5px}
.wanum .live{width:6px;height:6px;border-radius:50%;background:var(--hope)}

/* ── timeline ──────────────────────────────────────────────────────── */
.tl{position:relative;padding-left:26px}
.tl::before{content:'';position:absolute;left:9px;top:6px;bottom:6px;width:1px;background:var(--border)}
.ev{position:relative;padding:0 0 16px}
.ev .ic{position:absolute;left:-26px;top:0;width:19px;height:19px;border-radius:50%;display:grid;place-items:center;background:var(--surface);border:1px solid var(--border);color:var(--fg2)}
.ev .ic svg{width:10px;height:10px}
.ev .ic.acc{background:var(--heat);border-color:var(--heat);color:var(--canvas)}
.ev .ic.pos{background:var(--hope);border-color:var(--hope);color:var(--health)}
.ev .hd{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.ev .ti{font-size:13px;font-weight:500}
.ev .tm{font-family:var(--font-mono);font-size:9.5px;color:var(--fg3);margin-left:auto}
.ev .bd{font-size:12.5px;color:var(--fg2);margin-top:2px;line-height:1.5}

/* ── modal ─────────────────────────────────────────────────────────── */
.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;background:color-mix(in oklch,var(--health) 40%,transparent);opacity:0;visibility:hidden;transition:.16s}
.modal.on{opacity:1;visibility:visible}
.mbox{width:min(460px,100%);background:var(--canvas);border-radius:var(--r);border:1px solid var(--border);box-shadow:var(--sh-3);overflow:hidden;transform:translateY(8px);transition:.2s}
.modal.on .mbox{transform:none}
.mtop{padding:16px 19px 13px;border-bottom:1px solid var(--border);background:var(--surface)}
.mtop h3{font-size:17px}
.mtop p{margin:4px 0 0;font-size:12.5px;color:var(--fg3)}
.mbody{padding:16px 19px}
.mbody .lb{font-size:11px;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg3);margin-bottom:8px}
.mbody textarea{width:100%;margin-top:13px;padding:9px 11px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface);resize:vertical;min-height:64px;font-size:13px}
.mbody textarea:focus{outline:none;border-color:var(--hope)}
.mfoot{padding:12px 19px;background:var(--surface);border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end}
.mfoot .warn{margin-right:auto;font-size:11.5px;color:var(--heat);display:none;align-items:center;gap:5px}
.mfoot .warn.on{display:flex}

/* ── toast ─────────────────────────────────────────────────────────── */
.toast{
  position:fixed;bottom:22px;left:50%;transform:translate(-50%,16px);z-index:120;
  display:flex;align-items:center;gap:11px;padding:11px 16px;border-radius:var(--r);
  background:var(--health);color:var(--canvas);box-shadow:var(--sh-3);font-size:13px;
  opacity:0;visibility:hidden;transition:.2s;
}
.toast.on{opacity:1;visibility:visible;transform:translate(-50%,0)}
.toast .un{margin-left:6px;color:var(--light);text-decoration:underline;text-underline-offset:3px;font-weight:500}

/* ── vazio ─────────────────────────────────────────────────────────── */
.empty{padding:26px 14px;text-align:center;color:var(--fg3);font-size:12.5px;line-height:1.6}
.empty svg{width:26px;height:26px;margin:0 auto 9px;opacity:.4}

/* ── popover de composição ─────────────────────────────────────────── */
.pop{
  position:absolute;top:calc(100% + 7px);left:0;z-index:40;width:212px;padding:10px 11px;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh-2);
  opacity:0;visibility:hidden;transform:translateY(-3px);transition:.14s;pointer-events:none;
}
.pop .r{display:flex;justify-content:space-between;gap:10px;font-size:12px;padding:3px 0}
.pop .r span:last-child{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.pop .r.t{border-top:1px solid var(--border);margin-top:4px;padding-top:6px;font-weight:600}
.pop .kk{font-size:9.5px;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg3);margin-bottom:4px}

/* ════════════════════════════════════════════════════════════════════
   Refinamento de usabilidade · auditoria Web Interface Guidelines
   Regras transversais; as telas continuam definindo só o que é delas.
   ════════════════════════════════════════════════════════════════════ */

html{color-scheme:light}

/* teclado é cidadão de primeira classe: anel de foco da marca em tudo
   que é interativo — só quando a navegação vem do teclado */
:focus-visible{
  outline:2px solid var(--hope);
  outline-offset:2px;
  border-radius:var(--r-sm);
}
.rail :focus-visible{outline-color:var(--canvas)}
.search input:focus-visible,.f input:focus-visible,.f select:focus-visible,
.campo input:focus-visible,.campo select:focus-visible,.campo textarea:focus-visible{
  outline:none;   /* nesses, a borda acesa já é o indicador */
}

/* toque: sem atraso de duplo-toque, sem flash cinza do Android */
button,a,input,select,textarea,[draggable]{touch-action:manipulation}
button,a{-webkit-tap-highlight-color:transparent}

/* títulos não quebram deixando uma palavra órfã */
h1,h2,h3{text-wrap:balance}

/* célula de tabela convive com e-mail comprido sem estourar a linha */
.tbl td{max-width:260px}
.tbl td .sub,.tbl td .em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* painéis flutuantes não arrastam a página junto ao rolar até o fim */
.notifpanel .nlist,.mbody,.drawer{overscroll-behavior:contain}

/* quem pede menos movimento, recebe menos movimento */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
}


/* ── rail encolhível ───────────────────────────────────────────────────
   Preferência da pessoa, lembrada entre sessões (localStorage).
   Encolhido: só ícones, 52px — o Kanban ganha ~24px de largura útil. */
.railtoggle{
  width:56px;padding:8px 0;border-radius:var(--r);display:grid;place-items:center;
  color:inherit;opacity:.55;transition:opacity .14s,background .14s;
}
.railtoggle:hover{opacity:1;background:color-mix(in oklch,var(--hope) 20%,transparent)}
.railtoggle svg{width:15px;height:15px;transition:transform .18s}

body.rail-slim{--rail-w:52px}
body.rail-slim .rail a{width:40px;font-size:0;gap:0;padding:11px 0}
body.rail-slim .rail .mark{width:30px}
body.rail-slim .rail .badge{right:-2px}
body.rail-slim .rail .me{width:30px;height:30px;font-size:10.5px}
body.rail-slim .railtoggle{width:40px}
body.rail-slim .railtoggle svg{transform:rotate(180deg)}

/* ════════════════════════════════════════════════════════════════════
   Camada responsiva · tablet e celular
   O protótipo nasceu desktop (handoff §9). Aqui o shell dobra:
   · tablet — o mesmo desenho, com grades mais estreitas;
   · celular — o rail vira barra inferior (padrão de app), modais viram
     folhas que sobem de baixo, e cada tela reorganiza o que é dela.
   ════════════════════════════════════════════════════════════════════ */

/* teclado virtual e barras do navegador comem o vh clássico */
.app{height:100dvh}

/* ── tablet (até 1024px) ───────────────────────────────────────────── */
@media (max-width:1024px){
  .fgrid{grid-template-columns:repeat(2,1fr)}
  .search{max-width:none}
  .notifpanel{width:min(376px,86vw)}
}

/* ── celular (até 740px) ───────────────────────────────────────────── */
@media (max-width:740px){
  /* shell: navegação desce para o polegar */
  .app{display:flex;flex-direction:column}
  .main{order:1;flex:1;min-height:0}
  .rail{
    order:2;flex-direction:row;align-items:stretch;gap:0;
    padding:4px 6px calc(4px + env(safe-area-inset-bottom));
    overflow-x:auto;scrollbar-width:none;
    border-top:1px solid color-mix(in oklch,var(--hope) 30%,var(--health));
  }
  .rail::-webkit-scrollbar{display:none}
  .rail .mark,.rail .sp{display:none}
  .rail a{
    flex:1 0 62px;width:auto;min-height:52px;padding:7px 2px 5px;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  }
  .rail a.on::before{left:14px;right:14px;top:-4px;bottom:auto;width:auto;height:3px;border-radius:0 0 3px 3px}
  .rail .badge{top:2px;right:calc(50% - 17px)}
  .rail .me{align-self:center;margin-left:4px;flex:none;width:32px;height:32px}
  .railtoggle{display:none}
  body.rail-slim .rail a{width:auto;font-size:inherit;gap:3px;padding:7px 2px 5px}
  body.rail-slim .rail .me{width:32px;height:32px}

  /* topbar enxuto: busca em primeiro lugar */
  .topbar{padding:9px 12px;gap:8px;flex-wrap:wrap}
  .demoflag,.sep{display:none}
  .pickr{padding:5px 8px}
  .pickr .lbl{display:none}
  .search{flex:1 1 160px}

  /* cabeçalho de página empilha; botões continuam à mão */
  .pagehead{flex-direction:column;align-items:stretch;gap:9px;padding:13px 14px 11px}
  .pagehead .acts{margin-left:0}
  .pagehead h1{font-size:20px}

  /* filtros: trilho horizontal, um gesto de polegar */
  .filters{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding:9px 26px 9px 14px;
    mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 26px),transparent);
    -webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 26px),transparent)}
  .filters::-webkit-scrollbar{display:none}
  .chipf,.selectf{flex:none}
  .fspacer{display:none}
  .clearf{flex:none;margin-left:auto}

  /* modal vira folha: sobe de baixo, ocupa a largura toda */
  .modal{padding:0;align-items:end}
  .modal .mbox,.mbox{
    width:100%;max-width:100%;max-height:92dvh;overflow-y:auto;
    border-radius:14px 14px 0 0;border-left:0;border-right:0;border-bottom:0;
    transform:translateY(14px);
  }
  .mfoot{position:sticky;bottom:0;padding-bottom:calc(13px + env(safe-area-inset-bottom))}

  /* formulários respiram: uma coluna, alvos de toque honestos */
  .fgrid,.fgrid.c2{grid-template-columns:1fr 1fr}
  .btn{padding:9px 13px;min-height:40px}
  .btn-sm{min-height:36px}
  .tbl th,.tbl td{padding:9px 10px}
  .notifpanel{position:fixed;top:auto;bottom:70px;right:8px;left:8px;width:auto}
}
