@import url("tokens.css");
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--tx);font:var(--fs)/1.45 var(--font);-webkit-font-smoothing:antialiased}
a{color:var(--pri-link,var(--pri));text-decoration:none}a:hover{text-decoration:underline}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em}
h1{font-size:calc(20px*var(--fz,1))}h2{font-size:calc(16px*var(--fz,1))}h3{font-size:calc(14px*var(--fz,1))}
.muted{color:var(--tx-2)}.small{font-size:calc(12px*var(--fz,1))}.mono{font-family:ui-monospace,Menlo,Consolas,monospace}
.hide{display:none!important}
svg.ic{width:18px;height:18px;flex:0 0 18px}
.right{text-align:right}.center{text-align:center}.nowrap{white-space:nowrap}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.grow{flex:1}
.stack{display:flex;flex-direction:column;gap:12px}
.grid{display:grid;gap:14px}.grid.c2{grid-template-columns:repeat(2,1fr)}.grid.c3{grid-template-columns:repeat(3,1fr)}.grid.c4{grid-template-columns:repeat(4,1fr)}
@media(max-width:900px){.grid.c2,.grid.c3,.grid.c4{grid-template-columns:1fr}}

/* ---------- shell ---------- */
.shell{display:grid;grid-template-columns:var(--side-w) 1fr;grid-template-rows:var(--top-h) auto 1fr;height:100vh}
.shell.collapsed{grid-template-columns:var(--side-w-min) 1fr}
.side{grid-row:1/4;background:var(--side-bg);color:var(--side-tx);display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--side-bd)}
.side .brand{display:flex;align-items:center;gap:10px;padding:12px 14px;height:var(--top-h);border-bottom:1px solid var(--side-bd)}
.side .brand img{height:30px;width:30px;border-radius:var(--r-b,8px);background:#fff;padding:2px}
.side .brand b{font-size:calc(15px*var(--fz,1));color:var(--side-tx-on);white-space:nowrap}
.side .brand .sub{font-size:calc(10px*var(--fz,1));color:var(--side-tx);opacity:.8;display:block;margin-top:-2px}
.side nav{flex:1;overflow:auto;padding:8px}
.side nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--r-b,8px);color:var(--side-tx);font-weight:500;white-space:nowrap}
.side nav a:hover{background:var(--side-hov);text-decoration:none;color:var(--side-tx-on)}
.side nav a.on{background:var(--side-on);color:var(--side-tx-on)}
.side nav a .ic{width:20px;height:20px;flex:0 0 20px;opacity:.9}
.side nav .sep{height:1px;background:var(--side-bd);margin:8px 6px}
.side nav .lbl{font-size:calc(10px*var(--fz,1));letter-spacing:.08em;text-transform:uppercase;opacity:.5;padding:10px 10px 4px}
.side .foot{padding:10px;border-top:1px solid var(--side-bd);font-size:calc(11px*var(--fz,1));opacity:.7;white-space:nowrap}
.shell.collapsed .side .brand b,.shell.collapsed .side .brand .sub,.shell.collapsed .side nav a span,.shell.collapsed .side nav .lbl,.shell.collapsed .side .foot{display:none}
.shell.collapsed .side nav a{justify-content:center}
.top{background:var(--top-bg);border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:6px;padding:0 12px;overflow:hidden}
.top .tabs{display:flex;gap:2px;overflow:auto;flex:1;scrollbar-width:none}
.top .tabs a{padding:8px 11px;border-radius:var(--r-b,8px);color:var(--tx-2);font-weight:500;white-space:nowrap}
.top .tabs a.on{background:var(--pri-soft);color:var(--pri-h)}
.top .tabs a:hover{text-decoration:none;color:var(--tx)}
.top .ibtn{width:36px;height:36px;border:0;background:none;border-radius:var(--r-b,8px);display:grid;place-items:center;cursor:pointer;color:var(--tx-2);position:relative}
.top .ibtn:hover{background:var(--n-100)}
.top .ibtn .dot{position:absolute;top:7px;right:7px;width:8px;height:8px;border-radius:50%;background:var(--err)}
.top .user{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:var(--r-b,8px);cursor:pointer}
.top .user:hover{background:var(--n-100)}
.top .user .av{width:30px;height:30px;border-radius:50%;background:var(--g-200);color:var(--g-800);display:grid;place-items:center;font-weight:700;font-size:calc(12px*var(--fz,1))}
.top .user .ic{width:16px;height:16px;flex:0 0 16px;color:var(--tx-2)}
.top .user .nm{font-weight:600;font-size:calc(13px*var(--fz,1));line-height:1.1}.top .user .co{font-size:calc(11px*var(--fz,1));color:var(--tx-2)}
/* v43-qualidade: espaço reservado à direita para a aba flutuante (Missões/Finanças),
   que antes cobria o conteúdo e cortava os botões de ação das tabelas */
main{overflow:auto;padding:18px 52px 60px 22px}
@media(max-width:800px){.shell,.shell.collapsed{grid-template-columns:1fr}.shell .side{display:none;position:fixed;z-index:70;top:0;bottom:0;left:0;width:260px}.shell.open .side{display:flex}.shell.open::after{content:'';position:fixed;inset:0;z-index:65;background:rgba(0,0,0,.4)}.shell.collapsed .side nav a span{display:inline}.shell.collapsed .side .brand b{display:inline}.shell.collapsed .side .brand .sub,.shell.collapsed .side nav .lbl,.shell.collapsed .side .foot{display:block}.shell.collapsed .side nav a{justify-content:flex-start}.top .user .nm,.top .user .co,.top .user .ic{display:none}main{padding:12px 40px 60px 16px}}

/* v43-qualidade: sombra de rolagem — avisa que há conteúdo escondido à direita
   (as abas e as tabelas rolavam para fora da tela sem nenhuma pista) */
.ab-n1,.ab-n2,.ptabs,.tbl-wrap,.deck{
  background-image:
    linear-gradient(to right,var(--rol-bg,var(--top-bg)) 32%,rgba(0,0,0,0)),
    linear-gradient(to left,var(--rol-bg,var(--top-bg)) 32%,rgba(0,0,0,0)),
    radial-gradient(farthest-side at 0 50%,rgba(0,0,0,.16),rgba(0,0,0,0)),
    radial-gradient(farthest-side at 100% 50%,rgba(0,0,0,.16),rgba(0,0,0,0));
  background-position:0 0,100% 0,0 0,100% 0;
  background-repeat:no-repeat;
  background-size:34px 100%,34px 100%,12px 100%,12px 100%;
  background-attachment:local,local,scroll,scroll;
}
.ptabs,.tbl-wrap{--rol-bg:var(--card)}
.deck{--rol-bg:var(--bg)}
/* rolagem por toque mais previsível (celular) */
.ab-n1,.ab-n2,.ptabs,.tbl-wrap{scroll-behavior:smooth;-webkit-overflow-scrolling:touch}

