/* Componentes compartilhados (tokens semanticos; layout fica nas classes Tailwind). */

/* botoes */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font:inherit;font-size:13.5px;font-weight:700;cursor:pointer;white-space:nowrap;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),transform var(--dur-instant) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out);touch-action:manipulation}
.btn:hover{background:var(--surface-2);color:var(--text)}
.btn:active{transform:scale(.97)}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed;transform:none}
.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}
.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:var(--primary-ink)}
.btn-dark{background:var(--text);border-color:var(--text);color:var(--bg)}
.btn-dark:hover{background:var(--text);opacity:.9;color:var(--bg)}
.btn-ghost{border-color:transparent;background:transparent}
.btn-danger{color:var(--m-danger-ink);border-color:var(--m-danger)}
.btn-danger:hover{background:var(--m-danger-tint);color:var(--m-danger-ink)}
.btn-lg{height:52px;padding:0 26px;font-size:15px;border-radius:var(--r-md)}
.btn-sm{height:32px;padding:0 12px;font-size:12.5px}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-instant) var(--ease-out)}
.icon-btn:hover{background:var(--surface-2);color:var(--text)}
.icon-btn:active{transform:scale(.94)}
.icon-btn[disabled]{opacity:.4;cursor:not-allowed}
.icon{width:1.15em;height:1.15em;flex:none;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.icon-fill{fill:currentColor;stroke:none}

/* badges e chips */
.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r-pill);font-size:12px;font-weight:700;line-height:1.2;background:var(--bg-soft);color:var(--muted)}
.badge .icon{width:13px;height:13px}
.badge-primary{background:var(--primary-tint);color:var(--primary-tint-ink)}
.badge-ok{background:var(--m-ok-tint);color:var(--m-ok-ink)}
.badge-warn{background:var(--m-warn-tint);color:var(--m-warn-ink)}
.badge-danger{background:var(--m-danger-tint);color:var(--m-danger-ink)}
.chip{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 14px;border-radius:var(--r-pill);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out);touch-action:manipulation}
.chip:hover{background:var(--surface-2)}
.chip[aria-pressed="true"]{background:var(--text);color:var(--bg);border-color:var(--text)}
.chip .swatch{width:9px;height:9px;border-radius:3px;background:var(--mc,var(--muted))}

/* modulos: define --mc / --mc-tint / --mc-ink a partir do atributo */
[data-mod="Helpdesk"]{--mc:var(--m-helpdesk);--mc-tint:var(--m-helpdesk-tint);--mc-ink:var(--m-helpdesk-ink)}
[data-mod="Fiscal"]{--mc:var(--m-fiscal);--mc-tint:var(--m-fiscal-tint);--mc-ink:var(--m-fiscal-ink)}
[data-mod="Financeiro"]{--mc:var(--m-financeiro);--mc-tint:var(--m-financeiro-tint);--mc-ink:var(--m-financeiro-ink)}
[data-mod="Comercial"]{--mc:var(--m-comercial);--mc-tint:var(--m-comercial-tint);--mc-ink:var(--m-comercial-ink)}
[data-mod="Produção"]{--mc:var(--m-producao);--mc-tint:var(--m-producao-tint);--mc-ink:var(--m-producao-ink)}
[data-mod="Projetos"]{--mc:var(--m-projetos);--mc-tint:var(--m-projetos-tint);--mc-ink:var(--m-projetos-ink)}
[data-mod="Suporte"]{--mc:var(--m-suporte);--mc-tint:var(--m-suporte-tint);--mc-ink:var(--m-suporte-ink)}
[data-mod="Implantação"]{--mc:var(--m-implantacao);--mc-tint:var(--m-implantacao-tint);--mc-ink:var(--m-implantacao-ink)}
[data-mod="Operação Global"]{--mc:var(--m-global);--mc-tint:var(--m-global-tint);--mc-ink:var(--m-global-ink)}
.badge-mod{background:var(--mc-tint);color:var(--mc-ink)}

/* segmented (tabs em pilula) */
.seg{display:inline-flex;padding:3px;gap:2px;background:var(--bg-soft);border-radius:var(--r-md)}
.seg button{height:34px;padding:0 14px;border:none;border-radius:var(--r-sm);background:transparent;color:var(--muted);font:inherit;font-size:13px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
.seg button:hover{color:var(--text)}
.seg button[aria-pressed="true"],.seg button[aria-selected="true"]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}

/* cards */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg)}
.card-hover{transition:box-shadow var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out)}
.card-hover:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--border-strong)}

