/* =============================================================================
   GAB · DESIGN SYSTEM (UI KIT) — Novo Sistema
   Padrão visual único do ecossistema VYNC. Cores, tipografia, efeitos,
   componentes, overlays, formulários, navegação e animações reutilizáveis.
   Uso:  <link rel="stylesheet" href="gab-ui.css">
   ============================================================================= */
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,400;0,500;0,600;0,700;0,800;1,500&family=JetBrains+Mono:wght@400;500&display=swap');

/* =============================================================================
   1 · TOKENS
   ============================================================================= */
:root{
  /* ---- MARCA (azul GAB) ---- */
  --azul-claro:#8FA699; --azul-medio:#2F4740; --azul-escuro:#24362F;
  --azul-profundo:#14171B; --azul-aco:#5F7C6D; --azul-apoio:#D5E0D9;

  /* ---- ESCALA DE AZUL ---- */
  --b50:#F4F6F3; --b100:#E8EEEA; --b200:#D5E0D9; --b300:#B7C9BE; --b400:#8FA699;
  --b500:#8FA699; --b600:#2F4740; --b700:#24362F; --b800:#14171B; --b900:#101214;

  /* ---- NEUTROS ---- */
  --ink:#1E2522; --ink-2:#3A4541; --ink-3:#64748B; /* ink-3 escurecido p/ WCAG AA (~4.6:1) */
  --line:#E6E3DA; --line-2:#F1EFE8;
  --bg:#F5F8FC; --surface:#FFFFFF; --surface-2:#FAFCFE;

  /* ---- SEMÂNTICAS / STATUS ---- */
  --ok:#8FC9A0;     --ok-bg:#E2F6EE;   --ok-ink:#137a52;
  --warn:#CBB07E;   --warn-bg:#FBF1DA; --warn-ink:#9a6a08;
  --danger:#D68B84; --danger-bg:#FCE9E7; --danger-ink:#b23a33;
  --info:#8FA699;   --info-bg:#E8EEEA; --info-ink:#2F4740;
  --neutral:#66716C;--neutral-bg:#EEF2F7; --neutral-ink:#56617a;

  /* ---- ACENTOS ---- */
  --accent:#B85C3A; --violet:#5F7C6D; --cyan:#5F7C6D; --glow:rgba(62,90,79,.5);

  /* ---- TIPOGRAFIA ---- */
  --font:'Plus Jakarta Sans',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  /* fonte de marca real: JUST Sans (títulos/texto) · Astonpoliz (logotipo) */

  /* ---- RAIO ---- */
  --r-sm:10px; --r-md:16px; --r-lg:22px; --r-xl:30px; --r-pill:999px;

  /* ---- SOMBRAS (elevação) ---- */
  --sh-1:0 1px 2px rgba(30,45,38,.04),0 2px 8px rgba(30,45,38,.05);
  --sh-2:0 2px 6px rgba(30,45,38,.05),0 14px 32px rgba(30,45,38,.08);
  --sh-3:0 6px 14px rgba(30,45,38,.07),0 32px 64px rgba(30,45,38,.14);
  --hl:inset 0 1px 0 rgba(255,255,255,.8);

  /* ---- ESPAÇAMENTO (escala 4/8) ---- */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px; --s8:64px;

  /* ---- SHELL ---- */
  --rail:64px; --rail-open:256px;

  /* ---- TRANSIÇÃO PADRÃO ---- */
  --ease:cubic-bezier(.2,.7,.3,1);
}

