/* =====================================================================
   PABX SpeedNet — design system (azul + laranja da Speed)
   Tema claro (padrão) + escuro via [data-theme="dark"]. Cantos arredondados,
   sombras suaves, KPIs coloridos. Nomes de classe/tokens antigos preservados.
   ===================================================================== */
:root{
  /* marca (do logo Speed PABX: laranja vivo + azul royal) */
  --azul:#1f4fe6; --azul-esc:#183fc2;        /* primário (PABX azul) */
  --accent:#ff5a1e; --accent-esc:#e84a12;    /* destaque (SPEED laranja) */
  /* superfícies */
  --fundo:#f3f6fc; --card:#ffffff; --card-2:#f6f9fe;
  --txt:#18213a; --muted:#6a7488; --borda:#e7ebf3;
  /* estados */
  --verde:#16a34a; --vermelho:#e23b3b; --amarelo:#f59e0b; --roxo:#8a4bd1; --teal:#0ea5a3;
  --ok:var(--verde); --warn:var(--amarelo); --erro:var(--vermelho);
  /* efeitos */
  --sombra:0 1px 2px rgba(16,24,40,.05), 0 2px 10px rgba(16,24,40,.06);
  --sombra-h:0 8px 24px rgba(16,24,40,.12);
  --raio:14px; --raio-sm:10px;
  --brand-soft:rgba(31,99,233,.10);
}
:root[data-theme="dark"]{
  --azul:#5b84ff; --azul-esc:#3f6bf0;
  --accent:#ff7a3d; --accent-esc:#f3641f;
  --fundo:#0d1522; --card:#15202f; --card-2:#1b2838;
  --txt:#e7eef7; --muted:#93a2b8; --borda:#273445;
  --verde:#2bb673; --vermelho:#ef5350; --amarelo:#f6b73c; --roxo:#a77be6; --teal:#2dd4bf;
  --sombra:0 1px 2px rgba(0,0,0,.30), 0 2px 12px rgba(0,0,0,.35);
  --sombra-h:0 10px 28px rgba(0,0,0,.50);
  --brand-soft:rgba(79,139,255,.16);
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,"Segoe UI",Roboto,Arial,sans-serif;color:var(--txt);background:var(--fundo);
  -webkit-font-smoothing:antialiased;transition:background-color .2s ease,color .2s ease}
.hidden{display:none!important}
.muted{color:var(--muted)}
.erro{color:var(--vermelho);font-size:.9rem;margin-top:.5rem}
a{color:var(--azul)}

/* LOGIN */
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px;
  background:radial-gradient(1200px 500px at 50% -10%, var(--brand-soft), transparent 70%), var(--fundo)}
.login-card{background:var(--card);padding:30px;border-radius:18px;box-shadow:var(--sombra-h);
  width:100%;max-width:370px;display:flex;flex-direction:column;gap:12px;border:1px solid var(--borda)}
.login-card label{display:flex;flex-direction:column;gap:4px;font-size:.9rem;font-weight:600}
.login-card input{padding:12px;border:1px solid var(--borda);border-radius:var(--raio-sm);font-size:1rem;background:var(--card-2);color:var(--txt)}
.login-card input:focus{outline:none;border-color:var(--azul);box-shadow:0 0 0 3px var(--brand-soft)}
.brand{font-weight:800;font-size:1.3rem;color:var(--azul)}
.brand span{color:var(--accent)}
.logo{height:34px;width:auto;display:block}
.login-card .logo{height:64px;margin:0 auto 6px}

/* TOPBAR */
.topbar{display:flex;align-items:center;justify-content:space-between;background:var(--card);
  padding:11px 18px;border-bottom:1px solid var(--borda);position:sticky;top:0;z-index:5;box-shadow:var(--sombra)}
.topbar-right{display:flex;align-items:center;gap:12px}
.u-nome{font-weight:600}
.badge{background:var(--azul);color:#fff;border-radius:999px;padding:3px 11px;font-size:.72rem;
  text-transform:uppercase;letter-spacing:.04em;font-weight:700}