/* thumbnail escuro nos dois temas */
.thumb{position:relative;aspect-ratio:16/9;background:linear-gradient(135deg,var(--video-surface),var(--video-bg));border-top:3px solid var(--mc,var(--primary));display:flex;align-items:center;justify-content:center;color:var(--video-text);overflow:hidden}
.thumb::after{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 20% 0%,color-mix(in srgb,var(--mc,var(--primary)) 30%,transparent),transparent 60%);pointer-events:none}
.thumb-play{position:relative;z-index:1;width:46px;height:46px;border-radius:50%;background:var(--video-chip);display:flex;align-items:center;justify-content:center;transition:transform var(--dur-base) var(--ease-out)}
.card-hover:hover .thumb-play{transform:scale(1.08)}
.thumb-tag{position:absolute;z-index:1;font-size:11px;font-weight:700;color:var(--video-text);padding:2px 8px;border-radius:6px;background:var(--video-chip)}

/* campos */
.field{display:flex;flex-direction:column;gap:6px}
.field>label,.label{font-size:12.5px;font-weight:700;color:var(--muted)}
.input,.select,.textarea{width:100%;min-height:42px;padding:0 12px;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--text);font:inherit;font-size:14px;transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}
.textarea{padding:10px 12px;line-height:1.55;resize:vertical}
.input:focus-visible,.select:focus-visible,.textarea:focus-visible{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus) 30%,transparent)}
.input-bare{border:none;background:transparent;padding:0;min-height:0;border-radius:0}
.input-bare:focus-visible{box-shadow:none;outline:none}
.help{font-size:12.5px;color:var(--muted)}
.error-text{font-size:12.5px;color:var(--m-danger-ink);font-weight:600}

/* modal e toast */
.overlay{position:fixed;inset:0;z-index:60;background:var(--overlay);display:flex;align-items:center;justify-content:center;padding:16px;opacity:0;pointer-events:none;transition:opacity var(--dur-base) var(--ease-out)}
.overlay.open{opacity:1;pointer-events:auto}
.dialog{width:100%;max-width:520px;max-height:calc(100dvh - 32px);overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);transform:translateY(12px) scale(.97);transition:transform var(--dur-base) var(--ease-out)}
.overlay.open .dialog{transform:none}
.toasts{position:fixed;left:50%;bottom:20px;z-index:80;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;padding:11px 16px;border-radius:var(--r-md);background:var(--text);color:var(--bg);font-size:13.5px;font-weight:600;box-shadow:var(--shadow-lg);animation:toast-in var(--dur-base) var(--ease-out)}
.toast.out{animation:toast-out var(--dur-fast) var(--ease-in-out) forwards}
@keyframes toast-in{from{opacity:0;transform:translateY(10px)}}
@keyframes toast-out{to{opacity:0;transform:translateY(6px)}}

/* skeleton */
.skeleton{position:relative;overflow:hidden;background:var(--bg-soft);border-radius:var(--r-sm)}
.skeleton::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--surface-2),transparent);transform:translateX(-100%);animation:shimmer 1.4s var(--ease-in-out) infinite}
@keyframes shimmer{to{transform:translateX(100%)}}

/* estados vazio/erro */
.state{padding:48px 20px;text-align:center;border:1px dashed var(--border-strong);border-radius:var(--r-lg);background:var(--surface);display:flex;flex-direction:column;align-items:center;gap:8px}

/* alternador de tema */
.theme-toggle{display:inline-flex;padding:3px;gap:2px;background:var(--bg-soft);border-radius:var(--r-pill);border:1px solid var(--border)}
.theme-toggle button{width:34px;height:34px;border-radius:50%;border:none;background:transparent;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
.theme-toggle button:hover{color:var(--text)}
.theme-toggle button[aria-pressed="true"]{background:var(--surface);color:var(--primary);box-shadow:var(--shadow-sm)}

/* switch */
.switch{position:relative;width:42px;height:24px;border-radius:var(--r-pill);border:none;background:var(--border-strong);cursor:pointer;flex:none;transition:background-color var(--dur-fast) var(--ease-out)}
.switch::after{content:"";position:absolute;left:3px;top:3px;width:18px;height:18px;border-radius:50%;background:var(--primary-ink);transition:transform var(--dur-fast) var(--ease-out)}
.switch[aria-checked="true"]{background:var(--primary)}
.switch[aria-checked="true"]::after{transform:translateX(18px)}