/* =============================================================================
   2 · RESET / BASE
   ============================================================================= */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--font);color:var(--ink);line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  background:radial-gradient(1200px 680px at 90% -10%,rgba(36,54,47,.14),transparent 60%),radial-gradient(900px 600px at -8% 8%,rgba(184,92,58,.07),transparent 55%),linear-gradient(180deg,#F7F6F1,#F1F5FB);background-attachment:fixed}
a{color:inherit;text-decoration:none} img{max-width:100%} button{font-family:inherit}
svg.icon{width:18px;height:18px;display:inline-block;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
::selection{background:rgba(62,90,79,.22);color:var(--azul-profundo)}
body::-webkit-scrollbar{width:10px}body::-webkit-scrollbar-thumb{background:rgba(30,75,120,.22);border-radius:10px;border:3px solid transparent;background-clip:padding-box}
.tnum,.kpi-val,.big,.tv{font-variant-numeric:tabular-nums}
.mono{font-family:var(--mono)}

/* =============================================================================
   3 · ANIMAÇÕES (keyframes + utilitárias)
   ============================================================================= */
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes pop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
@keyframes drawIn{to{stroke-dashoffset:0}}
@keyframes growBar{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes growBarX{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes liquid{0%{transform:translate(0,0) scale(1)}50%{transform:translate(2%,-2%) scale(1.06)}100%{transform:translate(-2%,2%) scale(1.02)}}
@keyframes livedot{0%{box-shadow:0 0 0 0 rgba(62,90,79,.5)}70%{box-shadow:0 0 0 6px rgba(62,90,79,0)}100%{box-shadow:0 0 0 0 rgba(62,90,79,0)}}
@keyframes shimmer{100%{background-position:-200% 0}}
@keyframes slideInRight{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
@keyframes slideUpFade{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
.reveal>*{opacity:0;animation:fadeUp .55s var(--ease) forwards}
.reveal>*:nth-child(1){animation-delay:.02s}.reveal>*:nth-child(2){animation-delay:.08s}.reveal>*:nth-child(3){animation-delay:.14s}.reveal>*:nth-child(4){animation-delay:.2s}.reveal>*:nth-child(5){animation-delay:.26s}.reveal>*:nth-child(6){animation-delay:.32s}.reveal>*:nth-child(7){animation-delay:.38s}.reveal>*:nth-child(8){animation-delay:.44s}
.anim-float{animation:floaty 4s ease-in-out infinite}
.anim-spin{animation:spin 1s linear infinite}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* fundo gradiente líquido animado */
.liquid-bg::before{content:"";position:fixed;inset:-10%;z-index:-1;pointer-events:none;filter:blur(70px);opacity:.55;
  background:radial-gradient(420px 420px at 14% 22%,rgba(184,92,58,.30),transparent 60%),radial-gradient(520px 520px at 86% 10%,rgba(62,90,79,.26),transparent 60%),radial-gradient(480px 480px at 70% 92%,rgba(184,92,58,.22),transparent 60%);
  animation:liquid 22s ease-in-out infinite alternate}

/* transição de página (aplicar no container de conteúdo ao trocar de view) */
.pt-fade{animation:fadeIn .3s var(--ease)}
.pt-up{animation:slideUpFade .4s var(--ease)}
.pt-right{animation:slideInRight .35s var(--ease)}

/* =============================================================================
   4 · TIPOGRAFIA
   ============================================================================= */
h1{font-size:29px;font-weight:800;letter-spacing:-.9px;line-height:1.1}
h2{font-size:22px;font-weight:800;letter-spacing:-.5px}
h3{font-size:16px;font-weight:700;letter-spacing:-.2px}
h4{font-size:13.5px;font-weight:700;letter-spacing:.1px}
p{color:var(--ink-2);font-size:14px}
.muted{color:var(--ink-3)} .sub{color:var(--ink-3);font-size:13.5px;margin-top:4px}
.display{font-size:42px;font-weight:800;letter-spacing:-1.6px;line-height:1}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:var(--azul-claro);background:linear-gradient(180deg,#EEF2EF,#E3E9E5);border:1px solid rgba(62,90,79,.18);padding:5px 13px;border-radius:var(--r-pill);box-shadow:var(--hl)}
.eyebrow::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--azul-claro);box-shadow:0 0 0 3px rgba(62,90,79,.18)}
.page-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.page-head .ph-l{flex:1;min-width:200px}

/* =============================================================================
   5 · LAYOUT (grid, bento, flex, utils)
   ============================================================================= */
.grid{display:grid;gap:18px}
.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g5{grid-template-columns:repeat(5,1fr)}.g6{grid-template-columns:repeat(6,1fr)}
.row{display:flex;gap:14px;flex-wrap:wrap}.aic{align-items:center}.aie{align-items:flex-end}.between{justify-content:space-between}
.spacer{flex:1}.center{text-align:center}.right{text-align:right}.wrap-no{flex-wrap:nowrap}
.mt2{margin-top:8px}.mt3{margin-top:12px}.mt4{margin-top:16px}.mt5{margin-top:24px}.mt6{margin-top:32px}
.bento{display:grid;gap:16px;grid-template-columns:repeat(12,1fr)}
.c3{grid-column:span 3}.c4{grid-column:span 4}.c5{grid-column:span 5}.c6{grid-column:span 6}.c8{grid-column:span 8}.c12{grid-column:span 12}
@media(max-width:1080px){.g4,.g5,.g6{grid-template-columns:repeat(2,1fr)}.g3,.g2{grid-template-columns:1fr}.bento{grid-template-columns:repeat(2,1fr)}.c3,.c4,.c5,.c6,.c8{grid-column:span 1}.c12{grid-column:span 2}}
@media(max-width:680px){.bento{grid-template-columns:1fr}.c12{grid-column:span 1}}

/* =============================================================================
   6 · CARTÕES & SUPERFÍCIES
   ============================================================================= */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;box-shadow:var(--sh-1),var(--hl);transition:transform .24s var(--ease),box-shadow .24s,border-color .24s}
.card.lift:hover,.card.hover:hover{transform:translateY(-3px);box-shadow:var(--sh-2),var(--hl);border-color:var(--b200)}
.card.soft{background:linear-gradient(180deg,#FCFBF8,#F5FAFE);box-shadow:var(--hl)}
.card-h{display:flex;align-items:center;gap:12px;margin-bottom:14px}.card-h .spacer{flex:1}
.card-ic{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(160deg,#EEF2EF,#DCE5DF);color:var(--azul-claro);flex:0 0 auto;box-shadow:inset 0 0 0 1px rgba(62,90,79,.12),var(--hl)}
.card-ic svg{width:20px;height:20px}
.card-deep,.grad-deep{background:radial-gradient(120% 130% at 110% -10%,rgba(184,92,58,.18),transparent 50%),linear-gradient(150deg,#24362F,#24362F 55%,#2F4740);color:#fff;border:none;border-radius:var(--r-lg);padding:22px;box-shadow:var(--sh-2)}
.card-deep .muted,.grad-deep .muted,.grad-deep .lab,.grad-deep .sub{color:#7A828C}
.grad-blue{background:linear-gradient(160deg,#E9F3FD,#F6FAFE 55%,#FFF)}
.glass{background:rgba(255,255,255,.62);backdrop-filter:blur(14px) saturate(150%);-webkit-backdrop-filter:blur(14px) saturate(150%);border:1px solid rgba(255,255,255,.7);box-shadow:var(--sh-2);border-radius:var(--r-lg);padding:18px}
.blob{position:absolute;border-radius:50%;filter:blur(40px);opacity:.5;pointer-events:none}
.dlab,.lab{font-size:10.5px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--azul-claro);margin-bottom:8px}

/* =============================================================================
   7 · KPI / INDICADORES
   ============================================================================= */
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px;box-shadow:var(--sh-1),var(--hl);position:relative;transition:transform .24s,box-shadow .24s;overflow:hidden}
.kpi:hover{transform:translateY(-3px);box-shadow:var(--sh-2),var(--hl)}
.kpi .top{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--ink-2);font-weight:600}
.kpi .top .ki{width:32px;height:32px;border-radius:10px;background:var(--b100);color:var(--azul-claro);display:grid;place-items:center}
.kpi .top .ki svg{width:17px;height:17px}
.kpi .big,.kpi-val{font-size:30px;font-weight:800;letter-spacing:-1.2px;margin:12px 0 2px}
.kpi .sub{font-size:11.5px;color:var(--ink-3)}
.kpi.grad-deep .top{color:#cfe3f6}.kpi.grad-deep .ki{background:rgba(255,255,255,.14);color:#fff}
.trend{font-size:11.5px;font-weight:800;display:inline-flex;gap:4px;align-items:center}.up{color:var(--ok)}.down{color:var(--danger)}
.kring{display:flex;align-items:center;gap:15px}
.kring .rg{position:relative;width:62px;height:62px;flex:0 0 auto}
.kring .rg .ic{position:absolute;inset:0;display:grid;place-items:center;color:var(--azul-claro)}.kring .rg .ic svg{width:20px;height:20px}
.kring .big{font-size:25px;font-weight:800;letter-spacing:-1px;line-height:1}
.kring .lab2{font-size:11.5px;color:var(--ink-3);font-weight:600;margin-top:3px}

/* =============================================================================
   8 · BOTÕES (todas as situações)
   ============================================================================= */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font);font-weight:700;font-size:13.5px;padding:10px 18px;border-radius:var(--r-pill);border:1px solid transparent;cursor:pointer;transition:.18s;white-space:nowrap;position:relative}
.btn svg{width:16px;height:16px}
.btn-primary{background:linear-gradient(180deg,#2F4740,#24362F);color:#fff;box-shadow:0 8px 20px rgba(62,90,79,.32),inset 0 1px 0 rgba(255,255,255,.25)}
.btn-primary:hover{background:linear-gradient(180deg,#3E5A4F,#2F4740);box-shadow:0 12px 28px rgba(62,90,79,.44),inset 0 1px 0 rgba(255,255,255,.25);transform:translateY(-1px)}
.btn-secondary{background:var(--surface);color:var(--azul-escuro);border-color:var(--line);box-shadow:var(--sh-1)}
.btn-secondary:hover{border-color:var(--b300);background:var(--b50)}
.btn-ghost{background:transparent;color:var(--ink-2)}.btn-ghost:hover{background:var(--line-2)}
.btn-outline{background:transparent;color:var(--azul-claro);border-color:var(--b300)}.btn-outline:hover{background:var(--b50);border-color:var(--azul-claro)}
.btn-link{background:none;color:var(--azul-claro);padding-left:6px;padding-right:6px}.btn-link:hover{text-decoration:underline}
.btn-success{background:linear-gradient(180deg,#1cb87c,#149563);color:#fff;box-shadow:0 8px 20px rgba(46,125,91,.3)}
.btn-success:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(46,125,91,.42)}
.btn-warn{background:linear-gradient(180deg,#e6a225,#c9850a);color:#fff;box-shadow:0 8px 20px rgba(208,138,11,.28)}
.btn-warn:hover{transform:translateY(-1px)}
.btn-danger{background:linear-gradient(180deg,#e8625b,#d23f37);color:#fff;box-shadow:0 8px 20px rgba(224,81,74,.3)}
.btn-danger:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(224,81,74,.42)}
.btn-soft{background:var(--b100);color:var(--azul-escuro)}.btn-soft:hover{background:var(--b200)}
.btn-soft-danger{background:var(--danger-bg);color:var(--danger-ink)}.btn-soft-danger:hover{filter:brightness(.97)}
.btn-dark{background:linear-gradient(160deg,#16284f,#0d1b3c);color:#fff;box-shadow:var(--sh-2)}.btn-dark:hover{transform:translateY(-1px)}
/* tamanhos */
.btn-lg{padding:13px 24px;font-size:15px}
.btn-sm{padding:8px 14px;font-size:12.5px}
.btn-xs{padding:5px 11px;font-size:11.5px;gap:5px}.btn-xs svg{width:13px;height:13px}
.btn-block{width:100%}
.btn[disabled],.btn.is-disabled{opacity:.5;cursor:not-allowed;pointer-events:none}
/* loading */
.btn.loading{color:transparent!important;pointer-events:none}
.btn.loading::after{content:"";position:absolute;width:16px;height:16px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}
.btn-secondary.loading::after,.btn-outline.loading::after,.btn-ghost.loading::after{border-color:rgba(62,90,79,.3);border-top-color:var(--azul-claro)}
/* botão de ícone */
.iconbtn{width:36px;height:36px;border-radius:12px;background:var(--surface);border:1px solid var(--line);display:grid;place-items:center;color:var(--ink-2);box-shadow:var(--sh-1);cursor:pointer;transition:.15s}
.iconbtn svg{width:16px;height:16px}
.iconbtn:hover{border-color:var(--b300);color:var(--azul-escuro)}
.iconbtn.solid{background:var(--azul-claro);color:#fff;border-color:transparent}
.iconbtn.round{border-radius:50%}
/* grupo de botões */
.btn-group{display:inline-flex;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface);box-shadow:var(--sh-1);overflow:hidden}
.btn-group button{border:none;background:none;padding:9px 16px;font-weight:700;font-size:12.5px;color:var(--ink-2);cursor:pointer;border-right:1px solid var(--line);transition:.14s}
.btn-group button:last-child{border-right:none}
.btn-group button:hover{background:var(--b50)}.btn-group button.on{background:var(--azul-claro);color:#fff}
/* split button */
.btn-split{display:inline-flex}
.btn-split .btn{border-top-right-radius:0;border-bottom-right-radius:0}
.btn-split .sp{border-top-left-radius:0;border-bottom-left-radius:0;padding-left:11px;padding-right:11px;border-left:1px solid rgba(255,255,255,.25)}
/* FAB */
.fab{width:56px;height:56px;border-radius:50%;border:none;background:linear-gradient(180deg,#2F4740,#24362F);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:0 12px 28px rgba(62,90,79,.45);transition:.18s}
.fab:hover{transform:translateY(-2px) scale(1.04);box-shadow:0 18px 36px rgba(62,90,79,.55)}
.fab svg{width:24px;height:24px}

/* =============================================================================
   9 · BADGES / CHIPS / TAGS / PRIORIDADE / STATUS
   ============================================================================= */
.badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;padding:4px 11px;border-radius:var(--r-pill)}
.badge .bdot{width:6px;height:6px;border-radius:50%}
.b-info{background:var(--info-bg);color:var(--info-ink)}.b-info .bdot{background:var(--info)}
.b-ok{background:var(--ok-bg);color:var(--ok-ink)}.b-ok .bdot{background:var(--ok)}
.b-warn{background:var(--warn-bg);color:var(--warn-ink)}.b-warn .bdot{background:var(--warn)}
.b-danger{background:var(--danger-bg);color:var(--danger-ink)}.b-danger .bdot{background:var(--danger)}
.b-neutral{background:var(--neutral-bg);color:var(--neutral-ink)}.b-neutral .bdot{background:var(--neutral)}
.bdot.live{animation:livedot 1.7s ease-out infinite}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;background:var(--b50);border:1px solid var(--b200);color:var(--azul-escuro);padding:4px 10px;border-radius:var(--r-pill)}
.chip .x{cursor:pointer;opacity:.6}.chip .x:hover{opacity:1}
.tag{display:inline-block;font-size:11px;font-weight:700;color:var(--ink-3);background:var(--line-2);padding:4px 10px;border-radius:8px;margin:0 5px 5px 0}
.prio{font-size:9.5px;font-weight:800;padding:2px 8px;border-radius:6px;display:inline-flex;align-items:center;gap:4px}
.prio::before{content:"";width:6px;height:6px;border-radius:50%}
.prio.alta{background:var(--danger-bg);color:var(--danger-ink)}.prio.alta::before{background:var(--danger)}
.prio.media{background:var(--warn-bg);color:var(--warn-ink)}.prio.media::before{background:var(--warn)}
.prio.baixa{background:var(--neutral-bg);color:var(--neutral-ink)}.prio.baixa::before{background:var(--neutral)}
.status-dot{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--ink-2)}
.status-dot::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--neutral)}
.status-dot.on::before{background:var(--ok)}.status-dot.busy::before{background:var(--warn)}.status-dot.off::before{background:var(--danger)}

/* =============================================================================
   10 · AVATARES
   ============================================================================= */
.ava{border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:12px;flex:0 0 auto;width:36px;height:36px;background:linear-gradient(135deg,var(--azul-claro),var(--azul-escuro))}
.ava.sm{width:28px;height:28px;font-size:10px}.ava.lg{width:48px;height:48px;font-size:15px}.ava.xl{width:72px;height:72px;font-size:24px}
.ava-row{display:flex}.ava-row .ava{margin-left:-8px;border:2px solid #fff}.ava-row .ava:first-child{margin-left:0}
.ava-status{position:relative}.ava-status::after{content:"";position:absolute;right:-1px;bottom:-1px;width:11px;height:11px;border-radius:50%;background:var(--ok);border:2px solid #fff}

/* =============================================================================
   11 · FORMULÁRIOS (todos os tipos de campo)
   ============================================================================= */
.field{margin-bottom:15px}
.field label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.field .req{color:var(--danger)}
.inp,.field input,.field select,.field textarea{width:100%;font-family:var(--font);font-size:13.5px;padding:11px 13px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--ink);transition:.15s}
.field textarea{resize:vertical;min-height:84px}
.inp:focus,.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--azul-claro);box-shadow:0 0 0 3px rgba(62,90,79,.15)}
.inp::placeholder,.field input::placeholder,.field textarea::placeholder{color:var(--ink-3)}
.inp[disabled],.field input[disabled]{background:var(--line-2);color:var(--ink-3);cursor:not-allowed}
.field .hint{font-size:11px;color:var(--ink-3);margin-top:5px}
/* grid de formulário (reduz scroll; largura coerente por campo) */
.fg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}
.fg .full{grid-column:1/-1}
.fg-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 14px}
.field.sm,.fg .field.sm{max-width:160px}
@media(max-width:640px){.fg,.fg-3{grid-template-columns:1fr}.field.sm{max-width:none}}
.field.is-error .inp,.field.is-error input,.field.is-error textarea,.field.is-error select{border-color:var(--danger);box-shadow:0 0 0 3px rgba(224,81,74,.13)}
.field.is-error .hint{color:var(--danger-ink)}
.field.is-ok .inp,.field.is-ok input{border-color:var(--ok);box-shadow:0 0 0 3px rgba(46,125,91,.12)}
/* input com ícone */
.inp-ic{position:relative}
.inp-ic svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--ink-3);pointer-events:none}
.inp-ic input{padding-left:38px}
.inp-ic.right svg{left:auto;right:13px}.inp-ic.right input{padding-left:13px;padding-right:38px}
/* senha */
.pwd{position:relative}.pwd input{padding-right:44px}
.pwd .eye{position:absolute;right:7px;top:50%;transform:translateY(-50%);width:32px;height:32px;border:none;background:none;cursor:pointer;color:var(--ink-3);border-radius:9px;display:grid;place-items:center}
.pwd .eye:hover{background:var(--line-2)}
.meter{height:6px;border-radius:var(--r-pill);background:var(--line-2);overflow:hidden;margin-top:8px}
.meter>i{display:block;height:100%;width:0;border-radius:var(--r-pill);transition:.3s}
.meter-lbl{font-size:11px;font-weight:700;margin-top:5px}
.rules{font-size:11px;color:var(--ink-3);margin-top:7px;display:grid;gap:3px}.rules .ok{color:var(--ok)}
/* checkbox & radio customizados */
.opt{display:inline-flex;align-items:center;gap:9px;font-size:13px;color:var(--ink-2);cursor:pointer;user-select:none}
.opt input{position:absolute;opacity:0;width:0;height:0}
.opt .bx{width:20px;height:20px;border-radius:6px;border:2px solid var(--line);display:grid;place-items:center;transition:.15s;flex:0 0 auto;background:var(--surface)}
.opt .bx svg{width:12px;height:12px;color:#fff;opacity:0;transition:.15s}
.opt input:checked+.bx{background:var(--azul-claro);border-color:var(--azul-claro)}
.opt input:checked+.bx svg{opacity:1}
.opt input:focus-visible+.bx{box-shadow:0 0 0 3px rgba(62,90,79,.2)}
.opt.radio .bx{border-radius:50%}
.opt.radio .bx::after{content:"";width:9px;height:9px;border-radius:50%;background:#fff;transform:scale(0);transition:.15s}
.opt.radio input:checked+.bx{background:var(--azul-claro);border-color:var(--azul-claro)}
.opt.radio input:checked+.bx::after{transform:scale(1)}
/* switch */
.switch{width:42px;height:24px;border-radius:var(--r-pill);background:var(--line);position:relative;cursor:pointer;transition:.2s;border:none;flex:0 0 auto}
.switch::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:var(--sh-1);transition:.2s}
.switch.on{background:var(--azul-claro)}.switch.on::after{left:20px}
/* segmented */
.seg{display:inline-flex;background:var(--line-2);border-radius:var(--r-pill);padding:3px}
.seg button{border:none;background:none;padding:7px 15px;border-radius:var(--r-pill);font-weight:700;font-size:12.5px;color:var(--ink-3);cursor:pointer;transition:.15s}
.seg button.on{background:var(--surface);color:var(--azul-escuro);box-shadow:var(--sh-1)}
/* range / slider */
.range{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:var(--r-pill);background:linear-gradient(90deg,var(--azul-claro) 50%,var(--line-2) 50%);outline:none}
.range::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:#fff;border:3px solid var(--azul-claro);box-shadow:var(--sh-2);cursor:pointer}
.range::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#fff;border:3px solid var(--azul-claro);cursor:pointer}
/* stepper numérico */
.stepper{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:11px;background:var(--surface);overflow:hidden}
.stepper button{width:38px;height:40px;border:none;background:none;font-size:18px;color:var(--azul-claro);cursor:pointer;transition:.14s}
.stepper button:hover{background:var(--b50)}
.stepper input{width:50px;text-align:center;border:none;border-left:1px solid var(--line);border-right:1px solid var(--line);font-weight:700;font-size:14px;padding:10px 0}
.stepper input:focus{outline:none}
/* OTP / pin */
.otp{display:flex;gap:10px}
.otp input{width:48px;height:56px;text-align:center;font-size:22px;font-weight:800;border:1px solid var(--line);border-radius:13px;background:var(--surface);color:var(--ink)}
.otp input:focus{outline:none;border-color:var(--azul-claro);box-shadow:0 0 0 3px rgba(62,90,79,.15)}
/* tags input */
.taginp{display:flex;flex-wrap:wrap;gap:6px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:7px 9px;background:var(--surface)}
.taginp:focus-within{border-color:var(--azul-claro);box-shadow:0 0 0 3px rgba(62,90,79,.15)}
.taginp input{border:none;outline:none;flex:1;min-width:80px;font-family:var(--font);font-size:13px;padding:4px}
/* dropzone & file list */
.drop{border:2px dashed var(--b300);border-radius:var(--r-md);background:var(--b50);padding:26px;text-align:center;color:var(--ink-3);transition:.18s;cursor:pointer}
.drop:hover{background:var(--b100);border-color:var(--azul-claro)}
.drop .di{color:var(--azul-claro);display:grid;place-items:center;margin-bottom:6px}.drop .di svg{width:28px;height:28px}
.drop b{color:var(--ink);font-size:13.5px}
.filelist{margin-top:12px;display:grid;gap:8px}
.fileitem{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:var(--surface)}
.fileitem .fi{width:34px;height:34px;border-radius:10px;background:var(--b100);color:var(--azul-claro);display:grid;place-items:center;flex:0 0 auto}
.fileitem .fp{flex:1;min-width:0}.fileitem .fp b{font-size:12.5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fileitem .fbar{height:5px;border-radius:var(--r-pill);background:var(--line-2);margin-top:5px;overflow:hidden}
.fileitem .fbar>i{display:block;height:100%;background:linear-gradient(90deg,#8FA699,#8FA699);border-radius:var(--r-pill)}

/* =============================================================================
   12 · TABELAS
   ============================================================================= */
.tbl{width:100%;border-collapse:collapse;font-size:13px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.tbl thead th{text-align:left;font-size:10.5px;letter-spacing:.6px;text-transform:uppercase;color:var(--ink-3);font-weight:700;padding:13px 16px;background:var(--surface-2);border-bottom:1px solid var(--line)}
.tbl td{padding:13px 16px;border-bottom:1px solid var(--line-2);color:var(--ink-2)}
.tbl tr:last-child td{border-bottom:none}
.tbl tbody tr{transition:.12s}
.tbl tbody tr:hover td{background:var(--b50)}
.tbl td b{color:var(--ink);font-weight:700}
.co{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:12px}
.co .dot{width:20px;height:20px;border-radius:7px;display:grid;place-items:center;color:#fff;font-size:8px;font-weight:800}
.rowact{display:inline-flex;gap:6px}
.rowact .ia{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;border:1px solid var(--line);background:var(--surface);color:var(--ink-3);cursor:pointer;transition:.14s}
.rowact .ia:hover{border-color:var(--b300);color:var(--azul-escuro)}
.rowact .ia.del:hover{border-color:#f3c9c5;color:var(--danger);background:var(--danger-bg)}
.rowact .ia svg{width:15px;height:15px}

/* =============================================================================
   13 · KANBAN
   ============================================================================= */
.kan{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
@media (max-width:980px){.kan{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.kan{grid-template-columns:1fr}}
.kan-col{min-width:0;background:linear-gradient(180deg,rgba(255,255,255,.55),rgba(245,248,252,.42));border:1px solid var(--line);border-radius:var(--r-md);padding:11px;backdrop-filter:blur(4px)}
.kan-col h5{font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-2);font-weight:800;display:flex;align-items:center;gap:8px;margin-bottom:10px}
.kan-col h5 .cdot{width:8px;height:8px;border-radius:50%}
.kan-col h5 .cnt{margin-left:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-pill);padding:1px 9px;font-size:10.5px;color:var(--ink-2)}
.kc{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:13px;margin-bottom:10px;box-shadow:var(--sh-1);cursor:grab;transition:transform .16s,box-shadow .16s,border-color .16s;position:relative;overflow:hidden}
.kc:hover{transform:translateY(-3px) scale(1.01);box-shadow:var(--sh-2);border-color:var(--b200)}
.kc .edge{position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px}
.kc .t{font-size:12.5px;font-weight:700;line-height:1.32;margin-bottom:9px;padding-left:6px}
.kc .meta{display:flex;align-items:center;justify-content:space-between;margin-top:9px;padding-left:6px}
.kc .meta .v{font-weight:800;font-size:12px;color:var(--azul-escuro)}

/* =============================================================================
   14 · PROGRESSO / BARRAS / MEDIDORES
   ============================================================================= */
.bar{height:8px;border-radius:var(--r-pill);background:var(--line-2);overflow:hidden}
.bar>i{display:block;height:100%;border-radius:var(--r-pill);background:linear-gradient(90deg,#8FA699,#8FA699);transform-origin:left;animation:growBarX .8s var(--ease) both}
.bar.ok>i{background:linear-gradient(90deg,#3ecf95,#8FC9A0)}.bar.warn>i{background:linear-gradient(90deg,#edb74a,#CBB07E)}.bar.danger>i{background:linear-gradient(90deg,#ef837c,#D68B84)}
.meter-line{height:6px;border-radius:var(--r-pill);background:var(--line-2);overflow:hidden}.meter-line>i{display:block;height:100%;border-radius:var(--r-pill);transition:.3s}
.thermo{height:12px;border-radius:var(--r-pill);background:linear-gradient(90deg,#D68B84,#CBB07E 50%,#8FC9A0);position:relative;margin-top:8px}
.thermo .mk{position:absolute;top:-6px;width:22px;height:22px;border-radius:50%;background:#fff;border:3px solid var(--azul-escuro);transform:translateX(-50%);box-shadow:var(--sh-2);transition:left 1s var(--ease)}

/* =============================================================================
   15 · NAVEGAÇÃO (rail, flyout, topbar, abas, breadcrumb, paginação, steps)
   ============================================================================= */
.app{display:flex;min-height:100vh;position:relative;z-index:1}
.railwrap{position:fixed;left:14px;top:14px;bottom:14px;width:64px;z-index:60}
.rail{height:100%;display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 0;border-radius:26px;position:relative;overflow:hidden;
  background:linear-gradient(180deg,rgba(16,28,64,.92),rgba(7,14,34,.94));border:1px solid rgba(255,255,255,.09);
  box-shadow:0 22px 55px rgba(7,14,34,.4),inset 0 1px 0 rgba(255,255,255,.10);backdrop-filter:blur(16px)}
.rail::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(130px 130px at 50% -8%,rgba(184,92,58,.4),transparent 60%),radial-gradient(150px 150px at 50% 110%,rgba(184,92,58,.34),transparent 60%)}
.rail .rbrand{width:38px;height:38px;margin-bottom:8px;flex:0 0 auto;position:relative;border-radius:11px;background:linear-gradient(160deg,#5F7C6D,#8FA699);display:grid;place-items:center;color:#fff;font-weight:800}
.ritem{width:46px;height:46px;border-radius:15px;display:grid;place-items:center;color:#cdddf5;cursor:pointer;position:relative;transition:.18s;flex:0 0 auto}
.ritem svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.9}
.ritem:hover{background:rgba(255,255,255,.09);color:#fff;transform:translateY(-1px)}
.ritem.active{color:#fff;background:linear-gradient(160deg,rgba(184,92,58,.32),rgba(62,90,79,.26));box-shadow:inset 0 0 0 1px rgba(243,241,234,.34),0 8px 18px rgba(62,90,79,.4)}
.ritem.active::before{content:"";position:absolute;left:-14px;top:13px;bottom:13px;width:3px;border-radius:3px;background:linear-gradient(180deg,#5F7C6D,#8FA699);box-shadow:0 0 12px var(--glow)}
.ritem .rtip{position:absolute;left:54px;white-space:nowrap;background:#24362F;color:#fff;font-size:11px;font-weight:700;padding:5px 10px;border-radius:8px;opacity:0;pointer-events:none;transition:.15s;box-shadow:var(--sh-2);z-index:5}
.ritem:hover .rtip{opacity:1}
.rail .rsp{flex:1}
.flyout{min-width:240px;padding:10px;border-radius:20px;
  background:rgba(255,255,255,.74);backdrop-filter:blur(24px) saturate(170%);-webkit-backdrop-filter:blur(24px) saturate(170%);border:1px solid rgba(255,255,255,.7);box-shadow:0 26px 64px rgba(30,45,38,.24),inset 0 1px 0 rgba(255,255,255,.85)}
.flyout .ft{font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--ink-3);padding:6px 12px 8px}
.flyout a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:13px;font-size:13.5px;font-weight:600;color:var(--ink-2);transition:.14s;position:relative}
.flyout a svg{width:18px;height:18px;color:var(--azul-claro)}
.flyout a:hover{background:rgba(62,90,79,.1);color:var(--ink);transform:translateX(2px)}
.flyout a.active{background:linear-gradient(90deg,rgba(62,90,79,.16),rgba(62,90,79,.03));color:var(--azul-escuro)}
.topbar{background:rgba(245,248,252,.55);backdrop-filter:blur(22px) saturate(170%);-webkit-backdrop-filter:blur(22px) saturate(170%);border-bottom:1px solid rgba(30,45,38,.05);padding:12px 22px;display:flex;align-items:center;gap:12px;border-radius:var(--r-md)}
.crumb{font-size:12.5px;color:var(--ink-3);font-weight:600}.crumb b{color:var(--ink)}
.tsearch{display:flex;align-items:center;gap:9px;background:rgba(255,255,255,.7);border:1px solid var(--line);border-radius:var(--r-pill);padding:9px 15px;width:250px;box-shadow:var(--sh-1);color:var(--ink-3);font-size:13px}
.tsearch input{border:none;outline:none;background:none;font-family:var(--font);font-size:13px;width:100%;color:var(--ink)}
.tb-ic{width:38px;height:38px;border-radius:12px;background:rgba(255,255,255,.8);border:1px solid var(--line);display:grid;place-items:center;color:var(--ink-2);box-shadow:var(--sh-1);cursor:pointer;position:relative}
.tb-ic:hover{border-color:var(--b300);color:var(--azul-escuro)}
.tb-ic .nd{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--danger);color:#fff;font-size:9.5px;font-weight:800;display:grid;place-items:center;border:2px solid #F5F8FC}
.profile-chip{display:flex;align-items:center;gap:9px;background:rgba(255,255,255,.8);border:1px solid var(--line);border-radius:var(--r-pill);padding:4px 12px 4px 4px;box-shadow:var(--sh-1);cursor:pointer;transition:.15s}
.profile-chip:hover{border-color:var(--b300)}
.profile-chip .pn{font-size:12px;font-weight:700;line-height:1.15}.profile-chip .pn small{display:block;font-weight:500;color:var(--ink-3);font-size:10px}
/* abas */
.tabs{display:flex;border-bottom:1px solid var(--line);flex-wrap:wrap}
.tabs button{border:none;background:none;padding:11px 2px;margin-right:22px;font-family:var(--font);font-weight:700;font-size:13.5px;color:var(--ink-3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:.15s}
.tabs button.on{color:var(--azul-escuro);border-bottom-color:var(--azul-claro)}
.tabpane{display:none}.tabpane.on{display:block;animation:fadeUp .3s}
/* breadcrumb */
.breadcrumb{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-3);flex-wrap:wrap}
.breadcrumb a{font-weight:600}.breadcrumb a:hover{color:var(--azul-claro)}
.breadcrumb .sep{opacity:.5}
.breadcrumb b{color:var(--ink)}
/* paginação */
.pager{display:inline-flex;gap:6px;align-items:center}
.pager button{min-width:36px;height:36px;border-radius:11px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);font-weight:700;font-size:13px;cursor:pointer;transition:.14s;display:grid;place-items:center}
.pager button:hover{border-color:var(--b300);color:var(--azul-escuro)}
.pager button.on{background:var(--azul-claro);color:#fff;border-color:transparent}
.pager button[disabled]{opacity:.4;cursor:not-allowed}
/* steps / stepper horizontal */
.steps{display:flex;gap:0;overflow-x:auto;padding:8px 0 2px}
.step{flex:1;min-width:110px;position:relative;text-align:center;padding:0 4px}
.step::before{content:"";position:absolute;top:19px;right:50%;width:100%;height:2px;background:var(--line)}
.step:first-child::before{display:none}
.step.done::before{background:var(--azul-claro)}
.step.cur::before{background:linear-gradient(90deg,var(--azul-claro),var(--line))}
.step .sdot{width:40px;height:40px;border-radius:50%;margin:0 auto;display:grid;place-items:center;background:var(--surface);border:2px solid var(--line);color:var(--ink-3);position:relative;z-index:1;transition:.2s}
.step .sdot svg{width:18px;height:18px}
.step.done .sdot{background:var(--azul-claro);border-color:var(--azul-claro);color:#fff}
.step.cur .sdot{border-color:var(--azul-claro);color:var(--azul-claro);box-shadow:0 0 0 4px rgba(62,90,79,.16)}
.step .st{font-size:11.5px;font-weight:700;margin-top:9px;line-height:1.2}.step.cur .st{color:var(--azul-escuro)}
.step .sd{font-size:10px;color:var(--ink-3);margin-top:2px}
/* timeline vertical */
.tl{position:relative;padding-left:26px}
.tl::before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;background:var(--line)}
.tl-i{position:relative;padding:0 0 18px}
.tl-i::before{content:"";position:absolute;left:-26px;top:3px;width:16px;height:16px;border-radius:50%;background:var(--surface);border:3px solid var(--azul-claro)}
.tl-i.done::before{background:var(--azul-claro)}
.tl-i .tt{font-weight:700;font-size:13.5px}.tl-i .td{font-size:12px;color:var(--ink-3)}

/* =============================================================================
   16 · DROPDOWN / MENUS (glass)
   ============================================================================= */
.pop{position:absolute;top:52px;right:0;background:rgba(255,255,255,.94);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.7);border-radius:var(--r-md);box-shadow:var(--sh-3);padding:8px;z-index:80;animation:pop .16s}
.pmenu{width:230px}
.pmenu .pu{display:flex;align-items:center;gap:11px;padding:8px 10px 12px;border-bottom:1px solid var(--line-2);margin-bottom:6px}
.menu-list a,.pmenu a{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:11px;font-size:13px;font-weight:600;color:var(--ink-2);cursor:pointer;transition:.12s}
.menu-list a svg,.pmenu a svg{width:17px;height:17px;color:var(--ink-3)}
.menu-list a:hover,.pmenu a:hover{background:var(--b50);color:var(--ink)}
.menu-list a.danger,.pmenu a.danger{color:var(--danger-ink)}.menu-list a.danger:hover{background:var(--danger-bg)}
.menu-sep{height:1px;background:var(--line-2);margin:6px 4px}

/* =============================================================================
   17 · NOTIFICAÇÕES — painel, toast (sup. direito) e snackbar (inferior)
   ============================================================================= */
.npanel{width:330px}
.npanel .nh{display:flex;align-items:center;justify-content:space-between;padding:6px 10px 10px;border-bottom:1px solid var(--line-2)}
.npanel .nh b{font-size:14px}.npanel .nh a{font-size:11.5px;color:var(--azul-claro);font-weight:700;cursor:pointer}
.nlist{max-height:340px;overflow:auto;margin-top:6px}
.nitem{display:flex;gap:11px;align-items:flex-start;padding:10px;border-radius:12px;cursor:pointer;transition:.14s;position:relative}
.nitem:hover{background:var(--b50)}
.nitem .nic{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto}
.nitem .nic svg{width:16px;height:16px}
.nitem b{font-size:12.5px;display:block}.nitem .nt{font-size:11px;color:var(--ink-3)}
.nitem .nu{width:8px;height:8px;border-radius:50%;background:var(--azul-claro);position:absolute;right:10px;top:14px}
.nitem .nx{position:absolute;right:6px;bottom:8px;width:22px;height:22px;border-radius:7px;display:none;place-items:center;color:var(--ink-3);cursor:pointer;transition:.12s}
.nitem:hover .nx{display:grid}
.nitem .nx:hover{background:rgba(224,81,74,.12);color:var(--danger)}
.nitem .nx svg{width:12px;height:12px}
.npanel .nh .nh-acts{display:flex;gap:12px}
.npanel .nh a.danger{color:var(--danger)}
.nitem.read{opacity:.55}.nitem.read .nu{display:none}
/* toast (canto superior/inferior direito) */
.toast-wrap{position:fixed;right:22px;bottom:22px;z-index:200;display:flex;flex-direction:column;gap:10px}
.toast{display:flex;align-items:center;gap:11px;background:rgba(255,255,255,.95);backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);border:1px solid rgba(255,255,255,.75);box-shadow:var(--sh-3);border-radius:14px;padding:12px 16px;min-width:248px;font-size:13px;font-weight:600;color:var(--ink);animation:slideInRight .32s var(--ease)}
.toast .ti{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:0 0 auto}
.toast .ti svg{width:16px;height:16px}
.toast .tx{flex:1;min-width:0}.toast .tx small{display:block;font-weight:500;color:var(--ink-3);font-size:11px}
.toast .tc{cursor:pointer;color:var(--ink-3);display:grid;place-items:center}
.toast.ok .ti{background:var(--ok-bg);color:var(--ok)}.toast.info .ti{background:var(--info-bg);color:var(--info)}.toast.danger .ti{background:var(--danger-bg);color:var(--danger)}.toast.warn .ti{background:var(--warn-bg);color:var(--warn)}
.toast.out{animation:slideOutRight .3s forwards}@keyframes slideOutRight{to{opacity:0;transform:translateX(24px)}}
/* SNACKBAR — barra de ação na parte inferior central da tela */
.snack-wrap{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:210;display:flex;flex-direction:column;gap:10px;align-items:center;width:max-content;max-width:92vw}
.snack{display:flex;align-items:center;gap:14px;background:linear-gradient(160deg,#16284f,#0d1b3c);color:#fff;border:1px solid rgba(255,255,255,.1);box-shadow:0 18px 44px rgba(7,14,34,.42);border-radius:14px;padding:12px 16px;font-size:13.5px;font-weight:600;animation:slideUpFade .34s var(--ease)}
.snack .si{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;flex:0 0 auto;background:rgba(255,255,255,.12)}
.snack .si svg{width:16px;height:16px}
.snack.ok .si{background:rgba(46,125,91,.3);color:#7ee6bb}
.snack.danger .si{background:rgba(224,81,74,.3);color:#ffb3ad}
.snack .stx{flex:1}
.snack .sact{background:none;border:none;color:var(--cyan);font-weight:800;font-size:13px;cursor:pointer;padding:4px 8px;border-radius:8px;transition:.14s}
.snack .sact:hover{background:rgba(184,92,58,.14)}
.snack .sx{cursor:pointer;opacity:.6;display:grid;place-items:center}.snack .sx:hover{opacity:1}
.snack.out{animation:snackOut .3s forwards}@keyframes snackOut{to{opacity:0;transform:translateY(16px)}}

/* =============================================================================
   18 · NOTAS / CALLOUTS / BANNERS / TOOLTIP
   ============================================================================= */
.note{background:var(--b50);border:1px solid var(--b200);border-left:3px solid var(--azul-claro);border-radius:0 12px 12px 0;padding:14px 18px;font-size:13px;color:var(--ink-2)}.note b{color:var(--azul-escuro)}
.callout{display:flex;gap:12px;align-items:flex-start;border-radius:var(--r-md);padding:14px 16px;font-size:13px}
.callout .ci{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:0 0 auto}.callout .ci svg{width:16px;height:16px}
.callout b{display:block;margin-bottom:2px}
.callout.ok{background:var(--ok-bg);color:var(--ok-ink)}.callout.ok .ci{background:rgba(46,125,91,.18);color:var(--ok)}
.callout.warn{background:var(--warn-bg);color:var(--warn-ink)}.callout.warn .ci{background:rgba(208,138,11,.18);color:var(--warn)}
.callout.danger{background:var(--danger-bg);color:var(--danger-ink)}.callout.danger .ci{background:rgba(224,81,74,.18);color:var(--danger)}
.callout.info{background:var(--info-bg);color:var(--info-ink)}.callout.info .ci{background:rgba(62,90,79,.16);color:var(--info)}
.banner{display:flex;align-items:center;gap:12px;border-radius:var(--r-md);padding:13px 18px;font-size:13px;font-weight:600;color:#fff;background:linear-gradient(120deg,#8FA699,#24362F)}
.banner .bx{margin-left:auto;cursor:pointer;opacity:.8}.banner .bx:hover{opacity:1}
.tip{position:relative;display:inline-flex}
.tip .tipbox{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(4px);background:#24362F;color:#fff;font-size:11px;font-weight:600;padding:6px 10px;border-radius:8px;white-space:nowrap;opacity:0;pointer-events:none;transition:.16s;box-shadow:var(--sh-2);z-index:10}
.tip .tipbox::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:#24362F}
.tip:hover .tipbox{opacity:1;transform:translateX(-50%) translateY(0)}
.float-glass{background:rgba(255,255,255,.74);backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);border:1px solid rgba(255,255,255,.78);box-shadow:var(--sh-3);border-radius:14px;padding:7px 11px;font-size:11px;display:inline-block}

/* =============================================================================
   19 · MODAIS / POPUPS / CONFIRMAÇÕES
   ============================================================================= */
.ov{position:fixed;inset:0;z-index:150;background:rgba(10,19,48,.5);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn .2s}
.modal{width:100%;max-width:560px;background:var(--surface);border:1px solid rgba(255,255,255,.7);border-radius:var(--r-lg);box-shadow:var(--sh-3);max-height:88vh;overflow:auto;animation:modalIn .28s var(--ease)}
.modal.sm{max-width:420px}.modal.lg{max-width:760px}.modal.xl{max-width:960px}
@keyframes modalIn{from{opacity:0;transform:translateY(18px) scale(.96)}to{opacity:1;transform:none}}
.modal .mh{display:flex;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid var(--line-2)}
.modal .mh h3{flex:1}.modal .mh .mx{cursor:pointer;color:var(--ink-3);display:grid;place-items:center}
.modal .mb{padding:20px 22px}.modal .mf{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px;border-top:1px solid var(--line-2);background:var(--surface-2)}
/* confirm / aviso centralizado */
.confirm{text-align:center;padding:30px 26px 24px}
.confirm .cic{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;margin:0 auto 16px}
.confirm .cic svg{width:30px;height:30px}
.confirm.danger .cic{background:var(--danger-bg);color:var(--danger)}
.confirm.warn .cic{background:var(--warn-bg);color:var(--warn)}
.confirm.ok .cic{background:var(--ok-bg);color:var(--ok)}
.confirm.info .cic{background:var(--info-bg);color:var(--info)}
.confirm h3{font-size:18px;margin-bottom:6px}
.confirm p{font-size:13.5px;max-width:340px;margin:0 auto}
.confirm .cf{display:flex;gap:10px;justify-content:center;margin-top:22px}

/* =============================================================================
   20 · SKELETON / LOADERS / ESTADOS VAZIOS
   ============================================================================= */
.skel{background:linear-gradient(100deg,var(--line-2) 30%,#e9eef5 50%,var(--line-2) 70%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:8px}
.skel.line{height:12px;margin-bottom:8px}.skel.line.w60{width:60%}.skel.line.w40{width:40%}
.skel.circle{width:42px;height:42px;border-radius:50%}
.skel.block{height:80px;border-radius:14px}
.spinner{width:30px;height:30px;border:3px solid var(--b100);border-top-color:var(--azul-claro);border-radius:50%;animation:spin .8s linear infinite}
.dots3{display:inline-flex;gap:5px}.dots3 i{width:8px;height:8px;border-radius:50%;background:var(--azul-claro);animation:floaty 1s infinite}
.dots3 i:nth-child(2){animation-delay:.15s}.dots3 i:nth-child(3){animation-delay:.3s}
.loader-ov{position:absolute;inset:0;background:rgba(255,255,255,.6);backdrop-filter:blur(2px);display:grid;place-items:center;border-radius:inherit;z-index:5}
.empty{text-align:center;padding:48px 20px;color:var(--ink-3)}
.empty .eic{width:64px;height:64px;border-radius:18px;background:var(--b50);color:var(--azul-claro);display:grid;place-items:center;margin:0 auto 14px}.empty .eic svg{width:30px;height:30px}
.empty b{display:block;color:var(--ink);font-size:15px;margin:0 0 4px}

/* =============================================================================
   21 · AUTH / LOGIN
   ============================================================================= */
.auth{min-height:540px;display:grid;grid-template-columns:1.15fr 1fr;background:#101214;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-3)}
.auth-art{position:relative;overflow:hidden;color:#fff;padding:48px 50px;display:flex;flex-direction:column;
  background:radial-gradient(90% 110% at 85% -10%,rgba(184,92,58,.28),transparent 46%),radial-gradient(120% 150% at 10% 110%,rgba(184,92,58,.4),transparent 52%),radial-gradient(150% 170% at 88% 18%,#8FA699,#2F4740 34%,#24362F 62%,#101214 100%)}
.auth-art::before{content:"";position:absolute;inset:0;opacity:.55;background-image:linear-gradient(rgba(255,255,255,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.055) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:radial-gradient(120% 100% at 78% 4%,#000 28%,transparent 76%);mask-image:radial-gradient(120% 100% at 78% 4%,#000 28%,transparent 76%)}
.auth-art .orbit{position:absolute;right:-90px;top:80px;width:360px;height:360px;border-radius:50%;border:1px solid rgba(255,255,255,.14)}
.auth-art .orbit:nth-of-type(2){width:520px;height:520px;right:-160px;top:0;opacity:.5}
.auth-art .orbit::after{content:"";position:absolute;top:50%;left:-6px;width:11px;height:11px;border-radius:50%;background:var(--cyan);box-shadow:0 0 18px var(--cyan);animation:spin 16s linear infinite;transform-origin:186px 0}
.auth-art h1{font-size:38px;letter-spacing:-1.4px;line-height:1.05;margin:18px 0 14px;position:relative}
.auth-art p{color:#cfe3f6;position:relative;font-size:14.5px;max-width:420px;line-height:1.6}
.auth-stats{display:flex;margin-top:auto;position:relative;border-top:1px solid rgba(255,255,255,.14);padding-top:22px}
.auth-stats .s{padding:0 24px;position:relative}.auth-stats .s:first-child{padding-left:0}
.auth-stats .s+.s::before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:1px;background:rgba(255,255,255,.14)}
.auth-stats .s b{display:block;font-size:22px;font-weight:800;background:linear-gradient(180deg,#fff,#C9CED4);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.auth-stats .s span{font-size:10px;color:#9fbbdd;letter-spacing:.5px}
.auth-form{display:flex;align-items:center;justify-content:center;padding:40px;background:var(--bg)}
.auth-box{width:100%;max-width:360px;animation:fadeUp .6s}
.auth-box .blogo{display:flex;align-items:center;gap:11px;margin-bottom:26px}
.auth-box .blogo .lg{width:40px;height:40px;border-radius:12px;background:linear-gradient(160deg,#5F7C6D,#8FA699);display:grid;place-items:center;color:#fff;font-weight:800}
.auth-box h2{font-size:24px;margin-bottom:4px}
@media (max-width:840px){.auth{grid-template-columns:1fr}.auth-art{display:none}}

/* =============================================================================
   23 · CAMPOS AVANÇADOS — select custom, dropdown, data, hora, busca
   ============================================================================= */
/* select com aparência personalizada (sem seta do navegador) */
select.inp,.field select{appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;padding-right:38px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2374819b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center}
/* date/time personalizados */
input[type=date].inp,input[type=time].inp,input[type=datetime-local].inp,input[type=month].inp{cursor:pointer}
input[type=date]::-webkit-calendar-picker-indicator,input[type=time]::-webkit-calendar-picker-indicator,input[type=datetime-local]::-webkit-calendar-picker-indicator,input[type=month]::-webkit-calendar-picker-indicator{
  opacity:0;cursor:pointer;position:absolute;right:0;width:42px;height:100%}
.field .with-cal{position:relative}
.field .with-cal svg{position:absolute;right:13px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--azul-claro);pointer-events:none}
/* dropdown / combobox custom (listbox controlado por JS) */
.dd{position:relative}
.dd-btn{display:flex;align-items:center;gap:10px;width:100%;font-family:var(--font);font-size:13.5px;padding:11px 13px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--ink);cursor:pointer;transition:.15s;text-align:left}
.dd-btn .chev{margin-left:auto;color:var(--ink-3);transition:.2s;flex:0 0 auto}
.dd-btn .ph{color:var(--ink-3)}
.dd.open .dd-btn{border-color:var(--azul-claro);box-shadow:0 0 0 3px rgba(62,90,79,.15)}
.dd.open .dd-btn .chev{transform:rotate(180deg)}
.dd-pop{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--surface);border:1px solid var(--line);border-radius:13px;box-shadow:var(--sh-3);padding:6px;z-index:40;display:none;animation:pop .14s;max-height:248px;overflow:auto}
.dd.open .dd-pop{display:block}
.dd-search{margin:2px 2px 6px;display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:9px;padding:7px 10px;color:var(--ink-3)}
.dd-search input{border:none;outline:none;background:none;font-family:var(--font);font-size:12.5px;width:100%;color:var(--ink)}
.dd-opt{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:10px;font-size:13px;cursor:pointer;color:var(--ink-2);transition:.1s}
.dd-opt svg{width:16px;height:16px;color:var(--ink-3)}
.dd-opt:hover{background:var(--b50)}
.dd-opt.sel{background:var(--b50);color:var(--azul-escuro);font-weight:700}
.dd-opt .ck{margin-left:auto;color:var(--azul-claro);opacity:0}.dd-opt.sel .ck{opacity:1}
.dd-group{font-size:10px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--ink-3);padding:8px 11px 4px}
/* combo = dd com busca (digitar para filtrar) — G.combo */
.combo{width:100%}
.combo .cb-lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.combo .dd-pop{z-index:80}
.combo .cb-list{max-height:196px;overflow:auto}
.combo .dd-btn .chev{width:16px;height:16px}
.combo.sm .dd-btn{padding:8px 11px;font-size:12.5px}

/* =============================================================================
   24 · CALENDÁRIO (date picker visual)
   ============================================================================= */
.cal{width:300px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--sh-2);padding:14px}
.cal-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.cal-h b{font-size:13.5px}
.cal-nav{width:30px;height:30px;border-radius:9px;border:1px solid var(--line);display:grid;place-items:center;cursor:pointer;color:var(--ink-2);transition:.14s}
.cal-nav:hover{border-color:var(--b300);color:var(--azul-escuro)}.cal-nav svg{width:15px;height:15px}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal-grid .dow{font-size:10px;font-weight:800;color:var(--ink-3);text-align:center;padding:4px 0}
.cal-d{aspect-ratio:1;display:grid;place-items:center;border-radius:9px;font-size:12.5px;color:var(--ink-2);cursor:pointer;transition:.12s;position:relative}
.cal-d:hover{background:var(--b50)}
.cal-d.out{color:var(--ink-3);opacity:.4}
.cal-d.today{border:1px solid var(--b300);font-weight:700;color:var(--azul-escuro)}
.cal-d.sel{background:var(--azul-claro);color:#fff;font-weight:700;box-shadow:0 4px 12px rgba(62,90,79,.4)}
.cal-d.range{background:var(--b50);border-radius:0}
.cal-d.ev::after{content:"";position:absolute;bottom:5px;left:50%;transform:translateX(-50%);width:4px;height:4px;border-radius:50%;background:var(--accent)}
.cal-d.sel.ev::after{background:#fff}

/* =============================================================================
   25 · AGENDA / LISTA DE TAREFAS
   ============================================================================= */
.agenda{display:flex;flex-direction:column;gap:8px}
.ag-day{font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-3);margin:8px 0 2px}
.ag-item{display:flex;gap:12px;padding:11px 12px;border:1px solid var(--line);border-radius:13px;background:var(--surface);transition:.14s;cursor:pointer;align-items:center}
.ag-item:hover{border-color:var(--b200);box-shadow:var(--sh-1);transform:translateX(2px)}
.ag-item.done{opacity:.6}.ag-item.done .ag-body b{text-decoration:line-through}
.ag-time{width:50px;flex:0 0 auto;text-align:center}
.ag-time b{display:block;font-size:13px;color:var(--azul-escuro);line-height:1.1}.ag-time small{font-size:9px;color:var(--ink-3);text-transform:uppercase}
.ag-bar{width:3px;align-self:stretch;border-radius:3px;flex:0 0 auto}
.ag-body{flex:1;min-width:0}.ag-body b{font-size:13px;display:block}
.ag-body .am{font-size:11px;color:var(--ink-3);display:flex;gap:10px;margin-top:3px;align-items:center;flex-wrap:wrap}
.ag-body .am svg{width:12px;height:12px}
.ag-check{width:22px;height:22px;border-radius:7px;border:2px solid var(--line);display:grid;place-items:center;flex:0 0 auto;cursor:pointer;color:#fff;transition:.14s}
.ag-check svg{width:13px;height:13px;opacity:0}
.ag-item.done .ag-check{background:var(--ok);border-color:var(--ok)}.ag-item.done .ag-check svg{opacity:1}

/* =============================================================================
   26 · GRÁFICOS (helpers SVG/CSS)
   ============================================================================= */
.chart{width:100%;display:block;overflow:visible}
.chart .draw{stroke-dasharray:1000;stroke-dashoffset:1000;animation:drawIn 1.4s var(--ease) forwards}
.chart .gbar{transform-origin:bottom;animation:growBar .8s var(--ease) both}
.donut-val{text-align:center}.donut-val .v{font-size:24px;font-weight:800;letter-spacing:-1px}.donut-val .l{font-size:10.5px;color:var(--ink-3)}
.bars{display:flex;align-items:flex-end;gap:8px;height:120px}
.bars .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.bars .col i{width:100%;max-width:34px;border-radius:7px 7px 4px 4px;background:linear-gradient(180deg,#8FA699,#8FA699);transform-origin:bottom;animation:growBar .8s var(--ease) both}
.bars .col i.alt{background:linear-gradient(180deg,#5F7C6D,#B85C3A)}
.bars .col span{font-size:10px;color:var(--ink-3);font-weight:700}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-2);font-weight:600}
.legend i{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:5px;vertical-align:middle}
.spark{height:40px;width:100%}
.heat{display:grid;grid-template-columns:repeat(auto-fill,minmax(14px,1fr));gap:4px}
.heat i{aspect-ratio:1;border-radius:4px;background:var(--b100)}
.heat i.l1{background:#D5E0D9}.heat i.l2{background:#B7C9BE}.heat i.l3{background:#8FA699}.heat i.l4{background:#8FA699}

/* =============================================================================
   27 · ÍCONES GRANDES & DUOTONE (2 cores)
   ============================================================================= */
.ic-tile{width:64px;height:64px;border-radius:20px;display:grid;place-items:center;background:linear-gradient(160deg,#EEF2EF,#DCE5DF);color:var(--azul-claro);box-shadow:inset 0 0 0 1px rgba(62,90,79,.12),var(--hl)}
.ic-tile svg{width:30px;height:30px}
.ic-tile.deep{background:linear-gradient(160deg,#16284f,#0d1b3c);color:#fff;box-shadow:var(--sh-2)}
.ic-tile.accent{background:linear-gradient(160deg,#D8F7EE,#BEF0DF);color:var(--ok)}
.ic-tile.violet{background:linear-gradient(160deg,#EBE8FD,#DCD6FB);color:var(--violet)}
.ic-tile.warn{background:linear-gradient(160deg,#FBF1DA,#F6E5B8);color:var(--warn)}
/* duotone: cor primária = currentColor (traço), secundária = preenchimento suave */
.ic2{color:var(--azul-claro)}
.ic2 .sec{fill:currentColor;opacity:.18;stroke:none}
.ic2 .pri{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* =============================================================================
   28 · CATÁLOGO DE ANIMAÇÕES (ícones e elementos animados)
   ============================================================================= */
@keyframes a-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.14)}}
@keyframes a-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes a-wiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-11deg)}75%{transform:rotate(11deg)}}
@keyframes a-ring{0%,50%,100%{transform:rotate(0)}10%,30%{transform:rotate(13deg)}20%,40%{transform:rotate(-13deg)}}
@keyframes a-heartbeat{0%,100%{transform:scale(1)}15%{transform:scale(1.2)}30%{transform:scale(1)}45%{transform:scale(1.14)}}
@keyframes a-pop-in{0%{transform:scale(0);opacity:0}70%{transform:scale(1.12)}100%{transform:scale(1);opacity:1}}
@keyframes a-stroke{to{stroke-dashoffset:0}}
@keyframes a-shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-9px)}40%{transform:translateX(9px)}60%{transform:translateX(-6px)}80%{transform:translateX(6px)}}
@keyframes a-jelly{0%,100%{transform:scale(1,1)}30%{transform:scale(1.2,.8)}50%{transform:scale(.85,1.15)}70%{transform:scale(1.05,.95)}}
@keyframes a-orbit{to{transform:rotate(360deg)}}
@keyframes a-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
.ai-pulse{animation:a-pulse 1.6s ease-in-out infinite}
.ai-bounce{animation:a-bounce 1.2s ease-in-out infinite}
.ai-wiggle{animation:a-wiggle 1.5s ease-in-out infinite}
.ai-ring{animation:a-ring 2.4s ease-in-out infinite;transform-origin:top center}
.ai-heartbeat{animation:a-heartbeat 1.5s ease-in-out infinite}
.ai-spin-slow{animation:spin 3.4s linear infinite}
.ai-float{animation:floaty 4s ease-in-out infinite}
.ai-jelly{animation:a-jelly 1.6s ease-in-out infinite}
.ai-pop{animation:a-pop-in .5s var(--ease) both}
.shake{animation:a-shake .5s}
.gradient-move{background-size:200% 200%;animation:a-gradient 6s ease infinite}

/* ---- 10 animações extras (úteis no segmento) ---- */
@keyframes a-pendulum{0%,100%{transform:rotate(-22deg)}50%{transform:rotate(22deg)}}
@keyframes a-tada{0%{transform:scale(1)}10%,20%{transform:scale(.9) rotate(-6deg)}30%,50%,70%,90%{transform:scale(1.12) rotate(6deg)}40%,60%,80%{transform:scale(1.12) rotate(-6deg)}100%{transform:scale(1) rotate(0)}}
@keyframes a-swing{0%,100%{transform:rotate(0)}30%{transform:rotate(11deg)}60%{transform:rotate(-7deg)}80%{transform:rotate(4deg)}}
@keyframes a-flip{0%,100%{transform:rotateY(0)}50%{transform:rotateY(180deg)}}
@keyframes a-glow{0%,100%{filter:drop-shadow(0 0 0 rgba(62,90,79,0))}50%{filter:drop-shadow(0 0 7px rgba(62,90,79,.75))}}
@keyframes a-rise{0%{transform:translateY(5px);opacity:.4}50%{opacity:1}100%{transform:translateY(-6px);opacity:0}}
@keyframes a-blink{0%,100%{opacity:1}50%{opacity:.2}}
@keyframes a-rubber{0%{transform:scale(1)}30%{transform:scale(1.25,.75)}45%{transform:scale(.85,1.15)}60%{transform:scale(1.1,.9)}100%{transform:scale(1)}}
@keyframes a-nudge{0%,100%{transform:translateX(0)}50%{transform:translateX(5px)}}
@keyframes a-scan{0%{transform:translate(0,0)}25%{transform:translate(3px,-3px)}50%{transform:translate(0,-4px)}75%{transform:translate(-3px,-2px)}100%{transform:translate(0,0)}}
.ai-pendulum{animation:a-pendulum 2.2s ease-in-out infinite;transform-origin:top center}
.ai-tada{animation:a-tada 2.4s ease-in-out infinite}
.ai-swing{animation:a-swing 2.2s ease-in-out infinite;transform-origin:top left}
.ai-flip{animation:a-flip 2.6s ease-in-out infinite}
.ai-glow{animation:a-glow 1.8s ease-in-out infinite}
.ai-rise{animation:a-rise 1.6s ease-in-out infinite}
.ai-blink{animation:a-blink 1.4s ease-in-out infinite}
.ai-rubber{animation:a-rubber 2s ease-in-out infinite}
.ai-nudge{animation:a-nudge 1.1s ease-in-out infinite}
.ai-scan{animation:a-scan 2.4s ease-in-out infinite}

/* =============================================================================
   29 · ANIMAÇÕES DE LOGIN (sucesso / erro) — desenho de traço
   ============================================================================= */
.result{display:grid;place-items:center;gap:18px;text-align:center}
.result .ring{width:104px;height:104px;border-radius:50%;display:grid;place-items:center;position:relative}
.result.ok .ring{background:var(--ok-bg)}
.result.err .ring{background:var(--danger-bg)}
.result svg{width:104px;height:104px}
.result .ring circle{fill:none;stroke-width:3.5;stroke-linecap:round}
.result.ok .ring circle{stroke:var(--ok);stroke-dasharray:295;stroke-dashoffset:295;animation:a-stroke .6s var(--ease) forwards}
.result.err .ring circle{stroke:var(--danger);stroke-dasharray:295;stroke-dashoffset:295;animation:a-stroke .6s var(--ease) forwards}
.result .ring path{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.result.ok .ring path{stroke:var(--ok);stroke-dasharray:60;stroke-dashoffset:60;animation:a-stroke .45s .5s var(--ease) forwards}
.result.err .ring path{stroke:var(--danger);stroke-dasharray:40;stroke-dashoffset:40;animation:a-stroke .35s .5s var(--ease) forwards}
.result.err .ring{animation:a-shake .5s .6s}

/* =============================================================================
   30 · NAV ENTRE PÁGINAS DO DESIGN SYSTEM
   ============================================================================= */
.ds-top{position:sticky;top:0;z-index:90;display:flex;align-items:center;gap:8px;padding:12px 22px;flex-wrap:wrap;
  background:rgba(245,248,252,.75);backdrop-filter:blur(20px) saturate(170%);-webkit-backdrop-filter:blur(20px) saturate(170%);border-bottom:1px solid rgba(30,45,38,.06)}
.ds-top .dsb{display:flex;align-items:center;gap:9px;margin-right:14px}
.ds-top .dsb .lg{width:32px;height:32px;border-radius:10px;background:linear-gradient(160deg,#5F7C6D,#8FA699);display:grid;place-items:center;color:#fff;font-weight:800;font-size:14px}
.ds-top .dsb b{font-size:13.5px;letter-spacing:-.2px}
.ds-top a.tlink{font-size:12.5px;font-weight:700;color:var(--ink-2);padding:8px 13px;border-radius:var(--r-pill);transition:.14s}
.ds-top a.tlink:hover{background:var(--b50);color:var(--azul-escuro)}
.ds-top a.tlink.on{background:var(--azul-claro);color:#fff}

/* =============================================================================
   31 · RESPONSIVO
   ============================================================================= */
/* shell: margem do conteúdo controlável por media query (corrige margem-fantasma no mobile) */
.shell-main{margin-left:92px}
.navtoggle{display:none;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);cursor:pointer;margin-right:8px;flex:0 0 auto}
.navtoggle .icon{width:18px;height:18px}
.rail-backdrop{display:none}
/* kanban da execução: grid responsivo (sem 5 colunas fixas no mobile) */
.exec-kan{display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}

@media (max-width:860px){
  .railwrap{display:none}
  .tsearch{display:none}
  .shell-main{margin-left:0}
  .navtoggle{display:inline-flex}
  body.nav-open .railwrap{display:flex !important;position:fixed;top:0;bottom:0;left:0;z-index:200;box-shadow:var(--sh-3)}
  body.nav-open .rail-backdrop{display:block;position:fixed;inset:0;background:rgba(8,20,40,.45);z-index:150}
  .exec-kan{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rpt-kpis{grid-template-columns:repeat(2,1fr)}
  .rpt-head,.rpt-body,.rpt-foot{padding-left:18px;padding-right:18px}
}
@media (max-width:520px){
  .exec-kan{grid-template-columns:1fr}
  .rpt-kpis{grid-template-columns:1fr}
}

/* =============================================================================
   32 · RELATÓRIO — folha .sheet + .rpt-* (padrão oficial; preview + PDF)
   ============================================================================= */
.rpt-wrap{max-width:900px;margin:0 auto;padding:4px}
.sheet{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh-3);overflow:hidden}
.rpt-head{padding:30px 36px 24px;color:#fff;position:relative;overflow:hidden;background:radial-gradient(120% 160% at 90% -20%,rgba(184,92,58,.3),transparent 50%),linear-gradient(135deg,#24362F,#2F4740 60%,#8FA699)}
.rpt-head::before{content:"";position:absolute;inset:0;opacity:.4;background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);background-size:34px 34px}
.rpt-head .top{display:flex;align-items:center;justify-content:space-between;position:relative;margin-bottom:22px}
.rpt-logo{display:flex;align-items:center;gap:11px}
.rpt-logo .lg{width:42px;height:42px;border-radius:12px;background:#F3F1EA;box-shadow:inset 0 0 0 1px rgba(36,54,47,.12);display:grid;place-items:center;padding:7px 6px}
.rpt-logo b{font-size:16px;letter-spacing:-.3px}.rpt-logo small{display:block;font-size:10px;color:#C9CED4;letter-spacing:1px}
.rpt-conf{font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);padding:5px 11px;border-radius:var(--r-pill)}
.rpt-head h1{font-size:24px;letter-spacing:-.8px;position:relative;margin:0;color:#FFFFFF}
.rpt-head .meta{display:flex;gap:26px;margin-top:14px;position:relative;font-size:12px;color:#D5E0D9;flex-wrap:wrap}
.rpt-head .meta span{display:block}.rpt-head .meta b{display:block;color:#fff;font-size:13px}
.rpt-body{padding:28px 36px}
.rpt-sec{font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--azul-claro);display:flex;align-items:center;gap:8px;margin:26px 0 14px}
.rpt-sec::after{content:"";flex:1;height:1px;background:var(--line)}
.rpt-sec:first-child{margin-top:0}.rpt-sec .icon{color:var(--azul-claro);width:14px;height:14px}
.rpt-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.rpt-kpi{border:1px solid var(--line);border-radius:13px;padding:14px;background:var(--surface-2);position:relative;overflow:hidden}
.rpt-kpi .l{font-size:10.5px;color:var(--ink-3);font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.rpt-kpi .v{font-size:22px;font-weight:800;letter-spacing:-.8px;margin-top:4px;color:var(--azul-escuro)}
.rpt-foot{padding:16px 36px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--ink-3);background:var(--surface-2)}
.sig{display:flex;gap:40px;margin-top:30px}
.sig .s{flex:1;text-align:center}.sig .s .ln{border-top:1.5px solid var(--ink-2);margin-bottom:6px}.sig .s small{font-size:11px;color:var(--ink-3)}
.rpt-toolbar{display:flex;gap:8px;align-items:center;justify-content:flex-end;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:12px;box-shadow:var(--sh-1)}
@page{size:A4;margin:14mm 12mm}
@media print{
  .rpt-toolbar,.railwrap,.topbar,.navtoggle,.rail-backdrop{display:none !important}
  .rpt-wrap{max-width:none;margin:0;padding:0}
  body{background:#fff}
  .sheet{max-width:none;width:100%;margin:0;border:none;border-radius:0;box-shadow:none}
  .rpt-head{border-radius:0}
  *{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important}
  .rpt-kpis,.sig,table,tr,.rpt-kpi{break-inside:avoid;page-break-inside:avoid}
  .rpt-sec{break-after:avoid}
}

/* =============================================================================
   40 · CAMPOS SEM PELE DO NAVEGADOR (ui-fields.js)
   O campo nativo continua no DOM (fonte da verdade) — só fica invisível.
   ============================================================================= */
.fskin-native{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;pointer-events:none;margin:0;border:0;padding:0;z-index:-1}
/* popup ancorado no body: dentro do modal (overflow:auto) ele seria recortado */
.pop-fixed{position:fixed !important;display:block !important;right:auto !important;bottom:auto !important;z-index:9990}

/* ---- select ---- */
.fskin-sel{width:100%}
.fskin-sel .dd-btn .cb-lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fskin-sel .dd-btn .cb-lbl.ph{color:var(--ink-3)}
.fskin-sel .dd-btn .chev{width:16px;height:16px}
.dd .cb-list{max-height:230px;overflow:auto}
.dd-opt.active{background:var(--b50)}
.dd-opt.is-disabled{opacity:.45;cursor:not-allowed}
.dd-vazio{font-size:12.5px;color:var(--ink-3);padding:10px 11px}
.dd.is-disabled .dd-btn,.fskin-file.is-disabled{opacity:.6;cursor:not-allowed}

/* ---- date ---- */
.fskin-date{width:100%}
.fskin-datebox{cursor:text;padding-right:11px}
.fskin-date.open .fskin-datebox,.fskin-date:focus-within .fskin-datebox{border-color:var(--azul-claro);box-shadow:0 0 0 3px rgba(62,90,79,.15)}
/* tipo+classe para vencer o `.field input{padding:11px 13px}` — o padding é do .dd-btn */
.fskin-datebox input.fskin-datetxt{flex:1;min-width:0;border:none;outline:none;box-shadow:none;background:none;
  font-family:var(--font);font-size:inherit;color:var(--ink);padding:0;margin:0;width:100%;height:auto;border-radius:0}
.fskin-datetxt::placeholder{color:var(--ink-3)}
.fskin-dateic{border:none;background:none;padding:0;display:grid;place-items:center;cursor:pointer;color:var(--azul-claro);flex:0 0 auto}
.fskin-dateic svg{width:16px;height:16px}
.cal-pop{padding:0;overflow:visible;max-height:none}
.cal-pop .cal{width:100%;border:none;box-shadow:none;padding:12px}
.cal-d.off{opacity:.3;cursor:not-allowed;text-decoration:line-through}
.cal-d.off:hover{background:none}
.cal-f{display:flex;justify-content:space-between;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line-2)}

/* ---- file ---- */
.fskin-file{position:relative;display:flex;align-items:center;gap:10px;width:100%;cursor:pointer;
  border:1px dashed var(--line);border-radius:11px;padding:8px 11px;background:var(--surface);transition:.15s}
.fskin-file:hover{border-color:var(--b300);background:var(--b50)}
.fskin-file .ff-btn{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;font-size:12.5px;font-weight:700;color:var(--azul-escuro);
  background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:7px 12px}
.fskin-file .ff-btn svg{width:14px;height:14px}
.fskin-file .ff-nome{flex:1;min-width:0;font-size:12.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fskin-file .ff-nome.vazio{color:var(--ink-3)}

/* ---- checkbox / radio soltos (fora do padrão .opt) ----
   seletor com tipo+classe para vencer o `.field input{width:100%}` do formulário */
input[type="checkbox"].fskin-check,input[type="radio"].fskin-check{
  appearance:none;-webkit-appearance:none;width:19px;height:19px;min-width:19px;flex:0 0 auto;margin:0;padding:0;cursor:pointer;
  border:2px solid var(--line);border-radius:6px;background:var(--surface);box-shadow:none;transition:.15s;display:inline-grid;place-items:center;vertical-align:-4px}
input[type="checkbox"].fskin-check:hover,input[type="radio"].fskin-check:hover{border-color:var(--b300)}
input[type="checkbox"].fskin-check:checked{background:var(--azul-claro);border-color:var(--azul-claro);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");
  background-size:13px;background-position:center;background-repeat:no-repeat}
input[type="checkbox"].fskin-check:focus-visible,input[type="radio"].fskin-check:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(62,90,79,.2)}
input[type="checkbox"].fskin-check:disabled,input[type="radio"].fskin-check:disabled{opacity:.45;cursor:not-allowed}
input[type="radio"].fskin-check{border-radius:50%}
input[type="radio"].fskin-check:checked{background:var(--azul-claro);border-color:var(--azul-claro);background-image:radial-gradient(circle,#fff 0 3.5px,transparent 4px)}

/* ---- number: sem as setinhas do navegador ---- */
input[type="number"].inp{-moz-appearance:textfield}
input[type="number"].inp::-webkit-outer-spin-button,input[type="number"].inp::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* ---- color: amostra com a moldura do sistema ---- */
input[type="color"]{-webkit-appearance:none;appearance:none;border:1px solid var(--line);border-radius:10px;background:var(--surface);cursor:pointer;padding:3px}
input[type="color"]::-webkit-color-swatch-wrapper{padding:0}
input[type="color"]::-webkit-color-swatch{border:none;border-radius:7px}
input[type="color"]::-moz-color-swatch{border:none;border-radius:7px}

/* combo-multi: chips no botão */
.combo-multi .dd-btn{flex-wrap:wrap;min-height:42px;padding-top:6px;padding-bottom:6px;row-gap:5px}
.cbm-chips{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.cbm-chip{display:inline-flex;align-items:center;gap:5px;background:var(--b50);border:1px solid var(--line);color:var(--azul-escuro);border-radius:999px;padding:3px 6px 3px 10px;font-size:12px;font-weight:600;max-width:100%}
.cbm-chip .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:160px}
.cbm-chip .x{display:grid;place-items:center;width:17px;height:17px;border-radius:50%;cursor:pointer;color:var(--ink-3);flex:0 0 auto}
.cbm-chip .x:hover{background:rgba(224,81,74,.15);color:var(--danger)}
.cbm-chip .x svg{width:10px;height:10px}
.cbm-mais{font-size:11.5px;font-weight:700;color:var(--ink-3);padding:0 3px}


/* richText: editor leve de descrição (card/projeto) */
.rt-bar{display:flex;gap:2px;align-items:center;border:1px solid var(--line);border-bottom:none;border-radius:11px 11px 0 0;background:var(--surface-2);padding:5px 7px}
.rt-bar button{border:none;background:none;min-width:28px;height:26px;padding:0 6px;border-radius:7px;cursor:pointer;color:var(--ink-2);font-size:12.5px;font-family:var(--font);display:grid;place-items:center}
.rt-bar button:hover{background:var(--b50);color:var(--azul-escuro)}
.rt-bar button svg{width:13px;height:13px}
.rt-sep{width:1px;height:16px;background:var(--line);margin:0 5px}
.rt-edit{min-height:150px;max-height:420px;overflow:auto;border:1px solid var(--line);border-radius:0 0 11px 11px;background:var(--surface);padding:12px 14px;font-size:13.5px;line-height:1.6;color:var(--ink)}
.rt-edit.ro{border-radius:11px;min-height:0;background:var(--surface-2)}
.rt-edit:focus{outline:none;border-color:var(--azul-claro);box-shadow:0 0 0 3px rgba(62,90,79,.15)}
.rt-edit:empty::before{content:attr(data-ph);color:var(--ink-3)}
.rt-edit h3,.rt-edit h4{margin:10px 0 4px;font-size:15px}
.rt-edit ul,.rt-edit ol{padding-left:22px;margin:4px 0}
.rt-edit p{margin:0 0 6px}
.rt-edit a{color:var(--azul-claro)}
.rt-edit blockquote{border-left:3px solid var(--line);margin:6px 0;padding:2px 12px;color:var(--ink-2)}

/* anexos: linha com miniatura */
.ax-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line-2)}
.ax-ic{width:38px;height:38px;border-radius:9px;background:var(--surface-2);border:1px solid var(--line-2);display:grid;place-items:center;color:var(--ink-3);flex:0 0 auto;background-size:cover;background-position:center}
.ax-ic svg{width:16px;height:16px}
.ax-ic.img svg{display:none}

/* chat do item (tarefa/demanda/projeto) */
.chat-lista{max-height:360px;overflow:auto;display:flex;flex-direction:column;gap:10px;padding:4px 2px 8px}
.chat-msg{display:flex;gap:9px;align-items:flex-end;max-width:88%}
.chat-msg.meu{align-self:flex-end;flex-direction:row-reverse}
.chat-bal{background:var(--surface-2);border:1px solid var(--line-2);border-radius:14px 14px 14px 4px;padding:9px 12px;min-width:0}
.chat-msg.meu .chat-bal{background:var(--b50);border-color:var(--line);border-radius:14px 14px 4px 14px}
.chat-topo{display:flex;gap:10px;align-items:baseline;margin-bottom:3px}
.chat-topo b{font-size:12px;color:var(--azul-escuro)}
.chat-topo span{font-size:10.5px;color:var(--ink-3)}
.chat-cit{border-left:3px solid var(--azul-claro);background:rgba(62,90,79,.06);border-radius:6px;padding:5px 9px;font-size:11.5px;color:var(--ink-2);margin:2px 0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-cit b{font-size:11px}
.chat-txt{font-size:13px;line-height:1.5;white-space:pre-wrap;word-break:break-word}
.chat-men{color:var(--azul-claro);font-weight:700;background:rgba(62,90,79,.1);border-radius:5px;padding:0 3px}
.chat-acts{display:flex;gap:12px;margin-top:4px;opacity:0;transition:.15s}
.chat-msg:hover .chat-acts{opacity:1}
.chat-acts span{font-size:10.5px;font-weight:700;color:var(--ink-3);cursor:pointer}
.chat-acts span:hover{color:var(--azul-claro)}
.chat-ativ{display:flex;gap:8px;align-items:center;font-size:11.5px;color:var(--ink-3);padding:5px 2px}
.chat-ativ svg{width:12px;height:12px;flex:0 0 auto}
.chat-input{display:flex;gap:8px;align-items:flex-end;margin-top:8px}
.chat-input textarea{resize:none;min-height:42px;max-height:120px}
.chat-input .btn{height:42px;flex:0 0 auto}
.chat-resp-a{display:flex;gap:8px;align-items:center;background:var(--b50);border:1px solid var(--line);border-radius:9px;padding:6px 10px;font-size:11.5px;color:var(--ink-2);margin-top:8px}
.chat-menpop{max-height:230px;overflow:auto}
.chat-menpop .ava.sm{width:24px;height:24px;font-size:10px;flex:0 0 auto}


/* seletor de tipo de tarefa (nova tarefa) */
.tt-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.tt-op{border:1px solid var(--line);border-radius:13px;padding:12px;cursor:pointer;transition:.15s;background:var(--surface);display:flex;flex-direction:column;gap:4px}
.tt-op:hover{border-color:var(--b300);box-shadow:var(--sh-1)}
.tt-op.on{border-color:var(--azul-claro);background:var(--b50);box-shadow:0 0 0 3px rgba(62,90,79,.12)}
.tt-op .tt-ic{width:32px;height:32px;border-radius:9px;background:var(--surface-2);display:grid;place-items:center;color:var(--azul-claro);margin-bottom:2px}
.tt-op.on .tt-ic{background:var(--azul-claro);color:#fff}
.tt-op .tt-ic svg{width:16px;height:16px}
.tt-op b{font-size:12.5px}
.tt-op small{font-size:10.5px;color:var(--ink-3);line-height:1.35}


/* card de item — layout amplo (spec ui-designer 24/08) */
.modal.xxl{max-width:1080px}
.modal.cdx .mb{padding:22px 26px 26px}
.cd-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}
.cd-head{margin-bottom:18px}
.cd-eyebrow{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.cdx input#cd-titulo{background:transparent;border:1px solid transparent;font-size:19px;font-weight:700;line-height:1.3;padding:6px 10px;margin-left:-10px;border-radius:10px;width:calc(100% + 10px);box-shadow:none}
.cdx input#cd-titulo:hover{background:rgba(22,26,32,.04)}
.cdx input#cd-titulo:focus{background:var(--surface);border-color:var(--azul-claro);box-shadow:0 0 0 3px rgba(62,90,79,.15);outline:none}
.tabs.cd-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 0 18px}
.tabs.cd-tabs::-webkit-scrollbar{display:none}
.tabs.cd-tabs button{padding:9px 14px;font-size:13px;white-space:nowrap;flex:0 0 auto}
.tbadge{display:inline-grid;place-items:center;height:18px;min-width:18px;padding:0 5px;border-radius:999px;font-size:11px;font-weight:600;margin-left:6px;background:rgba(22,26,32,.08);color:var(--ink-2);vertical-align:-3px}
.tabs.cd-tabs button.on .tbadge{background:rgba(62,90,79,.12);color:var(--azul-escuro)}
.cd-side .field{margin:0 0 10px}
.cd-side .field label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;color:var(--ink-3)}
.cd-side .inp{padding-top:7px;padding-bottom:7px;font-size:12.5px;border-radius:10px}
.cd-side .dd-btn{padding-top:6px;padding-bottom:6px;font-size:12.5px;border-radius:10px;min-height:36px}
.cd-side .fg{gap:10px 14px;margin:0 0 10px;display:grid;grid-template-columns:1fr 1fr}
.cd-sep{height:1px;background:var(--line-2);margin:14px 0}
.cd-gtit{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-3);margin-bottom:8px}
.cdx .rt-bar{background:var(--surface)}
.cdx #cd-tab-body{min-height:280px}
.cdx .rt-edit{min-height:180px}
.cdx .chat-msg{max-width:78%}
.cd-axgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}


/* equilíbrio do card: lateral vira painel, editor preenche a coluna */
.cd-side{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 14px;box-shadow:var(--sh-1)}
.cdx #cd-tab-body{min-height:400px}
.cdx .rt-edit{min-height:320px}

/* lista de itens na criação (checklist/pauta): adiciona um a um, com visual de check */
.ckl{display:flex;flex-direction:column;gap:5px}
.ckl-item{display:flex;align-items:center;gap:10px;padding:8px 11px;border:1px solid var(--line-2);border-radius:10px;background:var(--surface)}
.ckl-item .bx2{width:18px;height:18px;border-radius:6px;border:2px solid var(--line);flex:0 0 auto;background:var(--surface)}
.ckl-item .t{flex:1;font-size:13px}
.ckl-item .num{font-size:11px;font-weight:700;color:var(--ink-3);min-width:16px;text-align:right}
.ckl-vazio{font-size:12px;color:var(--ink-3);padding:4px 2px}


/* lateral do card em COLUNA INTEIRA do popup, com fundo proprio (24/08) */
.modal.cdx .mh{display:none}
.modal.cdx .mf{display:none}
.modal.cdx .mb{padding:0}
.cd-wrap{display:grid;grid-template-columns:minmax(0,1fr) 320px;align-items:stretch;min-height:560px}
.cd-main{padding:22px 26px 26px;min-width:0}
.modal.cdx .cd-side{background:#F2F4F7;border:0;border-left:1px solid var(--line);border-radius:0;box-shadow:none;padding:22px 20px 26px}
.modal.cdx .cd-side .inp,.modal.cdx .cd-side .dd-btn{background:var(--surface)}


/* ditado por voz */
.mic-btn{border:none;background:var(--surface-2);width:28px;height:28px;border-radius:8px;display:grid;place-items:center;cursor:pointer;color:var(--ink-3);transition:.15s;flex:0 0 auto}
.mic-btn:hover{color:var(--azul-claro);background:var(--b50)}
.mic-btn svg{width:14px;height:14px}
.mic-btn.gravando{background:var(--danger);color:#fff;animation:micPulse 1.1s infinite}
@keyframes micPulse{0%,100%{box-shadow:0 0 0 0 rgba(224,81,74,.45)}50%{box-shadow:0 0 0 6px rgba(224,81,74,0)}}
.mic-wrap{position:relative}
.mic-wrap textarea{width:100%}
.mic-wrap .mic-btn{position:absolute;right:8px;bottom:8px;background:var(--surface);border:1px solid var(--line)}


/* cronograma do projeto: calendário mensal */
.pcal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.pcal-dow{font-size:10px;font-weight:800;color:var(--ink-3);text-align:center;padding:4px 0}
.pcal-d{min-height:74px;border:1px solid var(--line-2);border-radius:9px;padding:4px 5px;background:var(--surface);display:flex;flex-direction:column;gap:2px;overflow:hidden}
.pcal-d.out{border:none;background:none}
.pcal-d.hoje{border-color:var(--azul-claro);box-shadow:0 0 0 2px rgba(62,90,79,.12)}
.pcal-d .n{font-size:10.5px;font-weight:700;color:var(--ink-3)}
.pcal-ev{font-size:10px;font-weight:600;border-radius:5px;padding:1px 5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}

/* ===== explicação da tela num balão ao lado do título (13/10/2026) ===== */
.page-head .ph-l{position:relative}
.page-head h1 .ph-info{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line);background:var(--surface);color:var(--ink-3);vertical-align:middle;margin-left:9px;position:relative;top:-3px;cursor:pointer;padding:0;transition:.15s;box-shadow:var(--sh-1)}
.page-head h1 .ph-info svg{width:13px;height:13px}
.page-head h1 .ph-info:hover,.page-head h1 .ph-info.on{color:var(--azul-claro);border-color:var(--azul-claro);transform:translateY(-1px)}
.ph-pop{display:none;position:absolute;left:0;top:calc(100% + 8px);z-index:40;max-width:480px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 15px;font-size:13px;line-height:1.5;color:var(--ink-2);box-shadow:var(--sh-2);font-weight:500}
.ph-pop::before{content:"";position:absolute;left:18px;top:-6px;width:10px;height:10px;background:var(--surface);border-left:1px solid var(--line);border-top:1px solid var(--line);transform:rotate(45deg)}
.ph-pop.on{display:block;animation:phpop .16s ease-out}
@keyframes phpop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.ph-pop a{color:var(--azul-claro);font-weight:700}
.ph-pop b{color:var(--ink)}
