/* ============================================================
   Otz.ai — Component Library (v1 · Apple-grade, vanilla)
   API de classes estável (não quebra páginas existentes).
   ============================================================ */

/* ---------- Layout ---------- */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--s-6);}
.wrap-wide{max-width:var(--maxw-wide);margin:0 auto;padding:0 var(--s-6);}
.section{padding:var(--s-24) 0;}
.section-sm{padding:var(--s-16) 0;}
.grid{display:grid;gap:var(--s-5);}
.g-2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));}
.g-3{grid-template-columns:repeat(auto-fit,minmax(248px,1fr));}
.g-4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));}
.row{display:flex;gap:var(--s-3);align-items:center;}
.row.wrap{flex-wrap:wrap;}
.between{justify-content:space-between;}
.center{justify-content:center;text-align:center;}
.col{display:flex;flex-direction:column;}
.mt-1{margin-top:var(--s-1);}.mt-2{margin-top:var(--s-2);}.mt-3{margin-top:var(--s-3);}.mt-4{margin-top:var(--s-4);}.mt-6{margin-top:var(--s-6);}.mt-8{margin-top:var(--s-8);}.mt-10{margin-top:var(--s-10);}.mt-12{margin-top:var(--s-12);}.mt-16{margin-top:var(--s-16);}.mb-2{margin-bottom:var(--s-2);}
.muted{color:var(--ink-2);}.dim{color:var(--ink-3);}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.hairline{border-top:1px solid var(--line);}

/* ---------- Tipografia (SF Pro Display vibe) ---------- */
.eyebrow{font-size:var(--fs-caption);font-weight:600;letter-spacing:.02em;color:var(--accent);text-transform:none;}
h1,.h1{font-size:var(--fs-3xl);font-weight:700;letter-spacing:-.025em;line-height:1.04;color:var(--ink);}
h2,.h2{font-size:var(--fs-2xl);font-weight:650;letter-spacing:-.022em;line-height:1.08;}
h3,.h3{font-size:var(--fs-lg);font-weight:600;letter-spacing:-.018em;line-height:1.18;}
h4,.h4{font-size:var(--fs-md);font-weight:600;letter-spacing:-.012em;}
h2,h3,h4{font-weight:600;}
.lead{font-size:var(--fs-md);color:var(--ink-2);max-width:62ch;line-height:1.5;font-weight:400;letter-spacing:-.012em;}
.gradient-text{color:var(--accent);} /* maduro: acento sólido, sem arco-íris */
.tnum{font-variant-numeric:tabular-nums;}

/* ---------- Botões (Apple) ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;font-weight:500;font-size:var(--fs-sm);letter-spacing:-.01em;padding:10px 20px;border-radius:var(--r-full);border:1px solid transparent;cursor:pointer;transition:background var(--t),border-color var(--t),color var(--t),transform var(--t);white-space:nowrap;text-decoration:none;line-height:1;}
.btn:hover{text-decoration:none;}
.btn:active{transform:scale(.98);}
.btn-primary{background:var(--accent);color:#fff;}
.btn-primary:hover{background:var(--accent-ink);}
.btn-dark{background:var(--ink);color:#fff;}
.btn-dark:hover{background:#000;}
.btn-ghost{background:var(--card);color:var(--ink);border-color:var(--line);}
.btn-ghost:hover{border-color:#b9b9c0;background:var(--bg-3);}
.btn-soft{background:var(--accent-wash);color:var(--accent-ink);}
.btn-soft:hover{background:#efe9fd;}
.btn-text{background:none;color:var(--link);padding:8px 4px;}
.btn-text::after{content:"›";font-size:1.1em;line-height:1;transform:translateY(-1px);transition:transform var(--t);}
.btn-text:hover{text-decoration:none;}.btn-text:hover::after{transform:translate(3px,-1px);}
.btn-lg{padding:13px 26px;font-size:var(--fs-base);}
.btn-sm{padding:7px 14px;font-size:var(--fs-caption);}
.btn-block{width:100%;}

/* ---------- Cards ---------- */
.card{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-xl);padding:var(--s-6);transition:box-shadow var(--t),transform var(--t),border-color var(--t);}
.card.hover:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px);border-color:var(--line);}
.card.flush{padding:0;overflow:hidden;}
.card.tight{padding:var(--s-5);border-radius:var(--r-lg);}
.card-accent{position:relative;overflow:hidden;}
.card-accent::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--accent);opacity:.9;}
.card-accent.green::before{background:var(--green);}.card-accent.amber::before{background:var(--amber);}.card-accent.red::before{background:var(--red);}.card-accent.cyan::before{background:var(--cyan);}.card-accent.pink::before{background:var(--accent-2);}

