/* =====================================================================================
   TEMA BINO — visual único para TODOS os módulos (carregado por último).
   Ideia: simples, elegante e vivo. Menos bordas, mais respiro, cantos suaves, sombras leves,
   uma cor de ação clara, animações curtas. Só mexe em aparência (nada de comportamento).
   ===================================================================================== */
:root{
  --bg:#F4F6FA; --surface:#FFFFFF; --surface-alt:#EEF2F8; --border:#E1E7F0;
  --text:#101828; --text-muted:#5B677B; --text-faint:#94A0B4;
  --primary:#1D4ED8; --primary-soft:#E8EEFF; --primary-strong:#14327F;
  --accent:#F59E0B;
  --good:#12805C; --good-soft:#E3F6EE;
  --warn:#B45309; --warn-soft:#FEF1D8;
  --bad:#C0352B; --bad-soft:#FDE9E6;
  --radius:16px; --radius-sm:11px;
  --shadow: 0 1px 2px rgba(16,24,40,.05), 0 6px 20px rgba(16,24,40,.06);
  --shadow-lg: 0 10px 30px rgba(16,24,40,.14);
  --ease: cubic-bezier(.2,.7,.2,1);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0B1220; --surface:#121B2D; --surface-alt:#18233A; --border:#25324D;
    --text:#E8EEF9; --text-muted:#9AA9C2; --text-faint:#6F7F9B;
    --primary:#6C9BFF; --primary-soft:#172447; --primary-strong:#A9C4FF;
    --good:#4FC79A; --good-soft:#12302A; --warn:#F0B24A; --warn-soft:#352915; --bad:#EE7468; --bad-soft:#3A1F1C;
    --shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.35);
    --shadow-lg: 0 14px 40px rgba(0,0,0,.55);
  }
}
:root[data-theme="dark"]{
  --bg:#0B1220; --surface:#121B2D; --surface-alt:#18233A; --border:#25324D;
  --text:#E8EEF9; --text-muted:#9AA9C2; --text-faint:#6F7F9B;
  --primary:#6C9BFF; --primary-soft:#172447; --primary-strong:#A9C4FF;
  --good:#4FC79A; --good-soft:#12302A; --warn:#F0B24A; --warn-soft:#352915; --bad:#EE7468; --bad-soft:#3A1F1C;
  --shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.35);
  --shadow-lg: 0 14px 40px rgba(0,0,0,.55);
}

/* ---- base ---- */
body{font-feature-settings:"cv11","ss01"; -webkit-font-smoothing:antialiased; line-height:1.45}
h1,h2{font-family:"Fraunces","Iowan Old Style",Georgia,serif;font-weight:700;letter-spacing:-.015em}
h3,h4{font-family:inherit;font-weight:700;letter-spacing:-.005em}
::selection{background:var(--primary-soft);color:var(--primary-strong)}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:8px}

/* ---- movimento (curto e discreto) ---- */
@keyframes bino-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes bino-pop{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
#app.bino-enter > *{animation:bino-in .28s var(--ease) both}   /* só quando troca de tela (não a cada atualização de dados) */
.modal-box,.login-card,.fch-sheet{animation:bino-pop .22s var(--ease) both}
@media (prefers-reduced-motion: reduce){ *,*::before,*::after{animation:none!important;transition:none!important} }

/* ---- cartões e painéis ---- */
.panel{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px}
.panel h2{font-size:19px}
.kpi-card{border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow);transition:transform .18s var(--ease), box-shadow .18s var(--ease)}
.kpi-card strong{font-size:22px;letter-spacing:-.02em}
.card,.fin-card{border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);box-shadow:0 1px 2px rgba(16,24,40,.04);transition:transform .18s var(--ease), box-shadow .18s var(--ease), border-color .18s}
.card:hover,button.card:hover,.kpi-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--primary)}
.fin-card.vencido{background:var(--bad-soft)} .fin-card.hoje,.fin-card.proximo{background:var(--warn-soft)} .fin-card.pago{background:var(--good-soft)}
.empty{border-radius:var(--radius);border:1.5px dashed var(--border);background:transparent;padding:32px}

