*{box-sizing:border-box}
:root{--green:#006b2e;--green-dark:#004f24;--green-soft:#eaf6ee;--line:#d9e6dc;--bg:#f7faf8;--text:#102116;--muted:#607067;--danger:#bf1d1d;--warn:#8a5a00}
body{font-family:Arial,Helvetica,sans-serif;margin:0;background:var(--bg);color:var(--text)}
.app-shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}.sidebar{background:linear-gradient(180deg,var(--green),var(--green-dark));color:white;box-shadow:4px 0 14px #0002}.brand-card{background:#fff;padding:18px 22px;border-right:1px solid var(--line)}.brand-card img{width:100%;display:block;object-fit:contain}.menu-title{display:block;padding:18px 24px 8px;font-weight:700;opacity:.9}.sidebar nav a{display:block;color:white;text-decoration:none;padding:13px 24px;font-weight:600}.sidebar nav a:hover{background:#ffffff1a}.content{min-width:0}.topbar{display:flex;justify-content:space-between;gap:22px;align-items:center;background:white;padding:26px 32px;border-bottom:1px solid var(--line)}.topbar h1{margin:0 0 6px;color:var(--green);font-size:30px;line-height:1.15}.topbar p{margin:0;color:#555;font-size:20px}.system-status{text-align:right;color:var(--green-dark);min-width:230px}.system-status span,.system-status em{display:block;margin-top:6px}.version{font-style:normal;background:var(--green-soft);padding:4px 9px;border-radius:999px;display:inline-block}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;padding:20px 28px}.card,.panel{background:white;border:1px solid var(--line);border-radius:12px;box-shadow:0 2px 10px #004f2410}.card{padding:18px;text-align:left;color:var(--text);cursor:pointer;position:relative;overflow:hidden}.card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--green)}.card:hover{transform:translateY(-1px);box-shadow:0 5px 18px #004f2422}.card .icon{float:left;margin-right:14px;font-size:28px;color:var(--green);font-weight:700}.card strong{font-size:34px;display:block;color:var(--green)}.card span,.card small{color:var(--muted);display:block}.card small{margin-top:4px}main{display:grid;grid-template-columns:2fr 1fr;gap:18px;padding:0 28px 28px}.panel{padding:20px}.panel-large{grid-row:span 2}.side-panel{min-width:0}.toolbar{display:grid;grid-template-columns:1.3fr .7fr auto auto auto;gap:8px;margin-bottom:14px}input,select,button{padding:10px;border:1px solid #bdd4c4;border-radius:8px;font-size:14px}input,select{width:100%;background:white}button{cursor:pointer;background:var(--green);color:white;border:0;font-weight:700}button:hover{filter:brightness(1.08)}button.secondary{background:white;color:var(--green);border:1px solid var(--green)}.row{display:grid;grid-template-columns:1.4fr .35fr .9fr .55fr;gap:8px;align-items:center;border-bottom:1px solid #edf2ee;padding:10px 0}.row small{display:block;color:var(--muted)}.badges{display:flex;gap:6px;flex-wrap:wrap}.badge{display:inline-block;border-radius:999px;padding:4px 8px;background:var(--green-soft);color:var(--green-dark);font-size:12px}.badge.warn{background:#fff2cf;color:var(--warn)}.badge.danger{background:#ffe1e1;color:#9b1c1c}.actions{display:flex;gap:6px}.actions button{padding:7px 9px}.danger-btn{background:var(--danger)}form{display:grid;gap:10px}label{font-size:13px;color:#405149}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.grid5{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.grid6{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.detalhe{margin-top:14px;padding:12px;background:var(--green-soft);border-radius:10px;border:1px solid var(--line)}.detalhe ul{margin-top:6px;padding-left:18px}.detalhe li{margin:6px 0}.detalhe button{padding:4px 7px;margin-left:4px;font-size:12px}h2,h3,h4{color:var(--green-dark)}h3{margin:14px 0 4px}.panel-title{display:flex;justify-content:space-between;gap:12px;align-items:center}.panel-title h2{margin:0}.panel-title button{white-space:nowrap}.lancamento-box{display:grid;gap:8px;margin:12px 0;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fbfdfb}.lancamento-box h4{margin:0}.lancamento-box small,.lancamento-box p{color:var(--muted);margin:0}.lancamento-box button{width:100%}.backup-box{background:linear-gradient(180deg,#fff,#eef8f1)}
@media(max-width:1200px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.topbar{align-items:flex-start}.cards,main{grid-template-columns:1fr}.panel-large{grid-row:auto}.toolbar{grid-template-columns:1fr}.row{grid-template-columns:1fr}.grid5,.grid6{grid-template-columns:1fr 1fr}.system-status{text-align:left}}


/* v0.1.5 - coluna de funções fixa e área de trabalho rolável */
html,body{height:100%;overflow:hidden}
.app-shell{height:100vh;overflow:hidden}
.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;z-index:20}
.content{height:100vh;overflow:auto}
.panel-large{overflow:auto}
#lista{overflow:auto;max-width:100%}
.row{min-width:860px;position:relative}
.row .actions{position:sticky;right:0;background:white;padding:6px;border-left:1px solid var(--line);z-index:4;box-shadow:-8px 0 10px #ffffffdd}
.editor-lancamentos{margin-top:18px;padding-top:14px;border-top:2px solid var(--line)}
.hidden{display:none!important}
.hint{font-size:13px;color:var(--muted);margin-top:0}
.utility-panel{align-self:start}
.detalhe{max-height:360px;overflow:auto}
.detalhe li{padding-right:6px}
.detalhe li button{white-space:nowrap}
@media(max-width:1200px){html,body{overflow:auto}.app-shell{height:auto;overflow:visible}.content{height:auto;overflow:visible}.row{min-width:0}.row .actions{position:static;box-shadow:none;border-left:0;padding:0}.sidebar{position:static;height:auto}}

/* v0.1.6 - confinamento de formulários e colunas responsivas sem scroll horizontal */
.content{
  background:linear-gradient(180deg,#fbfdfb 0%, var(--bg) 100%);
}
main{
  grid-template-columns:minmax(0,1fr) minmax(420px,520px);
  align-items:start;
}
.panel,.side-panel,.panel-large,.utility-panel{
  min-width:0;
  max-width:100%;
  overflow:hidden;
}
.side-panel form,
.side-panel .lancamento-box,
.side-panel .detalhe{
  max-width:100%;
}
.side-panel label,
.side-panel input,
.side-panel select,
.side-panel textarea,
.side-panel button{
  max-width:100%;
}
.side-panel input,
.side-panel select{
  display:block;
  width:100%;
}
.grid5,.grid6,.grid2{
  min-width:0;
}
.grid5 label,.grid6 label,.grid2 label{
  min-width:0;
}
.grid5 input,.grid6 input,.grid2 input,
.grid5 select,.grid6 select,.grid2 select{
  min-width:0;
}
.panel-title{
  flex-wrap:wrap;
}
.panel-title button{
  flex:0 0 auto;
}
/* Quando duas funcionalidades aparecem lado a lado, cada coluna divide a largura útil */
.dual-column{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:18px;
  width:100%;
}
.dual-column > *{
  min-width:0;
}
/* A lista pode rolar internamente, mas não deve empurrar a coluna de edição */
#lista{
  overflow:auto;
  max-width:100%;
}
.row{
  min-width:760px;
}
/* Em telas grandes a coluna direita deve caber sem vazar para fora do card */
@media(min-width:1201px){
  .side-panel{width:100%;}
  .side-panel form{grid-template-columns:1fr;}
  .side-panel .grid5{grid-template-columns:repeat(2,minmax(0,1fr));}
  .side-panel .grid6{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(min-width:1500px){
  main{grid-template-columns:minmax(0,1.15fr) minmax(480px,620px);}
  .side-panel .grid5{grid-template-columns:repeat(3,minmax(0,1fr));}
  .side-panel .grid6{grid-template-columns:repeat(3,minmax(0,1fr));}
}
@media(max-width:1200px){
  main{grid-template-columns:1fr;}
  .dual-column{grid-template-columns:1fr;}
}

/* v0.1.7 - coluna direita empilhada: função da 2ª coluna + backup logo abaixo */
main{grid-template-columns:minmax(0,1.35fr) minmax(460px,640px);align-items:start}
.right-column{display:flex;flex-direction:column;gap:18px;min-width:0;align-self:start}
.right-column .panel{width:100%}
.utility-panel{order:99;margin-top:0}
.import-panel{order:50}
.upload-box{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;margin:10px 0 12px}
.import-preview{margin-top:12px;max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}
.table-scroll{overflow:auto;max-width:100%}
table{border-collapse:collapse;width:100%;min-width:760px;font-size:13px}th,td{border-bottom:1px solid #edf2ee;padding:8px;text-align:left;vertical-align:middle}th{position:sticky;top:0;background:var(--green-soft);color:var(--green-dark);z-index:2}td input{padding:7px;font-size:13px}.error-box{background:#fff1f1;color:#8a1111;border:1px solid #f1baba;border-radius:8px;padding:10px;margin:10px}.import-actions{display:flex;gap:10px;margin-top:12px}.import-actions button{flex:1}
@media(max-width:1200px){main{grid-template-columns:1fr}.right-column{gap:14px}.upload-box{grid-template-columns:1fr}.import-actions{flex-direction:column}table{min-width:680px}}

/* Autenticação v0.4.0 */
.hidden { display: none !important; }
.login-screen {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, #f7fbf7, #e8f4ea);
  padding: 24px;
}
.login-card {
  width: min(520px, 94vw);
  background: #fff;
  border: 1px solid #c9dfcf;
  border-radius: 18px;
  box-shadow: 0 16px 42px rgba(0, 72, 31, .16);
  padding: 32px;
}
.login-card img { max-width: 118px; display: block; margin: 0 auto 12px; }
.login-card h1 { color: #075f2a; font-size: 24px; line-height: 1.2; margin: 0 0 8px; text-align: center; }
.login-card p { text-align: center; margin-bottom: 24px; color: #56655b; }
.login-card label { display: block; font-weight: 700; margin: 12px 0; color: #12391f; }
.login-card input { width: 100%; padding: 13px; border: 1px solid #b7d0be; border-radius: 10px; margin-top: 6px; }
.login-card button { width: 100%; margin-top: 12px; padding: 13px; border-radius: 10px; border: 1px solid #08672e; background: #08672e; color: white; font-weight: 800; cursor: pointer; }
.login-card button.secondary { background: white; color: #08672e; }
.auth-msg { margin-top: 14px; min-height: 20px; color: #9c241e; font-weight: 700; }
.user-badge { display:block; margin-top: 4px; color:#075f2a; font-weight:700; }
.logout-btn { margin-top: 6px; padding: 6px 10px; border-radius: 8px; border: 1px solid #075f2a; background: white; color:#075f2a; cursor:pointer; }