/* ---------- Tags / pills / dots ---------- */
.tag{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:6px;font-size:var(--fs-caption);font-weight:500;background:var(--bg-2);color:var(--ink-2);letter-spacing:-.005em;}
.tag-purple{background:var(--accent-wash);color:var(--accent-ink);}
.tag-green{background:var(--green-wash);color:var(--green);}
.tag-amber{background:var(--amber-wash);color:var(--amber);}
.tag-red{background:var(--red-wash);color:var(--red);}
.tag-cyan{background:#e9f5fa;color:var(--cyan);}
.tag-gray{background:var(--bg-2);color:var(--ink-2);}
.pill{display:inline-flex;align-items:center;gap:7px;padding:6px 14px;border-radius:var(--r-full);background:var(--bg-2);color:var(--ink-2);font-size:var(--fs-caption);font-weight:500;border:1px solid var(--line-2);}
.dot{width:7px;height:7px;border-radius:50%;display:inline-block;}
.dot.green{background:var(--green);}.dot.amber{background:var(--amber);}.dot.red{background:var(--red);}

/* ---------- Ícones ---------- */
.ic{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none;}
.ic-sm{width:15px;height:15px;}.ic-lg{width:22px;height:22px;}

/* ---------- KPI ---------- */
.kpi{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:var(--s-5);}
.kpi .label{font-size:var(--fs-caption);color:var(--ink-3);font-weight:500;letter-spacing:-.005em;}
.kpi .value{font-size:var(--fs-xl);font-weight:600;letter-spacing:-.02em;margin-top:6px;color:var(--ink);font-variant-numeric:tabular-nums;}
.kpi .value.purple{color:var(--accent-ink);}.kpi .value.green{color:var(--green);}.kpi .value.red{color:var(--red);}
.kpi .delta{font-size:var(--fs-caption);font-weight:600;margin-top:6px;display:inline-flex;gap:4px;align-items:center;font-variant-numeric:tabular-nums;}
.kpi .delta.up{color:var(--green);}.kpi .delta.down{color:var(--red);}
/* DEM-64 · semáforo coerente: âmbar = atenção (ex.: margem caiu, mas resultado segue positivo). Vermelho fica reservado a valor negativo/prejuízo. */
.kpi .delta.warn{color:var(--amber);}
/* DEM-80 · estados de UI — toast de export (loading/sucesso/erro) + spinner + empty/error reutilizáveis */
.otz-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#1a1a2e;color:#fff;padding:12px 18px;border-radius:12px;font-size:.85rem;font-weight:600;box-shadow:0 10px 30px rgba(0,0,0,.25);z-index:1000;opacity:0;transition:opacity .25s;display:flex;align-items:center;gap:10px;max-width:92vw;}
.otz-toast-ok{background:var(--green);}
.otz-toast-error{background:var(--red);}
.otz-toast-retry{background:rgba(255,255,255,.22);border:none;color:#fff;font:inherit;font-size:.8rem;font-weight:600;padding:4px 10px;border-radius:8px;cursor:pointer;}
.otz-spin{width:14px;height:14px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;display:inline-block;animation:otz-spin .7s linear infinite;flex:none;}
@keyframes otz-spin{to{transform:rotate(360deg);}}
.ui-empty,.ui-error{text-align:center;padding:36px 20px;color:var(--ink-3);}
.ui-empty .ic,.ui-error .ic{width:30px;height:30px;margin:0 auto 10px;opacity:.55;}
.ui-error{color:var(--red);}
.skeleton{background:linear-gradient(90deg,var(--bg-2) 25%,var(--line-2) 37%,var(--bg-2) 63%);background-size:400% 100%;animation:otz-shimmer 1.2s ease-in-out infinite;border-radius:8px;}
@keyframes otz-shimmer{0%{background-position:100% 0;}100%{background-position:0 0;}}

/* DEM-71 · banner de sessão de impersonação (BackOffice) — indicador global sempre visível */
.imp-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--amber-wash);border-bottom:2px solid var(--amber);padding:10px 20px;font-size:.82rem;line-height:1.4;color:var(--ink);position:sticky;top:0;z-index:60;}
.imp-banner .imp-ic{color:var(--amber);flex:none;}
.imp-banner .imp-exit{margin-left:auto;flex:none;}
.kpi .sub{font-size:var(--fs-caption);color:var(--ink-3);margin-top:3px;}

/* ---------- Forms ---------- */
.field{display:flex;flex-direction:column;gap:7px;margin-bottom:var(--s-4);}
.field label{font-size:var(--fs-sm);font-weight:500;color:var(--ink);letter-spacing:-.01em;}
.input,.select,.textarea{font-family:inherit;font-size:var(--fs-base);padding:11px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--card);color:var(--ink);transition:border var(--t),box-shadow var(--t);width:100%;letter-spacing:-.01em;}
.input::placeholder,.textarea::placeholder{color:var(--ink-3);}
.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-wash);}
.input-sm{padding:7px 10px;font-size:var(--fs-sm);}
.hint{font-size:var(--fs-caption);color:var(--ink-3);}
.check{display:flex;gap:9px;align-items:flex-start;font-size:var(--fs-sm);color:var(--ink-2);line-height:1.4;}
.check input{margin-top:2px;accent-color:var(--accent);}
.divider-or{display:flex;align-items:center;gap:14px;color:var(--ink-3);font-size:var(--fs-caption);margin:var(--s-5) 0;}
.divider-or::before,.divider-or::after{content:"";flex:1;height:1px;background:var(--line);}

/* ---------- Tabelas ---------- */
.table{width:100%;border-collapse:collapse;font-size:var(--fs-sm);}
.table th{text-align:left;padding:12px 16px;color:var(--ink-3);font-weight:500;font-size:var(--fs-caption);letter-spacing:.01em;border-bottom:1px solid var(--line);}
.table td{padding:14px 16px;border-bottom:1px solid var(--line-2);letter-spacing:-.01em;}
.table tbody tr:hover{background:var(--bg-3);}
.table tr:last-child td{border-bottom:none;}
.table .num{text-align:right;font-variant-numeric:tabular-nums;}

/* Data grid (módulo pessoal — cadastros) */
.dgrid{width:100%;border-collapse:collapse;font-size:var(--fs-sm);font-variant-numeric:tabular-nums;}
.dgrid th{position:sticky;top:0;background:var(--bg-2);text-align:left;padding:10px 14px;font-size:var(--fs-caption);color:var(--ink-2);font-weight:600;border-bottom:1px solid var(--line);}
.dgrid th.num,.dgrid td.num{text-align:right;}
.dgrid td{padding:11px 14px;border-bottom:1px solid var(--line-2);}
.dgrid tr:hover td{background:var(--bg-3);}
.dgrid input{border:1px solid transparent;background:none;border-radius:8px;padding:6px 8px;width:100%;font:inherit;color:var(--ink);}
.dgrid input:hover{border-color:var(--line-2);}
.dgrid input:focus{outline:none;border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px var(--accent-wash);}
.dgrid input.num{text-align:right;font-variant-numeric:tabular-nums;}
.dgrid tfoot td{padding:12px 14px;font-weight:600;border-top:2px solid var(--line);background:var(--bg-3);}
.cellmuted{color:var(--ink-3);}