/* ---- botões: 3 tipos, sempre os mesmos ---- */
.addbtn,.rowbtn,.backbtn,.tk-btn,.fch-btn{transition:transform .12s var(--ease), box-shadow .18s, background .18s, border-color .18s, color .18s}
.addbtn{background:var(--primary);color:#fff;border:1px solid transparent;border-radius:12px;padding:10px 18px;font-size:14px;font-weight:700;box-shadow:0 1px 2px rgba(29,78,216,.25), 0 6px 14px -6px rgba(29,78,216,.45)}
.addbtn:hover{filter:brightness(1.07);transform:translateY(-1px)}
.addbtn:active{transform:translateY(0) scale(.98)}
.addbtn:disabled,.rowbtn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
.addbtn.ghost{background:transparent;color:var(--primary);border:1.5px dashed color-mix(in srgb, var(--primary) 45%, var(--border));box-shadow:none}
.addbtn.ghost:hover{background:var(--primary-soft);border-color:var(--primary);filter:none}
.rowbtn{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:7px 13px;font-size:13px;font-weight:600;color:var(--text)}
.rowbtn:hover{background:var(--primary-soft);border-color:var(--primary);color:var(--primary-strong)}
.rowbtn.danger{color:var(--bad)} .rowbtn.danger:hover{background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}
.backbtn{font-weight:700;color:var(--primary)} .backbtn:hover{text-decoration:underline}

/* ---- campos ---- */
input,select,textarea{border-radius:10px;border:1px solid var(--border);padding:9px 12px;background:var(--surface);transition:border-color .15s, box-shadow .15s}
input:hover,select:hover,textarea:hover{border-color:color-mix(in srgb, var(--primary) 40%, var(--border))}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px color-mix(in srgb, var(--primary) 18%, transparent)}
.field label{font-size:12px;font-weight:700;color:var(--text-muted);letter-spacing:.01em}

/* ---- selos de situação ---- */
.pill{font-size:12px;padding:3px 10px;font-weight:700;letter-spacing:.005em}
.pill.muted{background:var(--surface-alt);border:0}

/* ---- abas e navegação ---- */
.tabs button,.section-tabs button{border-radius:999px;transition:background .15s,color .15s}
.tabs button.active{background:var(--primary);box-shadow:0 4px 12px -4px rgba(29,78,216,.5)}
.section-tabs button{background:var(--surface);border:1px solid var(--border);font-weight:700}
.section-tabs button.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.topbar{background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid color-mix(in srgb, var(--border) 70%, transparent)}
.sidebar{background:var(--surface);border-right:1px solid var(--border)}
.sidebar-item{border-radius:12px;padding:9px 12px;font-weight:600;position:relative;transition:background .15s,color .15s}
.sidebar-item.active{background:var(--primary-soft);color:var(--primary-strong)}
.sidebar-item.active::before{content:"";position:absolute;left:-10px;top:9px;bottom:9px;width:4px;border-radius:4px;background:var(--primary)}

/* ---- tabelas ---- */
.tbl-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}
table{border-collapse:separate;border-spacing:0;width:100%}
th{position:sticky;top:0;background:var(--surface-alt);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:700;text-align:left;padding:10px 12px}
td{padding:10px 12px;border-top:1px solid var(--border)}
tbody tr{transition:background .12s}
tbody tr:hover{background:color-mix(in srgb, var(--primary-soft) 55%, transparent)}

/* ---- janelas e avisos ---- */
.modal-overlay,#dayModal,#finModal,#finRecurringModal{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.modal-box{border-radius:20px;padding:24px;box-shadow:var(--shadow-lg);border:1px solid var(--border)}
.toast{border-radius:14px;padding:12px 18px;font-weight:600;box-shadow:var(--shadow-lg);background:#101828;color:#fff}

/* ---- login ---- */
.login-gate{background:radial-gradient(1200px 600px at 20% -10%, color-mix(in srgb, var(--primary) 16%, transparent), transparent), var(--bg)}
.login-card{border-radius:22px;padding:30px 28px;box-shadow:var(--shadow-lg);border:1px solid var(--border)}

/* ---- cartões de produção/checklist (tablet) ---- */
.tk-card,.prod-card{border-radius:var(--radius);box-shadow:var(--shadow);transition:transform .18s var(--ease), box-shadow .18s}
.tk-btn.tk-done,.addbtn[data-prod-feito]{font-size:17px;padding:14px 22px;border-radius:14px}
.tk-btn{border-radius:14px}
.tk-ring{box-shadow:var(--shadow)}

/* ---- Gerente de Fechamento (celular) e Terminal de Ponto: mesma linguagem ---- */
.fch-card,.fch-row,.fch-prog,.fch-unit{border-radius:var(--radius);box-shadow:var(--shadow)}
.fch-btn.primary,.fch-btn.wa{border-radius:14px}
.pt-term{border-radius:24px;box-shadow:var(--shadow-lg)}

/* ---- celular: mais respiro e alvos grandes ---- */
@media (max-width:820px){
  .panel{padding:16px 16px;border-radius:14px}
  .modal-box{border-radius:18px 18px 0 0;padding:20px 18px;margin-top:auto}
  .modal-overlay{align-items:flex-end;padding:0}
  .sidebar-item.active::before{left:0}
}

/* ---- barras de rolagem discretas ---- */
.tabs,.section-tabs{scrollbar-width:none;padding:2px 2px 6px}
.tabs::-webkit-scrollbar,.section-tabs::-webkit-scrollbar{display:none}
.sidebar *{scrollbar-width:thin;scrollbar-color:var(--border) transparent}

/* celular: textos miúdos mais legíveis e links de ação fáceis de tocar */
@media (max-width:820px){ .mini,.sup,.pill,.field label{font-size:12.5px} .tk-link,.panel-link,.bc-link{min-height:44px;display:inline-flex;align-items:center} }