/* ---------- page ---------- */
.page-h{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.page-h .crumbs{font-size:calc(12px*var(--fz,1));color:var(--tx-3);margin-bottom:2px}
.page-h .crumbs a{color:var(--tx-3)}
.page-h .acts{display:flex;gap:8px;flex-wrap:wrap}
.card{background:var(--card);background:color-mix(in srgb,var(--card) calc(var(--card-a,100)*1%),transparent);border:1px solid var(--bd);border-radius:var(--r-l);padding:16px;box-shadow:var(--sh-1)}
.card.tight{padding:0;overflow:hidden}
.card h2{margin-bottom:10px}
.card .card-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:8px}
.section{margin-top:18px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.kpi{background:var(--card);border:1px solid var(--bd);border-radius:var(--r);padding:12px 14px}
.kpi .l{font-size:calc(12px*var(--fz,1));color:var(--tx-2)}.kpi .v{font-size:calc(20px*var(--fz,1));font-weight:700;margin-top:2px;letter-spacing:-.02em}.kpi .s{font-size:calc(12px*var(--fz,1));color:var(--tx-3);margin-top:2px}
.kpi.ok .v{color:var(--ok)}.kpi.err .v{color:var(--err)}.kpi.warn .v{color:var(--warn)}
.central{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.central a{display:flex;gap:10px;align-items:center;padding:12px 14px;border:1px solid var(--bd);border-radius:var(--r);background:var(--card);color:var(--tx);font-weight:500}
.central a:hover{border-color:var(--g-400);background:var(--g-50);text-decoration:none}
.central a .ic{width:22px;height:22px;color:var(--pri);flex:0 0 22px}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 13px;border-radius:var(--r-b,8px);border:1px solid var(--bd-2);background:var(--card);cursor:pointer;font-weight:500;line-height:1.2;white-space:nowrap}
.btn:hover{background:var(--n-100)}
.btn.pri{background:var(--pri);border-color:var(--pri);color:var(--pri-tx)}.btn.pri:hover{background:var(--pri-h);border-color:var(--pri-h)}
.btn.soft{background:var(--pri-soft);border-color:transparent;color:var(--pri-stx,var(--pri-h))}
.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.btn.ok:hover{filter:brightness(.92)}.btn.danger{color:var(--err);border-color:var(--err)}.btn.danger:hover{background:var(--err-bg)}
.btn.ghost{border-color:transparent;background:none}.btn.ghost:hover{background:var(--n-100)}
.btn.sm{padding:5px 9px;font-size:calc(12.5px*var(--fz,1))}.btn.lg{padding:11px 18px;font-size:calc(15px*var(--fz,1))}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn .ic{width:16px;height:16px}
.kbd{font:calc(11px*var(--fz,1)) ui-monospace,Menlo,monospace;border:1px solid var(--bd-2);border-bottom-width:2px;border-radius:5px;padding:1px 5px;color:var(--tx-2);background:var(--n-50)}

/* ---------- forms ---------- */
.f{display:flex;flex-direction:column;gap:4px;min-width:0}
.f label{font-size:calc(12px*var(--fz,1));font-weight:600;color:var(--tx-2)}
.f label .req{color:var(--err)}
.f .help{font-size:calc(11px*var(--fz,1));color:var(--tx-3)}
.f .err{font-size:calc(11px*var(--fz,1));color:var(--err)}
.in{width:100%;padding:8px 10px;border:1px solid var(--bd-2);border-radius:var(--r-b,8px);background:var(--card);min-height:36px;outline:none}
.in:focus{border-color:var(--g-500);box-shadow:0 0 0 3px var(--g-100)}
.in.err{border-color:var(--err)}
textarea.in{min-height:80px;resize:vertical}
.in[readonly],.in:disabled{background:var(--n-100);color:var(--tx-2)}
.fgrid{display:grid;gap:12px;grid-template-columns:repeat(12,1fr)}
.fgrid>.f{grid-column:span 4}.fgrid>.f.w2{grid-column:span 2}.fgrid>.f.w3{grid-column:span 3}.fgrid>.f.w6{grid-column:span 6}.fgrid>.f.w8{grid-column:span 8}.fgrid>.f.w12{grid-column:span 12}
@media(max-width:900px){.fgrid>.f,.fgrid>.f.w2,.fgrid>.f.w3,.fgrid>.f.w6,.fgrid>.f.w8{grid-column:span 12}}
.money{position:relative}.money .in{padding-left:34px;text-align:right}.money .pfx{position:absolute;left:10px;top:9px;color:var(--tx-3);font-size:calc(13px*var(--fz,1))}
.switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-weight:500;font-size:calc(13px*var(--fz,1))}
.switch input{appearance:none;width:36px;height:20px;border-radius:20px;background:var(--n-300);position:relative;transition:.15s;margin:0}
.switch input:checked{background:var(--pri)}
.switch input::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:.15s}
.switch input:checked::after{left:18px}
.chk{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.radio-group{display:flex;gap:6px;flex-wrap:wrap}
.radio-group label{padding:7px 12px;border:1px solid var(--bd-2);border-radius:var(--r-b,8px);cursor:pointer}
.radio-group input{display:none}.radio-group label.on{background:var(--pri-soft);border-color:var(--g-400);color:var(--pri-h);font-weight:600}
.fieldset{border:1px solid var(--bd);border-radius:var(--r);padding:14px;margin-top:4px}
.fieldset>legend{padding:0 6px;font-weight:600;font-size:calc(13px*var(--fz,1));color:var(--tx-2)}
.form-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:14px;border-top:1px solid var(--bd)}
.form-anchors{position:sticky;top:0;display:flex;flex-direction:column;gap:2px}
.form-anchors a{padding:7px 10px;border-radius:var(--r-b,8px);color:var(--tx-2);font-size:calc(13px*var(--fz,1))}.form-anchors a.on{background:var(--pri-soft);color:var(--pri-h);font-weight:600}
.form-layout{display:grid;grid-template-columns:180px 1fr;gap:18px;align-items:start}
@media(max-width:900px){.form-layout{grid-template-columns:1fr}.form-anchors{display:none}}

/* async select */
.sel{position:relative}
.sel .menu{position:absolute;z-index:30;left:0;right:0;top:100%;margin-top:4px;background:var(--card);border:1px solid var(--bd);border-radius:var(--r,10px);box-shadow:var(--sh-2);max-height:260px;overflow:auto}
.sel .menu div{padding:8px 10px;cursor:pointer}.sel .menu div:hover,.sel .menu div.on{background:var(--pri-soft)}
.sel .menu .sub{font-size:calc(11px*var(--fz,1));color:var(--tx-3)}
.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border-radius:20px;background:var(--pri-soft);color:var(--pri-h);font-size:calc(12px*var(--fz,1));font-weight:500}
.chip button{border:0;background:none;cursor:pointer;color:inherit;padding:0;font-size:calc(14px*var(--fz,1));line-height:1}

