/* ===== 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:2px}
.nav-item{display:flex;align-items:center;min-height:42px;padding:0 .85rem;border-radius:10px;color:var(--text);text-decoration:none;font-weight:600;font-size:.95rem}
.nav-item:hover{background:var(--bg)}
.nav-item.active{background:var(--primary-soft);color:var(--primary-dark)}
/* 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}
