:root{--primary:#0f4c81;--primary-2:#0b6fb8;--accent:#17a2b8;--bg:#f4f7fb;--surface:#fff;--text:#1f2937;--muted:#6b7280;--border:#e5e7eb;--sidebar:#0b2740;--danger:#c0392b;--success:#198754;--shadow:0 8px 28px rgba(15,76,129,.08)}
[data-theme="dark"]{--bg:#0f172a;--surface:#172033;--text:#e5e7eb;--muted:#aab3c4;--border:#2d3748;--sidebar:#091525;--shadow:0 8px 28px rgba(0,0,0,.28)}
*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}.app-shell{min-height:100vh;display:flex}.sidebar{width:270px;background:var(--sidebar);color:#dbeafe;position:fixed;left:0;top:0;bottom:0;overflow-y:auto;z-index:30;transition:.25s}.brand{height:72px;display:flex;align-items:center;gap:12px;padding:0 20px;border-bottom:1px solid rgba(255,255,255,.1)}.brand-logo{width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,#fff,#9bd5ff);color:#0f4c81;display:grid;place-items:center;font-weight:800}.brand small{display:block;color:#9fb8cc}.nav-section{padding:16px 14px 8px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#7694aa}.nav-link{display:flex;align-items:center;gap:12px;padding:11px 16px;margin:4px 10px;border-radius:10px;color:#dbeafe}.nav-link:hover,.nav-link.active{background:rgba(255,255,255,.12);color:#fff}.nav-icon{width:24px;text-align:center}.main{margin-left:270px;width:calc(100% - 270px);min-height:100vh}.topbar{height:72px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:20}.top-actions{display:flex;align-items:center;gap:10px}.icon-btn{border:1px solid var(--border);background:var(--surface);color:var(--text);width:40px;height:40px;border-radius:10px;cursor:pointer}.menu-btn{display:none}.content{padding:24px;max-width:1600px;margin:auto}.page-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.page-head h1{margin:0;font-size:25px}.page-head p{margin:5px 0 0;color:var(--muted)}.grid{display:grid;gap:18px}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);padding:20px}.metric{display:flex;align-items:center;justify-content:space-between}.metric-label{color:var(--muted);font-size:13px}.metric-value{font-size:27px;font-weight:800;margin-top:5px}.metric-icon{width:48px;height:48px;border-radius:14px;background:rgba(15,76,129,.12);color:var(--primary-2);display:grid;place-items:center;font-size:22px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:10px;padding:10px 15px;font-weight:700;cursor:pointer}.btn-primary{background:var(--primary);color:#fff}.btn-secondary{background:var(--surface);border:1px solid var(--border);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:12px 10px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}.table th{font-size:12px;text-transform:uppercase;color:var(--muted)}.badge{display:inline-flex;padding:5px 9px;border-radius:999px;background:rgba(15,76,129,.12);font-size:12px;font-weight:700}.badge-success{background:rgba(25,135,84,.14);color:var(--success)}.badge-danger{background:rgba(192,57,43,.14);color:var(--danger)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-group{display:flex;flex-direction:column;gap:7px}.form-group.full{grid-column:1/-1}.form-group label{font-size:13px;font-weight:700}.form-control{width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);outline:none}.form-control:focus{border-color:var(--primary-2);box-shadow:0 0 0 3px rgba(11,111,184,.12)}.switch-line{display:flex;align-items:center;gap:8px;padding:10px 0;color:var(--text)}textarea.form-control{min-height:110px;resize:vertical}.alert{padding:13px 16px;border-radius:10px;margin-bottom:16px}.alert-success{background:rgba(25,135,84,.12);color:var(--success)}.alert-error{background:rgba(192,57,43,.12);color:var(--danger)}.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr}.login-hero{padding:70px;background:linear-gradient(135deg,#08263f,#0f4c81 55%,#1794d2);color:#fff;display:flex;flex-direction:column;justify-content:center}.login-hero h1{font-size:48px;max-width:650px;margin:20px 0}.login-hero p{font-size:18px;line-height:1.7;max-width:650px;color:#d6ecff}.login-panel{display:flex;align-items:center;justify-content:center;padding:30px;background:var(--bg)}.login-box{width:100%;max-width:420px}.login-box h2{font-size:30px;margin-bottom:8px}.muted{color:var(--muted)}.user-chip{display:flex;align-items:center;gap:10px}.avatar{width:38px;height:38px;border-radius:50%;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:800}.mobile-overlay{display:none}.empty{padding:30px;text-align:center;color:var(--muted)}.quick-modules{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.quick-module{padding:18px;border:1px solid var(--border);border-radius:14px;background:var(--surface);transition:.2s}.quick-module:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
@media(max-width:1100px){.grid-4,.quick-modules{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}.main{margin-left:0;width:100%}.menu-btn{display:block}.mobile-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:25}.mobile-overlay.show{display:block}.content{padding:16px}.topbar{padding:0 14px}.form-grid,.grid-2,.grid-3,.grid-4,.quick-modules{grid-template-columns:1fr}.login-page{grid-template-columns:1fr}.login-hero{display:none}.page-head{align-items:flex-start;flex-direction:column}.user-chip .user-meta{display:none}}
.badge-warning{background:rgba(245,158,11,.16);color:#b45309}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.mini-form{border:1px dashed var(--border);border-radius:14px;padding:14px;margin:12px 0 16px}.timeline{display:grid;gap:12px}.timeline-item{border-left:3px solid var(--primary-2);padding-left:12px}.timeline-item p{margin:4px 0 0}.card h2{margin-top:0;font-size:18px}

.progress-line{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--border)}.progress-line:last-child{border-bottom:0}.badge-warning{background:rgba(245,158,11,.16);color:#b45309}.qr-box{width:112px;height:112px;border:1px dashed var(--border);border-radius:12px;display:grid;place-items:center;font-weight:800;color:var(--muted)}

.budget-saldo{font-weight:800}.mini-badge{font-size:11px;border-radius:8px;padding:3px 7px;background:rgba(15,76,129,.10)}.table form .form-control{min-width:90px}.metric-icon{font-size:14px;font-weight:800}.grid.compact{gap:12px}

.pwa-install-hint{border:1px dashed var(--border);border-radius:14px;padding:14px;background:rgba(15,76,129,.06)}

.bi-trend-up{color:#059669;font-weight:800}.bi-trend-down{color:#dc2626;font-weight:800}.bi-trend-flat{color:#64748b;font-weight:800}

.license-status-lock{border:1px solid rgba(220,38,38,.25);background:rgba(220,38,38,.08);border-radius:14px;padding:12px}.license-status-ok{border:1px solid rgba(5,150,105,.25);background:rgba(5,150,105,.08);border-radius:14px;padding:12px}

.chat-layout{display:grid;grid-template-columns:300px 1fr;gap:14px;min-height:620px}
.chat-list{display:flex;flex-direction:column;gap:10px;max-height:720px;overflow:auto;padding-right:4px}
.chat-item{display:block;text-decoration:none;color:var(--text);border:1px solid var(--border);background:var(--card);border-radius:16px;padding:12px}
.chat-item.active{border-color:#0f4c81;box-shadow:0 0 0 3px rgba(15,76,129,.12)}
.chat-item strong{display:block;margin-bottom:4px}.chat-item span,.chat-item small{display:block;color:var(--muted);font-size:12px;line-height:1.35}
.chat-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.chat-badges em{font-style:normal}
.chat-panel{min-width:0}.chat-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border-bottom:1px solid var(--border);padding-bottom:12px;margin-bottom:12px}
.chat-head h2{margin:0}.chat-head p{margin:4px 0 0;color:var(--muted);font-size:13px}
.chat-participants{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.chat-participants span{border:1px solid var(--border);border-radius:999px;padding:7px 10px;background:rgba(15,76,129,.06);font-size:12px}.chat-participants small{color:var(--muted)}
.chat-messages{border:1px solid var(--border);border-radius:18px;padding:14px;max-height:430px;overflow:auto;background:rgba(148,163,184,.08);display:flex;flex-direction:column;gap:12px}
.chat-message{max-width:78%;background:var(--card);border:1px solid var(--border);border-radius:16px;padding:12px;align-self:flex-start}
.chat-message.mine{align-self:flex-end;background:rgba(15,76,129,.12);border-color:rgba(15,76,129,.25)}
.chat-message-meta{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--muted);margin-bottom:6px}.chat-message-body{white-space:normal;line-height:1.5}
.chat-attachment{margin-top:8px;padding:8px;border-radius:10px;background:rgba(14,116,144,.10);font-size:12px}
.chat-send{display:grid;gap:10px;margin-top:12px}.card.soft{box-shadow:none;background:rgba(148,163,184,.06)}
@media(max-width:980px){.chat-layout{grid-template-columns:1fr}.chat-list{max-height:360px}.chat-message{max-width:95%}}