/* ---------- table ---------- */
.tbl-wrap{overflow:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:calc(13.5px*var(--fz,1))}
.tbl th{text-align:left;font-size:calc(11.5px*var(--fz,1));text-transform:uppercase;letter-spacing:.04em;color:var(--tx-3);font-weight:600;padding:10px 12px;border-bottom:1px solid var(--bd);white-space:nowrap;background:var(--n-50);position:sticky;top:0}
.tbl th.sortable{cursor:pointer}.tbl th .arr{font-size:calc(9px*var(--fz,1));margin-left:3px}
.tbl td{padding:9px 12px;border-bottom:1px solid var(--bd);vertical-align:middle}
.tbl tr:hover td{background:var(--n-50)}
.tbl tr.sel td{background:var(--g-50)}
.tbl td.num,.tbl th.num{text-align:right;font-variant-numeric:tabular-nums}
.tbl .acts{display:flex;gap:4px;justify-content:flex-end;opacity:.6}.tbl tr:hover .acts{opacity:1}
.tbl a.lnk{font-weight:600}
.tfoot{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;font-size:calc(12.5px*var(--fz,1));color:var(--tx-2);gap:10px;flex-wrap:wrap}
.pager{display:flex;gap:4px;align-items:center}.pager button{min-width:30px}
.bulkbar{display:flex;gap:8px;align-items:center;padding:8px 12px;background:var(--pri-soft);border-bottom:1px solid var(--bd);font-size:calc(13px*var(--fz,1))}
.empty{padding:40px 20px;text-align:center;color:var(--tx-2)}
.empty h3{color:var(--tx);margin-bottom:6px}
.empty .ic{width:44px;height:44px;color:var(--g-300);margin-bottom:8px}

/* filters */
.filters{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin-bottom:12px}
.filters .f{min-width:150px}.filters .search{min-width:260px;flex:1}
.filters-active{display:flex;gap:6px;flex-wrap:wrap;margin:-4px 0 10px}

