/* ===== Portal — tela de login dividida (login_tela) ===== */
.auth-split{display:grid;grid-template-columns:calc(var(--lt-pa,55) * 1%) calc(var(--lt-pb,45) * 1%);padding:0;background:var(--lt-form-bg,#fff);align-items:stretch}
.auth-split.form-esquerda .auth-panel{order:2}.auth-split.form-esquerda .auth-side{order:1}
.auth-panel{position:relative;overflow:hidden;background:var(--lt-bg);color:var(--lt-fg);display:flex;flex-direction:column;justify-content:space-between;padding:2rem 2.5rem;min-height:100vh}
.auth-panel.has-grad{background:linear-gradient(160deg,var(--lt-bg),var(--lt-bg2))}
.auth-panel.has-img{background-image:var(--lt-img);background-size:cover;background-position:center}
.auth-panel.has-img::before{content:"";position:absolute;inset:0;background:var(--lt-bg);opacity:var(--lt-ov,.7)}
.panel-top,.panel-mid,.panel-foot{position:relative;z-index:1}
.panel-brand{display:inline-flex;align-items:center;gap:12px;color:var(--lt-fg);text-decoration:none;font-weight:800;font-size:1.3rem;letter-spacing:-.03em}
.panel-brand b{color:var(--lt-acc);font-weight:800}
.panel-mid{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.75rem;padding:2rem 0}
.panel-title{font-size:clamp(1.5rem,2.2vw,2.1rem);margin:1.5rem 0 0;color:var(--lt-fg)}
.panel-sub{margin:0;opacity:.8;max-width:38ch}
.panel-frase{margin:.75rem 0 0;color:var(--lt-acc);font-weight:700;min-height:1.6em;transition:opacity .35s}
.panel-frase.fade{opacity:0}
.panel-foot{font-size:.8rem;opacity:.6}
/* divisor */
.has-div.div-linha .auth-panel{border-right:1px solid var(--lt-div,rgba(255,255,255,.12))}
.has-div.div-linha.form-esquerda .auth-panel{border-right:0;border-left:1px solid var(--lt-div,rgba(255,255,255,.12))}
.has-div.div-sombra .auth-side{box-shadow:-24px 0 60px rgba(21,19,28,.18);z-index:1}
.has-div.div-curva .auth-panel{border-radius:0 48px 48px 0}
.has-div.div-curva.form-esquerda .auth-panel{border-radius:48px 0 0 48px}
/* lado do formulário */
.auth-side{display:flex;align-items:center;justify-content:center;padding:2rem 1.5rem;background:var(--lt-form-bg,#fff)}
.auth-split .auth-card{max-width:var(--lt-form-w,420px);box-shadow:none;border:0;padding:1rem 0}
.auth-split .auth-brand{align-items:flex-start;text-align:left}

/* ===== animações centrais ===== */
.panel-anim{width:var(--lt-anim,320px);max-width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;position:relative}
.panel-anim img,.panel-anim video{max-width:100%;max-height:100%;border-radius:16px}
/* órbitas: anéis girando em volta do símbolo */
.orb{position:relative;width:100%;height:100%}
.orb .ring{position:absolute;inset:0;border:1.5px solid color-mix(in srgb,var(--lt-acc) 45%,transparent);border-radius:50%;animation:spin calc(18s / var(--lt-speed,1)) linear infinite}
.orb .r2{inset:14%;border-style:dashed;animation-direction:reverse;animation-duration:calc(26s / var(--lt-speed,1))}
.orb .r3{inset:28%;border-color:color-mix(in srgb,var(--lt-acc) 70%,transparent);animation-duration:calc(12s / var(--lt-speed,1))}
.orb .dot{position:absolute;width:12px;height:12px;border-radius:50%;background:var(--lt-acc);box-shadow:0 0 18px var(--lt-acc)}
.orb .d1{top:-6px;left:50%;transform-origin:0 calc(50% + 6px + var(--lt-anim,320px)/2);animation:orbit calc(18s / var(--lt-speed,1)) linear infinite}
.orb .d2{top:14%;left:50%;transform-origin:0 calc(var(--lt-anim,320px)*.36);animation:orbit calc(26s / var(--lt-speed,1)) linear infinite reverse}
.orb .d3{top:28%;left:50%;transform-origin:0 calc(var(--lt-anim,320px)*.22);animation:orbit calc(12s / var(--lt-speed,1)) linear infinite}
.orb-core{position:absolute;inset:36%;border-radius:28%;background:var(--lt-acc);color:var(--lt-bg);display:flex;align-items:center;justify-content:center;box-shadow:0 20px 60px color-mix(in srgb,var(--lt-acc) 40%,transparent);animation:breathe calc(4s / var(--lt-speed,1)) ease-in-out infinite}
.orb-core svg{width:62%}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes orbit{to{transform:rotate(360deg)}}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
/* ondas: círculos concêntricos pulsando */
.waves{position:relative;width:100%;height:100%}
.waves span{position:absolute;inset:30%;border-radius:50%;border:2px solid var(--lt-acc);opacity:0;animation:wave calc(4s / var(--lt-speed,1)) ease-out infinite}
.waves span:nth-child(2){animation-delay:1s}.waves span:nth-child(3){animation-delay:2s}.waves span:nth-child(4){animation-delay:3s}
@keyframes wave{0%{transform:scale(.4);opacity:.9}100%{transform:scale(1.6);opacity:0}}
.particles{width:100%;height:100%}
@media (prefers-reduced-motion:reduce){.orb .ring,.orb .dot,.orb-core,.waves span{animation:none}}

@media (max-width:900px){
  .auth-split{grid-template-columns:1fr}
  .auth-panel{min-height:auto;padding:1.5rem 1.25rem}
  .panel-mid{padding:1rem 0}.panel-anim{width:min(var(--lt-anim,320px),180px)}.panel-sub,.panel-frase{display:none}
  .has-div.div-curva .auth-panel{border-radius:0 0 32px 32px}
  .has-div.div-linha .auth-panel{border:0;border-bottom:1px solid var(--lt-div,rgba(255,255,255,.12))}
  .auth-side{padding:2rem 1.25rem}
}

/* tamanhos de logo travados (login_tela.logo_altura_px e logo do tenant) */
.auth-body .panel-logo{height:var(--lt-logo,44px) !important;width:auto !important;max-width:220px;object-fit:contain;border-radius:10px}
.auth-body .auth-logo{max-height:72px !important;max-width:200px !important;width:auto !important;height:auto !important;object-fit:contain}
.auth-body .auth-logo.tile{width:56px !important;height:56px !important;border-radius:14px}
.mods .orb-core svg,.orb-core svg{width:62% !important;height:auto}

/* módulos orbitando o símbolo — posições calculadas em JS, logo parada */
.mods{position:relative;width:100%;height:100%}
.mods .ring{position:absolute;inset:0;border:1.5px dashed color-mix(in srgb,var(--lt-acc) 40%,transparent);border-radius:50%}
.mods .r2{inset:22%;border-style:solid;border-color:color-mix(in srgb,var(--lt-acc) 25%,transparent)}
.mods .mod{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:inline-flex;align-items:center;gap:6px;white-space:nowrap;background:color-mix(in srgb,var(--lt-fg) 10%,transparent);border:1px solid color-mix(in srgb,var(--lt-acc) 50%,transparent);color:var(--lt-fg);font-weight:700;font-size:.82rem;padding:.4rem .75rem;border-radius:999px;backdrop-filter:blur(6px);will-change:transform}
.mods .mod i{font-style:normal;font-size:1rem}
.mods .orb-core{inset:36%}

/* ===== painel: menu lateral ===== */
.sidebar{display:flex;flex-direction:column;gap:1px;padding:.4rem .55rem .55rem}
.nav-grupo{font-size:.64rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);
           opacity:.65;padding:.1rem .85rem .35rem;margin-top:.85rem}
.nav-grupo:first-child{margin-top:.2rem}
.nav-item{position:relative;display:flex;align-items:center;gap:.7rem;min-height:40px;padding:0 .8rem;border-radius:10px;
          color:var(--text);text-decoration:none;font-weight:600;font-size:.91rem;letter-spacing:-.005em;transition:background .13s,color .13s}
.nav-ic{width:18px;height:18px;flex:none;opacity:.55;transition:opacity .13s,transform .13s}
.nav-item:hover{background:var(--bg)}
.nav-item:hover .nav-ic{opacity:.85}
.nav-item.active{background:var(--primary-soft);color:var(--primary-dark);font-weight:700}
.nav-item.active .nav-ic{opacity:1;color:var(--primary)}
.nav-item.active::before{content:"";position:absolute;left:-.55rem;top:50%;transform:translateY(-50%);
                         width:3px;height:20px;border-radius:0 3px 3px 0;background:var(--primary)}
.nav-rodape{margin-top:auto;padding-top:.9rem;border-top:1px solid var(--border);display:flex;align-items:center;gap:.6rem}
.nav-user{display:flex;align-items:center;gap:.55rem;min-width:0;flex:1;padding:.3rem .25rem}
.nav-av{width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;font-weight:800;font-size:.85rem;
        display:flex;align-items:center;justify-content:center;flex:none}
.nav-user strong{display:block;font-size:.86rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-user small{color:var(--muted);font-size:.72rem}
.nav-sair{border:0;background:transparent;color:var(--muted);cursor:pointer;width:34px;height:34px;border-radius:9px;
          display:flex;align-items:center;justify-content:center;transition:all .13s}
.nav-sair svg{width:17px;height:17px}
.nav-sair:hover{background:var(--danger-bg);color:var(--danger)}
/* logo do tenant acima dos campos (login_tela.logo_tenant_altura_px) */
.auth-body .auth-logo{max-height:var(--lt-logo-tenant,110px) !important;height:var(--lt-logo-tenant,110px) !important;max-width:min(100%,320px) !important;width:auto !important;object-fit:contain;margin-bottom:.25rem}
.auth-body .auth-logo.tile{width:72px !important;height:72px !important;border-radius:16px}
.auth-split .auth-brand{align-items:center;text-align:center;margin-bottom:1.25rem}

/* ===== Dashboard ===== */
.hello{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;background:linear-gradient(120deg,var(--primary) 0%,#4c1d95 100%);color:#fff;border-radius:var(--radius);padding:1.4rem 1.6rem;margin-bottom:1.25rem;box-shadow:0 14px 40px color-mix(in srgb,var(--primary) 30%,transparent)}
.hello h1{margin:0 0 .15rem;font-size:1.55rem;color:#fff}.hello p{margin:0;opacity:.85}
.hello-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.hello .btn-primary{background:#fff;color:var(--primary-dark);border-color:#fff}.hello .btn-primary:hover{background:var(--primary-soft)}
.btn-light{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.25)}.btn-light:hover{background:rgba(255,255,255,.24)}
.btn .ic{margin-right:.35rem;font-weight:800}
.alert-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.alert-row .btn{min-height:38px;padding:.4rem .9rem}

.dash-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;align-items:start}
.w-1{grid-column:span 1}.w-2{grid-column:span 2}.w-3{grid-column:span 3}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.25rem;min-width:0}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.85rem}
.card-head h2{font-size:1rem;margin:0}.card-head a{font-size:.85rem;text-decoration:none;font-weight:600}
.card h3{font-size:.78rem;margin:1rem 0 .5rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.widget-kpis{background:transparent;border:0;padding:0}

.kpis{display:grid;gap:1rem}.kpis-4{grid-template-columns:repeat(4,1fr)}.kpis-3{grid-template-columns:repeat(3,1fr)}.kpis-2{grid-template-columns:repeat(2,1fr)}.kpis-1,.kpis-5,.kpis-6,.kpis-7,.kpis-8{grid-template-columns:repeat(4,1fr)}
.kpi{position:relative;display:flex;flex-direction:column;gap:.2rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.25rem 1.1rem 1.25rem;text-decoration:none;color:var(--text);transition:border-color .15s,transform .15s,box-shadow .15s;overflow:hidden}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--primary)}
.kpi:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 10px 24px rgba(21,19,28,.06)}
.kpi-ic{position:absolute;right:1rem;top:.9rem;width:38px;height:38px;border-radius:12px;background:var(--primary-soft);display:flex;align-items:center;justify-content:center;font-size:1.15rem}
.kpi-label{font-size:.76rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding-right:48px}
.kpi strong{font-size:1.75rem;letter-spacing:-.03em;line-height:1.1;font-variant-numeric:tabular-nums}
.kpi-sub{font-size:.82rem;color:var(--muted)}.kpi-sub.up,.up{color:var(--ok)}.kpi-sub.down,.down{color:var(--danger)}

.empty{display:flex;flex-direction:column;align-items:center;gap:.5rem;text-align:center;padding:1.25rem .5rem;color:var(--muted);font-size:.95rem}
.empty-ic{font-size:1.8rem;width:56px;height:56px;border-radius:50%;background:var(--bg);display:flex;align-items:center;justify-content:center}
.empty p{margin:0}.empty .btn{min-height:38px;padding:.4rem .9rem;margin-top:.25rem}

.ag-barbeiro h3{text-transform:none;letter-spacing:0;font-size:.95rem;color:var(--text);margin:.75rem 0 .4rem;display:flex;align-items:center;gap:.5rem}
.avatar{width:26px;height:26px;border-radius:50%;background:var(--primary-soft);color:var(--primary-dark);display:inline-flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:800}
.ag-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}
.ag-item{display:grid;grid-template-columns:52px 1fr auto;align-items:center;gap:.75rem;padding:.55rem .75rem;border-radius:10px;background:var(--bg);border-left:3px solid var(--border)}
.ag-hora{font-weight:800;font-variant-numeric:tabular-nums}
.ag-info{display:flex;flex-direction:column;min-width:0}.ag-info small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ag-status{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--surface);padding:.2rem .5rem;border-radius:999px}
.st-confirmado{border-left-color:var(--primary)}.st-andamento{border-left-color:var(--warn);background:var(--warn-bg)}.st-concluido{border-left-color:var(--ok);opacity:.7}.st-faltou{border-left-color:var(--danger);opacity:.6}