/* ---------- Callouts ---------- */
.callout{border-radius:var(--r-lg);padding:var(--s-4) var(--s-5);display:flex;gap:12px;align-items:flex-start;background:var(--bg-2);}
.callout .ico{flex:none;}
.callout.purple{background:var(--accent-wash);}
.callout.green{background:var(--green-wash);}
.callout.amber{background:var(--amber-wash);}
.callout.red{background:var(--red-wash);}
.callout h4{font-size:var(--fs-sm);margin-bottom:3px;font-weight:600;}
.callout p{font-size:var(--fs-sm);color:var(--ink-2);line-height:1.5;}

/* ---------- Nav (Apple translúcida fina) ---------- */
.nav{position:sticky;top:0;z-index:50;height:60px;display:flex;align-items:center;background:rgba(255,255,255,.86);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--line-2);}
.nav .wrap,.nav .wrap-wide{display:flex;align-items:center;justify-content:space-between;width:100%;gap:var(--s-4);}
.nav .wrap img,.nav .wrap-wide img{height:30px;width:auto;}
.nav-links{display:flex;gap:4px;align-items:center;}
.nav-links a{color:var(--ink);font-size:15px;font-weight:500;padding:8px 13px;border-radius:8px;letter-spacing:-.01em;transition:background var(--t),color var(--t);white-space:nowrap;}
.nav-links a:hover{color:var(--accent-ink);background:var(--bg-2);text-decoration:none;}
.nav-links a.active{color:var(--accent-ink);font-weight:600;}
.nav-links a.btn,.nav-links a.btn:hover{color:#fff;background:var(--accent);}
.nav-toggle{display:none;flex-direction:column;gap:5px;cursor:pointer;padding:8px;border-radius:8px;}
.nav-toggle span{width:20px;height:2px;background:var(--ink);border-radius:2px;transition:transform var(--t),opacity var(--t);}
.nav-tg-input:checked~.nav-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.nav-tg-input:checked~.nav-toggle span:nth-child(2){opacity:0;}
.nav-tg-input:checked~.nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

/* ---------- Footer ---------- */
.footer{background:var(--bg-2);border-top:1px solid var(--line-2);padding:var(--s-16) 0 var(--s-8);}
.footer .cols{display:grid;grid-template-columns:1.8fr repeat(3,1fr);gap:var(--s-10);align-items:start;}
.footer h4{font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);margin-bottom:10px;}
.footer a{color:var(--ink-2);font-size:var(--fs-sm);display:block;padding:6px 0;line-height:1.3;}
.footer a:hover{color:var(--accent-ink);}
.foot-social{display:flex;gap:9px;margin-top:16px;}
.foot-social a{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--ink-2);padding:0;transition:border var(--t),color var(--t),background var(--t);}
.foot-social a:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-wash);}
.foot-social svg{width:18px;height:18px;}
.footer .legal{margin-top:var(--s-12);padding-top:var(--s-5);border-top:1px solid var(--line);color:var(--ink-3);font-size:var(--fs-caption);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;align-items:center;}
.footer .legal a{display:inline;padding:0;}
/* Acesso interno ao Backoffice (time Otz) — pílula de acesso no rodapé.
   Especificidade .footer .legal .foot-team a p/ vencer a regra .footer .legal a (display:inline;padding:0). */
.foot-team{display:inline-flex;}
.footer .legal .foot-team a{display:inline-flex;align-items:center;gap:7px;padding:6px 13px;border:1px solid var(--accent-line);border-radius:999px;background:var(--accent-wash);color:var(--accent-ink);font-weight:600;line-height:1;transition:border var(--t),color var(--t),background var(--t);}
.footer .legal .foot-team a:hover{border-color:var(--accent);background:var(--accent);color:#fff;}
.footer .legal .foot-team a:hover .dim{color:rgba(255,255,255,.78);}
.foot-team svg{width:14px;height:14px;flex:none;}
/* BackOffice: sidebar em coluna p/ fixar o acesso à plataforma no rodapé */
[data-app="backoffice"] .sidebar{display:flex;flex-direction:column;}
.bo-gotoapp{margin-top:auto;padding-top:14px;border-top:1px solid var(--line-2);}
.bo-gotoapp .btn{justify-content:center;gap:8px;}
.bo-gotoapp .ic{width:16px;height:16px;}
.bo-gotoapp-hint{margin:8px 4px 2px;font-size:11.5px;line-height:1.3;color:var(--ink-3);text-align:center;}
/* BackOffice login: navegação para o site / login do cliente */
.bo-altnav{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px;padding-top:16px;border-top:1px solid var(--line);}
.bo-altnav .btn{flex:1;justify-content:center;white-space:nowrap;}
@media(max-width:760px){.footer .cols{grid-template-columns:1fr 1fr;}}

/* ---------- App shell ---------- */
.app{display:grid;grid-template-columns:250px 1fr;min-height:100vh;}
.sidebar{background:var(--bg-2);border-right:1px solid var(--line-2);padding:var(--s-4) var(--s-3);position:sticky;top:0;height:100vh;overflow:auto;}
.sidebar .brand{padding:12px 12px 20px;}
.sidebar .brand img{height:30px;width:auto;}
.side-group{font-size:var(--fs-caption);color:var(--ink-3);font-weight:600;letter-spacing:.01em;padding:var(--s-4) 12px 6px;}
.side-link{display:flex;align-items:center;gap:11px;padding:8px 12px;border-radius:var(--r);color:var(--ink-2);font-size:var(--fs-sm);font-weight:450;letter-spacing:-.01em;transition:background var(--t),color var(--t);}
.side-link:hover{background:rgba(0,0,0,.04);color:var(--ink);text-decoration:none;}
.side-link.active{background:var(--card);color:var(--ink);font-weight:550;box-shadow:var(--shadow-xs);}
.side-link .i,.side-link .ic{flex:none;color:var(--ink-3);}
/* DEM-30: grupo "Configuração" colapsável */
.side-group-toggle{cursor:pointer;display:flex;align-items:center;justify-content:space-between;user-select:none;}
.side-group-toggle:hover{color:var(--ink-2);}
.side-group-toggle .sg-chev{font-size:10px;color:var(--ink-3);margin-left:6px;}
.side-link.active .ic{color:var(--accent);}
.main{display:flex;flex-direction:column;min-width:0;background:var(--bg);}
.topbar{height:56px;display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:0 var(--s-8);background:rgba(255,255,255,.8);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--line-2);position:sticky;top:0;z-index:20;}
.topbar>.row:last-child{gap:var(--s-3);}
.topbar .iconbtn{width:40px;height:40px;}
.topbar .avatar-btn{margin-left:2px;}
.topbar .avatar-img{width:36px;height:36px;}
/* Conteúdo centralizado na área principal (corrige "tudo à esquerda / direita vazia") */
.content{padding:var(--s-8);flex:1;width:100%;max-width:1280px;margin-inline:auto;}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s-4);margin-bottom:var(--s-6);flex-wrap:wrap;}
.org-switch{display:flex;align-items:center;gap:9px;padding:7px 12px;border:1px solid var(--line);border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:500;background:var(--card);cursor:pointer;}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:var(--fs-caption);letter-spacing:.02em;}