/* ---------- badges, status ---------- */
.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:20px;font-size:calc(11.5px*var(--fz,1));font-weight:600;background:var(--n-100);color:var(--tx-2);white-space:nowrap}
.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.err{background:var(--err-bg);color:var(--err)}.badge.info{background:var(--info-bg);color:var(--info)}.badge.pri{background:var(--pri-soft);color:var(--pri-h)}
.dot-s{width:8px;height:8px;border-radius:50%;display:inline-block}
.alert{padding:10px 12px;border-radius:var(--r);border:1px solid var(--bd);background:var(--n-50);display:flex;gap:10px;align-items:flex-start;font-size:calc(13px*var(--fz,1))}
.alert.warn{background:var(--warn-bg);border-color:#efd9a6;color:#6b4a0c}.alert.err{background:var(--err-bg);border-color:#f3c1bc;color:#7a1f16}.alert.ok{background:var(--ok-bg);border-color:#bfe3cb;color:#1e5c33}.alert.info{background:var(--info-bg);border-color:#bcd3ee;color:#163f6a}

/* ---------- tabs (in page) ---------- */
.ptabs{display:flex;gap:2px;border-bottom:1px solid var(--bd);margin-bottom:14px;overflow:auto}
.ptabs a,.ptabs button{padding:9px 13px;border:0;background:none;color:var(--tx-2);font-weight:500;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.ptabs a.on,.ptabs button.on{color:var(--pri-h);border-color:var(--pri)}
.ptabs a:hover{text-decoration:none;color:var(--tx)}

/* ---------- wizard ---------- */
.wiz{display:grid;grid-template-columns:210px 1fr;gap:18px;align-items:start}
@media(max-width:900px){.wiz{grid-template-columns:1fr}}
.wiz .steps{display:flex;flex-direction:column;gap:4px;position:sticky;top:0}
.wiz .steps a{display:flex;gap:10px;align-items:center;padding:9px 10px;border-radius:var(--r-b,8px);color:var(--tx-2)}
.wiz .steps a.on{background:var(--pri-soft);color:var(--pri-h);font-weight:600}
.wiz .steps a.done{color:var(--tx)}
.wiz .steps .n{width:24px;height:24px;border-radius:50%;border:2px solid var(--bd-2);display:grid;place-items:center;font-size:calc(11px*var(--fz,1));font-weight:700;flex:0 0 24px}
.wiz .steps a.on .n{border-color:var(--pri);color:var(--pri)}.wiz .steps a.done .n{background:var(--ok);border-color:var(--ok);color:#fff}
.wiz .steps a.warn .n{border-color:var(--warn);color:var(--warn)}
.wiz-foot{display:flex;justify-content:space-between;gap:8px;margin-top:16px}

/* ---------- modal / toast ---------- */
.ovl{position:fixed;inset:0;background:rgba(15,18,12,.45);display:grid;place-items:center;z-index:100;padding:16px;animation:fade .12s}
.modal{background:var(--card);border-radius:var(--r-l);box-shadow:var(--sh-3);width:min(640px,100%);max-height:92vh;display:flex;flex-direction:column;animation:pop .14s}
.modal.lg{width:min(960px,100%)}.modal.sm{width:min(420px,100%)}
.modal .m-h{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--bd)}
.modal .m-b{padding:16px 18px;overflow:auto}
.modal .m-f{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--bd)}
.modal .x{border:0;background:none;font-size:calc(20px*var(--fz,1));cursor:pointer;color:var(--tx-3);line-height:1}
@keyframes fade{from{opacity:0}}@keyframes pop{from{transform:translateY(6px);opacity:0}}
.toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:200}
.toast{background:var(--n-800);color:#fff;padding:10px 14px;border-radius:var(--r,10px);box-shadow:var(--sh-2);font-size:calc(13px*var(--fz,1));max-width:380px;animation:pop .15s;display:flex;gap:10px;align-items:center}
.toast.ok{background:#1e5c33}.toast.err{background:#7a1f16}.toast.warn{background:#6b4a0c}

/* ---------- misc ---------- */
.spinner{width:22px;height:22px;border:3px solid var(--bd);border-top-color:var(--pri);border-radius:50%;animation:spin .8s linear infinite;margin:30px auto}
@keyframes spin{to{transform:rotate(360deg)}}
.skeleton{background:linear-gradient(90deg,var(--n-100),var(--n-50),var(--n-100));background-size:200% 100%;animation:sk 1.2s infinite;border-radius:var(--r-s,6px);height:14px}
@keyframes sk{to{background-position:-200% 0}}
.dd{position:relative}.dd .dd-m{position:fixed;left:0;top:0;background:var(--card);border:1px solid var(--bd);border-radius:var(--r,10px);box-shadow:var(--sh-2);min-width:180px;z-index:80;padding:4px}
.dd .dd-m button,.dd .dd-m a{display:block;width:100%;text-align:left;padding:8px 10px;border:0;background:none;cursor:pointer;border-radius:var(--r-s,6px);color:var(--tx)}
.dd .dd-m button:hover,.dd .dd-m a:hover{background:var(--n-100);text-decoration:none}
.dd .dd-m button.danger{color:var(--err)}
.dd .dd-m .sep{height:1px;background:var(--bd);margin:4px 0}
.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(160deg,var(--g-100),var(--n-50) 60%)}
.login .box{width:min(400px,92vw);background:var(--card);border:1px solid var(--bd);border-radius:16px;padding:28px;box-shadow:var(--sh-2)}
.login .logo{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.login .logo img{height:44px}
.bar{height:8px;border-radius:var(--r-b,8px);background:var(--n-100);overflow:hidden}.bar i{display:block;height:100%;background:var(--pri)}
.chart{width:100%;height:220px}
.print-only{display:none}
@media print{.side,.top,.page-h .acts,.filters,.tfoot,.no-print{display:none!important}.shell{display:block}main{padding:0}.print-only{display:block}}
.pdv-grid{display:grid;grid-template-columns:1fr 380px;gap:14px;min-height:calc(100vh - 110px)}
@media(max-width:1000px){.pdv-grid{grid-template-columns:1fr}}
.pdv-steps{display:flex;gap:6px;margin-bottom:12px}
.pdv-steps a{flex:1;padding:8px 10px;border-radius:var(--r-b,8px);border:1px solid var(--bd);color:var(--tx-2);display:flex;gap:8px;align-items:center;justify-content:center;font-weight:500}
.pdv-steps a.on{background:var(--pri-soft);border-color:var(--g-400);color:var(--pri-h)}.pdv-steps a.done{border-color:var(--ok);color:var(--ok)}
.pdv-cart{display:flex;flex-direction:column;gap:8px}
.pdv-item{display:grid;grid-template-columns:1fr auto;gap:8px;padding:8px 10px;border:1px solid var(--bd);border-radius:var(--r-b,8px);background:var(--card)}
.pdv-total{font-size:calc(26px*var(--fz,1));font-weight:700;letter-spacing:-.02em}
.pay-btns{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.pay-btns .btn{justify-content:center;padding:12px}
.prod-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.prod-card{border:1px solid var(--bd);border-radius:var(--r,10px);padding:10px;background:var(--card);cursor:pointer}
.prod-card:hover{border-color:var(--g-400);background:var(--g-50)}
.prod-card .nm{font-weight:500;font-size:calc(13px*var(--fz,1));min-height:34px}.prod-card .pr{font-weight:700;color:var(--pri-h)}
.tree ul{list-style:none;padding-left:18px;margin:0}.tree li{padding:3px 0}
.timeline{border-left:2px solid var(--bd);padding-left:14px;display:flex;flex-direction:column;gap:12px}
.timeline .t{position:relative}.timeline .t::before{content:"";position:absolute;left:-20px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--g-400)}
.dl{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;font-size:calc(13px*var(--fz,1))}.dl dt{color:var(--tx-2)}.dl dd{margin:0;font-weight:500}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal .d{border:1px solid var(--bd);border-radius:var(--r-s,6px);padding:6px;min-height:60px;font-size:calc(12px*var(--fz,1))}
.cal .d .n{color:var(--tx-3)}.cal .d.today{border-color:var(--pri)}

/* ---------- deck (quadros do Módulo 7) ---------- */
.deck{display:flex;gap:12px;overflow-x:auto;align-items:flex-start;padding-bottom:8px;-webkit-overflow-scrolling:touch}
.deck-col{flex:0 0 280px;max-width:280px;background:var(--n-100);border:1px solid var(--bd);border-radius:var(--r-l);padding:10px;display:flex;flex-direction:column;gap:8px;min-height:120px}
.deck-col.over{border-color:var(--g-400);background:var(--g-50)}
.deck-col-h{display:flex;justify-content:space-between;align-items:center;gap:8px;padding-bottom:6px;border-bottom:1px solid var(--bd)}
.deck-cards{display:flex;flex-direction:column;gap:8px;min-height:40px}
.deck-card{background:var(--card);border:1px solid var(--bd);border-radius:var(--r);padding:10px;box-shadow:var(--sh-1);cursor:grab}
.deck-card:active{cursor:grabbing}
.deck-card.dragging{opacity:.5}
.deck-card.done{opacity:.65}
.deck-card.done .deck-card-t{text-decoration:line-through}
.deck-card-t{font-weight:600;font-size:calc(13.5px*var(--fz,1));line-height:1.3;word-break:break-word}
.deck-card-d{font-size:calc(12px*var(--fz,1));color:var(--tx-2);margin-top:4px;line-height:1.35;word-break:break-word}
.deck-card-a{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px;opacity:.75}
.deck-card:hover .deck-card-a{opacity:1}
.deck-add{margin-top:auto;padding-top:4px}
@media(max-width:700px){.deck-col{flex:0 0 76vw;max-width:76vw}}

/* faixa do modo demonstração (Etapa 0.3) */
/* v43-qualidade (★1): a faixa pode ocupar 2 linhas no celular; a altura real é medida
   em app.js e publicada em --demo-h (o conteúdo começa logo abaixo dela). */
.demo-bar{position:fixed;top:0;left:0;right:0;min-height:32px;z-index:90;background:#d9480f;color:#fff;display:flex;align-items:center;justify-content:center;gap:10px;padding:4px 10px;font-size:calc(12.5px*var(--fz,1));font-weight:600;white-space:normal;line-height:1.25}
.demo-bar span{overflow:visible;text-overflow:clip}
.demo-bar .btn{background:#fff;color:#d9480f;border-color:#fff;flex:none}
body.demo .shell{margin-top:var(--demo-h,32px);height:calc(100vh - var(--demo-h,32px))}
body.demo .pdv-root,body.demo .shell .side{top:var(--demo-h,32px)} /* PDV em tela cheia e menu do celular começam abaixo da faixa; janelas (z 100) ficam por cima dela */

/* ---------- painel lateral recolhível (Tarefas + Minhas finanças) ---------- */
.painel-alca{position:fixed;right:0;top:50%;transform:translateY(-50%);z-index:60;width:22px;height:64px;border:1px solid var(--bd);border-right:0;border-radius:10px 0 0 10px;background:var(--card);color:var(--tx-2);cursor:pointer;display:grid;place-items:center;padding:0;box-shadow:var(--sh-2)}
.painel-alca.on{right:min(340px,100vw)}
.painel-alca:hover{background:var(--n-100)}
.painel-lat{position:fixed;top:var(--top-h);right:0;bottom:0;width:min(340px,100vw);z-index:59;background:var(--bg);border-left:1px solid var(--bd);box-shadow:var(--sh-3);transform:translateX(100%);visibility:hidden;transition:transform .18s ease,visibility .18s;display:flex;flex-direction:column}
.painel-lat.on{transform:none;visibility:visible}
.painel-lat .pl-cab{display:flex;align-items:center;gap:4px;padding:6px 8px;border-bottom:1px solid var(--bd);background:var(--card)}
.painel-lat .pl-abas{display:flex;gap:4px;flex:1;overflow:auto}
.painel-lat .pl-abas button{border:0;background:none;padding:6px 10px;border-radius:var(--r-b,8px);cursor:pointer;color:var(--tx-2);font:inherit;font-weight:600;white-space:nowrap}
.painel-lat .pl-abas button.on{background:var(--pri-soft);color:var(--pri-tx)}
.painel-lat .pl-corpo{flex:1;overflow:auto;padding:10px}
@media print{.painel-wrap{display:none!important}}
/* ---------- "Ver como" navegando: faixa amarela ---------- */
.vc-bar{position:fixed;top:0;left:0;right:0;height:32px;z-index:91;background:#fcc419;color:#3b2f00;display:flex;align-items:center;justify-content:center;gap:10px;padding:0 10px;font-size:calc(12.5px*var(--fz,1));font-weight:700;overflow:hidden;white-space:nowrap}
.vc-bar span{overflow:hidden;text-overflow:ellipsis}
.vc-bar .btn{background:#fff;color:#3b2f00;border-color:#fff;flex:none}
body.vercomo .shell{margin-top:32px;height:calc(100vh - 32px)}
body.vercomo .pdv-root,body.vercomo .shell .side{top:32px}
body.vercomo .painel-lat{top:calc(var(--top-h) + 32px)}
body.demo.vercomo .vc-bar{top:var(--demo-h,32px)}
body.demo.vercomo .shell{margin-top:calc(var(--demo-h,32px) + 32px);height:calc(100vh - var(--demo-h,32px) - 32px)}
body.demo.vercomo .pdv-root,body.demo.vercomo .shell .side{top:calc(var(--demo-h,32px) + 32px)}
body.demo.vercomo .painel-lat{top:calc(var(--top-h) + var(--demo-h,32px) + 32px)}
body.demo:not(.vercomo) .painel-lat{top:calc(var(--top-h) + var(--demo-h,32px))}

/* ===== MENU NOVO (docs/MENU_E_PERFIS.md): menu em 2 níveis, barra única, faixa de abas, botões laterais, janela rápida.
   Tudo por variáveis do tema (core/tema.js): --pri, --pri-h, --pri-soft, --pri-bd, --pri-tx, --card, --bd, --tx, --tx-2, --warn, --err. ===== */
body.menu-antigo .shell{grid-template-rows:var(--top-h) 1fr}
body.menu-antigo .side{grid-row:1/3}
.side nav .side-det{margin:2px 0}
.side nav .side-det>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:6px;font-size:calc(10px*var(--fz,1));letter-spacing:.08em;text-transform:uppercase;opacity:.6;padding:10px 10px 4px}
.side nav .side-det>summary::-webkit-details-marker{display:none}
.side nav .side-det>summary::before{content:'\25B8';font-size:10px;transition:transform .12s}
.side nav .side-det[open]>summary::before{transform:rotate(90deg)}
.side nav .side-outros a{padding-left:16px}
.side nav .side-div{margin-top:6px;border-top:1px solid var(--side-bd,rgba(127,127,127,.22))}
.side nav .side-div>summary{opacity:.7;padding-top:8px}
.side nav .side-div a{padding-left:16px}
.side nav .side-rodape{margin-top:6px}
.shell.collapsed .side nav .side-det>summary{display:none}
.top .top-titulo{flex:1;min-width:0;display:flex;align-items:center;gap:6px;overflow:hidden;white-space:nowrap}
.top .tt-area{font-weight:700;color:var(--tx)}
.top .tt-sep{color:var(--tx-3)}
.top .tt-aba{color:var(--tx-2);overflow:hidden;text-overflow:ellipsis}
.top .top-star{margin-left:2px}
.top .top-star.on{color:var(--warn)}
.top .top-star.on svg{fill:currentColor}
.top .top-home{display:none;text-decoration:none}
.top .top-acoes{display:flex;gap:4px;align-items:center}
.top .top-ac{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--bd);background:var(--card);color:var(--tx);border-radius:var(--r-b,8px);padding:5px 9px;cursor:pointer;font-weight:500;white-space:nowrap}
.top .top-ac:hover{background:var(--pri-soft);color:var(--pri-h);border-color:var(--pri-bd)}
@media(max-width:1180px){.top .top-ac .rot{display:none}}
@media(max-width:800px){.top .top-home{display:grid}.top .top-acoes{gap:2px}}
.abas-bar{background:var(--top-bg);min-width:0}
.abas-bar:empty{display:none}
.ab-faixa{padding:6px 12px 0;border-bottom:1px solid var(--bd);display:flex;flex-direction:column;gap:2px;min-width:0}
.ab-area{font-size:calc(11px*var(--fz,1));text-transform:uppercase;letter-spacing:.06em;color:var(--tx-3)}
.ab-n1{display:flex;gap:2px;overflow:auto;scrollbar-width:thin}
.ab-n1 a{padding:7px 11px;border-radius:var(--r-b,8px) var(--r-b,8px) 0 0;color:var(--tx-2);font-weight:500;white-space:nowrap;border-bottom:2px solid transparent}
.ab-n1 a:hover{text-decoration:none;color:var(--tx)}
.ab-n1 a.on{color:var(--pri-h);border-bottom-color:var(--pri);background:var(--pri-soft)}
.ab-n2{display:flex;gap:6px;overflow:auto;padding:4px 0 8px;scrollbar-width:thin}
.ab-n2 a{padding:3px 11px;border-radius:20px;border:1px solid var(--bd);color:var(--tx-2);font-size:calc(12.5px*var(--fz,1));white-space:nowrap;background:var(--card)}
.ab-n2 a:hover{text-decoration:none;color:var(--tx)}
.ab-n2 a.on{background:var(--pri);border-color:var(--pri);color:var(--pri-tx)}
/* página do perfil (/area/:chave) */
.ah-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.ah-card{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px;background:var(--card);border:1px solid var(--bd);border-radius:var(--r-l);color:var(--tx);font-weight:600;box-shadow:var(--sh-1)}
.ah-card:hover{text-decoration:none;border-color:var(--pri-bd);background:var(--pri-soft)}
.ah-n{min-width:28px;text-align:center;padding:2px 8px;border-radius:20px;background:var(--pri);color:var(--pri-tx);font-size:calc(12px*var(--fz,1));font-weight:700}
.ah-n.zero{background:var(--n-100);color:var(--tx-2)}
.ah-grupo{background:var(--card);border:1px solid var(--bd);border-radius:var(--r-l);padding:14px 16px}
.ah-grupo h2{margin-bottom:8px}
.ah-links{display:flex;flex-wrap:wrap;gap:4px 20px}
.ah-link{display:inline-flex;align-items:center;gap:4px;padding:4px 0;color:var(--pri-link,var(--pri))}
.ah-atalhos{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px 16px}
.ah-atalho{display:flex;flex-direction:column;gap:1px;padding:7px 10px;border:1px solid var(--bd);border-radius:var(--r-b,8px);background:var(--card);color:var(--tx);min-width:0}
.ah-atalho:hover{text-decoration:none;border-color:var(--pri-bd);background:var(--pri-soft)}
.ah-a-t{display:flex;align-items:center;gap:4px;font-weight:600;color:var(--pri-link,var(--pri))}
.ah-a-dono{font-size:calc(11.5px*var(--fz,1));color:var(--tx-3);padding-left:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* botões laterais: Missões (aba vertical na borda direita) e Finanças (menor, acima) */
.pn-aba{position:fixed;right:0;top:42%;z-index:60;writing-mode:vertical-rl;padding:14px 7px;border:0;border-radius:10px 0 0 10px;background:var(--pri);color:var(--pri-tx);font-weight:700;cursor:pointer;box-shadow:var(--sh-2);letter-spacing:.03em}
.pn-aba:hover{background:var(--pri-h)}
.pn-financas{top:calc(42% - 86px);padding:10px 6px;background:var(--warn);color:#fff;font-size:calc(12px*var(--fz,1))}
.pn-financas:hover{background:var(--warn)}
.pn-bol{position:absolute;top:-6px;left:-8px;writing-mode:horizontal-tb;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--err);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center}
.pn-fundo{position:fixed;inset:0;z-index:61;background:rgba(15,18,12,.4);display:none}
.pn-fundo.on{display:block}
.pn-painel{position:fixed;top:0;right:0;bottom:0;width:min(360px,92vw);z-index:62;background:var(--bg);border-left:1px solid var(--bd);box-shadow:var(--sh-3);transform:translateX(100%);visibility:hidden;transition:transform .18s ease,visibility .18s;display:flex;flex-direction:column}
.pn-painel.on{transform:none;visibility:visible}
body.demo .pn-painel{top:var(--demo-h,32px)}
body.vercomo .pn-painel{top:32px}
body.demo.vercomo .pn-painel{top:calc(var(--demo-h,32px) + 32px)}
.pn-cab{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--card);border-bottom:1px solid var(--bd)}
.pn-cab .ibtn{width:32px;height:32px;border:0;background:none;border-radius:var(--r-b,8px);display:grid;place-items:center;cursor:pointer;color:var(--tx-2)}
/* v44 (itens 232/233): as abas e os chips do painel lateral de Missões legíveis —
   fonte de 13px ou mais, selecionado com a cor do tema e quebra de linha (nada de cortar texto). */
.pn-abas,.pn-sub{display:flex;flex-wrap:wrap;gap:6px;overflow:visible;padding:8px;background:var(--card);border-bottom:1px solid var(--bd)}
.pn-abas:empty,.pn-busca:empty{display:none}
.pn-abas button,.pn-sub button{border:1px solid var(--bd);background:var(--bg);padding:6px 10px;border-radius:var(--r-b,8px);cursor:pointer;color:var(--tx);font-size:calc(13px*var(--fz,1));font-weight:600;line-height:1.3;white-space:normal;text-align:center}
.pn-abas button:hover,.pn-sub button:hover{border-color:var(--pri-bd)}
.pn-abas button.on,.pn-sub button.on{background:var(--pri);border-color:var(--pri);color:var(--pri-tx)}
.pn-sub{margin:0;border:1px solid var(--bd);border-radius:var(--r-b,8px)}
.pn-busca{display:flex;gap:6px;padding:8px;background:var(--card)}
.pn-corpo{flex:1;overflow:auto;padding:10px;display:flex;flex-direction:column;gap:6px}
.pn-item{display:flex;flex-direction:column;padding:8px 10px;background:var(--card);border:1px solid var(--bd);border-radius:var(--r-b,8px);color:var(--tx)}
.pn-item:hover{text-decoration:none;border-color:var(--pri-bd)}
.pn-n{font-size:calc(11px*var(--fz,1));color:var(--tx-3)}
.pn-t{font-weight:600}
.pn-vazio{padding:12px 4px}
.pn-rod{display:flex;gap:8px;justify-content:space-between;padding:10px 12px;background:var(--card);border-top:1px solid var(--bd)}
/* v43-qualidade (fatia B, item ★2): no celular as abas verticais viram botões flutuantes
   compactos no canto inferior direito, sem cobrir o conteúdo (que ganha folga no rodapé). */
@media(max-width:800px){
  .pn-aba{writing-mode:horizontal-tb;top:auto;right:12px;bottom:14px;width:46px;height:46px;max-height:none;padding:0;border-radius:50%;display:grid;place-items:center;opacity:1;z-index:75}
  .pn-financas{top:auto;bottom:68px;padding:0;font-size:inherit}
  .pn-aba .pn-txt{font-size:0;line-height:1}
  .pn-missoes .pn-txt::before{content:"\1F4E3";font-size:19px}
  .pn-financas .pn-txt::before{content:"\1F4B0";font-size:19px}
  .pn-bol{top:-4px;left:-4px;min-width:18px;height:18px;padding:0 4px;font-size:10px}
  /* ★2: com o painel aberto o botão flutuante ficava por cima do painel */
  body:has(.pn-painel.on) .pn-aba{opacity:0;pointer-events:none}
  /* o botão flutuante fica no canto inferior direito: a faixa lateral some e o
     conteúdo usa a largura toda (só precisa de folga no rodapé) */
  main{padding:12px 16px 124px}
}
@media print{.pn-wrap{display:none!important}}
/* janela rápida (?embed=1) */
.jr-ovl{position:fixed;inset:0;z-index:110;background:rgba(15,18,12,.5);display:grid;place-items:center;padding:16px}
.jr-box{background:var(--card);border-radius:var(--r-l);box-shadow:var(--sh-3);width:min(900px,100%);height:min(86vh,100%);display:flex;flex-direction:column;overflow:hidden}
.jr-h{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--bd)}
.jr-x{border:0;background:none;font-size:18px;cursor:pointer;color:var(--tx-3)}
.jr-f{flex:1;border:0;width:100%;background:var(--bg)}
body.embed .side,body.embed .top,body.embed .abas-bar,body.embed .pn-wrap,body.embed .demo-bar,body.embed .vc-bar{display:none!important}
body.embed .shell{grid-template-columns:1fr;grid-template-rows:1fr;height:100vh;margin-top:0}
body.embed main{padding:12px 14px 40px}
/* telas rápidas: pedir material e frete */
.mf-item{display:grid;grid-template-columns:1fr 90px 70px auto;gap:6px;align-items:center}
.mf-linha{display:grid;grid-template-columns:auto 1.3fr 1fr 90px 100px auto;gap:6px;align-items:center}
.mf-ul{margin:6px 0 0;padding-left:18px}
@media(max-width:700px){.mf-item,.mf-linha{grid-template-columns:1fr 1fr}}
.rec-linha{display:grid;grid-template-columns:minmax(140px,1fr) minmax(90px,.6fr) minmax(160px,1.4fr) auto;gap:8px;align-items:end;margin-top:8px}
.rec-q{max-width:110px}
.rec-item[data-completo="1"]{opacity:.78}
.rec-prod{display:block;width:100%;text-align:left}
@media(max-width:700px){.rec-linha{grid-template-columns:1fr 1fr}}

/* ===== v43-qualidade: ajustes de uso no celular (390 px) ===== */
/* a Central (Ações/atalhos) virava uma coluna e obrigava a rolear a tela inteira */
@media(max-width:700px){
  .central{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .central a{padding:10px 10px;gap:8px;min-width:0}
  .central a .ic{width:18px;height:18px;flex:0 0 18px}
  .central a .grow{min-width:0;overflow-wrap:anywhere}
}
/* alvos de toque pequenos demais (botão de 28 px, quadradinho de 13 px) */
@media(max-width:800px){
  /* ★12: no celular nenhum alvo de toque fica com menos de 40 px */
  .btn{min-height:40px}
  .btn.sm{min-height:40px;padding:7px 11px}
  .tbl input[type=checkbox],.bulkbar input[type=checkbox]{width:17px;height:17px}
  .tbl .acts{opacity:1}
  a.lnk{min-height:40px;display:inline-flex;align-items:center}
  /* links curtos dentro do painel (ex.: "ver vendas" no KPI) */
  .kpi .s a{display:inline-flex;align-items:center;min-height:40px}
}
/* filtros: a busca ficava espremida e o texto saía cortado */
@media(max-width:700px){
  .filters{gap:8px}
  .filters .f{min-width:calc(50% - 4px)}
  .filters .search{min-width:100%}
}
/* tabelas largas no celular: fonte menor, respiro menor e quebra de texto longo */
@media(max-width:700px){
  table.tbl{font-size:calc(12.5px*var(--fz,1))}
  .tbl th{padding:8px 8px}
  .tbl td{padding:8px 8px}
  .tbl td{overflow-wrap:anywhere}
}
/* PDV: a busca e o botão "Cadastrar produto" ficavam lado a lado e cortados */
.pdv-busca{flex-wrap:nowrap}
@media(max-width:700px){
  .pdv-busca{flex-wrap:wrap}
  .pdv-busca .grow{min-width:100%}
  .pdv-busca>a,.pdv-busca .btn{width:100%;justify-content:center}
  /* ★10: o PDV em tela cheia deixa espaço para o botão flutuante de Missões/Finanças */
  .pdv-root{padding:12px 12px 92px}
}
/* faixa de demonstração: texto curto na tela estreita */
@media(max-width:700px){.demo-bar{font-size:calc(11.5px*var(--fz,1));gap:6px;padding:0 6px}.vc-bar{font-size:calc(11.5px*var(--fz,1));gap:6px;padding:0 6px}}

/* ===== v43-qualidade (fatia B): itens ★3, ★4, ★5, ★8, ★9, ★11, ★12, ★13, ★14, ★15 ===== */
/* ★5: o caminho da tela não some mais com reticências; quebra em até 2 linhas */
.page-h .crumbs{white-space:normal;overflow-wrap:anywhere;max-width:70ch;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.top .tt-aba{white-space:nowrap}
/* ★3: a tabela mais larga que a tela saía pela borda — agora rola dentro do cartão */
main{min-width:0}
.card,.card.tight,.stack{min-width:0}
.tbl-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
/* ★3: tabelas montadas à mão (sem .tbl-wrap) também passam a rolar dentro do cartão */
.card:has(> table.tbl),.stack:has(> table.tbl){overflow-x:auto}
/* ★4: as faixas de abas cortadas à direita ganham respiro e Indicativo de rolagem */
.ab-n1,.ab-n2{padding-right:16px;scroll-snap-type:x proximity}
.ab-n1 a,.ab-n2 a{scroll-snap-align:start}
.top .tt-area{flex:0 0 auto;white-space:nowrap}
/* ★5: o caminho no topo encolhe só no fim (o texto inteiro fica no title, app.js) */
.top .top-titulo{display:flex;flex:1 1 auto;align-items:center;gap:6px;min-width:0;overflow:hidden;white-space:nowrap}
.top .tt-aba{flex:0 0 auto}
.top .tt-ult{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
@media(max-width:800px){.top .top-titulo{display:none}}
/* ★9: o texto do checkbox e o estado vazio não são mais cortados */
.chk{flex-wrap:wrap;max-width:100%}
.chk span{min-width:0;overflow-wrap:anywhere}
.empty div{overflow-wrap:anywhere}
/* ★6: os números e badges do Financeiro com contraste suficiente */
.kpi .s{color:var(--tx-2)}
/* ★8: os cartões do Patrimônio passam a ter a altura do próprio conteúdo */
.grid.c3>.card{align-self:start}
/* ★11: no celular os filtros (menos a busca) ficam recolhidos atrás do
   botão "Filtros (N ativos)"; no desktop o painel é sempre aberto. */
.filters-painel{display:contents}
.f-filtros-btn{display:none}
@media(max-width:640px){
  .filters{flex-direction:column;align-items:stretch;gap:8px}
  .filters .f{min-width:100%}
  .filters .search{min-width:100%}
  .f-filtros-btn{display:inline-flex;justify-content:center;width:100%}
  .filters-painel{display:none;flex-direction:column;gap:8px;width:100%}
  .filters.f-aberto .filters-painel{display:flex}
}
/* ★12: alvos de toque de 44 px nos atalhos e nada parando sob a aba flutuante */
@media(max-width:800px){
  .central a{min-height:44px}
  .ah-link{min-height:44px;display:inline-flex;align-items:center}
  .ah-atalho{min-height:44px;justify-content:center}
  .ah-links{gap:6px 16px}
  .ah-atalhos{gap:10px}
  /* o botão flutuante (Missões/Finanças) fica no canto: a rolagem reserva a faixa dele */
  html{scroll-padding-bottom:130px}
  .ini-atalhos{padding-bottom:6px}
}
/* ★13: valores não quebram no meio e os ícones de ação não somem na borda */
.tbl td.num,.tbl th.num{white-space:nowrap}
.tbl .acts{flex-wrap:nowrap;white-space:nowrap}
/* a coluna de ações fica fixa à direita, com fundo, e nunca é cortada */
.tbl th.acts-col,.tbl td.acts-col{position:sticky;right:0;background:var(--card);z-index:2;box-shadow:-7px 0 8px -7px rgba(0,0,0,.18)}
.tbl th.acts-col{z-index:3}
.tbl tr:hover td.acts-col{background:var(--n-50)}
.tbl tr.sel td.acts-col{background:var(--g-50)}
.tbl td.acts-col .acts{justify-content:flex-end}
.tbl td.acts-col .btn{flex:0 0 auto}
.tbl td.nowrap,.tbl th.nowrap{white-space:nowrap}
/* ★14: a tabela de missões não parte mais "nº 1" ao meio; no celular ela rola com todas as colunas */
.tbl td a.lnk{white-space:nowrap}
@media(max-width:700px){.tbl td{overflow-wrap:break-word}.tbl td.num{white-space:nowrap}.tbl-missoes{min-width:560px}}
/* ★14 (fatia B6): no celular a tabela de missões não fica mais espremida nem cortada — as colunas
   secundárias ("De → Para", "Situação", "Prazo") saem da tabela e a informação fica abaixo
   do título; "nº 1" não parte mais ao meio (coluna "Nº" é nowrap) */
.missao-sec{display:none}
@media(max-width:700px){
  .tbl-missoes{min-width:0}
  .tbl-missoes th:nth-child(3),.tbl-missoes td:nth-child(3),
  .tbl-missoes th:nth-child(4),.tbl-missoes td:nth-child(4),
  .tbl-missoes th:nth-child(5),.tbl-missoes td:nth-child(5){display:none}
  .missao-sec{display:block;margin-top:4px;font-size:calc(12px*var(--fz,1));color:var(--tx-2)}
  .missao-sec .ms-l{display:block;margin-top:2px}
  .missao-sec .ms-l b{font-weight:600;color:var(--tx-3)}
}
/* ★15: o quadro do Deck rola com pista de que há mais colunas */
.deck{padding-right:16px;scroll-snap-type:x proximity}
.deck-col{scroll-snap-align:start}

/* ===== v43-qualidade (fatia B2): itens ★6, ★7, ★8, ★9, ★10 ===== */
/* ★6: números, legendas e badges do Financeiro com contraste >= 4,5:1
   (tokens semânticos escurecidos em site/css/tokens.css; --tx-3 só em texto grande) */
.kpi .s{color:var(--tx-2)}
.kpi .v,.kpi .l{color:var(--tx)}
.badge{color:var(--tx-2)}
/* ★7: o painel "Resultado de verdade" vira tabela (mês x indicador) com a linha de total em destaque */
.tbl-res td:last-child,.tbl-res th:last-child{white-space:nowrap}
.tbl-res tr.forte td{font-weight:700}
/* ★8: o card do Patrimônio mostra a nota inteira (altura do conteúdo + texto que quebra) */
.grid.c3>.card{height:auto}
.grid.c3 .card .row.between{align-items:flex-start;gap:8px}
.grid.c3 .card .row.between>div:first-child{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.grid.c3 .card .row.between>div:last-child{flex:0 0 auto;white-space:nowrap;text-align:right}
/* ★9: na nova venda o cabeçalho das colunas quebra em 2 linhas em vez de ser cortado;
   no celular some com "Vl. Un." e "Sub-total" (o valor continua na coluna Total) */
@media(max-width:700px){
  .tbl-itens th{white-space:normal;overflow-wrap:anywhere;word-break:break-word;hyphens:auto}
  .tbl-itens th.num{white-space:normal}
  .tbl-itens th:nth-child(4),.tbl-itens td:nth-child(4),
  .tbl-itens th:nth-child(5),.tbl-itens td:nth-child(5){display:none}
}
/* ★10: no PDV (celular) a busca ocupa a linha toda, o botão fica abaixo e sobra folga p/ a aba flutuante */
@media(max-width:700px){
  .pdv-busca{flex-direction:column;align-items:stretch}
  .pdv-busca .grow{min-width:100%;width:100%}
  .pdv-busca>a,.pdv-busca .btn{width:100%;justify-content:center}
  .pdv-root{padding:12px 12px 104px}
}
/* ★6: no tema escuro o verde/âmbar/vermelho ficam claros (texto legível);
   nos botões de fundo sólido o texto branco precisa de fundo escuro */
:root[data-theme="dark"] .btn.ok{background:#2f6b3a;border-color:#2f6b3a;color:#eaf5ec}
:root[data-theme="dark"] .btn.ok:hover{filter:none}
:root[data-theme="dark"] .wiz .steps a.done .n{background:#2f6b3a;color:#eaf5ec}
:root[data-theme="dark"] .pn-financas{background:#8a5a10;color:#fff}

/* ---------- PRIORIDADE DA MISSÃO / DO SUPORTE ----------
   'Urgente' = LARANJA leve; 'Urgentíssimo' = VERMELHO leve. O texto é escuro no tema
   claro e claro no tema escuro (contraste >= 4,5:1 nos dois).
   Os tokens vivem aqui (e não no tokens.css) porque são do MÓDULO DE MISSÕES. */
:root{
  --prio-urgente-bg:#fdf1de; --prio-urgente-fg:#8a4a05; --prio-urgente-borda:#f0c48f;
  --prio-urgentissimo-bg:#fdeae8; --prio-urgentissimo-fg:#96201a; --prio-urgentissimo-borda:#f1b5b0;
}
:root[data-theme="dark"]{
  --prio-urgente-bg:#3a2a12; --prio-urgente-fg:#f0c184; --prio-urgente-borda:#6d4c1c;
  --prio-urgentissimo-bg:#3b1d1b; --prio-urgentissimo-fg:#f2aaa2; --prio-urgentissimo-borda:#6e2d28;
}
.badge.prio-urgente{background:var(--prio-urgente-bg);color:var(--prio-urgente-fg);border:1px solid var(--prio-urgente-borda)}
.badge.prio-urgentissimo{background:var(--prio-urgentissimo-bg);color:var(--prio-urgentissimo-fg);border:1px solid var(--prio-urgentissimo-borda)}
.prio-tag{display:inline-block;padding:1px 8px;border-radius:20px;font-size:calc(11.5px*var(--fz,1));font-weight:600;white-space:nowrap}
.prio-tag.prio-urgente{background:var(--prio-urgente-bg);color:var(--prio-urgente-fg)}
.prio-tag.prio-urgentissimo{background:var(--prio-urgentissimo-bg);color:var(--prio-urgentissimo-fg)}
/* a LINHA colorida pela prioridade: a tabela (tr) e o painel lateral (pn-item) usam a mesma */
tr.prio-linha-urgente td{background:var(--prio-urgente-bg)}
tr.prio-linha-urgentissimo td{background:var(--prio-urgentissimo-bg)}
.pn-item.prio-linha-urgente{background:var(--prio-urgente-bg);border-color:var(--prio-urgente-borda)}
.pn-item.prio-linha-urgentissimo{background:var(--prio-urgentissimo-bg);border-color:var(--prio-urgentissimo-borda)}
/* o filtro de prioridade (chips) */
.prio-filtro{display:inline-flex;align-items:center;gap:4px;font-size:calc(12px*var(--fz,1))}
