:root{
  --teal:#008C7F; --aqua:#00A699; --amber:#FFB703; --blue:#219EBC; --navy:#023047; --coral:#E76F51;
  --bg:#f6faf9; --card:#ffffff; --tx:#0f172a; --muted:#6b7280; --border:#e6eef0;
  --shadow:0 10px 30px rgba(2,48,71,.06);
  --radius:16px;
}
:root.dark{
  --bg:#0b1220; --card:#0f172a; --tx:#e6edf4; --muted:#9aa4b2; --border:#1f2a3a;
  --shadow:0 8px 24px rgba(0,0,0,.35);
}

*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  background:var(--bg);
  color:var(--tx);
  font:clamp(14px,1.5vw,15.5px)/1.45 Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial;
}

.app{
  min-height:100dvh;
  display:grid;
  grid-template-columns:280px 1fr;
  grid-template-rows:auto 1fr;
}

/* HEADER */

.app-header{
  border:0;border-radius:0;
  display:flex;align-items:center;gap:12px;justify-content:space-between;
  padding:12px clamp(12px,3vw,24px);
  backdrop-filter:saturate(120%) blur(6px);
  position:sticky;top:0;z-index:8;
}
.app-header .left{display:flex;align-items:center;gap:10px}
.brand{display:flex;align-items:center;gap:10px;font-weight:900;letter-spacing:.3px}
.brand .dot{
  width:12px;height:12px;border-radius:50%;
  background:var(--teal);
  box-shadow:0 0 0 6px color-mix(in oklab, var(--teal) 15%, transparent);
}
.actions{display:flex;gap:8px}
.icon-btn{
  border:1px solid var(--border);
  background:var(--card);
  color:var(--tx);
  border-radius:12px;
  padding:10px 12px;
  cursor:pointer;
  box-shadow:var(--shadow);
  transition:transform .15s ease;
}
.icon-btn:hover{transform:translateY(-1px)}
.divider{height:34px;width:1px;background:var(--border)}

/* ASIDE */

.aside{
  grid-row:2/3;
  background:linear-gradient(180deg,#008C7F 0%, #027b6f 100%);
  color:#fff;
  padding:22px 14px;
  position:sticky;
  top:58px;
  height:calc(100dvh - 58px);
}
.aside-wrap{display:flex;flex-direction:column;height:100%}
.nav{display:grid;gap:6px;margin-top:8px}
.nav button{
  display:flex;align-items:center;gap:10px;
  border:0;background:transparent;color:#fff;
  padding:10px 12px;border-radius:12px;
  font-weight:800;cursor:pointer;
  transition:background .15s ease;
}
.nav button:hover{background:rgba(255,255,255,.12)}
.nav .active{background:rgba(255,255,255,.18)}

.aside-foot{margin-top:auto;display:grid;gap:8px}

/* BUTTONS */

.btn{
  display:inline-flex;align-items:center;justify-content:center;
  border:0;border-radius:12px;padding:10px 14px;
  font-weight:800;cursor:pointer;
}
.btn.primary{background:#fff;color:var(--teal)}
.btn.ghost{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.35)}
.btn.apply{background:color-mix(in oklab, var(--teal) 12%, #fff);color:var(--teal)}

/* MAIN */

main{grid-row:2/3;padding:clamp(14px,2vw,26px)}
.card{
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius);
  box-shadow:var(--shadow);overflow:hidden;
}
.card .hd{padding:16px 18px 0}
.card .bd{padding:14px 18px 18px}

.row{display:grid;gap:clamp(10px,1.6vw,18px)}
.row.kpis{grid-template-columns:repeat(4,minmax(240px,1fr))}

.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.field{display:grid;gap:6px}
.field>label{font-size:12px;color:var(--muted)}
select,input{
  border:1px solid var(--border);background:var(--card);color:var(--tx);
  border-radius:12px;padding:10px 12px;min-width:240px;
}

/* KPI & SPARK */

.kpi .tt{font-size:12px;color:var(--muted);margin:0 0 4px;font-weight:800}
.kpi .val{font-size:clamp(22px,2.8vw,30px);font-weight:900}
.spark{height:48px}
.skeleton{
  position:relative;overflow:hidden;
  background:linear-gradient(90deg,rgba(0,0,0,.06),rgba(0,0,0,.12),rgba(0,0,0,.06));
  height:12px;border-radius:8px;
}
.skeleton::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);
  animation:shine 1.3s infinite;
}
@keyframes shine{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}

/* TABS */

.tabs{margin-top:10px}
.tablist{
  display:flex;gap:8px;flex-wrap:wrap;
  background:color-mix(in oklab, var(--teal) 14%, transparent);
  padding:6px;border-radius:12px;
}
.tab{
  border:0;background:transparent;padding:10px 12px;border-radius:10px;
  cursor:pointer;font-weight:900;
  color:color-mix(in oklab, var(--tx) 80%, var(--teal));
}
.tab[aria-selected="true"]{background:var(--teal);color:#fff}

.tabpanel{display:none;margin-top:12px;animation:fade .2s ease}
.tabpanel.active{display:block}
@keyframes fade{from{opacity:.7;transform:translateY(4px)}to{opacity:1;transform:none}}

/* GRIDS */

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(10px,1.6vw,18px)}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(10px,1.6vw,18px)}

