:root{
  --bg-0:#0F1110; --bg-1:#1A1F1C; --bg-2:#222925; --line:#3A403D;
  --txt-0:#F1F5F1; --txt-1:#A9B3AC;
  --brand-300:#29D173; --brand-400:#2FD57A; --brand-500:#27AE60; --brand-600:#219150; --brand-700:#1B7A43;
  --success:#2ECC71; --danger:#E74C3C; --warning:#F1C40F; --info:#34B3E6;
  --chart-1:#2FD57A; --chart-2:#23B5A6; --chart-3:#9FE870; --chart-4:#34D1E6;
}
html,body{background:var(--bg-0);color:var(--txt-0);} *{box-sizing:border-box}

/* ====== Largura pública unificada (header, main e footer) ====== */
.container-public{
  max-width:1100px;   /* igual à largura do corpo */
  margin-inline:auto;
  padding-inline:16px;
}

/* ====== Layout APP (internas com sidebar) ====== */
.app-wrap{display:flex;min-height:100dvh}
.app-sidebar{width:260px;flex:0 0 260px;background:var(--bg-1);border-right:1px solid var(--line);padding:16px 12px;position:sticky;top:0;height:100dvh;overflow:auto}
.app-content{flex:1;display:flex;flex-direction:column;min-width:0}
.app-header{position:sticky;top:0;z-index:20;background:var(--bg-1);border-bottom:1px solid var(--line)}
.app-main{flex:1;padding:24px}
.app-footer{background:var(--bg-1);border-top:1px solid var(--line)}

.brand-logo{height:28px;width:auto;display:block;filter:drop-shadow(0 0 .25rem rgba(0,255,65,.15))}
.brand-logo--sidebar{height:24px}

.sb-title{font-size:.85rem;color:var(--txt-1);text-transform:uppercase;letter-spacing:.08em;margin:8px 12px}
.sb-nav{list-style:none;margin:0;padding:0}
.sb-nav a{display:flex;align-items:center;gap:10px;padding:10px 12px;margin:2px 0;border-radius:10px;color:var(--txt-1);text-decoration:none;border:1px solid transparent}
.sb-nav a:hover{background:var(--bg-2);color:var(--txt-0);border-color:var(--line)}
.sb-nav a.active{background:var(--bg-2);color:var(--txt-0);border-color:color-mix(in srgb,var(--brand-500) 30%, var(--line));box-shadow:inset 3px 0 0 0 var(--brand-500)}
.sb-bottom{position:sticky;bottom:8px;margin-top:12px;padding-top:8px;border-top:1px dashed var(--line)}

a, .link{color:var(--brand-400)}
a:hover{color:var(--brand-300);text-decoration:underline;text-underline-offset:2px}
.btn-primary{background:var(--brand-500);border-color:var(--brand-500)}
.btn-primary:hover{background:var(--brand-600);border-color:var(--brand-600)}
.btn-outline-light{color:var(--txt-0);border-color:var(--line)}
.btn-outline-light:hover{border-color:var(--txt-0);color:var(--txt-0)}

.card{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.25)}
.form-control,.form-select{background:#202622;color:var(--txt-0);border:1px solid var(--line)}
.form-control:focus,.form-select:focus{border-color:var(--brand-500);box-shadow:0 0 0 .2rem color-mix(in srgb,var(--brand-400) 35%, transparent)}

body.sb-collapsed .app-sidebar{width:72px;flex-basis:72px;padding:16px 8px}
body.sb-collapsed .sb-text{display:none}
.sb-toggle{border:1px solid var(--line);background:var(--bg-2);color:var(--txt-0);border-radius:10px;padding:6px 10px;cursor:pointer}
.sb-toggle:hover{border-color:var(--brand-500);color:var(--brand-400)}
.app-sidebar::-webkit-scrollbar{width:10px}
.app-sidebar::-webkit-scrollbar-thumb{background:#2a302c;border-radius:8px}
:focus-visible{outline:2px solid color-mix(in srgb,var(--brand-400) 60%, transparent);outline-offset:2px}

/* ====== Layout PÚBLICO (landing / login) ====== */
.public-header{background:var(--bg-1);border-bottom:1px solid var(--line)}
.public-main{margin:48px auto}
.public-hero{
  background:#18201c;border:1px solid #2b332f;border-radius:18px;
  box-shadow:0 16px 40px rgba(0,0,0,.35);padding:36px
}
.public-hero h1{letter-spacing:.2px}
.public-cards .card{border-radius:16px}

/* Rodapé público com respiro extra (como o do exemplo) */
.public-footer{background:transparent;border-top:0;padding:32px 0}

/* ====== Botão Login (igual “Register” do exemplo, só que verde) ====== */
.btn-login{
  display:inline-block;
  padding:.45rem .9rem;
  font-weight:600;
  border-radius:.5rem;
  background:var(--brand-500);
  color:#fff!important;
  border:1px solid var(--brand-500);
  text-decoration:none!important;
}
.btn-login:hover{
  background:var(--brand-600);
  border-color:var(--brand-600);
  color:#fff!important;
}

/* Variante maior do botão login (para o CTA do hero) */
.btn-login.btn-lg{
  padding:.7rem 1.2rem;
  font-size:1.05rem;
}

/* Altura do contêiner do gráfico (ocupa 100% no canvas) */
.chart-box{
  position: relative;
  width: 100%;
  height: clamp(220px, 30vh, 340px); /* mobile-first */
  min-height: 220px;
}

/* Em telas ≥992px, dá mais respiro */
@media (min-width: 992px){
  .chart-box{
    height: 320px;
    min-height: 280px;
  }
}

/* Painel verde do login */
.panel-brand{
  background: linear-gradient(135deg, rgba(0,200,83,.15) 0%, rgba(0,200,83,.10) 40%, rgba(0,200,83,.08) 100%);
  border: 1px solid rgba(0,200,83,.25);
}

/* Contraste de texto dentro do painel */
.text-brand-contrast{
  color: #E6FFE8; /* tom claro esverdeado, bom contraste no dark */
}

/* Ícones no painel */
.panel-brand ion-icon{
  font-size: 18px;
  color: #9FE870; /* verde claro da paleta */
}

/* Botão de login (se quiser garantir a mesma cara em todas as telas) */
.btn-login{
  background-color: #00C853;
  color: #0B1B0F;
  border: 1px solid rgba(0,200,83,.35);
}
.btn-login:hover{
  background-color: #00B34A;
  color: #0A1A10;
  border-color: rgba(0,200,83,.55);
}