.legend{font-size:.76rem;color:var(--muted);display:inline-flex;align-items:center;gap:.4rem}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px}.l-bar{background:var(--primary-soft);border:1px solid var(--primary)}.l-line{background:var(--primary);height:3px;border-radius:2px}
.chart{height:170px}.chart svg{width:100%;height:100%;overflow:visible}
.chart .bar{fill:var(--primary-soft);stroke:var(--primary);stroke-width:1}.chart .line{fill:none;stroke:var(--primary);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.chart .dot{fill:var(--primary)}.chart .lbl{font-size:10px;fill:var(--muted)}
.dias{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(7,1fr);gap:.4rem}
.dias li{display:flex;flex-direction:column;align-items:center;gap:.2rem;background:var(--bg);border-radius:10px;padding:.5rem .25rem;font-size:.7rem;color:var(--muted);text-align:center}
.dias li:first-child{background:var(--primary-soft);color:var(--primary-dark)}.dias b{font-size:1.1rem;color:var(--text)}
.resumo{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}
.resumo li{display:flex;justify-content:space-between;padding:.45rem .6rem;background:var(--bg);border-radius:8px;font-size:.92rem}
.resumo .total{background:var(--primary-soft);font-weight:800}.small{font-size:.8rem;margin-top:.5rem}
.lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}
.lista li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem .65rem;background:var(--bg);border-radius:10px;font-size:.92rem}
.lista li span{display:flex;flex-direction:column;min-width:0}.lista li small{color:var(--muted)}
.lista li.danger{background:var(--danger-bg)}.lista li.danger small{color:var(--danger)}.lista li.warn{background:var(--warn-bg)}.lista b{white-space:nowrap}
.pill{background:var(--primary-soft);color:var(--primary-dark);padding:.15rem .6rem;border-radius:999px;font-size:.82rem}
.mini{font-size:.76rem;font-weight:700;text-decoration:none;background:var(--primary-soft);color:var(--primary-dark);padding:.3rem .6rem;border-radius:999px;white-space:nowrap}
.barras{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}
.barras li{display:flex;flex-direction:column;gap:.3rem;font-size:.92rem}.barras li span{display:flex;justify-content:space-between;gap:.5rem}.barras li small{color:var(--muted)}
.barras li i{display:block;height:8px;border-radius:4px;background:var(--primary);min-width:4px}
.atalhos{display:grid;grid-template-columns:repeat(8,1fr);gap:.6rem}
.atalhos a{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.9rem .5rem;background:var(--bg);border-radius:12px;text-decoration:none;color:var(--text);font-size:.8rem;font-weight:600;text-align:center;transition:background .15s}
.atalhos a:hover{background:var(--primary-soft)}.atalhos span{font-size:1.4rem}

