  :root{
    --ink:#141b26; --ink-2:#26313f; --paper:#eceae4; --surface:#ffffff;
    --line:#e0ded7; --line-2:#cdcabf; --muted:#6b7280; --text:#1f2733;
    --green:#0f7a52; --green-bg:#e9f5ef; --red:#b23b39; --red-bg:#fbeceb;
    --accent:#0f766e; --accent-weak:#d7ecea; --amber:#b7791f; --amber-bg:#fbf3e0;
    --sun-bg:#fbeeee; --sat-bg:#f2f1ee; --fer-bg:#e6f2f1; --ate-bg:#e9eef9;
    --mono:ui-monospace,"SF Mono","Cascadia Code","Roboto Mono",Consolas,monospace;
    --sans:ui-sans-serif,system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  }
  *{box-sizing:border-box}
  html{-webkit-text-size-adjust:100%}
  body{margin:0;background:var(--paper);color:var(--text);font-family:var(--sans);font-size:14px;line-height:1.45}
  h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}
  .eyebrow{font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}
  .num{font-family:var(--mono);font-variant-numeric:tabular-nums}

  header.top{background:var(--ink);color:#fff;padding:18px 22px;position:sticky;top:0;z-index:20;
    box-shadow:0 1px 0 rgba(0,0,0,.2)}
  .top-wrap{max-width:1240px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
  .brand{display:flex;flex-direction:column;gap:2px}
  .brand h1{font-size:19px;color:#fff}
  .brand .sub{font-size:12px;color:#9aa4b2;letter-spacing:.02em}
  .top-actions{display:flex;gap:8px;flex-wrap:wrap}
  button.act{font-family:var(--sans);font-size:13px;font-weight:600;border:1px solid #3a4656;background:#1f2937;color:#e7ebf1;
    padding:8px 14px;border-radius:8px;cursor:pointer;transition:background .15s,border-color .15s}
  button.act:hover{background:#2b3646;border-color:#4a5768}
  button.act.primary{background:var(--accent);border-color:var(--accent);color:#fff}
  button.act.primary:hover{background:#0c625b}

  nav.tabs{background:var(--ink);padding:0 22px;box-shadow:0 1px 0 rgba(0,0,0,.15)}
  .tabs-inner{max-width:1240px;margin:0 auto;display:flex;gap:2px}
  .tab{background:transparent;border:none;color:#9aa4b2;font-family:var(--sans);font-size:14px;font-weight:600;
    padding:13px 20px;cursor:pointer;border-bottom:2.5px solid transparent;transition:color .15s}
  .tab:hover{color:#e7ebf1}
  .tab.active{color:#fff;border-bottom-color:var(--accent)}
  [hidden]{display:none!important}

  .colab-table td.actbtns{white-space:nowrap}
  .colab-table td.tl{text-align:left}
  .mini{font-size:12px;font-weight:600;padding:5px 10px;border-radius:6px;border:1px solid var(--line-2);
    background:#fff;color:var(--text);cursor:pointer;margin:0 2px}
  .mini:hover{background:#f4f3f0}
  .mini.use{border-color:var(--accent);color:var(--accent)}
  .mini.use:hover{background:var(--accent-weak)}
  .mini.del{border-color:#e6c3c2;color:var(--red)}
  .mini.del:hover{background:var(--red-bg)}
  .pill{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px}
  .pill.horista{background:var(--accent-weak);color:var(--accent)}
  .pill.mensalista{background:#e7e2f2;color:#5b4b96}
  .empty{padding:26px;text-align:center;color:var(--muted);font-size:13.5px}
  .comp-table td,.comp-table th{text-align:center}
  .comp-table td.tl,.comp-table th.tl{text-align:left}
  .comp-table td.num{font-family:var(--mono)}
  .comp-table td.liq{font-family:var(--mono);font-weight:700;color:var(--ink)}
  #histChart{margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--line)}
  .barrow{display:flex;align-items:center;gap:10px;margin:6px 0}
  .barlbl{width:170px;font-size:12px;color:var(--muted);text-align:right;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .bar{height:16px;background:linear-gradient(90deg,var(--accent),#16a892);border-radius:4px;min-width:2px}
  .barval{font-family:var(--mono);font-size:12.5px;font-weight:600;color:var(--ink)}

  .wrap{max-width:1240px;margin:0 auto;padding:22px}
  .layout{display:grid;grid-template-columns:1fr;gap:22px}
  @media(min-width:1040px){.layout{grid-template-columns:1.35fr 1fr;align-items:start}}

  .card{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden}
  .card-h{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}
  .card-h h2{font-size:15px}
  .card-b{padding:16px 18px}

  /* controls */
  .controls{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 16px}
  @media(min-width:640px){.controls{grid-template-columns:repeat(4,1fr)}}
  .field{display:flex;flex-direction:column;gap:5px}
  .field label{font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.02em}
  .field input,.field select{font-family:var(--sans);font-size:14px;padding:8px 10px;border:1px solid var(--line-2);
    border-radius:8px;background:#fff;color:var(--text);width:100%}
  .field input.num{font-family:var(--mono)}
  .field input:focus,.field select:focus{outline:2px solid var(--accent-weak);border-color:var(--accent)}
  .divider{grid-column:1/-1;height:1px;background:var(--line);margin:2px 0}

  /* timesheet */
  .tstable{width:100%;border-collapse:collapse;font-size:13px}
  .tstable th{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);
    text-align:center;padding:7px 4px;border-bottom:1.5px solid var(--line-2);position:sticky;top:0;background:#fff}
  .tstable th.tl{text-align:left}
  .tstable td{padding:4px 4px;border-bottom:1px solid #f0efec;text-align:center;vertical-align:middle}
  .tstable td.day{width:34px;color:var(--muted);font-family:var(--mono);text-align:right;padding-right:8px}
  .tstable td.date{white-space:nowrap;font-family:var(--mono);color:var(--text)}
  .tstable td.dow{color:var(--muted);font-size:12px}
  .tstable td.type{text-align:left}
  .tstable input[type=time],.tstable input.tinp{font-family:var(--mono);font-size:13px;border:1px solid #e6e4dd;border-radius:6px;
    padding:5px 4px;width:62px;text-align:center;background:#fff;color:var(--text)}
  .tstable input.tinp:focus{outline:2px solid var(--accent-weak);border-color:var(--accent);background:#fbfeff}
  .tstable input.tinp::placeholder{color:#c4c2bb}
  .tstable td.calc{font-family:var(--mono);color:var(--text)}
  .tstable td.calc.ex{color:var(--red);font-weight:600}
  .tstable tr.util  td.type .tag{background:#eef0f2;color:#3a4656}
  .tstable tr.sab   {background:var(--sat-bg)}
  .tstable tr.dom   {background:var(--sun-bg)}
  .tstable tr.fer   {background:var(--amber-bg)}
  .tstable tr.ferias{background:var(--fer-bg)}
  .tstable tr.ferias input.tinp{opacity:.4}
  .tstable tr.atestado{background:var(--ate-bg)}
  .tstable tr.atestado input.tinp{opacity:.4}
  .atest-btn{font-size:10px;font-weight:600;color:var(--muted);background:none;border:1px dashed var(--line-2);
    border-radius:5px;padding:1px 6px;margin-left:6px;cursor:pointer}
  .atest-btn:hover{color:var(--accent);border-color:var(--accent)}
  .atest-section{padding:14px 18px;border-top:1px solid var(--line);background:#fafaf8}
  .atest-table{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:10px}
  .atest-table th{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);text-align:center;padding:6px 4px;border-bottom:1.5px solid var(--line-2)}
  .atest-table th.tl{text-align:left}
  .atest-table td{text-align:center;padding:5px 4px;border-bottom:1px solid #f0efec}
  .atest-table td.tl{text-align:left;font-family:var(--mono)}
  .atest-add{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .atest-add input[type=date]{font-family:var(--sans);font-size:13px;padding:6px 8px;border:1px solid var(--line-2);border-radius:7px}
  .ts-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:11px 18px;border-bottom:1px solid var(--line);background:#fafaf8}
  .ts-toolbar .lbl{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-right:2px}
  .ts-toolbar .sep{width:1px;height:22px;background:var(--line-2);margin:0 4px}
  .tinp{font-family:var(--mono);font-size:13px;border:1px solid var(--line-2);border-radius:7px;padding:6px 8px;width:62px;text-align:center;background:#fff;color:var(--text)}
  .tinp:focus{outline:2px solid var(--accent-weak);border-color:var(--accent)}
  .mini2{font-size:12.5px;font-weight:600;padding:7px 12px;border-radius:7px;border:1px solid var(--line-2);background:#fff;color:var(--text);cursor:pointer}
  .mini2:hover{background:#f2f1ee}
  .mini2.accent{border-color:var(--accent);color:var(--accent)}
  .mini2.accent:hover{background:var(--accent-weak)}
  .tag{display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.03em;padding:2px 7px;border-radius:999px;text-transform:uppercase}
  .tag.sab{background:#e6e4de;color:#5b5f66}
  .tag.dom{background:#f3d9d9;color:#9a3b3a}
  .tag.fer{background:#f2e2bd;color:#8a5e14}
  .tag.ferias{background:#cfe8e5;color:#0c625b}
  .tag.atestado{background:#d3dcf4;color:#3b4a86;cursor:pointer}
  .fername{font-size:11px;color:var(--amber);margin-left:6px}
  .ts-scroll{max-height:520px;overflow:auto}

  .summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:14px 18px;background:#fafaf8;border-top:1px solid var(--line)}
  @media(min-width:640px){.summary{grid-template-columns:repeat(6,1fr)}}
  .stat{display:flex;flex-direction:column;gap:2px}
  .stat .v{font-family:var(--mono);font-size:17px;font-weight:600;color:var(--ink)}
  .stat .k{font-size:10.5px;color:var(--muted);letter-spacing:.02em}

  /* holerite */
  .receipt{font-size:13.5px}
  .line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px dashed #eceae4}
  .line .lbl{color:var(--text)}
  .line .ref{font-family:var(--mono);font-size:11px;color:var(--muted);margin-left:8px}
  .line .val{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
  .line.prov .val{color:var(--green)}
  .line.desc .val{color:var(--red)}
  .line.zero{opacity:.42}
  .sec-label{margin:14px 0 4px;display:flex;align-items:center;gap:8px}
  .sec-label .eyebrow{color:var(--ink-2)}
  .sec-label .rule{flex:1;height:1px;background:var(--line)}
  .subtotal{display:flex;justify-content:space-between;align-items:baseline;padding:9px 12px;margin-top:8px;border-radius:8px;font-weight:600}
  .subtotal.prov{background:var(--green-bg);color:var(--green)}
  .subtotal.desc{background:var(--red-bg);color:var(--red)}
  .subtotal .val{font-family:var(--mono);font-size:15px}
  .liquido{margin-top:14px;background:var(--ink);color:#fff;border-radius:12px;padding:16px 18px;
    display:flex;align-items:center;justify-content:space-between}
  .liquido .k{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#9aa4b2}
  .liquido .v{font-family:var(--mono);font-size:26px;font-weight:700}
  .bases{margin-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .base{background:#fafaf8;border:1px solid var(--line);border-radius:8px;padding:9px 11px}
  .base .k{font-size:10.5px;color:var(--muted)}
  .base .v{font-family:var(--mono);font-size:14px;font-weight:600;color:var(--ink)}

  .desc-input{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:5px 0;border-bottom:1px dashed #eceae4}
  .desc-input label{font-size:13px;color:var(--text)}
  .desc-input input{font-family:var(--mono);font-size:13px;text-align:right;width:110px;padding:6px 8px;
    border:1px solid var(--line-2);border-radius:7px;background:#fff}
  .desc-input input:focus{outline:2px solid var(--red-bg);border-color:var(--red)}

  .note{font-size:11.5px;color:var(--muted);line-height:1.5;margin-top:14px;padding:11px 13px;background:#fbf3e0;
    border:1px solid #f0e3c2;border-radius:9px}
  .note b{color:var(--amber)}
  .ferias-card{margin-top:14px;border:1px solid var(--accent-weak);background:#f2f9f8;border-radius:11px;overflow:hidden}
  .ferias-card .fc-h{display:flex;align-items:center;justify-content:space-between;padding:9px 13px;background:var(--accent-weak)}
  .ferias-card .fc-h .eyebrow{color:var(--accent)}
  .ferias-card .fc-days{font-family:var(--mono);font-weight:600;color:var(--accent)}
  .ferias-card .fc-body{padding:6px 13px 12px}
  .ferias-card .fc-note{font-size:11px;color:var(--muted);margin:8px 0 0;line-height:1.5}
  .ferias-card .line.prov .val{color:var(--accent)}
  footer{max-width:1240px;margin:0 auto;padding:6px 22px 30px;color:var(--muted);font-size:11.5px}

  @media print{
    header.top,.card.timesheet,.top-actions,.controls-card{display:none!important}
    body{background:#fff}
    .wrap{padding:0}
    .layout{display:block}
    .card{border:none}
    .note{background:#fff;border:1px solid #ccc}
  }

  /* ===== Perfis de acesso / novas seções (v3) ===== */
  .sec-hidden{display:none !important}
  .sess-badge{font-size:11px;font-weight:700;letter-spacing:.06em;color:#9aa4b2;
    background:#1f2937;border:1px solid #3a4656;padding:6px 10px;border-radius:8px;align-self:center}
  .perfil-sel{font-family:var(--sans);font-size:12.5px;font-weight:600;color:#e7ebf1;background:#1f2937;
    border:1px solid #3a4656;padding:7px 10px;border-radius:8px;cursor:pointer}

  .check-field{justify-content:flex-end}
  label.chk{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--text);cursor:pointer}
  label.chk input{width:16px;height:16px;accent-color:var(--accent)}

  .pos{color:var(--green);font-weight:700}
  .neg{color:var(--red);font-weight:700}

  /* saldo do banco no Controle de Ponto */
  .banco-saldo{display:none}
  .banco-saldo.on{display:flex;flex-wrap:wrap;align-items:center;gap:22px;margin:14px 0 4px;
    padding:14px 16px;border:1px solid var(--accent-weak);background:var(--accent-weak);border-radius:12px}
  .banco-saldo .bs-item{display:flex;flex-direction:column;gap:2px}
  .banco-saldo .bs-k{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
  .banco-saldo .bs-v{font-family:var(--mono);font-size:22px;font-weight:700}
  .banco-saldo .bs-note{flex:1;min-width:220px;font-size:12px;color:var(--muted);align-self:center}

  /* aba Acessos */
  .acc-note{font-size:13px;color:var(--muted);margin:0 0 14px;line-height:1.5}
  .perfil-card{border:1px solid var(--line-2);border-radius:12px;padding:14px 16px;margin-bottom:14px;background:var(--surface)}
  .perfil-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
  .perfil-h b{font-size:15px}
  .sec-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px 18px}
  .sec-chk{font-weight:500}
  .sec-chk .sec-tab{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);
    background:var(--paper);border-radius:5px;padding:1px 6px;margin-left:2px}

  /* navegação de meses no Controle de Ponto (v5) */
  .ponto-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .ponto-mes{font-weight:650;font-size:14px;color:var(--text);min-width:150px;text-align:center;
    display:inline-flex;align-items:center;justify-content:center;gap:8px}
  .mes-tag{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-radius:5px;padding:2px 6px}
  .mes-tag.salvo{background:var(--green-bg);color:var(--green)}
  .mes-tag.novo{background:var(--amber-bg);color:var(--amber)}

  /* login (Firebase) v6 */
  .login-overlay{position:fixed;inset:0;z-index:100;background:var(--ink);
    display:flex;align-items:center;justify-content:center;padding:20px}
  .login-box{background:var(--surface);border-radius:16px;padding:30px 28px;width:100%;max-width:360px;
    box-shadow:0 20px 60px rgba(0,0,0,.35);display:flex;flex-direction:column;gap:12px}
  .login-box h1{font-size:20px;color:var(--text)}
  .login-sub{font-size:13px;color:var(--muted);margin:-4px 0 6px}
  .login-box input{font-family:var(--sans);font-size:14px;padding:11px 12px;border:1px solid var(--line-2);border-radius:9px}
  .login-box input:focus{outline:none;border-color:var(--accent)}
  .login-box .act.primary{justify-content:center;padding:11px;margin-top:4px}
  .login-links{display:flex;justify-content:space-between;font-size:12.5px}
  .login-links a{color:var(--accent);text-decoration:none}
  .login-msg{font-size:12.5px;min-height:16px}
  .login-msg.err{color:var(--red)}
  .login-msg.ok{color:var(--green)}
