*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100vh;margin:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:system-ui,Segoe UI,Roboto,sans-serif}a{color:inherit}:root{--bg:#f4f6f8;--card:#fff;--ink:#1c2530;--muted:#6b7684;--line:#e2e7ec;--accent:#2f6f4f;--accent-weak:#e6f0ea;--due:#b23b3b;--ok:#2f6f4f;--warn:#b8860b;--radius:10px;--shadow:0 1px 3px #141e2814}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}.muted{color:var(--muted)}.error{color:var(--due);font-size:.9em}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}button{font:inherit;background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:9px 16px}button:disabled{opacity:.55;cursor:not-allowed}button.ghost{color:var(--muted);border:1px solid var(--line);background:0 0}.auth-wrap{place-items:center;min-height:100vh;padding:20px;display:grid}.auth-card{width:360px;max-width:100%}.brand{color:var(--accent);margin:0 0 2px;font-size:1.4rem}.auth-card form{flex-direction:column;gap:12px;margin-top:16px;display:flex}label{color:var(--muted);flex-direction:column;gap:4px;font-size:.85rem;display:flex}input{font:inherit;color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:9px 11px}input:focus{outline:2px solid var(--accent-weak);border-color:var(--accent)}.hint{text-align:center;font-size:.8rem}.badge{background:var(--accent-weak);color:var(--accent);border-radius:999px;padding:2px 10px;font-size:.78rem;font-weight:600;display:inline-block}.mfa-step{flex-direction:column;gap:12px;display:flex}.enroll p{margin:4px 0;font-size:.86rem}.secret{color:#d6e2ff;letter-spacing:2px;word-break:break-all;background:#0f172a;border-radius:8px;padding:10px;font-size:.9rem;display:block}.otpauth{color:var(--accent);font-size:.8rem}.qr{background:#fff;border-radius:12px;justify-content:center;padding:12px;display:flex}.qr svg{display:block}.qr-fallback{margin-bottom:0;font-size:.82rem}.app{max-width:1040px;margin:0 auto;padding:20px}.topbar{justify-content:space-between;align-items:center;padding:6px 4px 18px;display:flex}.topbar-right{align-items:center;gap:12px;display:flex}.grid{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.grid>.card:nth-child(2),.grid>.card:last-child{grid-column:1/-1}.section-head{justify-content:space-between;align-items:baseline;margin-bottom:12px;display:flex}.section-head h2{margin:0;font-size:1.05rem}.chip{color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:2px 9px;font-size:.72rem}.kv{grid-template-columns:130px 1fr;gap:6px 12px;margin:0;display:grid}.kv dt{color:var(--muted);font-size:.85rem}.kv dd{margin:0}.stat-row{gap:24px;margin-bottom:14px;display:flex}.stat{flex-direction:column;display:flex}.stat-label{color:var(--muted);font-size:.78rem}.stat-value{font-size:1.25rem;font-weight:600}.chart{width:100%;height:160px}.chart-axis{stroke:var(--line);stroke-width:1px}.chart-bar{fill:var(--accent)}.chart-bar:hover{fill:#245a40}.saldo{margin-bottom:12px}.due{color:var(--due);font-weight:600}.ok{color:var(--ok);font-weight:600}.table{border-collapse:collapse;width:100%;font-size:.88rem}.table th,.table td{text-align:left;border-bottom:1px solid var(--line);padding:8px 10px}.table th{color:var(--muted);font-weight:600}.status{border-radius:999px;padding:2px 9px;font-size:.78rem}.status-paid{color:var(--ok);background:#e6f0ea}.status-open{color:var(--muted);background:#eef1f4}.status-partially_paid{color:var(--warn);background:#fbf3df}.status-overdue{color:var(--due);background:#f7e3e3}.list{margin:0 0 10px;padding-left:18px}.placeholder{color:var(--muted);background:var(--bg);border:1px dashed var(--line);border-radius:8px;padding:10px;font-size:.84rem}.dunning-case{border-bottom:1px solid var(--line);padding:6px 0;font-size:.88rem}.account-bar{margin-bottom:16px}.box-switch{flex-wrap:wrap;gap:10px;margin-top:4px;display:flex}.box-tab{background:var(--bg);color:var(--ink);border:1px solid var(--line);cursor:pointer;border-radius:10px;flex-direction:column;align-items:flex-start;gap:2px;min-width:190px;padding:10px 14px;display:flex}.box-tab:hover{border-color:var(--accent)}.box-tab.active{background:var(--accent-weak);border-color:var(--accent)}.box-tab-name{font-weight:600}.box-tab-sub{color:var(--muted);font-size:.78rem}@media (width<=720px){.grid{grid-template-columns:1fr}.grid>.card{grid-column:1/-1}}.app>.card{margin-bottom:16px}.admin-error{background:#f7e3e3;border:1px solid #e6c4c4;border-radius:8px;padding:10px 12px}.reveal{border-color:var(--warn)}.reveal .secret{margin-top:8px}.admin-form{grid-template-columns:repeat(2,1fr);align-items:end;gap:12px 18px;display:grid}.admin-form button[type=submit]{grid-column:1/-1;justify-self:start}button.ghost.danger{color:var(--due);border-color:#e6c4c4}button.ghost.danger:hover{background:#f7e3e3}.row-inactive td{opacity:.6}.row-actions{flex-wrap:wrap;gap:6px;display:flex}.row-actions button{padding:5px 10px;font-size:.8rem}.box-list{font-variant-numeric:tabular-nums}.edit-boxes{align-items:center;gap:6px;display:flex}.edit-boxes input{min-width:160px;padding:5px 8px}.edit-boxes button{padding:5px 10px;font-size:.8rem}@media (width<=720px){.admin-form{grid-template-columns:1fr}}