/* ---------- Segmented / tabs (iOS) ---------- */
.tabs,.seg{display:inline-flex;background:var(--bg-2);border-radius:10px;padding:3px;gap:3px;}
.tabs button,.seg button{border:none;background:none;font-family:inherit;font-size:var(--fs-sm);font-weight:500;color:var(--ink-2);padding:7px 16px;border-radius:8px;cursor:pointer;transition:all var(--t);letter-spacing:-.01em;}
.tabs button.active,.seg button.active{background:var(--card);color:var(--ink);box-shadow:var(--shadow-xs);}
/* Segmented control de filtro/opção (usado em modais, logs, etc.) */
.fseg{display:inline-flex;background:var(--bg-2);border-radius:10px;padding:3px;gap:3px;}
.fseg button{border:none;background:none;font-family:inherit;font-size:var(--fs-sm);font-weight:500;color:var(--ink-2);padding:7px 15px;border-radius:8px;cursor:pointer;transition:background var(--t),color var(--t);letter-spacing:-.01em;}
.fseg button:hover{color:var(--ink);}
.fseg button.active{background:var(--card);color:var(--ink);box-shadow:var(--shadow-xs);}

/* ---------- Estados ---------- */
.skel{background:linear-gradient(90deg,var(--bg-2) 25%,#fff 50%,var(--bg-2) 75%);background-size:200% 100%;animation:sk 1.4s infinite;border-radius:var(--r-sm);}
@keyframes sk{to{background-position:-200% 0;}}
.empty{text-align:center;padding:var(--s-16);color:var(--ink-3);}

/* ---------- Misc ---------- */
.read{font-size:var(--fs-sm);color:var(--ink-2);line-height:1.55;}
.ai-tag{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-caption);font-weight:500;color:var(--accent-ink);background:var(--accent-wash);padding:4px 10px;border-radius:var(--r-full);}
.bar-track{height:6px;background:var(--bg-2);border-radius:var(--r-full);overflow:hidden;}
.bar-fill{height:100%;background:var(--accent);border-radius:var(--r-full);}
.bullet{position:relative;height:24px;}
.bullet .range{position:absolute;inset:9px 0;background:var(--bg-2);border-radius:var(--r-full);}
.bullet .range::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--green-wash));border-radius:var(--r-full);opacity:.8;}
.bullet .mark{position:absolute;top:3px;bottom:3px;width:3px;background:var(--ink);border-radius:2px;z-index:2;}
.badge-internal{background:var(--ink);color:#fff;font-size:var(--fs-caption);font-weight:600;padding:3px 9px;border-radius:6px;letter-spacing:.02em;}

/* ---------- Scroll reveal ---------- */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out);}
.reveal.in{opacity:1;transform:none;}
.reveal[data-d="1"]{transition-delay:.08s;}.reveal[data-d="2"]{transition-delay:.16s;}.reveal[data-d="3"]{transition-delay:.24s;}.reveal[data-d="4"]{transition-delay:.32s;}

/* ---------- Ícone de feature/área ---------- */
.feat-ic{width:44px;height:44px;border-radius:12px;background:var(--accent-wash);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;flex:none;}