.chart-320{height:320px}
.chart-220{height:220px}

.h3{margin:12px 18px 0}
.h2{margin:0 0 12px}
.rec{display:flex;justify-content:space-between;margin:8px 0}
.good{color:var(--teal)}
.hint{font-size:12px;color:var(--muted)}

/* CADASTROS / FORMS */

#view-cadastros .h2{margin-bottom:6px}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:12px}
.form-grid-3{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:12px}
.input-error{outline:2px solid color-mix(in oklab, #E76F51 60%, transparent)}
.form-actions{
  display:flex;gap:10px;justify-content:flex-end;margin-top:14px;
}
.sep{
  border:0;border-top:1px dashed var(--border);
  margin:18px 0 12px;
}

/* STEPPER */

.stepper{
  display:flex;flex-wrap:wrap;gap:8px;
  margin:10px 0 14px;
}
.step{
  border:1px solid var(--border);
  background:var(--card);
  border-radius:999px;
  padding:6px 10px;
  display:flex;align-items:center;gap:6px;
  font-size:13px;font-weight:800;
  cursor:pointer;
}
.step-index{
  width:20px;height:20px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--border);font-size:11px;
}
.step.active{
  border-color:var(--teal);background:color-mix(in oklab,var(--teal) 6%,#fff);color:var(--teal);
}
.step.active .step-index{background:var(--teal);color:#fff}

.step-panels{margin-top:4px}
.step-panel{display:none}
.step-panel.active{display:block}

/* MEDIDAS & MODAL */

.measures{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:14px;
}
.measure{
  border:1px solid var(--border);border-radius:12px;
  padding:12px;background:var(--card);box-shadow:var(--shadow);
  cursor:pointer;transition:transform .15s ease, box-shadow .15s ease;
}
.measure:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(2,48,71,.12)}
.measure-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.measure-title{margin:4px 0 6px;font-size:14px}

.chip{
  display:inline-flex;align-items:center;gap:6px;
  border-radius:20px;padding:6px 10px;
  font-weight:800;font-size:12px;
}
.chip.green{background:color-mix(in oklab,var(--aqua) 18%, #fff);color:var(--teal)}
.chip.amber{background:color-mix(in oklab,var(--amber) 18%, #fff);color:#7a5300}
.chip.red{background:color-mix(in oklab,var(--coral) 18%, #fff);color:#7a1d12}

/* MODAL */

.modal{
  position:fixed;inset:0;
  background:rgba(2,32,48,.55);
  display:none;align-items:center;justify-content:center;
  padding:20px;z-index:20;
}
.modal.show{display:flex}
.modal-card{
  width:min(880px,96vw);
  background:var(--card);color:var(--tx);
  border-radius:14px;border:1px solid var(--border);box-shadow:var(--shadow);
  overflow:hidden;
}
.modal-hd{
  padding:14px 18px;border-bottom:1px solid var(--border);
  display:flex;justify-content:space-between;align-items:center;
}
.modal-bd{padding:18px}
.close{border:0;background:transparent;font-size:22px;cursor:pointer;color:var(--muted)}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}

.toast{
  position:fixed;right:18px;bottom:18px;
  display:none;gap:10px;align-items:center;
  padding:10px 12px;border-radius:12px;
  background:var(--card);border:1px solid var(--border);
  box-shadow:var(--shadow);z-index:30;
}
.toast.show{display:flex}

/* RESPONSIVO */

.collapse{display:none}

@media (max-width:1100px){
  .row.kpis{grid-template-columns:repeat(2,minmax(240px,1fr))}
}

@media (max-width:1024px){
  .app{grid-template-columns:1fr}
  .aside{
    position:fixed;inset:58px 0 0 0;
    transform:translateX(-100%);
    transition:transform .3s cubic-bezier(.4,0,.2,1);
    z-index:30;
    background:linear-gradient(180deg,#008C7F 0%, #027b6f 100%);
    width:80vw;max-width:340px;min-width:220px;
    box-shadow:2px 0 24px rgba(2,32,48,0.18);
  }
  .aside.open{transform:translateX(0)}
  .app-header{grid-column:1/2}
  .collapse{display:inline-flex}
}

.aside-overlay{
  display:none;position:fixed;inset:0;
  background:rgba(2,32,48,0.55);z-index:20;
}
.aside.open ~ .aside-overlay{display:block}

@media (max-width:700px){
  .app-header{flex-direction:column;gap:6px;padding:10px 6px}
  .app-header .left,.actions{flex-direction:row;gap:6px}
  .aside{padding:10px 4px;font-size:15px}
  main{padding:8px 2vw}
  .row.kpis{grid-template-columns:1fr}
  .grid-2,.grid-3{grid-template-columns:1fr}
  .card .hd,.card .bd{padding:10px 8px}
  .form-grid,.form-grid-3{grid-template-columns:1fr;min-width:0}
  select,input{min-width:0;width:100%}
  .modal-card{width:96vw;min-width:0}
  .stepper{flex-direction:column}
}

@media (max-width:500px){
  .app-header{font-size:13px}
  .brand{font-size:15px}
  .aside{font-size:13px}
  .btn,.icon-btn{padding:8px 8px;font-size:13px}
  .modal-card{padding:0}
}