/* botão de tema */
.tema-btn{border:1px solid var(--borda);background:var(--card-2);color:var(--txt);width:38px;height:38px;
  border-radius:999px;cursor:pointer;font-size:1.05rem;display:inline-flex;align-items:center;justify-content:center;transition:.15s}
.tema-btn:hover{border-color:var(--azul);color:var(--azul)}

/* LAYOUT */
.layout{display:flex;min-height:calc(100vh - 58px)}
.nav{width:216px;background:var(--card);border-right:1px solid var(--borda);padding:14px 12px;display:flex;flex-direction:column;gap:3px}
.nav button{text-align:left;border:0;background:transparent;padding:11px 13px;border-radius:var(--raio-sm);
  font-size:.94rem;cursor:pointer;color:var(--txt);display:flex;align-items:center;gap:8px;transition:.12s}
.nav button:hover{background:var(--brand-soft)}
.nav button.ativo{background:var(--azul);color:#fff;font-weight:600;box-shadow:0 4px 12px var(--brand-soft)}
.navgrupo{margin-top:8px;display:flex;flex-direction:column;gap:3px}
.navgrupo>summary{cursor:pointer;padding:8px 13px;font-size:.7rem;font-weight:700;color:var(--muted);
  text-transform:uppercase;letter-spacing:.06em;list-style:none}
.navgrupo>summary::-webkit-details-marker{display:none}
.navgrupo>summary::before{content:'▸ '}
.navgrupo[open]>summary::before{content:'▾ '}
.navgrupo button{padding-left:26px}
.view{flex:1;padding:24px;min-width:0}

/* CARDS / BOTOES */
.card{background:var(--card);border:1px solid var(--borda);border-radius:var(--raio);padding:20px;margin-bottom:16px;box-shadow:var(--sombra)}
.card h2{margin:0 0 4px;font-size:1.1rem;font-weight:700}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.btn{border:0;border-radius:var(--raio-sm);padding:10px 16px;font-size:.93rem;font-weight:600;cursor:pointer;transition:.14s;line-height:1}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-primary{background:var(--azul);color:#fff;box-shadow:0 4px 12px var(--brand-soft)}
.btn-primary:hover{background:var(--azul-esc)}
.btn-accent{background:var(--accent);color:#fff}
.btn-accent:hover{background:var(--accent-esc)}
.btn-ghost{background:var(--card-2);border:1px solid var(--borda);color:var(--txt)}
.btn-ghost:hover{border-color:var(--azul);color:var(--azul)}
.btn-warn{background:var(--amarelo);color:#fff}
.btn-danger{background:var(--vermelho);color:#fff}
.btn-ok{background:var(--verde);color:#fff}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
input,select,textarea{background:var(--card);color:var(--txt)}
input.ramal{padding:11px;border:1px solid var(--borda);border-radius:var(--raio-sm);font-size:1.1rem;width:130px;letter-spacing:.08em}
select{padding:10px;border:1px solid var(--borda);border-radius:var(--raio-sm);font-size:.95rem}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--azul);box-shadow:0 0 0 3px var(--brand-soft)}

/* STATUS do ramal */
.status{display:flex;align-items:center;gap:8px;font-weight:600}
.dot{width:11px;height:11px;border-radius:50%}
.dot.on{background:var(--verde)} .dot.pause{background:var(--amarelo)} .dot.off{background:var(--vermelho)} .dot.call{background:var(--azul)}
.cron{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:700}
.pill{display:inline-block;background:var(--card-2);border:1px solid var(--borda);border-radius:999px;padding:3px 11px;font-size:.8rem;margin:2px}
.soon{color:var(--muted);font-style:italic}

/* BARRA DO RAMAL (no cabecalho) */
.ramalbar{display:flex;align-items:center;gap:10px;flex:1;justify-content:center;flex-wrap:wrap}
.ramalbar .status{font-size:.9rem}
.ramalbar .cronhdr{font-variant-numeric:tabular-nums;font-weight:700;font-size:.95rem}
.ramalbar .btn{padding:7px 12px;font-size:.85rem}
.ramalbar select{padding:6px 8px;font-size:.85rem}

/* MODAL */
.modal{position:fixed;inset:0;background:rgba(10,16,28,.55);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal-box{background:var(--card);border-radius:18px;padding:26px;width:100%;max-width:460px;box-shadow:var(--sombra-h);border:1px solid var(--borda);max-height:88vh;overflow:auto}
.modal-box h2{margin:0 0 6px}
.formcol{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.modal-box label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;font-weight:600}
.modal-box input,.modal-box select,.modal-box textarea{padding:10px;border:1px solid var(--borda);border-radius:var(--raio-sm);font-size:.95rem}
.modal-box input:disabled{background:var(--card-2);color:var(--muted)}
.linha-rc{display:flex;align-items:center;gap:6px;margin:5px 0}
.linha-rc select{flex:1;min-width:120px}
.linha-rc input{padding:8px;border:1px solid var(--borda);border-radius:8px}

/* TABELA */
table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{text-align:left;padding:10px 11px;border-bottom:1px solid var(--borda)}
th{color:var(--muted);font-weight:700;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em}
tbody tr{transition:.1s}
tr:hover td{background:var(--card-2)}
audio{height:34px;vertical-align:middle}

/* KPIs — cards de número coloridos (cor por posição, harmônico) */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(156px,1fr));gap:14px}
.kpi{background:var(--card);border:1px solid var(--borda);border-radius:var(--raio);padding:16px 16px 15px;
  box-shadow:var(--sombra);border-top:3px solid var(--kc,var(--azul));transition:.15s}
.kpi:hover{box-shadow:var(--sombra-h);transform:translateY(-2px)}
.kpi .n{font-size:1.7rem;font-weight:800;color:var(--kc,var(--azul));line-height:1.1}
.kpi .l{color:var(--muted);font-size:.8rem;font-weight:600;margin-top:2px}
.kpi .sub{font-size:.72rem;font-weight:700;color:var(--muted);margin-top:3px}
/* cor por SIGNIFICADO (classe vinda do kpiTone em app.js) */
.kpi-good{--kc:var(--verde)}
.kpi-bad{--kc:var(--vermelho)}
.kpi-warn{--kc:var(--amarelo)}
.kpi-info{--kc:var(--azul)}
.kpi-neutral{--kc:var(--muted)}
.compbar{display:flex;height:24px;border-radius:999px;overflow:hidden;background:var(--card-2)}
.compbar>div{height:100%}
.bloco-tit{font-weight:700;margin:6px 0 8px;display:flex;align-items:center;gap:8px}
.tag-rec{color:var(--azul)} .tag-ati{color:var(--roxo)}

/* GRAFICO DE BARRAS (volume) */
.barchart{display:flex;align-items:flex-end;gap:3px;height:140px;overflow-x:auto;padding-top:6px}
.barcol{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-width:22px;flex:1}
.barstack{display:flex;flex-direction:column;justify-content:flex-end;height:120px}
.bar{width:16px;border-radius:4px 4px 0 0}
.barlbl{font-size:.62rem;color:var(--muted);margin-top:3px}
.card label{font-size:.82rem;font-weight:600;color:var(--txt)}
.card input[type=date]{padding:9px;border:1px solid var(--borda);border-radius:var(--raio-sm)}

/* multi-seleção + presets (pílulas) */
.filtromulti{position:relative}
.filtromulti summary{cursor:pointer;padding:9px 13px;border:1px solid var(--borda);border-radius:999px;list-style:none;background:var(--card);font-size:.9rem;white-space:nowrap}
.filtromulti summary::-webkit-details-marker{display:none}
.multibox{position:absolute;z-index:20;background:var(--card);border:1px solid var(--borda);border-radius:var(--raio-sm);
  padding:10px;display:flex;flex-direction:column;gap:7px;max-height:280px;overflow:auto;min-width:210px;box-shadow:var(--sombra-h)}
.multibox label{font-weight:400;display:flex;gap:7px;align-items:center}
.preset{padding:7px 14px;font-size:.82rem;border-radius:999px}

@media(max-width:700px){
  .layout{flex-direction:column}
  .nav{width:auto;flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--borda);gap:6px}
  .navgrupo{flex-direction:row}
  .view{padding:16px}
  .ramalbar{order:3;width:100%;justify-content:flex-start}
  .topbar{flex-wrap:wrap}
}