/* ---------- Header do app (notificações + usuário) ---------- */
.iconbtn{position:relative;width:36px;height:36px;border-radius:50%;border:1px solid transparent;background:none;display:flex;align-items:center;justify-content:center;color:var(--ink-2);cursor:pointer;transition:background var(--t);}
.iconbtn:hover{background:var(--bg-2);color:var(--ink);}
.iconbtn .count{position:absolute;top:3px;right:3px;min-width:15px;height:15px;padding:0 3px;border-radius:99px;background:var(--red);color:#fff;font-size:9.5px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg);}
.avatar-btn{padding:0;border:none;background:none;cursor:pointer;border-radius:50%;}
/* UX-S6: botão de fechar usa o ícone "+" girado 45° → vira "×" (1 fix p/ todas as telas) */
[data-close] .ic,[data-close] .i{transform:rotate(45deg);}
/* UX-S6: skip-link (injetado por ui.js) — só aparece no foco por teclado */
.skip-link{position:fixed;top:-60px;left:12px;z-index:200;background:var(--accent);color:#fff;padding:10px 16px;border-radius:var(--r);font-size:var(--fs-sm);font-weight:600;transition:top var(--t);}
.skip-link:focus{top:12px;text-decoration:none;}
.avatar-img{width:32px;height:32px;border-radius:50%;object-fit:cover;background:var(--grad-brand);}
.lang{font-size:13px;font-weight:600;color:var(--ink-2);padding:6px 8px;border-radius:8px;cursor:pointer;}
.lang:hover{background:var(--bg-2);}

/* Dropdown genérico (notificações/idioma) */
.menu{position:absolute;right:18px;top:52px;width:320px;background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--shadow-xl);z-index:60;overflow:hidden;display:none;}
.menu.open{display:block;animation:pop .16s var(--ease-out);}
@keyframes pop{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:none;}}
.menu .mh{padding:12px 16px;border-bottom:1px solid var(--line-2);font-weight:600;font-size:14px;display:flex;justify-content:space-between;align-items:center;}
.menu .mi{padding:12px 16px;display:flex;gap:10px;border-bottom:1px solid var(--line-2);font-size:14px;}
.menu .mi:last-child{border-bottom:none;}
.menu .mi .d{width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:6px;flex:none;}
.menu .mi.read .d{background:var(--line);}

/* ---------- Drawer lateral (painel do usuário / editar) ---------- */
.scrim{position:fixed;inset:0;background:rgba(20,20,40,.32);backdrop-filter:blur(2px);opacity:0;visibility:hidden;transition:opacity var(--t);z-index:90;}
.scrim.open{opacity:1;visibility:visible;}
.drawer{position:fixed;top:0;right:0;height:100vh;width:380px;max-width:92vw;background:var(--card);border-left:1px solid var(--line-2);transform:translateX(101%);transition:transform .32s var(--ease-out);z-index:100;display:flex;flex-direction:column;}
.drawer.open{transform:none;box-shadow:var(--shadow-xl);}
.drawer .dh{padding:18px 22px;border-bottom:1px solid var(--line-2);display:flex;justify-content:space-between;align-items:center;}
.drawer .db{padding:22px;overflow:auto;flex:1;}
.drawer .df{padding:16px 22px;border-top:1px solid var(--line-2);display:flex;gap:10px;}
.drawer-sec{padding:14px 0;border-bottom:1px solid var(--line-2);}
.drawer-link{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;color:var(--ink);font-size:15px;cursor:pointer;}
.drawer-link:hover{color:var(--accent);text-decoration:none;}
.drawer-link .lft{display:flex;align-items:center;gap:11px;}
.drawer-link .ic{color:var(--ink-3);}

/* ---------- Info tooltip ("i") ---------- */
.info{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1px solid var(--line);color:var(--ink-3);font-size:10px;font-weight:700;cursor:help;vertical-align:middle;margin-left:5px;font-style:normal;flex:none;}
.info:hover{border-color:var(--accent);color:var(--accent);}
/* Tooltip renderizado em <body> via ui.js (position:fixed) — nunca é recortado por overflow:hidden de cards/grids */
.info-pop{position:fixed;background:var(--ink);color:#fff;font-size:12px;font-weight:400;line-height:1.45;letter-spacing:-.01em;padding:9px 12px;border-radius:9px;max-width:260px;opacity:0;pointer-events:none;transition:opacity .14s var(--ease);z-index:9999;box-shadow:var(--shadow-lg);text-align:left;}
[data-theme="dark"] .info-pop{background:#0d0d0f;border:1px solid var(--line);}

/* ---------- DEM-62 · Barra de proveniência do dado (telas financeiras) ----------
   Carimba, no topo da tela, "mês fechado · regime · fonte · última sync" para a
   lente do contador cético ("de onde vem e de quando é?"). Injetada por ui.js
   (1 fix → Empresa + Áreas). Evidência: dossiês dre.md:144, balanco.md:116. */
.data-prov{display:flex;align-items:center;gap:6px 0;flex-wrap:wrap;font-size:var(--fs-caption);color:var(--ink-3);background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:9px 8px 9px 14px;margin-bottom:var(--s-5);}
.data-prov .dp-ic{width:15px;height:15px;color:var(--ink-3);flex:none;margin-right:8px;}
.data-prov .dp-seg{display:inline-flex;align-items:center;gap:5px;line-height:1.3;padding:0 14px;}
.data-prov .dp-seg + .dp-seg{border-left:1px solid var(--line-2);}
.data-prov .dp-seg strong{color:var(--ink-2);font-weight:600;}
@media (max-width:640px){ .data-prov .dp-seg{padding:2px 10px 2px 0;} .data-prov .dp-seg + .dp-seg{border-left:0;} }

/* ---------- Metric card (borda-topo colorida — dashboards financeiros) ---------- */
.metric{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:16px 18px;position:relative;overflow:hidden;}
.metric::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--accent);}
.metric.green::before{background:var(--green);}.metric.red::before{background:var(--red);}.metric.amber::before{background:var(--amber);}.metric.cyan::before{background:var(--cyan);}.metric.ink::before{background:var(--ink);}
.metric .ml{font-size:12px;color:var(--ink-3);font-weight:500;display:flex;align-items:center;}
.metric .mv{font-size:1.7rem;font-weight:600;letter-spacing:-.025em;margin-top:6px;font-variant-numeric:tabular-nums;}
.metric .mv.green{color:var(--green);}.metric .mv.red{color:var(--red);}.metric .mv.accent{color:var(--accent-ink);}
.metric .ms{font-size:12px;color:var(--ink-3);margin-top:4px;display:flex;gap:6px;align-items:center;}
.metric .ms .up{color:var(--green);font-weight:600;}.metric .ms .down{color:var(--red);font-weight:600;}