/* configuração do dashboard */
.cfg-dash .card{margin-bottom:1rem}.cfg-dash h2{font-size:1.05rem;margin:0 0 .75rem}
.opts{display:flex;flex-direction:column;gap:.6rem}.opts-grid{display:grid;grid-template-columns:repeat(4,1fr)}
.wlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}
.witem{display:grid;grid-template-columns:24px 44px 1fr 220px 150px;align-items:center;gap:.75rem;padding:.6rem .75rem;background:var(--bg);border:1px solid var(--border);border-radius:10px}
.witem.dragging{opacity:.4}.witem.over{border-color:var(--primary)}
.handle{cursor:grab;color:var(--muted);user-select:none}
.winfo{display:flex;flex-direction:column;min-width:0}.winfo small{color:var(--muted)}
.witem input[type=text],.witem select{padding:.5rem .6rem;border:1px solid var(--border);border-radius:8px;font:inherit;font-size:.9rem;background:var(--surface)}
.switch{position:relative;display:inline-block;width:40px;height:22px}.switch input{position:absolute;opacity:0;width:100%;height:100%;cursor:pointer;margin:0}
.switch i{position:absolute;inset:0;background:var(--border);border-radius:999px;transition:background .15s}.switch i::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}
.switch input:checked+i{background:var(--primary)}.switch input:checked+i::after{transform:translateX(18px)}
.form-actions{display:flex;gap:.5rem}

