:root {
  --bg:#EDEAE2; --surface:#fff; --surface-2:#F6F3EC; --ink:#241F1A; --ink-dim:#6E6456; --border:#DEDACE; --rule:#E6E1D4;
  --accent:#B84A28; --accent-ink:#FFF8F2; --accent-bg:#F6E4DB;
  --as:#B84A28; --as-bg:#F6E4DB; --ac:#4C6B45; --ac-bg:#E7EDE2;
  --ok:#35703F; --ok-bg:#DEEBDC; --warn:#9C7414; --warn-bg:#F3E8C9; --danger:#B8472E; --danger-bg:#F6DFD6;
  --shadow:0 1px 2px rgba(36,31,26,.06),0 6px 20px rgba(36,31,26,.07); color-scheme:light;
}
@media (prefers-color-scheme: dark) { :root {
  --bg:#1A1713; --surface:#231E18; --surface-2:#2A241C; --ink:#F1EBE0; --ink-dim:#AFA392; --border:#3B3326; --rule:#332C22;
  --accent:#E2784F; --accent-ink:#1A1713; --accent-bg:#3A271D; --as:#E2784F; --as-bg:#3A271D; --ac:#8FB380; --ac-bg:#263226;
  --ok:#7FC08A; --ok-bg:#233326; --warn:#D9B355; --warn-bg:#3A3220; --danger:#E08568; --danger-bg:#3A271F;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 6px 20px rgba(0,0,0,.35); color-scheme:dark; } }

* { box-sizing:border-box; }
body { margin:0; background:var(--bg); color:var(--ink); font-family:'Work Sans',-apple-system,BlinkMacSystemFont,sans-serif; font-variant-numeric:tabular-nums; -webkit-font-smoothing:antialiased; padding-bottom:96px; }
.wrap { max-width:720px; margin:0 auto; padding:0 16px; }
h1,h2,h3 { font-family:'Fraunces',Georgia,serif; font-weight:600; margin:0; }
button { font-family:inherit; }
a { color:inherit; }

/* topo */
.top { position:sticky; top:0; z-index:20; background:var(--bg); border-bottom:1px solid var(--border); padding:14px 0 0; }
.top-row { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.brand { font-family:'Fraunces',Georgia,serif; font-weight:600; font-size:20px; letter-spacing:-.01em; }
.who { font-size:12.5px; color:var(--ink-dim); display:flex; align-items:center; gap:10px; }
.linkbtn { background:none; border:none; padding:0; color:var(--ink-dim); text-decoration:underline; cursor:pointer; font-size:12.5px; }
.nav { display:flex; gap:4px; margin-top:10px; overflow-x:auto; scrollbar-width:none; }
.nav::-webkit-scrollbar { display:none; }
.nav button { flex:none; background:none; border:none; border-bottom:2px solid transparent; padding:10px 14px; font-weight:600; font-size:14px; color:var(--ink-dim); cursor:pointer; }
.nav button[aria-current="true"] { color:var(--ink); border-bottom-color:var(--accent); }

main { padding-top:18px; }
.section-label { font-family:'Fraunces',Georgia,serif; font-weight:600; font-size:16px; margin:22px 0 10px; display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.section-label small { font-family:'Work Sans',sans-serif; font-weight:400; color:var(--ink-dim); font-size:12.5px; }
.muted { color:var(--ink-dim); }
.empty { padding:40px 16px; text-align:center; color:var(--ink-dim); }
.empty b { display:block; font-family:'Fraunces',Georgia,serif; font-size:19px; color:var(--ink); margin-bottom:6px; font-weight:600; }

/* botões e campos */
.btn { padding:11px 16px; border-radius:10px; border:none; font-weight:700; font-size:13.5px; cursor:pointer; }
.btn.primary { background:var(--accent); color:var(--accent-ink); }
.btn.ghost { background:var(--surface-2); color:var(--ink); border:1px solid var(--border); }
.btn.danger { background:var(--danger); color:var(--accent-ink); }
.btn.danger.armed { filter:brightness(.8); }
.btn.sm { padding:7px 12px; font-size:12.5px; }
.btn:disabled { opacity:.5; cursor:not-allowed; }
.chips { display:flex; gap:8px; overflow-x:auto; scrollbar-width:none; }
.chip { flex:none; padding:7px 14px; border-radius:999px; border:1px solid var(--border); background:var(--surface); color:var(--ink-dim); font-weight:600; font-size:13px; cursor:pointer; }
.chip[aria-pressed="true"] { background:var(--ink); color:var(--bg); border-color:var(--ink); }
.field { margin-bottom:13px; }
.field label { display:block; font-size:12px; font-weight:600; color:var(--ink-dim); margin-bottom:5px; text-transform:uppercase; letter-spacing:.03em; }
.field input, .field select, .field textarea { width:100%; padding:10px 12px; border-radius:9px; border:1px solid var(--border); background:var(--surface-2); color:var(--ink); font-family:inherit; font-size:15px; }
.field textarea { resize:vertical; min-height:56px; }
.row2 { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.check { display:flex; align-items:center; gap:8px; margin-bottom:13px; font-size:14px; }
.check input { width:auto; }
.erro { background:var(--danger-bg); color:var(--danger); border-radius:10px; padding:10px 14px; font-size:13px; font-weight:600; margin-bottom:12px; }
.fab { position:fixed; right:20px; bottom:20px; z-index:30; background:var(--accent); color:var(--accent-ink); border:none; border-radius:999px; padding:14px 20px; font-weight:700; font-size:14px; box-shadow:var(--shadow); cursor:pointer; }

/* login */
.login { max-width:380px; margin:12vh auto 0; padding:0 16px; }
.login h1 { font-size:28px; margin-bottom:4px; }
.login p { color:var(--ink-dim); margin:0 0 22px; font-size:14px; }
.login .card { background:var(--surface); border:1px solid var(--border); border-radius:16px; padding:22px; box-shadow:var(--shadow); }

/* reservas */
.day { margin-bottom:26px; }
.day-head { display:flex; align-items:baseline; gap:10px; padding-bottom:8px; border-bottom:2px solid var(--rule); margin-bottom:4px; }
.day-head .d-name { font-family:'Fraunces',Georgia,serif; font-weight:600; font-size:19px; text-transform:capitalize; }
.day-head .d-date { font-size:13px; color:var(--ink-dim); }
.today-tag { margin-left:auto; font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--accent-ink); background:var(--accent); padding:3px 9px; border-radius:999px; }
.day.is-today .day-head { border-bottom-color:var(--accent); }
.res { display:grid; grid-template-columns:54px 1fr auto; gap:12px; align-items:start; padding:13px 0; border-bottom:1px solid var(--rule); }
.res:last-child { border-bottom:none; }
.res.cancelada { opacity:.55; }
.res-time { font-family:'Fraunces',Georgia,serif; font-weight:600; font-size:17px; }
.res-name { font-weight:600; font-size:15px; line-height:1.3; }
.res-meta { display:flex; flex-wrap:wrap; gap:6px 10px; margin-top:4px; font-size:12.5px; color:var(--ink-dim); align-items:center; }
.unit { font-weight:600; padding:2px 8px; border-radius:6px; font-size:11.5px; }
.unit.AS { color:var(--as); background:var(--as-bg); } .unit.AC { color:var(--ac); background:var(--ac-bg); }
.res-obs { margin-top:6px; font-size:12.5px; color:var(--ink-dim); font-style:italic; max-width:52ch; }
.res-act { display:flex; flex-direction:column; align-items:flex-end; gap:6px; }
.pill { font-size:11.5px; font-weight:700; padding:5px 11px; border-radius:999px; border:none; white-space:nowrap; }
button.pill { cursor:pointer; }
.pill.pendente { color:var(--warn); background:var(--warn-bg); } .pill.confirmada { color:var(--ok); background:var(--ok-bg); }
.pill.cancelada { color:var(--danger); background:var(--danger-bg); text-decoration:line-through; }
.icons { display:flex; gap:6px; }
.iconbtn { background:none; border:1px solid var(--border); border-radius:999px; padding:5px 10px; font-size:11.5px; font-weight:600; color:var(--ink-dim); cursor:pointer; }
.iconbtn:hover { color:var(--ink); border-color:var(--ink-dim); }

/* vales */
.total { background:var(--ink); color:var(--bg); border-radius:16px; padding:18px 20px; box-shadow:var(--shadow); display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:8px; }
.total .lbl { font-size:12px; font-weight:600; opacity:.75; text-transform:uppercase; letter-spacing:.04em; }
.total .num { font-family:'Fraunces',Georgia,serif; font-weight:700; font-size:30px; }
.total .qtd { font-size:12.5px; opacity:.75; }
.box { background:var(--surface); border:1px solid var(--border); border-radius:14px; overflow:hidden; }
.hoje { display:grid; grid-template-columns:48px 1fr auto; gap:10px; align-items:center; padding:11px 14px; border-bottom:1px solid var(--rule); font-size:13.5px; }
.hoje:last-child { border-bottom:none; }
.hoje .h { font-size:12px; color:var(--ink-dim); }
.hoje b { font-weight:700; } .hoje .it { color:var(--ink-dim); margin-left:4px; }
.hoje .dir { display:flex; flex-direction:column; align-items:flex-end; gap:3px; }
.hoje .v { font-family:'Fraunces',Georgia,serif; font-weight:600; font-size:13.5px; }
.autorizado { font-size:10.5px; font-weight:700; letter-spacing:.03em; text-transform:uppercase; color:var(--ok); background:var(--ok-bg); padding:2px 8px; border-radius:999px; }
.autorizado.est { color:var(--warn); background:var(--warn-bg); }
.pessoa { border-bottom:1px solid var(--rule); } .pessoa:last-child { border-bottom:none; }
.p-head { display:grid; grid-template-columns:18px 1fr 96px 26px; gap:10px; align-items:center; padding:13px 14px; cursor:pointer; font-size:13.5px; width:100%; background:none; border:none; text-align:left; color:inherit; }
.chev { color:var(--ink-dim); transition:transform .2s; display:flex; } .pessoa.open .chev { transform:rotate(90deg); color:var(--accent); }
.p-nome { font-weight:600; }
.mini { height:5px; border-radius:999px; background:var(--surface-2); overflow:hidden; margin-top:5px; }
.mini i { display:block; height:100%; border-radius:999px; }
.i-ok { background:var(--ok); } .i-warn { background:var(--warn); } .i-danger { background:var(--danger); }
.p-val { text-align:right; font-size:12.5px; color:var(--ink-dim); }
.p-at { text-align:center; }
.p-exp { padding:2px 14px 18px; background:var(--surface-2); }
.badge { font-size:11px; font-weight:700; letter-spacing:.03em; text-transform:uppercase; padding:3px 10px; border-radius:999px; }
.badge.ok { color:var(--ok); background:var(--ok-bg); } .badge.warn { color:var(--warn); background:var(--warn-bg); } .badge.danger { color:var(--danger); background:var(--danger-bg); }
.saldo { display:flex; align-items:baseline; gap:8px; margin-top:8px; }
.saldo b { font-family:'Fraunces',Georgia,serif; font-weight:600; font-size:30px; } .saldo span { font-size:14px; color:var(--ink-dim); }
.barra { height:8px; border-radius:999px; background:var(--surface); border:1px solid var(--border); overflow:hidden; margin-top:10px; }
.barra i { display:block; height:100%; border-radius:999px; }
.acoes { display:flex; gap:10px; margin-top:14px; flex-wrap:wrap; }
.hist-label { margin-top:16px; font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--ink-dim); margin-bottom:4px; }
.hist { display:grid; grid-template-columns:78px 1fr auto auto; gap:10px; align-items:start; padding:10px 0; border-bottom:1px solid var(--rule); font-size:13.5px; }
.hist:last-child { border-bottom:none; }
.hist .d { font-size:12px; color:var(--ink-dim); padding-top:2px; } .hist .c { color:var(--ink-dim); font-size:12px; margin-left:4px; }
.hist .v { font-family:'Fraunces',Georgia,serif; font-weight:600; } .hist .v.neg { color:var(--ok); }

/* equipe */
.tbl { width:100%; border-collapse:collapse; font-size:13.5px; }
.tbl th { text-align:left; font-size:11.5px; text-transform:uppercase; letter-spacing:.03em; color:var(--ink-dim); padding:8px 12px; border-bottom:1px solid var(--border); }
.tbl td { padding:11px 12px; border-bottom:1px solid var(--rule); vertical-align:middle; }
.tbl tr:last-child td { border-bottom:none; }
.tbl-wrap { overflow-x:auto; }
.tag { display:inline-block; font-size:11px; font-weight:700; padding:2px 8px; border-radius:6px; background:var(--surface-2); color:var(--ink-dim); }
.tag.admin { background:var(--accent-bg); color:var(--accent); } .tag.gerente { background:var(--warn-bg); color:var(--warn); }
.tag.off { background:var(--danger-bg); color:var(--danger); }

/* modal */
.backdrop { position:fixed; inset:0; background:rgba(20,16,12,.5); display:flex; align-items:flex-end; justify-content:center; z-index:40; }
.modal { width:100%; max-width:500px; background:var(--surface); border-radius:18px 18px 0 0; padding:20px 20px calc(20px + env(safe-area-inset-bottom)); max-height:90vh; overflow-y:auto; box-shadow:var(--shadow); }
@media (min-width:540px) { .backdrop { align-items:center; } .modal { border-radius:18px; } }
.modal h2 { font-size:20px; margin-bottom:14px; }
.modal p { font-size:13.5px; color:var(--ink-dim); margin:0 0 12px; }
.mact { display:flex; gap:10px; margin-top:16px; } .mact .btn { flex:1; }
.tabs { display:flex; gap:6px; margin-bottom:14px; }
.tab { flex:1; padding:9px; border-radius:9px; border:1px solid var(--border); background:var(--surface-2); color:var(--ink-dim); font-weight:700; font-size:12.5px; cursor:pointer; text-align:center; }
.tab[aria-pressed="true"] { background:var(--ink); color:var(--bg); border-color:var(--ink); }
.preview { background:var(--accent-bg); color:var(--accent); border-radius:10px; padding:12px 14px; display:flex; justify-content:space-between; align-items:baseline; font-weight:700; margin:14px 0; }
.preview b { font-family:'Fraunces',Georgia,serif; font-size:22px; }
.linkbox { background:var(--surface-2); border:1px dashed var(--border); border-radius:10px; padding:12px; font-size:12.5px; word-break:break-all; user-select:all; margin-bottom:10px; }
.toast { position:fixed; left:50%; bottom:24px; transform:translateX(-50%) translateY(8px); background:var(--ink); color:var(--bg); font-size:13px; font-weight:600; padding:10px 16px; border-radius:10px; z-index:60; opacity:0; pointer-events:none; transition:opacity .2s,transform .2s; text-align:center; max-width:90vw; }
.toast.show { opacity:1; transform:translateX(-50%) translateY(0); }
@media (prefers-reduced-motion:reduce) { .toast,.chev { transition:none; } }

.p-line { display:flex; align-items:center; }
.p-line .p-head { flex:1; min-width:0; }
.p-adm { display:flex; flex-direction:column; gap:4px; padding:6px 12px 6px 0; flex:none; }
.p-adm .btn { padding:5px 9px; font-size:11.5px; white-space:nowrap; }
.btn.ghost.tem-pin { color:var(--danger); border-color:var(--danger); }
.por { display:block; font-size:11px; color:var(--accent); margin-top:1px; }
.aviso { background:var(--warn-bg); color:var(--warn); border-radius:10px; padding:10px 14px; font-size:13px; margin-bottom:12px; }