/* ---------- Rank list / legend / chart box ---------- */
.rank{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-2);}
.rank:last-child{border-bottom:none;}
.rank .n{width:22px;height:22px;border-radius:7px;background:var(--bg-2);color:var(--ink-2);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none;}
.rank .n.top{background:var(--accent-wash);color:var(--accent-ink);}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-top:10px;}
.legend span{display:inline-flex;align-items:center;gap:6px;}
.legend i{width:10px;height:10px;border-radius:3px;display:inline-block;}
.chartbox{padding-top:6px;}
.avatars{display:flex;}
.avatars .a{width:26px;height:26px;border-radius:50%;border:2px solid var(--card);margin-left:-8px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff;}
.avatars .a:first-child{margin-left:0;}

/* ---------- Responsivo ---------- */
/* ---------- Estados: skeleton / empty / error ---------- */
.skeleton{position:relative;overflow:hidden;background:var(--bg-2);border-radius:8px;min-height:14px;}
.skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.6),transparent);animation:shimmer 1.3s infinite;}
@keyframes shimmer{100%{transform:translateX(100%);}}
.skeleton.line{height:12px;margin:8px 0;}.skeleton.line.sm{width:60%;}.skeleton.block{height:120px;}
.empty{text-align:center;padding:40px 20px;color:var(--ink-3);}
.empty .ic{width:34px;height:34px;color:var(--ink-3);margin-bottom:8px;}
.empty h4{color:var(--ink-2);}
.empty.ok .ic{color:var(--green);}

/* ---------- Subnav de contexto (R5-8: navegar entre telas de um mesmo módulo) ---------- */
.ctxnav{display:flex;gap:2px;flex-wrap:wrap;align-items:center;border-bottom:1px solid var(--line-2);margin-bottom:var(--s-6);overflow-x:auto;}
.ctxnav a{padding:10px 15px;font-size:14px;font-weight:500;color:var(--ink-2);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:color var(--t);}
.ctxnav a:hover{color:var(--ink);text-decoration:none;}
.ctxnav a.active{color:var(--accent-ink);border-bottom-color:var(--accent);font-weight:600;}
.ctxnav .ctx-label{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);padding-right:8px;margin-right:4px;border-right:1px solid var(--line-2);}

/* ---------- Tabelas: ordenação + paginação (R2-4) ---------- */
.th-sort{font-size:10px;color:var(--ink-3);margin-left:5px;opacity:.55;}
th[data-asc] .th-sort{opacity:1;color:var(--accent);}
.tbl-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 2px 2px;}
.tbl-info{font-size:12px;}
.tbl-pager{margin-left:auto;display:flex;align-items:center;gap:8px;}
.tbl-pager .btn-sm{padding:5px 12px;line-height:1;}
.tbl-pager button:disabled{opacity:.4;cursor:not-allowed;}
.tbl-pages{font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums;}

/* ---------- Modal central (drill-down de métricas — D21) ---------- */
.modal-scrim{position:fixed;inset:0;background:rgba(20,20,40,.42);backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:opacity var(--t);z-index:120;display:flex;align-items:center;justify-content:center;padding:24px;}
.modal-scrim.open{opacity:1;visibility:visible;}
.modal{background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-xl);box-shadow:var(--shadow-xl);width:680px;max-width:100%;max-height:88vh;display:flex;flex-direction:column;transform:translateY(12px) scale(.98);transition:transform .3s var(--ease-out);overflow:hidden;}
.modal-scrim.open .modal{transform:none;}
.modal .mh{padding:20px 24px;border-bottom:1px solid var(--line-2);display:flex;justify-content:space-between;align-items:flex-start;gap:16px;}
.modal .mh h3{font-size:var(--fs-lg);}
.modal .mb{padding:22px 24px;overflow:auto;}
.modal .mf{padding:14px 24px;border-top:1px solid var(--line-2);display:flex;justify-content:flex-end;gap:10px;}
.metric-formula{background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--r);padding:14px 16px;font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:13px;color:var(--ink);line-height:1.6;overflow-x:auto;white-space:pre-wrap;}
.metric-formula b{color:var(--accent-ink);font-weight:700;}
.metric-section-label{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);margin:18px 0 8px;}
.metric-section-label:first-child{margin-top:0;}
.metric-src{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2);background:var(--bg-2);border:1px solid var(--line-2);border-radius:99px;padding:4px 11px;margin:0 6px 6px 0;}

/* ---------- DEM-43 · Semáforo de confiabilidade do dado (injetado por ui.js) ---------- */
.reliability-dot{display:inline-flex;align-items:center;gap:4px;vertical-align:middle;margin-left:7px;cursor:pointer;line-height:1;}
.reliability-dot .rd-dot{width:8px;height:8px;border-radius:50%;flex:none;box-shadow:0 0 0 3px var(--card);}
.reliability-dot.ok .rd-dot{background:var(--green);}
.reliability-dot.partial .rd-dot{background:var(--amber);}
.reliability-dot.low .rd-dot{background:var(--red);}
.reliability-dot.low .rd-dot{animation:relpulse 1.8s var(--ease) infinite;}
@keyframes relpulse{0%,100%{box-shadow:0 0 0 3px var(--card),0 0 0 0 var(--red-wash);}50%{box-shadow:0 0 0 3px var(--card),0 0 0 4px var(--red-wash);}}
.rel-cov{display:flex;align-items:center;gap:9px;margin-top:9px;}
.rel-cov-bar{flex:1;height:6px;border-radius:99px;background:var(--line-2);overflow:hidden;max-width:220px;}
.rel-cov-fill{display:block;height:100%;border-radius:99px;}
.rel-cov-fill.ok{background:var(--green);}.rel-cov-fill.partial{background:var(--amber);}.rel-cov-fill.low{background:var(--red);}
.rel-cov-num{font-size:12px;font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums;}
.rel-missing{margin-top:9px;font-size:12.5px;color:var(--ink-2);}
.rel-missing ul{margin:4px 0 0;padding-left:18px;}
.rel-missing li{margin:2px 0;}