/* caixa: aviso compacto + acesso rápido */
.aviso-caixa{display:flex;align-items:center;gap:.5rem;margin:0 0 1rem;padding:.55rem .9rem;border-radius:10px;background:var(--warn-bg);color:var(--text);font-size:.9rem;border:1px solid color-mix(in srgb,var(--warn) 35%,transparent)}
.aviso-caixa a{font-weight:700;color:var(--primary-dark);margin-left:auto;white-space:nowrap}
.hello .btn-caixa{background:#fff;color:var(--primary-dark);border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.25)}
.hello .btn-caixa:hover{background:var(--primary-soft)}
.hello-actions .btn{min-height:40px;padding:.5rem 1rem;font-size:.9rem}
.btn-sm{min-height:34px;padding:.3rem .8rem;font-size:.85rem}
.atalhos a.destaque{background:var(--primary);color:#fff}.atalhos a.destaque:hover{background:var(--primary-dark)}
.form-error{margin:0 0 .75rem;padding:.6rem .8rem;border-radius:10px;background:var(--danger-bg);color:var(--danger);font-size:.9rem;font-weight:600}

/* ===== Configurações ===== */
.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.25rem}
.page-head h1{margin:0 0 .2rem;font-size:1.5rem}.page-head p{margin:0}.page-actions{display:flex;gap:.5rem}
.cfg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.cfg-item{display:flex;flex-direction:column;gap:.35rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.2rem 1.25rem;text-decoration:none;color:var(--text);transition:border-color .15s,transform .15s}
.cfg-item:hover{border-color:var(--accent);transform:translateY(-2px)}
.cfg-ic{width:42px;height:42px;border-radius:12px;background:var(--primary-soft);display:flex;align-items:center;justify-content:center;font-size:1.3rem;margin-bottom:.4rem}
.cfg-item small{color:var(--muted);line-height:1.4}

.tabela{width:100%;border-collapse:collapse;font-size:.93rem}
.tabela th{text-align:left;font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:.5rem .75rem;border-bottom:1px solid var(--border)}
.tabela td{padding:.7rem .75rem;border-bottom:1px solid var(--border);vertical-align:middle}
.tabela tr:last-child td{border-bottom:0}.tabela .num{text-align:right;font-variant-numeric:tabular-nums}
.tabela .acoes{text-align:right;white-space:nowrap}.tabela .acoes form{display:inline}
.tag{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;background:var(--primary-soft);color:var(--primary-dark);padding:.15rem .45rem;border-radius:999px;vertical-align:middle;margin-left:.3rem}
.pill-ok{background:var(--ok-bg,var(--ok-bg));color:var(--ok)}.pill-off{background:var(--bg);color:var(--muted)}
.btn.danger{color:var(--danger)}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.perm-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}
.perm-mod{border:1px solid var(--border);border-radius:12px;padding:.6rem .9rem .8rem;margin:0;background:var(--bg)}
.perm-mod legend{padding:0 .4rem}.perm-mod legend .check{margin:0}
.perm-mod .check{display:flex;align-items:flex-start;gap:.55rem;padding:.35rem 0;cursor:pointer}
.perm-mod .check input{margin-top:.2rem}
.perm-mod .check span{display:flex;flex-direction:column;line-height:1.3}.perm-mod .check small{color:var(--muted);font-family:ui-monospace,monospace;font-size:.72rem}
.md-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.md-box{background:var(--bg);border-radius:12px;padding:.7rem .85rem;display:flex;flex-direction:column;gap:.1rem}
.md-box span{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}
.md-box b{font-size:1.35rem;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.md-box small{color:var(--muted);font-size:.76rem}
.md-box.destaque{background:var(--primary);color:#fff}.md-box.destaque span,.md-box.destaque small{color:rgba(255,255,255,.8)}
.md-tab td .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:.45rem;vertical-align:middle}
a.md-box{text-decoration:none;color:inherit;position:relative;transition:transform .12s,box-shadow .12s}
a.md-box:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(21,19,28,.08)}
.md-go{position:absolute;right:.7rem;top:.6rem;font-style:normal;color:var(--muted);opacity:0;transition:opacity .12s}
a.md-box:hover .md-go{opacity:1}.md-box.destaque .md-go{color:#fff}
.row-link{cursor:pointer}.row-link:hover{background:var(--primary-soft) !important}
.dias li a{display:flex;flex-direction:column;align-items:center;gap:.2rem;text-decoration:none;color:inherit;width:100%}
.dias li{padding:0}.dias li a{padding:.5rem .25rem}.dias li:hover{background:var(--primary-soft)}
.h-link{text-decoration:none;color:inherit}.h-link:hover{color:var(--primary-dark)}

/* ===== Diálogos ===== */
.dlg{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;padding:1rem}
.dlg[hidden]{display:none}
.dlg-bg{position:absolute;inset:0;background:rgba(21,19,28,.5);backdrop-filter:blur(2px)}
.dlg-card{position:relative;background:var(--surface);border-radius:16px;padding:1.4rem 1.5rem 1.2rem;width:min(430px,100%);box-shadow:0 24px 60px rgba(0,0,0,.28);animation:dlgIn .16s ease-out}
@keyframes dlgIn{from{transform:translateY(10px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.dlg-card h2{margin:0 0 .4rem;font-size:1.1rem}
.dlg-msg{margin:0 0 .9rem;color:var(--muted);font-size:.92rem;line-height:1.45}
.dlg-input{width:100%;padding:.6rem .8rem;border:1px solid var(--border);border-radius:10px;font:inherit;font-size:.95rem}
.dlg-input:focus,#dlgCampo .input-prefix:focus-within{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
#dlgCampo .input-prefix input{font-size:1.15rem;font-weight:700}
.dlg-acoes{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1.1rem}
.dlg-acoes .btn{min-height:42px;padding:.5rem 1.1rem}
@media (max-width:480px){.dlg{align-items:flex-end;padding:0}.dlg-card{border-radius:16px 16px 0 0;width:100%}.dlg-acoes{flex-direction:column-reverse}.dlg-acoes .btn{width:100%;justify-content:center}}
.cmd-list li{cursor:pointer}.cmd-list li b{text-align:right;white-space:nowrap}.cmd-list li b small{display:block;font-weight:600;color:var(--warn,#b45309);font-size:.72rem}
.tema-btn{border:1px solid var(--border);background:var(--surface);color:var(--muted);width:36px;height:36px;border-radius:10px;
          display:flex;align-items:center;justify-content:center;cursor:pointer;margin-left:auto;transition:all .13s}
.tema-btn svg{width:18px;height:18px}
.tema-btn:hover{border-color:var(--accent);color:var(--primary)}
.topbar-logout{margin-left:.5rem}
:root[data-tema="escuro"] .logo-prev,:root[data-tema="escuro"] .topbar-logo{filter:none}

/* texto sobre a cor principal (no tema escuro a principal é clara) */
.btn-primary,.btn-primary:hover,.seg button.on,.add-seg button.on,.formas button.on,.slot.on,
.presets button.on,.nav-av,.cx-av,.eq-av,.cli-av,.kpi-ic,.md-box.destaque,.avatar,.lst-prof h3 .av,.col-head .av,
.hello .btn-primary{color:var(--on-primary)}
.md-box.destaque{background:var(--primary)}
.md-box.destaque span,.md-box.destaque small{color:color-mix(in srgb,var(--on-primary) 78%,transparent)}
.kpi-ic{background:var(--primary-soft);color:var(--primary-dark)}
.avatar,.lst-prof h3 .av,.cli-av,.nav-av,.eq-av,.cx-av{background:var(--primary)}
.hello{background:linear-gradient(120deg,var(--primary) 0%,var(--primary-dark) 100%);color:var(--on-primary)}
.hello h1,.hello p{color:var(--on-primary)}
.hello p{opacity:.82}
.hello .btn-primary{background:var(--surface);color:var(--primary-dark);border-color:var(--surface)}
.hello .btn-light{background:color-mix(in srgb,var(--on-primary) 16%,transparent);color:var(--on-primary);border-color:color-mix(in srgb,var(--on-primary) 26%,transparent)}
.hello .btn-caixa{background:var(--surface);color:var(--primary-dark);border-color:var(--surface)}
.pill-ok{background:var(--ok-bg);color:var(--ok)}
.tag{background:var(--primary-soft);color:var(--primary-dark)}
.wa,.wa-mini{background:var(--ok-bg);color:var(--ok)}
.toast{background:var(--text);color:var(--bg)}
.toast.ok{background:var(--ok);color:var(--on-primary)}
.toast.err{background:var(--danger);color:#fff}
.tema-btn.on{background:var(--primary-soft);color:var(--primary-dark);border-color:var(--primary-soft)}

/* ===== Modais (base compartilhada) ===== */
.modal{position:fixed;inset:0;z-index:70;display:flex;align-items:center;justify-content:center;padding:1rem}
.modal[hidden],.drawer[hidden],.toast[hidden],.modal [hidden],.drawer [hidden]{display:none !important}
.modal-bg{position:absolute;inset:0;background:color-mix(in srgb,var(--text) 45%,transparent);backdrop-filter:blur(2px)}
.modal-card{position:relative;background:var(--surface);border-radius:16px;width:min(680px,100%);max-height:calc(100dvh - 2rem);
            display:flex;flex-direction:column;box-shadow:0 30px 80px rgba(0,0,0,.3);animation:modalIn .18s ease-out}
@keyframes modalIn{from{transform:translateY(12px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}
.modal-head h2{margin:0;font-size:1.05rem}
.modal-body{padding:1.1rem 1.25rem;overflow:auto;display:flex;flex-direction:column;gap:.9rem}
.modal-foot{display:flex;justify-content:flex-end;gap:.5rem;padding:.9rem 1.25rem;border-top:1px solid var(--border)}
.ic-btn{width:34px;height:34px;border-radius:9px;border:1px solid var(--border);background:var(--surface);font-size:1.05rem;
        cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--text)}
.ic-btn:hover{border-color:var(--accent)}
.toast{position:fixed;left:50%;bottom:1.5rem;transform:translateX(-50%);background:var(--text);color:var(--bg);
       padding:.7rem 1.1rem;border-radius:12px;font-size:.9rem;z-index:100;box-shadow:0 10px 30px rgba(0,0,0,.25);max-width:min(480px,92vw)}
.toast.err{background:var(--danger);color:#fff}.toast.ok{background:var(--ok);color:var(--on-primary)}
@media (max-width:860px){.modal{padding:0;align-items:flex-end}.modal-card{border-radius:16px 16px 0 0;max-height:94dvh;width:100%}
  .modal-foot{position:sticky;bottom:0;background:var(--surface)}.modal-foot .btn{flex:1;justify-content:center;min-height:46px}}

/* ===== Primitivos compartilhados (filtros, abas, campos) ===== */
.filtros{display:flex;align-items:flex-end;gap:.7rem;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);
         border-radius:var(--radius);padding:.9rem 1.1rem;margin-bottom:1rem}
.filtros .field{margin:0;min-width:0}
.filtros .field > span{display:block;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800;margin-bottom:.25rem}
.filtros input,.filtros select{padding:.45rem .6rem;border:1px solid var(--border);border-radius:9px;font:inherit;font-size:.88rem;
                               background:var(--surface);color:var(--text);line-height:1.3;max-width:100%}
.filtros input:focus,.filtros select:focus{outline:none;border-color:var(--primary)}
.filtros .btn{min-height:0;height:auto;padding:.45rem 1.9rem;font-size:.92rem;line-height:1.3;border:1px solid var(--primary);
              background:var(--primary);color:var(--on-primary);font-weight:700;border-radius:9px}
.filtros-rapidos{margin-left:auto;display:flex;gap:.4rem;flex-wrap:wrap}
.filtros-rapidos a{font-size:.8rem;font-weight:700;color:var(--primary-dark);background:var(--primary-soft);padding:.35rem .75rem;border-radius:999px;text-decoration:none}
.filtros-rapidos a:hover{background:var(--primary);color:var(--on-primary)}

.abas{display:flex;gap:.3rem;margin-bottom:1rem;border-bottom:2px solid var(--border);overflow:auto;scrollbar-width:none}
.abas::-webkit-scrollbar{display:none}
.abas a{display:flex;align-items:center;gap:.45rem;padding:.6rem 1.1rem;text-decoration:none;color:var(--muted);white-space:nowrap;
        font-weight:700;font-size:.9rem;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .12s}
.abas a:hover{color:var(--text)}
.abas a.on{color:var(--primary-dark);border-bottom-color:var(--primary)}

.input-prefix,.input-suffix{display:flex;align-items:stretch;border:1px solid var(--border);border-radius:10px;overflow:hidden;min-width:0;max-width:100%}
.input-prefix input,.input-suffix input{border:0;flex:1;min-width:0;padding:.5rem .7rem;font:inherit;background:var(--surface);color:var(--text)}
.input-prefix span,.input-suffix span{padding:0 .8rem;display:flex;align-items:center;background:var(--bg);color:var(--muted);font-weight:700;font-size:.85rem}
.input-prefix:focus-within,.input-suffix:focus-within{border-color:var(--primary)}

.switch{position:relative;display:inline-block;width:40px;height:22px;flex:none}
.switch input{position:absolute;opacity:0;width:100%;height:100%;cursor:pointer;margin:0}
.switch i{position:absolute;inset:0;background:var(--border);border-radius:999px;transition:background .15s}
.switch i::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--surface);transition:transform .15s}
.switch input:checked + i{background:var(--primary)}
.switch input:checked + i::after{transform:translateX(18px)}

.tag-warn{background:var(--warn-bg);color:var(--warn)}
.btn-sm{min-height:34px;padding:.3rem .8rem;font-size:.85rem}
.page-head .page-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.empty .btn{margin-top:.3rem}
@media (max-width:860px){
  .filtros{flex-direction:column;align-items:stretch}
  .filtros .field,.filtros .btn{width:100%}
  .filtros input,.filtros select{width:100%;min-height:42px;font-size:16px}
  .filtros-rapidos{margin:0}
  .abas a{padding:.55rem .8rem;font-size:.85rem}
}

/* botão dos filtros exatamente da altura dos campos */
.filtros{align-items:end}
.filtros .field{display:flex;flex-direction:column}
.filtros input,.filtros select,.filtros .btn{
  box-sizing:border-box;height:38px;min-height:38px;padding-top:0;padding-bottom:0;
  font-size:.88rem;line-height:36px;border-width:1px;border-style:solid;border-radius:9px}
.filtros input,.filtros select{padding-left:.65rem;padding-right:.65rem;border-color:var(--border)}
.filtros .btn{display:inline-flex;align-items:center;justify-content:center;padding:0 1.6rem;line-height:1;
              border-color:var(--primary);background:var(--primary);color:var(--on-primary);font-weight:700;align-self:end}
.filtros .btn:hover{background:var(--primary-dark);border-color:var(--primary-dark)}
@media (max-width:860px){
  .filtros input,.filtros select,.filtros .btn{height:44px;min-height:44px;line-height:42px;font-size:16px}
  .filtros .btn{line-height:1;width:100%}
}

/* ===== Espaçamento padrão entre blocos (vale para todas as telas) ===== */
.content > .card,
.content > section.card,
.content > form,
.content > .kpis,
.content > .filtros,
.content > .abas,
.content > table,
.content > nav,
.content > .cx-grid,
.content > .cli-grid,
.content > .dash-grid,
.content > .chips-filtro{margin-bottom:1.25rem}
.content > :last-child{margin-bottom:0}
.kpis + .card,.kpis + section.card,.kpis + form,.kpis + .cx-grid,.kpis + .cli-grid{margin-top:1.25rem}
.card + .card,.card + section.card,section.card + section.card{margin-top:1.25rem}
.filtros + .card,.abas + .card,.chips-filtro + .card{margin-top:0}
@media (max-width:860px){
  .content > .card,.content > section.card,.content > form,.content > .kpis,.content > .filtros,
  .content > .abas,.content > .cx-grid,.content > .cli-grid,.content > .dash-grid,.content > .chips-filtro{margin-bottom:1rem}
  .kpis + .card,.kpis + section.card,.kpis + form,.kpis + .cx-grid,.kpis + .cli-grid,
  .card + .card,.card + section.card,section.card + section.card{margin-top:1rem}
}

/* seletor de cores (compartilhado) */
.cores{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.4rem}
.cor{width:38px;height:38px;border-radius:11px;background:var(--c);cursor:pointer;position:relative;
     border:3px solid transparent;transition:transform .12s,box-shadow .12s;display:block}
.cor input{position:absolute;inset:0;opacity:0;cursor:pointer;margin:0}
.cor:hover{transform:scale(1.06)}
.cor:has(input:checked){border-color:var(--text);transform:scale(1.12);box-shadow:0 4px 12px color-mix(in srgb,var(--c) 45%,transparent)}
.cor:has(input:checked)::after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
                                color:#fff;font-weight:800;font-size:1rem;text-shadow:0 1px 3px rgba(0,0,0,.4)}
.cores{max-width:420px}
.cor-livre{background:var(--bg);border:2px dashed var(--border);display:flex;align-items:center;justify-content:center}
.cor-livre span{color:var(--muted);font-size:1.2rem;font-weight:800;pointer-events:none}
.cor-livre input[type=color]{width:100%;height:100%;opacity:0;cursor:pointer;border:0;padding:0;position:absolute;inset:0}
.cor-livre::after{content:none !important}
a.nav-user{text-decoration:none;color:inherit;border-radius:10px;transition:background .13s}
a.nav-user:hover{background:var(--bg)}

/* ===== Desktop: menu fixo, só o conteúdo rola ===== */
@media (min-width:861px){
  html,body{height:100%}
  body{display:flex;flex-direction:column;overflow:hidden}
  .topbar{flex:none;z-index:30;border-bottom:1px solid var(--border)}
  .shell{flex:1;min-height:0;overflow:hidden;align-items:stretch}
  .sidebar{height:100%;overflow-y:auto;overscroll-behavior:contain;border-right:1px solid var(--border);
           padding-bottom:1rem;scrollbar-width:thin;scrollbar-color:var(--border) transparent}
  .sidebar::-webkit-scrollbar{width:6px}
  .sidebar::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
  .sidebar::-webkit-scrollbar-track{background:transparent}
  .content{height:100%;overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth;
           scrollbar-width:thin;scrollbar-color:var(--border) transparent}
  .content::-webkit-scrollbar{width:9px}
  .content::-webkit-scrollbar-thumb{background:var(--border);border-radius:5px;border:2px solid var(--bg)}
  .content::-webkit-scrollbar-thumb:hover{background:var(--muted)}
  .content::-webkit-scrollbar-track{background:transparent}
  /* o rodapé do menu gruda embaixo mesmo com poucos itens */
  .sidebar{display:flex;flex-direction:column}
  .nav-rodape{margin-top:auto;position:sticky;bottom:0;background:var(--bg);padding-bottom:.2rem}
  /* a agenda ocupa a altura disponível sem criar barra dupla */
  .ag{height:calc(100% - 1rem)}
  .form-actions.sticky{bottom:-1px}
}

/* ===== Dashboard: alinhamento dos cards (desktop) ===== */
@media (min-width:861px){
  .dash-grid{grid-auto-flow:dense;align-items:stretch;grid-auto-rows:minmax(min-content,auto);gap:1.25rem}
  .dash-grid > .card{display:flex;flex-direction:column;height:100%;padding:1.2rem 1.35rem}
  .dash-grid > .card.widget-kpis{padding:0;background:transparent;border:0}
  /* cabeçalho sempre na mesma linha de base */
  .dash-grid .card-head{min-height:30px;margin-bottom:1rem;padding-bottom:.65rem;border-bottom:1px solid var(--border)}
  .dash-grid .card-head h2{font-size:.95rem;letter-spacing:-.01em}
  .dash-grid .card-head a{font-size:.82rem;white-space:nowrap}
  /* o conteúdo ocupa a sobra, empurrando ações para o fim */
  .dash-grid .lista,.dash-grid .barras,.dash-grid .resumo,.dash-grid .dias,
  .dash-grid .ag-lista,.dash-grid .chart,.dash-grid .md-grid,.dash-grid .atalhos{flex:1 1 auto;align-content:start}
  .dash-grid .empty{flex:1 1 auto;justify-content:center;margin:0}
  .dash-grid .card > .btn,.dash-grid .card > a.btn{margin-top:auto;align-self:flex-start}
  /* KPIs com altura uniforme */
  .kpis{align-items:stretch}
  .kpi{display:flex;flex-direction:column;justify-content:flex-start;min-height:112px}
  .kpi strong{margin-top:auto}
  .kpi-sub{min-height:1.2em}
  /* gráfico ocupa a altura do card */
  .widget-grafico .chart{min-height:180px;height:auto}
  /* agenda de hoje rola por dentro em vez de esticar o card */
  .widget-agenda_hoje{max-height:520px}
  .widget-agenda_hoje .ag-barbeiro,.widget-agenda_hoje .ag-lista{min-height:0}
  .widget-agenda_hoje > div:not(.card-head){overflow:auto;flex:1;scrollbar-width:thin}
  .widget-comandas_abertas,.widget-alertas,.widget-aniversariantes,.widget-top_servicos{max-height:460px}
  .widget-comandas_abertas .lista,.widget-alertas .lista,.widget-aniversariantes .lista{overflow:auto;scrollbar-width:thin}
  /* saudação alinhada com a grade */
  .hello{margin-bottom:1.25rem}
}
@media (min-width:1500px){
  .dash-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .w-3{grid-column:span 4}
  .kpis-4{grid-template-columns:repeat(4,1fr)}
}

/* tabela dentro de card estreito (desempenho da equipe) */
.dash-grid .card table{width:100%;table-layout:auto}
.dash-grid .md-tab{font-size:.88rem}
.dash-grid .md-tab th{font-size:.66rem;padding:.4rem .4rem;white-space:nowrap}
.dash-grid .md-tab td{padding:.5rem .4rem}
.dash-grid .md-tab td:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:0;width:40%}
.dash-grid .md-tab .num{white-space:nowrap;font-variant-numeric:tabular-nums}
.dash-grid .md-tab .it-com{font-size:.74rem;padding:.08rem .4rem}
.widget-meu_desempenho{overflow:hidden}
.widget-meu_desempenho > table,.widget-meu_desempenho .md-tab{display:table}
@media (min-width:861px){
  .widget-meu_desempenho{max-height:460px}
  .widget-meu_desempenho table{display:block;overflow:auto;scrollbar-width:thin}
  .widget-meu_desempenho table thead,.widget-meu_desempenho table tbody{display:table;width:100%;table-layout:fixed}
  .widget-meu_desempenho table thead{position:sticky;top:0;background:var(--surface);z-index:1}
  /* no card de 1 coluna, os 4 blocos do desempenho individual viram 2x2 compactos */
  .w-1 .md-grid{grid-template-columns:1fr 1fr}
  .w-1 .md-box b{font-size:1.15rem}
  .w-2 .md-grid{grid-template-columns:repeat(4,1fr)}
  /* agenda de hoje em coluna estreita: itens mais compactos */
  .w-1 .ag-item{grid-template-columns:46px 1fr;row-gap:.15rem;padding:.5rem .6rem}
  .w-1 .ag-item .ag-status{grid-column:2;justify-self:start;font-size:.64rem}
  .w-1 .ag-info small{font-size:.74rem}
}

/* agenda no dashboard: cor do serviço e altura igual aos demais */
.ag-item{border-left:3px solid var(--c,var(--border));background:color-mix(in srgb,var(--c) 7%,var(--bg))}
.ag-item.st-confirmado{background:color-mix(in srgb,var(--c) 14%,var(--bg))}
.ag-item.st-andamento{background:var(--warn-bg);border-left-color:var(--warn)}
.ag-item.st-concluido{opacity:.65;background:var(--ok-bg);border-left-color:var(--ok)}
.ag-item.st-faltou{opacity:.55;background:var(--danger-bg);border-left-color:var(--danger);text-decoration:line-through}
.ag-item .ag-status{background:var(--surface)}
@media (min-width:861px){
  .widget-agenda_hoje,.widget-meu_desempenho,.widget-comandas_abertas,.widget-alertas,
  .widget-aniversariantes,.widget-top_servicos,.widget-grafico,.widget-caixa_resumo,.widget-proximos_dias,.widget-brindes{max-height:430px}
  .widget-agenda_hoje > div:not(.card-head){overflow:auto;flex:1 1 auto;min-height:0;padding-right:.2rem}
  .widget-agenda_hoje .ag-barbeiro:first-of-type h3{margin-top:0}
}

/* ===== Agenda de hoje: card de altura fixa com rolagem interna ===== */
@media (min-width:861px){
  .widget-agenda_hoje{height:430px;max-height:430px}
  .widget-agenda_hoje > div:not(.card-head){
    flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;
    display:block;padding-right:.35rem;scrollbar-width:thin;scrollbar-color:var(--border) transparent}
  .widget-agenda_hoje > div::-webkit-scrollbar{width:6px}
  .widget-agenda_hoje > div::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
  .widget-agenda_hoje .ag-barbeiro{margin:0 0 .9rem}
  .widget-agenda_hoje .ag-barbeiro:last-child{margin-bottom:0}
  /* cabeçalho do barbeiro gruda no topo enquanto rola */
  .widget-agenda_hoje .ag-barbeiro h3{position:sticky;top:0;z-index:2;background:var(--surface);
    margin:0 0 .5rem;padding:.3rem 0 .45rem;border-bottom:1px solid var(--border);font-size:.86rem}
  .widget-agenda_hoje .ag-lista{gap:.3rem}
  .widget-agenda_hoje .ag-item{grid-template-columns:48px 1fr auto;padding:.5rem .65rem;align-items:center}
  .widget-agenda_hoje .ag-hora{font-size:.88rem}
  .widget-agenda_hoje .ag-info strong{font-size:.9rem}
  .widget-agenda_hoje .ag-info small{font-size:.75rem}
  .widget-agenda_hoje .ag-status{font-size:.62rem;padding:.12rem .45rem}
  .widget-agenda_hoje .avatar{width:24px;height:24px;font-size:.72rem}
  .widget-agenda_hoje .empty{height:100%}
}

.toast-acao{margin-left:.7rem;background:transparent;border:1px solid currentColor;color:inherit;border-radius:999px;padding:.18rem .6rem;font:inherit;font-size:.8rem;font-weight:800;cursor:pointer}
.toast-acao:hover{background:rgba(255,255,255,.14)}

.nav-badge{margin-left:auto;min-width:20px;height:20px;padding:0 .35rem;border-radius:999px;background:var(--primary);color:var(--on-primary);font-size:.7rem;font-weight:800;display:inline-grid;place-items:center;line-height:1}

/* ===== Primitivas de formulário — usadas por várias telas ===== */
.pol-campos{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem 1.1rem}
.pol-campo{display:flex;flex-direction:column;gap:.4rem;min-width:0}
.pol-lbl{font-weight:700;font-size:.86rem;letter-spacing:-.01em}
.pol-campo small{color:var(--muted);font-size:.79rem;line-height:1.4}
.pol-campo small strong{color:var(--text);font-weight:700}
.pol-espaco{margin-top:1rem}

.pol-num{display:flex;align-items:stretch;border:1px solid var(--border);border-radius:10px;background:var(--surface);
         overflow:hidden;transition:border-color .13s,box-shadow .13s;min-width:0}
.pol-num:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.pol-num input,.pol-num select{flex:1 1 auto;min-width:0;width:100%;border:0;background:transparent;color:var(--text);
         font:inherit;font-weight:700;font-size:.95rem;padding:.6rem .7rem;height:44px;outline:0;appearance:none}
.pol-num select{cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
         background-position:calc(100% - 17px) 19px,calc(100% - 12px) 19px;background-size:5px 5px;background-repeat:no-repeat;padding-right:2rem}
.pol-num input[type=file]{font-weight:500;font-size:.86rem;padding:.55rem .7rem}
.pol-num i{flex:0 0 auto;display:grid;place-items:center;padding:0 .7rem;font-style:normal;font-size:.8rem;font-weight:700;
           color:var(--muted);background:var(--bg);border-left:1px solid var(--border);white-space:nowrap}
.pol-num-pre i,.pol-num .pre{border-left:0;border-right:1px solid var(--border)}

.pol-switches{display:flex;flex-direction:column;gap:.55rem}
.pol-sw{display:flex;align-items:flex-start;gap:.75rem;padding:.7rem .85rem;border:1px solid var(--border);
        border-radius:12px;cursor:pointer;transition:border-color .13s,background .13s}
.pol-sw:hover{border-color:var(--primary);background:var(--primary-soft)}
.pol-sw input{position:absolute;opacity:0;width:0;height:0}
.pol-sw > i{flex:0 0 auto;width:42px;height:24px;border-radius:999px;background:var(--border);position:relative;transition:background .16s;margin-top:.1rem}
.pol-sw > i::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;
                   background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .16s}
.pol-sw input:checked + i{background:var(--primary)}
.pol-sw input:checked + i::after{transform:translateX(18px)}
.pol-sw input:focus-visible + i{box-shadow:0 0 0 3px var(--primary-soft)}
.pol-sw > span{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.pol-sw strong{font-size:.9rem;font-weight:700}
.pol-sw small{color:var(--muted);font-size:.79rem;line-height:1.4}

.pol-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.6rem}
.pol-opt{position:relative;display:flex;flex-direction:column;gap:.2rem;padding:.8rem .9rem;border:1px solid var(--border);
         border-radius:12px;cursor:pointer;transition:all .13s;min-width:0}
.pol-opt input{position:absolute;opacity:0;width:0;height:0}
.pol-opt strong{font-size:.9rem;font-weight:700;padding-left:1.6rem;position:relative}
.pol-opt strong::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:16px;height:16px;
                        border-radius:50%;border:2px solid var(--border);transition:all .13s}
.pol-opt small{color:var(--muted);font-size:.79rem;line-height:1.4;padding-left:1.6rem}
.pol-opt:hover{border-color:var(--primary)}
.pol-opt:has(input:checked){border-color:var(--primary);background:var(--primary-soft)}
.pol-opt:has(input:checked) strong::before{border-color:var(--primary);background:var(--primary);box-shadow:inset 0 0 0 3px var(--surface)}
.pol-opt:has(input:focus-visible){box-shadow:0 0 0 3px var(--primary-soft)}

.pq-txt{width:100%;min-height:80px;resize:vertical;border:1px solid var(--border);border-radius:10px;background:var(--surface);
        color:var(--text);font:inherit;font-size:.93rem;line-height:1.5;padding:.65rem .75rem;outline:0}
.pq-txt:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.pq-link{display:flex;flex-direction:column;gap:.4rem}
.pq-link input{width:100%;min-width:0;border:1px solid var(--border);border-radius:10px;background:var(--surface);
               color:var(--text);font:inherit;padding:.6rem .75rem;height:44px;outline:0}
.pq-link input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.pq-link small{font-size:.79rem;line-height:1.4}

.carregando{width:34px;height:34px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--primary);
            animation:girando .8s linear infinite;margin:1.5rem auto}
.agpix-load{width:34px;height:34px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--primary);
            animation:girando .8s linear infinite;margin:1.5rem auto}
@keyframes girando{to{transform:rotate(360deg)}}

.modal-largo .modal-card{max-width:720px}

@media (max-width:860px){
  .pol-campos{grid-template-columns:1fr;gap:.9rem}
  .pol-opts{grid-template-columns:1fr}
}

/* estado de erro nos formulários */
.field.erro input,.field.erro select,.field.erro textarea{border-color:var(--danger)!important;box-shadow:0 0 0 3px var(--danger-bg)}
.hint.erro{color:var(--danger);font-weight:700}

/* ===== utilidades que faltavam ===== */
.grid-2 > .full,.grid-end > .full,.fn-grid > .full,.pol-campos > .full,.form .full{grid-column:1/-1}
button.mini{border:0;font:inherit;font-size:.76rem;font-weight:700;cursor:pointer;line-height:1.4}
a.mini:hover,button.mini:hover{background:var(--primary);color:var(--on-primary)}
.acoes form{display:inline}
.acoes > * + *{margin-left:.25rem}
@media (max-width:860px){
  .acoes{display:flex;flex-wrap:wrap;gap:.3rem}
  .acoes > * + *{margin-left:0}
}

/* ===== respiro entre blocos empilhados =====
   Escopo no filho direto do conteúdo: cards dentro de grades (agenda, dashboard)
   não podem ganhar margem, senão a grade desalinha. */
.content > .card + .card,
.content > .card + .grid-2,
.content > .grid-2 + .card,
.content > .grid-2 + .grid-2,
.content > .filtros + .card,
.content > .filtros + .grid-2,
.content > .card + .filtros,
.content > .kpis + .grid-2,
.content > .chips-filtro + .grid-2,
.content > section.card + section.card,
.content > form + section.card,
.content > section.card + form{margin-top:1.25rem}

@media (max-width:860px){
  .content > .card + .card,
  .content > .card + .grid-2,
  .content > .grid-2 + .card,
  .content > .grid-2 + .grid-2,
  .content > .filtros + .card,
  .content > .filtros + .grid-2,
  .content > .card + .filtros,
  .content > .kpis + .grid-2,
  .content > .chips-filtro + .grid-2,
  .content > section.card + section.card,
  .content > form + section.card,
  .content > section.card + form{margin-top:1rem}
}

/* ===== .mini com hierarquia ===== */
a.mini,button.mini{display:inline-flex;align-items:center;gap:.3rem;padding:.33rem .72rem;border:1px solid transparent;
      transition:background .14s,color .14s,border-color .14s,transform .1s;line-height:1.35}
a.mini:active,button.mini:active{transform:translateY(1px)}
a.mini:focus-visible,button.mini:focus-visible{outline:2px solid var(--primary);outline-offset:2px}

/* principal — confirmar, pagar, receber */
.mini-ok{background:var(--ok-bg);color:var(--ok);border-color:color-mix(in srgb,var(--ok) 30%,transparent)}
a.mini-ok:hover,button.mini-ok:hover{background:var(--ok);color:#fff;border-color:var(--ok)}

/* atenção — estornar, desfazer */
.mini-warn{background:var(--warn-bg);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}
a.mini-warn:hover,button.mini-warn:hover{background:var(--warn);color:#fff;border-color:var(--warn)}

/* discreta — editar, histórico, abrir */
.mini-ghost{background:transparent;color:var(--muted);border-color:var(--border)}
a.mini-ghost:hover,button.mini-ghost:hover{background:var(--primary-soft);color:var(--primary-dark);border-color:var(--primary)}

/* destrutiva — neutra até o hover */
.mini-danger{background:transparent;color:var(--muted);border-color:var(--border)}
a.mini-danger:hover,button.mini-danger:hover{background:var(--danger-bg);color:var(--danger);border-color:var(--danger)}

.acoes > * + *{margin-left:.35rem}

/* ===== .mini: variações com especificidade garantida ===== */
.acoes a.mini,.acoes button.mini{display:inline-flex;align-items:center;gap:.3rem;padding:.33rem .72rem;
  border:1px solid transparent;line-height:1.35;transition:background .14s,color .14s,border-color .14s,transform .1s}
.acoes a.mini-ok,.acoes button.mini-ok{background:var(--ok-bg);color:var(--ok);border-color:color-mix(in srgb,var(--ok) 32%,transparent)}
.acoes a.mini-ok:hover,.acoes button.mini-ok:hover{background:var(--ok);color:#fff;border-color:var(--ok)}
.acoes a.mini-warn,.acoes button.mini-warn{background:var(--warn-bg);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 32%,transparent)}
.acoes a.mini-warn:hover,.acoes button.mini-warn:hover{background:var(--warn);color:#fff;border-color:var(--warn)}
.acoes a.mini-ghost,.acoes button.mini-ghost{background:transparent;color:var(--muted);border-color:var(--border)}
.acoes a.mini-ghost:hover,.acoes button.mini-ghost:hover{background:var(--primary-soft);color:var(--primary-dark);border-color:var(--primary)}
.acoes a.mini-danger,.acoes button.mini-danger{background:transparent;color:var(--muted);border-color:var(--border)}
.acoes a.mini-danger:hover,.acoes button.mini-danger:hover{background:var(--danger-bg);color:var(--danger);border-color:var(--danger)}

/* ===== .btn-ok e .btn-danger: usados na plataforma e nunca definidos ===== */
.btn-ok{background:var(--ok);color:#fff;border-color:var(--ok)}
.btn-ok:hover{background:color-mix(in srgb,var(--ok) 84%,#000);border-color:color-mix(in srgb,var(--ok) 84%,#000);color:#fff}
.btn-danger{background:var(--danger);color:#fff;border-color:var(--danger)}
.btn-danger:hover{background:color-mix(in srgb,var(--danger) 84%,#000);border-color:color-mix(in srgb,var(--danger) 84%,#000);color:#fff}

/* contorno com intenção, para ação secundária que não é neutra */
.btn-outline.ok{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 45%,transparent)}
.btn-outline.ok:hover{background:var(--ok);border-color:var(--ok);color:#fff}
.btn-outline.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 45%,transparent)}
.btn-outline.danger:hover{background:var(--danger);border-color:var(--danger);color:#fff}

.btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.btn:active{transform:translateY(1px)}

/* ===== faixa de situação do tenant ===== */
.faixa{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;padding:.65rem 1rem;
  border-radius:var(--radius-btn);margin-bottom:1.1rem;font-size:.88rem;line-height:1.5}
.faixa strong{font-weight:800}
.faixa span{color:inherit;opacity:.85}
.faixa-teste{background:var(--primary-soft);color:var(--primary-dark)}
.faixa-pendencia{background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn)}
@media (max-width:620px){ .faixa{flex-direction:column;gap:.2rem} }
.faixa-urgente{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger)}
