*{box-sizing:border-box;margin:0;padding:0;}
:root{
  --bg:#f0f2f7;--s1:#ffffff;--s2:#f5f7fb;--s3:#eaecf3;
  --border:#dde1ef;--accent:#2d7dd2;--accent2:#7c4dbe;
  --green:#1a9e6e;--red:#d63f3f;--yellow:#c47f00;
  --text:#1a1f36;--muted:#6b7599;
  --font-d:'Playfair Display',serif;--font-b:'Outfit',sans-serif;
}
body{background:var(--bg);color:var(--text);font-family:var(--font-b);}
#login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;background:radial-gradient(ellipse at 50% 0%,rgba(45,125,210,.08) 0%,transparent 70%);}
.login-box{background:var(--s1);border:1px solid var(--border);border-radius:16px;padding:36px;width:380px;max-width:95vw;box-shadow:0 4px 24px rgba(0,0,0,.08);}
.login-logo{font-family:var(--font-d);font-size:28px;background:linear-gradient(135deg,#2d7dd2,#7c4dbe);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:4px;}
.login-sub{font-size:13px;color:var(--muted);margin-bottom:28px;}
#app{display:flex;min-height:100vh;}
.sidebar{width:230px;background:var(--s1);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;height:100vh;top:0;left:0;z-index:100;box-shadow:2px 0 8px rgba(0,0,0,.04);}
.logo{padding:26px 22px 20px;border-bottom:1px solid var(--border);}
.logo-name{font-family:var(--font-d);font-size:21px;background:linear-gradient(135deg,#2d7dd2,#7c4dbe);-webkit-background-clip:text;-webkit-text-fill-color:transparent;}
.logo-tag{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-top:3px;}
.nav{padding:16px 10px;flex:1;overflow-y:auto;}
.nav-group-label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;padding:8px 10px 5px;}
.nav-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:9px;font-size:13.5px;color:var(--muted);cursor:pointer;transition:all .15s;margin-bottom:2px;border:none;background:none;width:100%;text-align:left;font-family:var(--font-b);}
.nav-item svg{flex-shrink:0;opacity:.7;}
.nav-item:hover{background:var(--s2);color:var(--text);}
.nav-item.active{background:rgba(45,125,210,.08);color:var(--accent);font-weight:500;}
.nav-item.active svg{opacity:1;stroke:var(--accent);}
.sidebar-user{padding:14px 16px;border-top:1px solid var(--border);display:flex;align-items:center;gap:10px;}
.user-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;color:#fff;flex-shrink:0;}
.user-info{flex:1;min-width:0;}
.user-name{font-size:13px;font-weight:500;color:var(--text);}
.user-role{font-size:11px;color:var(--muted);}
.main{margin-left:230px;flex:1;display:flex;flex-direction:column;min-height:100vh;}
.topbar{height:56px;background:var(--s1);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:50;box-shadow:0 2px 8px rgba(0,0,0,.04);}
.topbar-title{font-family:var(--font-d);font-size:19px;}
.topbar-right{display:flex;align-items:center;gap:12px;}
.content{padding:26px 28px;flex:1;}
.btn{padding:7px 16px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;border:none;font-family:var(--font-b);transition:all .15s;}
.btn-primary{background:var(--accent);color:#fff;}
.btn-primary:hover{background:#2268b8;}
.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border);}
.btn-ghost:hover{color:var(--text);border-color:#b0b8d4;background:var(--s2);}
.btn-danger{background:rgba(214,63,63,.08);color:var(--red);border:1px solid rgba(214,63,63,.2);}
.btn-success{background:rgba(26,158,110,.08);color:var(--green);border:1px solid rgba(26,158,110,.2);}
.btn-success:hover{background:rgba(26,158,110,.15);}
.btn-sm{padding:5px 12px;font-size:12px;}
.btn-warning{background:rgba(196,127,0,.08);color:var(--yellow);border:1px solid rgba(196,127,0,.2);}
.stats{display:grid;gap:16px;margin-bottom:24px;}
.stats-4{grid-template-columns:repeat(4,1fr);}
.stats-3{grid-template-columns:repeat(3,1fr);}
.stats-2{grid-template-columns:repeat(2,1fr);}
.stat{background:var(--s1);border:1px solid var(--border);border-radius:13px;padding:20px;position:relative;overflow:hidden;transition:transform .2s;box-shadow:0 2px 8px rgba(0,0,0,.04);}
.stat:hover{transform:translateY(-2px);}
.stat-stripe{position:absolute;top:0;left:0;right:0;height:3px;}
.stat-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px;}
.stat-val{font-family:var(--font-d);font-size:27px;line-height:1;color:var(--text);}
.stat-val-md{font-size:20px!important;}
.stat-sub{margin-top:8px;}
.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:500;}
.chip::before{content:'';width:5px;height:5px;border-radius:50%;}
.chip-green{background:rgba(26,158,110,.1);color:var(--green);}
.chip-green::before{background:var(--green);}
.chip-red{background:rgba(214,63,63,.1);color:var(--red);}
.chip-red::before{background:var(--red);}
.chip-blue{background:rgba(45,125,210,.1);color:var(--accent);}
.chip-blue::before{background:var(--accent);}
.chip-yellow{background:rgba(196,127,0,.1);color:var(--yellow);}
.chip-yellow::before{background:var(--yellow);}
.chip-purple{background:rgba(124,77,190,.1);color:var(--accent2);}
.chip-purple::before{background:var(--accent2);}
.grid2{display:grid;grid-template-columns:1.8fr 1fr;gap:20px;margin-bottom:22px;}
.panel{background:var(--s1);border:1px solid var(--border);border-radius:13px;overflow:hidden;margin-bottom:20px;box-shadow:0 2px 8px rgba(0,0,0,.04);}
.panel-head{display:flex;align-items:center;justify-content:space-between;padding:15px 20px;border-bottom:1px solid var(--border);background:var(--s2);}
.panel-title{font-size:14px;font-weight:600;color:var(--text);}
.table-wrap{overflow-x:auto;}
table{width:100%;border-collapse:collapse;}
thead th{text-align:left;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;padding:11px 20px;background:var(--s2);border-bottom:1px solid var(--border);white-space:nowrap;}
tbody td{padding:12px 20px;font-size:13px;border-bottom:1px solid var(--border);color:var(--text);}
tbody tr:last-child td{border-bottom:none;}
tbody tr:hover td{background:var(--s2);}
.prog{height:5px;background:var(--s3);border-radius:3px;overflow:hidden;margin-top:5px;}
.prog-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--accent),var(--accent2));}
.chart{display:flex;align-items:flex-end;gap:8px;height:100px;padding:12px 20px 16px;}
.bar-w{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end;}
.bar{width:100%;border-radius:4px 4px 0 0;cursor:pointer;transition:opacity .15s;}
.bar:hover{opacity:.75;}
.bar-lbl{font-size:10px;color:var(--muted);}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;}
.form-row-1{grid-template-columns:1fr;}
.form-row-3{grid-template-columns:1fr 1fr 1fr;}
.field label{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:6px;}
.field input,.field select,.field textarea{width:100%;background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:9px 13px;font-size:13px;color:var(--text);font-family:var(--font-b);outline:none;transition:border .15s;}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);background:#fff;}
.field select option{background:#fff;}
.field textarea{resize:vertical;min-height:80px;}
.field input[type=file]{padding:6px;}
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);backdrop-filter:blur(3px);z-index:200;align-items:center;justify-content:center;}
.modal-overlay.open{display:flex;}
.modal{background:var(--s1);border:1px solid var(--border);border-radius:16px;padding:28px;width:600px;max-width:96vw;max-height:90vh;overflow-y:auto;box-shadow:0 8px 40px rgba(0,0,0,.15);}
.modal-title{font-family:var(--font-d);font-size:20px;margin-bottom:22px;color:var(--text);}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;}
.toast{position:fixed;bottom:24px;right:24px;background:var(--s1);border:1px solid var(--green);border-radius:10px;padding:12px 20px;font-size:13px;color:var(--green);z-index:300;transform:translateY(80px);opacity:0;transition:all .3s;pointer-events:none;box-shadow:0 4px 16px rgba(0,0,0,.1);}
.toast.show{transform:translateY(0);opacity:1;}
.toast.error{border-color:var(--red);color:var(--red);}
.aviso-item{display:flex;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid var(--border);}
.aviso-item:last-child{border-bottom:none;}
.aviso-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.aviso-txt{flex:1;font-size:13px;}
.aviso-date{font-size:11px;color:var(--muted);}
.tabs{display:flex;gap:3px;background:var(--s1);border:1px solid var(--border);border-radius:10px;padding:4px;margin-bottom:18px;width:fit-content;}
.tab{padding:7px 18px;border-radius:7px;font-size:13px;font-weight:500;cursor:pointer;color:var(--muted);transition:all .15s;border:none;background:none;font-family:var(--font-b);}
.tab.on{background:var(--s2);color:var(--text);}
.loading{text-align:center;padding:60px 20px;color:var(--muted);font-size:14px;}
.empty{text-align:center;padding:48px 20px;color:var(--muted);font-size:13px;}
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;}
.agua-foto{width:80px;height:60px;object-fit:cover;border-radius:6px;border:1px solid var(--border);cursor:pointer;}
.agua-foto-placeholder{width:80px;height:60px;background:var(--s3);border-radius:6px;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--muted);}
@keyframes fadeUp{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}
.fade-in{animation:fadeUp .3s both;}
.balancete-section{margin-bottom:20px;}
.balancete-row{display:flex;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--border);font-size:13px;}
.balancete-row:last-child{border-bottom:none;}
.balancete-row.total{background:var(--s2);font-weight:600;}
.balancete-row.saldo-positivo{background:rgba(26,158,110,.05);color:var(--green);font-weight:700;}
.balancete-row.saldo-negativo{background:rgba(214,63,63,.05);color:var(--red);font-weight:700;}