/* ---------- DEM-52 · Semáforo de prazo/urgência (injetado por ui.js a partir de [data-flag]) ----------
   Significado único em todo o produto:  green=em dia · yellow=vence em breve · orange=em risco · red=atrasado.
   a11y: cor + ícone + rótulo + tooltip (nunca só cor). */
.deadline-flag{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:99px;font-size:var(--fs-caption);font-weight:600;letter-spacing:-.005em;white-space:nowrap;line-height:1.3;vertical-align:middle;cursor:default;}
.deadline-flag .df-ic{width:11px;height:11px;flex:none;}
.deadline-flag.green{background:var(--flag-green-wash);color:var(--flag-green);}
.deadline-flag.yellow{background:var(--flag-yellow-wash);color:var(--flag-yellow);}
.deadline-flag.orange{background:var(--flag-orange-wash);color:var(--flag-orange);}
.deadline-flag.red{background:var(--flag-red-wash);color:var(--flag-red);}
.deadline-flag.red .df-ic{animation:flagpulse 1.7s var(--ease) infinite;}
@keyframes flagpulse{0%,100%{opacity:1;}50%{opacity:.45;}}
/* variante compacta (só bolinha) para superfícies densas — Gantt/Kanban */
.deadline-flag.dot-only{padding:0;background:transparent!important;gap:0;}
.deadline-flag.dot-only .df-lbl{display:none;}
.deadline-flag.dot-only .df-ic{width:9px;height:9px;}
/* realce de borda em cards/linhas com prazo crítico */
.flag-edge-red{box-shadow:inset 3px 0 0 var(--flag-red);}
.flag-edge-orange{box-shadow:inset 3px 0 0 var(--flag-orange);}
.flag-edge-yellow{box-shadow:inset 3px 0 0 var(--flag-yellow);}
/* bandeira como bullet de status na lateral do Gantt */
.gx-side .deadline-flag.dot-only{margin-right:6px;}
/* bandeira em cards do Kanban (canto) */
.kcard .deadline-flag{margin-top:8px;}

