.btn{border-radius:var(--radius);height:36px;font-size:var(--fs-14);color:var(--text);cursor:pointer;white-space:nowrap;transition:background var(--t-fast), border-color var(--t-fast), color var(--t-fast), box-shadow var(--t-fast), transform var(--t-fast);-webkit-user-select:none;user-select:none;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:0 14px;font-weight:500;display:inline-flex}.btn:active{transform:translateY(.5px)}.btn[disabled],.btn:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.btn .ico{flex-shrink:0;width:16px;height:16px}.btn-primary{background:var(--color-primary);color:var(--color-on-primary);border-color:var(--color-primary);box-shadow:0 1px #0f172a0a}.btn-primary:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-primary:active{background:var(--color-primary-active);border-color:var(--color-primary-active)}.btn-secondary{background:var(--bg-surface);color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--bg-muted);border-color:var(--border-strong)}.btn-ghost{color:var(--text)}.btn-ghost:hover{background:var(--bg-sunken)}.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn-danger:hover{background:#b91c1c;border-color:#b91c1c}.btn-link{height:auto;color:var(--color-primary-ink);background:0 0;padding:0;font-weight:500}.btn-link:hover{text-decoration:underline}.btn-sm{height:30px;font-size:var(--fs-13);padding:0 10px}.btn-lg{height:42px;font-size:var(--fs-15);padding:0 18px}.btn-icon{width:36px;padding:0}.btn-icon.btn-sm{width:30px}.badge{border-radius:var(--radius-pill);background:var(--neutral-soft);height:22px;color:var(--text);white-space:nowrap;align-items:center;gap:6px;padding:0 8px;font-size:12px;font-weight:500;display:inline-flex}.badge .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.badge-ok{background:var(--ok-soft);color:#15803d}.badge-warn{background:var(--warn-soft);color:#a16207}.badge-danger{background:var(--danger-soft);color:#b91c1c}.badge-info{background:var(--info-soft);color:#1d4ed8}.badge-neutral{background:var(--neutral-soft);color:#424242}.badge-primary{background:var(--color-primary-soft);color:var(--color-primary-ink)}.badge-outline{border:1px solid var(--border-strong);color:var(--text-muted);background:0 0}.chip{border-radius:var(--radius-pill);background:var(--bg-surface);border:1px solid var(--border-strong);height:28px;font-size:var(--fs-13);color:var(--text);cursor:pointer;white-space:nowrap;flex-shrink:0;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.chip>*{flex-shrink:0}.chip:hover{background:var(--bg-muted)}.chip.is-active{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary-ink)}.chip .x{color:var(--text-faint);cursor:pointer}.chip .x:hover{color:var(--text)}.input,.select,.textarea{background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius);width:100%;height:36px;font-size:var(--fs-14);color:var(--text);transition:border-color var(--t-fast), box-shadow var(--t-fast);padding:0 12px}.textarea{resize:vertical;height:auto;min-height:88px;padding:10px 12px;line-height:1.45}.input:hover,.select:hover,.textarea:hover{border-color:#a5a5a5}.input:focus,.select:focus,.textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft);outline:none}.input::placeholder,.textarea::placeholder{color:var(--text-faint)}.input.input-sm{height:30px;font-size:var(--fs-13);padding:0 10px}.input.has-leading{padding-left:34px}.field{flex-direction:column;gap:6px;display:flex}.field-label{font-size:var(--fs-13);color:var(--text);font-weight:500}.field-hint{font-size:var(--fs-12);color:var(--text-muted)}.field-error{font-size:var(--fs-12);color:var(--danger)}.input-wrap{position:relative}.input-wrap .leading-ico{width:16px;height:16px;color:var(--text-faint);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.tabs{border-bottom:1px solid var(--border);gap:4px;display:flex}.tab{font-size:var(--fs-14);color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:6px 6px 0 0;padding:10px 14px;font-weight:500;position:relative}.tab:hover{color:var(--text);background:var(--bg-sunken)}.tab.is-active{color:var(--color-primary-ink)}.tab.is-active:after{content:"";background:var(--color-primary);border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:-1px;left:8px;right:8px}.tab .count{color:var(--text-muted);background:var(--bg-sunken);border-radius:var(--radius-pill);margin-left:6px;padding:1px 6px;font-size:11px}.tab.is-active .count{background:var(--color-primary-soft);color:var(--color-primary-ink)}.crumbs{font-size:var(--fs-13);color:var(--text-muted);align-items:center;gap:6px;display:flex}.crumbs a,.crumbs span.link{color:var(--text-muted);cursor:pointer;text-decoration:none}.crumbs a:hover,.crumbs span.link:hover{color:var(--text)}.crumbs .sep{color:var(--text-faint)}.crumbs .current{color:var(--text)}.kpi{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;gap:8px;min-width:0;padding:18px 20px;display:flex}.kpi-label{font-size:var(--fs-13);color:var(--text-muted);align-items:center;gap:6px;font-weight:500;display:flex}.kpi-label .info{color:var(--text-faint);cursor:help}.kpi-value{font-size:var(--fs-28);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-weight:700;line-height:1.05}.kpi-value .unit{font-size:var(--fs-16);color:var(--text-muted);margin-left:2px;font-weight:500}.kpi-foot{font-size:var(--fs-12);color:var(--text-muted);align-items:center;gap:8px;display:flex}.kpi-delta{font-weight:500;font-size:var(--fs-12);border-radius:var(--radius-pill);align-items:center;gap:3px;padding:2px 6px;display:inline-flex}.kpi-delta.up{color:#15803d;background:var(--ok-soft)}.kpi-delta.down{color:#b91c1c;background:var(--danger-soft)}.kpi-delta.flat{color:var(--text-muted);background:var(--neutral-soft)}.kpi-spark{height:36px;margin-top:auto}.tbl-wrap{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.tbl-toolbar{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--divider);background:var(--bg-surface);flex-wrap:wrap;display:flex}.tbl-filters{align-items:center;gap:var(--sp-2);flex-wrap:wrap;flex:auto;min-width:0;display:flex}.tbl-actions{align-items:center;gap:var(--sp-2);flex:360px;justify-content:flex-end;min-width:0;display:flex}.tbl-actions .input-wrap{margin-right:auto}.tbl-toolbar .grow{flex:1}.tbl-scroll{overflow-x:auto}table.tbl{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-13)}.tbl thead th{z-index:1;background:var(--bg-muted);color:var(--text-muted);text-align:left;font-weight:500;font-size:var(--fs-12);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 14px;position:sticky;top:0}.tbl thead th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.tbl thead th.sortable:hover{color:var(--text)}.tbl thead th .sort-ico{opacity:.5;margin-left:4px;display:inline-block}.tbl tbody td{border-bottom:1px solid var(--divider);color:var(--text);vertical-align:middle;white-space:nowrap;padding:12px 14px}.tbl tbody tr{transition:background var(--t-fast)}.tbl tbody tr:hover{background:var(--color-primary-softer)}.tbl tbody tr.is-selected{background:var(--color-primary-soft)}.tbl tbody tr:last-child td{border-bottom:0}.tbl td .cell-strong{color:var(--text);font-weight:500}.tbl td .cell-sub{color:var(--text-muted);margin-top:2px;font-size:12px}.tbl td.num,.tbl th.num{text-align:right;font-variant-numeric:tabular-nums}.tbl td.actions,.tbl th.actions{text-align:right;width:1%}.tbl-foot{border-top:1px solid var(--divider);font-size:var(--fs-13);color:var(--text-muted);background:var(--bg-surface);justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.cbx{appearance:none;border:1.5px solid var(--border-strong);background:var(--bg-surface);cursor:pointer;vertical-align:middle;width:16px;height:16px;transition:background var(--t-fast), border-color var(--t-fast);border-radius:4px;position:relative}.cbx:hover{border-color:var(--color-primary)}.cbx:checked{background:var(--color-primary);border-color:var(--color-primary)}.cbx:checked:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:4px;height:8px;position:absolute;top:1px;left:4px;transform:rotate(45deg)}.cbx:indeterminate{background:var(--color-primary);border-color:var(--color-primary)}.cbx:indeterminate:after{content:"";background:#fff;height:2px;position:absolute;top:6px;left:3px;right:3px}.drawer-backdrop{z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:drawer-fade var(--t-base);background:#0f172a59;position:fixed;inset:0}.drawer{background:var(--bg-surface);z-index:51;width:520px;max-width:100vw;animation:drawer-slide var(--t-base);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-16px 0 40px #0f172a1f}.drawer-head{border-bottom:1px solid var(--divider);align-items:center;gap:12px;padding:16px 20px;display:flex}.drawer-head .title{font-size:var(--fs-16);font-weight:600}.drawer-body{flex:1;padding:20px;overflow:auto}.drawer-foot{border-top:1px solid var(--divider);background:var(--bg-muted);justify-content:flex-end;align-items:center;gap:10px;padding:14px 20px;display:flex}@keyframes drawer-fade{0%{opacity:0}to{opacity:1}}@keyframes drawer-slide{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.modal-backdrop{z-index:60;animation:drawer-fade var(--t-base);background:#0f172a59;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg-surface);border-radius:var(--radius-lg);width:520px;max-width:calc(100vw - 32px);box-shadow:var(--shadow-lg);animation:modal-pop var(--t-base);overflow:hidden}@keyframes modal-pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.modal-head{border-bottom:1px solid var(--divider);padding:16px 20px}.modal-body{padding:20px}.modal-foot{border-top:1px solid var(--divider);background:var(--bg-muted);justify-content:flex-end;gap:10px;padding:14px 20px;display:flex}.toast-stack{z-index:80;flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--bg-surface);border:1px solid var(--border);border-left:3px solid var(--color-primary);border-radius:var(--radius);min-width:280px;max-width:380px;box-shadow:var(--shadow);align-items:flex-start;gap:10px;padding:12px 14px;animation:.22s cubic-bezier(.2,.7,.3,1) toast-in;display:flex}.toast.ok{border-left-color:var(--ok)}.toast.warn{border-left-color:var(--warn)}.toast.danger{border-left-color:var(--danger)}.toast .title{font-weight:600;font-size:var(--fs-14)}.toast .body{font-size:var(--fs-13);color:var(--text-muted);margin-top:2px}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.avatar{background:var(--bg-sunken);width:32px;height:32px;color:var(--text-faint);box-shadow:inset 0 0 0 1px var(--border);font-size:var(--fs-13);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:inline-flex;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.avatar.sm{width:24px;height:24px;font-size:11px}.avatar.lg{width:40px;height:40px;font-size:var(--fs-14)}.avatar.xl{width:80px;height:80px;font-size:var(--fs-18)}.avatar.xxl{width:192px;height:192px;font-size:var(--fs-28)}.menu{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);min-width:200px;padding:6px}.menu-item{border-radius:var(--radius-sm);font-size:var(--fs-13);color:var(--text);cursor:pointer;align-items:center;gap:10px;padding:8px 10px;display:flex}.menu-item:hover{background:var(--bg-sunken)}.menu-item .ico{width:16px;height:16px;color:var(--text-muted)}.menu-item.danger,.menu-item.danger .ico{color:var(--danger)}.menu-sep{background:var(--divider);height:1px;margin:6px 4px}.empty{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:48px 24px;display:flex}.empty-art{background:var(--bg-sunken);width:64px;height:64px;color:var(--text-faint);border-radius:50%;justify-content:center;align-items:center;display:flex}.skeleton{background:linear-gradient(90deg,#f0f0f0 0%,#f7f7f7 50%,#f0f0f0 100%) 0 0/200% 100%;border-radius:6px;animation:1.4s ease-in-out infinite sk;display:inline-block}@keyframes sk{0%{background-position:0 0}to{background-position:-200% 0}}.cnpj{font-family:var(--font-mono);font-size:var(--fs-13);color:var(--text-muted)}.brl{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.demo-state-bar{border-radius:var(--radius);background:linear-gradient(135deg,#1a1d24,#25282f);align-items:center;gap:4px;margin-bottom:14px;padding:4px;display:inline-flex}.demo-state-bar .demo-label{letter-spacing:.08em;text-transform:uppercase;color:#6e7686;font-size:10px;font-weight:700;font-family:var(--font-mono);padding:0 10px 0 8px}.demo-state-bar button{color:#bcc4d2;cursor:pointer;background:0 0;border:0;border-radius:4px;align-items:center;gap:5px;height:24px;padding:0 10px;font-family:inherit;font-size:11px;font-weight:500;display:inline-flex}.demo-state-bar button:hover{color:#fff;background:#ffffff0f}.demo-state-bar button.is-active{background:var(--color-primary);color:#fff;font-weight:600}.demo-state-bar button .dot{border-radius:50%;width:5px;height:5px}.sk-row td{padding:14px!important}.sk-bar{vertical-align:middle;background:linear-gradient(90deg,#f0f0f0 0%,#f7f7f7 50%,#f0f0f0 100%) 0 0/200% 100%;border-radius:4px;height:10px;animation:1.4s ease-in-out infinite sk;display:inline-block}.sk-circle{vertical-align:middle;background:linear-gradient(90deg,#f0f0f0 0%,#f7f7f7 50%,#f0f0f0 100%) 0 0/200% 100%;border-radius:50%;animation:1.4s ease-in-out infinite sk;display:inline-block}.state-error{text-align:center;flex-direction:column;align-items:center;gap:14px;padding:56px 32px;display:flex}.state-error .art{background:var(--danger-soft);width:80px;height:80px;color:var(--danger);border-radius:50%;justify-content:center;align-items:center;display:flex}.state-error .title{font-size:18px;font-weight:600}.state-error .body{color:var(--text-muted);max-width:480px;font-size:13px;line-height:1.5}.state-error .code{font-family:var(--font-mono);color:var(--text-faint);background:var(--bg-sunken);border-radius:4px;padding:4px 8px;font-size:11px}.hr{background:var(--divider);border:0;height:1px;margin:16px 0}.divider-v{background:var(--border);width:1px;height:20px}