/* ---------- Perfil profissional / RBAC (D1 · injetado por ui.js) ---------- */
.role-switch{margin:2px 8px 10px;display:flex;align-items:center;gap:8px;padding:8px 11px;border:1px dashed var(--line);border-radius:10px;font-size:12px;color:var(--ink-3);cursor:pointer;transition:border var(--t);}
.role-switch:hover{border-color:var(--accent);}
.role-switch .rs-ic{color:var(--accent);flex:none;}
.role-switch .rs-t{flex:1;min-width:0;}
.role-switch .rs-t b{display:block;color:var(--ink);font-size:13px;font-weight:600;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* ---------- Agente especialista por tela (D4 · injetado por ui.js) ---------- */
.agent-fab{position:fixed;right:22px;bottom:22px;z-index:80;display:inline-flex;align-items:center;gap:9px;padding:12px 18px;border:none;border-radius:99px;background:var(--grad-brand);color:#fff;font-weight:600;font-size:14px;cursor:pointer;box-shadow:var(--shadow-lg);transition:transform var(--t),box-shadow var(--t);}
.agent-fab:hover{transform:translateY(-2px);box-shadow:var(--shadow-xl);}
.agent-fab .ic{color:#fff;}
.agent-drawer{position:fixed;top:0;right:0;height:100vh;width:430px;max-width:94vw;background:var(--card);border-left:1px solid var(--line-2);transform:translateX(101%);transition:transform .32s var(--ease-out);z-index:110;display:flex;flex-direction:column;}
.agent-drawer.open{transform:none;box-shadow:var(--shadow-xl);}
.agent-h{padding:14px 16px;border-bottom:1px solid var(--line-2);display:flex;align-items:center;gap:11px;}
.agent-h .av{width:38px;height:38px;border-radius:11px;background:var(--grad-brand);color:#fff;display:flex;align-items:center;justify-content:center;flex:none;}
.agent-h .ttl{flex:1;min-width:0;}
.agent-h .ttl strong{font-size:14px;display:block;}
.agent-h .ttl span{font-size:12px;color:var(--ink-3);}
.agent-body{flex:1;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:10px;background:var(--bg-3);}
.agent-msg{max-width:85%;padding:10px 13px;border-radius:14px;font-size:13.5px;line-height:1.5;}
.agent-msg.bot{background:var(--card);border:1px solid var(--line-2);align-self:flex-start;border-bottom-left-radius:4px;}
.agent-msg.me{background:var(--accent);color:#fff;align-self:flex-end;border-bottom-right-radius:4px;}
.agent-msg .mt{font-size:10.5px;opacity:.6;margin-top:4px;}
.agent-suggest{display:flex;flex-wrap:wrap;gap:7px;padding:10px 16px;border-top:1px solid var(--line-2);}
.agent-chip{font-size:12.5px;border:1px solid var(--line);background:var(--card);color:var(--ink-2);border-radius:99px;padding:6px 12px;cursor:pointer;transition:border var(--t),color var(--t);}
.agent-chip:hover{border-color:var(--accent);color:var(--accent);}
.agent-input{padding:12px 14px;border-top:1px solid var(--line-2);display:flex;gap:8px;align-items:center;}
.agent-input input{flex:1;border:1px solid var(--line);border-radius:99px;padding:10px 14px;font:inherit;font-size:14px;background:var(--bg);color:var(--ink);}
.agent-input input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash);}
.agent-send{width:40px;height:40px;border-radius:50%;border:none;background:var(--accent);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex:none;}
.agent-sessions{position:absolute;top:54px;right:14px;width:240px;background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--shadow-xl);z-index:5;overflow:hidden;display:none;}
.agent-sessions.open{display:block;}
.agent-sessions .sh{padding:10px 14px;font-size:12px;font-weight:700;color:var(--ink-3);display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line-2);}
.agent-sessions .si{padding:11px 14px;font-size:13px;cursor:pointer;border-bottom:1px solid var(--line-2);display:flex;justify-content:space-between;gap:8px;}
.agent-sessions .si:hover{background:var(--bg-2);}
.agent-sessions .si.active{color:var(--accent);font-weight:600;}
@media(max-width:560px){.agent-fab span{display:none;}.agent-fab{padding:14px;}}

/* ---------- Gantt maduro (D10 · gantt.js) ---------- */
.gx{font-size:13px;}
.gx-head,.gx-row{display:flex;align-items:stretch;}
.gx-side{width:210px;flex:none;padding:6px 14px 6px 0;display:flex;flex-direction:column;justify-content:center;gap:1px;}
.gx-side-h{font-size:11px;color:var(--ink-3);font-weight:600;letter-spacing:.02em;}
.gx-name{font-size:13px;color:var(--ink);font-weight:500;line-height:1.25;}
.gx-owner{font-size:11px;color:var(--ink-3);}
.gx-lane{position:relative;flex:1;height:32px;border-left:1px solid var(--line-2);}
.gx-lane-h{height:28px;}
.gx-col{position:absolute;top:0;bottom:0;border-right:1px solid var(--line-2);}
.gx-col span{position:absolute;left:7px;top:6px;font-size:11px;color:var(--ink-3);font-weight:600;}
.gx-head .gx-lane{border-bottom:1px solid var(--line);}
.gx-wk{position:absolute;top:0;bottom:0;width:1px;background:var(--line-2);opacity:.45;}
.gx-body{position:relative;}
.gx-grouphead{font-size:10.5px;font-weight:700;letter-spacing:.04em;color:var(--ink-3);text-transform:uppercase;padding:12px 0 3px;}
.gx-row{position:relative;z-index:2;}
.gx-bar{position:absolute;top:5px;height:22px;border-radius:6px;display:flex;align-items:center;padding:0 8px;color:#fff;font-size:11px;font-weight:600;overflow:hidden;box-shadow:var(--shadow-xs);}
.gx-bar span{position:relative;z-index:2;text-shadow:0 1px 1px rgba(0,0,0,.18);}
.gx-fill{position:absolute;left:0;top:0;bottom:0;background:rgba(255,255,255,.30);}
.gx-on{background:var(--accent);}
.gx-risk{background:var(--amber);}
.gx-late{background:var(--red);}
.gx-done{background:var(--green);}
.gx-ms{position:absolute;top:4px;display:flex;align-items:center;gap:6px;transform:translateX(-7px);white-space:nowrap;}
.gx-ms i{width:13px;height:13px;background:var(--ink);transform:rotate(45deg);border-radius:2px;flex:none;box-shadow:var(--shadow-xs);}
.gx-ms b{font-size:11px;font-weight:600;color:var(--ink-2);}
.gx-ovwrap{position:absolute;top:0;bottom:0;left:210px;right:0;pointer-events:none;z-index:1;}
.gx-ov{position:absolute;inset:0;width:100%;}
.gx-today{position:absolute;top:0;bottom:0;width:0;border-left:2px dashed var(--red);}
.gx-today span{position:absolute;top:-3px;left:3px;font-size:9px;font-weight:700;color:var(--red);background:var(--card);padding:0 3px;border-radius:3px;}
.gx-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-top:14px;}
.gx-legend span{display:inline-flex;align-items:center;gap:6px;}
.gx-legend i{width:11px;height:11px;border-radius:3px;display:inline-block;}
.gx-legend i.ms{transform:rotate(45deg);border-radius:2px;background:var(--ink);}

/* ---------- Botão hamburger do app (mobile, injetado por ui.js) ---------- */
.navburger{display:none;}

/* ---------- Responsivo ---------- */
@media(max-width:900px){
  .app{grid-template-columns:1fr;}
  /* Sidebar do app vira drawer deslizante */
  .sidebar{position:fixed;top:0;left:0;z-index:95;width:266px;max-width:84vw;height:100vh;transform:translateX(-101%);transition:transform .3s var(--ease-out);}
  .sidebar.open{transform:none;box-shadow:var(--shadow-xl);}
  .navburger{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:none;cursor:pointer;color:var(--ink-2);margin-right:4px;flex:none;}
  .topbar{padding:0 var(--s-5);}
  .footer .cols{grid-template-columns:1fr 1fr;}
  .content{padding:var(--s-5);}
  /* Grids colapsam */
  .grid.g-4,.grid.g-3,.grid.g-2{grid-template-columns:1fr 1fr;}
  /* Tabelas rolam horizontalmente */
  .table{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch;}
  /* Header do site: hamburger CSS-only */
  .nav-toggle{display:flex;}
  .nav-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:2px;background:var(--bg);border-bottom:1px solid var(--line-2);padding:12px 18px;box-shadow:var(--shadow-lg);}
  .nav-links a{padding:11px 8px;font-size:16px;}
  .nav-links a.btn{margin-top:6px;text-align:center;}
  .nav-tg-input:checked~.nav-links{display:flex;}
}
@media(max-width:560px){
  .grid.g-4,.grid.g-3,.grid.g-2{grid-template-columns:1fr;}
  .topbar .iconbtn{width:36px;height:36px;}
  .topbar .avatar-img{width:32px;height:32px;}
}
/* Telas grandes (FHD / Retina) — conteúdo respira sem esticar demais */
@media(min-width:1680px){
  .content{max-width:1480px;}
}
@media(min-width:2200px){
  .content{max-width:1680px;}
}
