:root{--g:#14532d;--g2:#166534;--g3:#dcfce7;--bg:#f5f7f6;--border:#e3e8e5;--red:#b91c1c;--amber:#b45309}
*{box-sizing:border-box}
body{font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:#1f2937;font-size:15px;min-height:100vh;padding-bottom:calc(64px + env(safe-area-inset-bottom))}
body.auth{padding-bottom:0}
a{color:var(--g2)}
.topbar{position:sticky;top:0;z-index:1020;background:var(--g);color:#fff;display:flex;align-items:center;gap:8px;padding:8px 12px;min-height:54px}
.topbar .brand{color:#fff;text-decoration:none;font-weight:700;display:flex;align-items:center;gap:8px;white-space:nowrap}
.topbar .mark{background:#fff;color:var(--g);font-weight:800;border-radius:7px;padding:2px 7px;font-size:.85rem;letter-spacing:.02em}
.topbar .page-title{font-size:1.05rem;font-weight:600;margin:0 0 0 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;min-width:0}
.topbar .avatar{width:34px;height:34px;border-radius:50%;background:#fff;color:var(--g);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem;text-decoration:none}
.topbar .form-control,.topbar .form-select{min-width:120px}
.sidenav{background:var(--g);color:#e5e7eb;width:280px}
.sidenav .sec{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:#86efac;padding:12px 12px 4px}
.sidenav .nav-link{display:flex;align-items:center;gap:10px;color:#e5e7eb;padding:10px 12px;border-radius:8px;font-size:.95rem}
.sidenav .nav-link i{width:20px;text-align:center;opacity:.85}
.sidenav .nav-link:hover{background:rgba(255,255,255,.08);color:#fff}
.sidenav .nav-link.active{background:rgba(255,255,255,.15);color:#fff;font-weight:600}
.content{padding:14px 12px 24px;max-width:1200px;margin:0 auto}
@media (min-width:992px){.content{padding:22px 24px 40px}}
.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:1020;background:#fff;border-top:1px solid var(--border);display:flex;justify-content:space-around;padding:6px 0 calc(6px + env(safe-area-inset-bottom))}
.tabbar a{display:flex;flex-direction:column;align-items:center;gap:2px;color:#6b7280;text-decoration:none;font-size:.68rem;min-width:56px;padding:2px 4px}
.tabbar a i{font-size:1.35rem;line-height:1}
.tabbar a.active{color:var(--g)}
.tabbar a.primary{color:var(--g)}.tabbar a.primary i{font-size:1.7rem;margin-top:-6px}
.card{border:1px solid var(--border);border-radius:12px;box-shadow:0 1px 2px rgba(16,24,40,.04)}
.card-header{background:#fff;border-bottom:1px solid var(--border);font-weight:600;color:var(--g);padding:.6rem .9rem;border-radius:12px 12px 0 0!important}
.kpi{border-left:4px solid var(--g);display:block;color:inherit}
.kpi .v{font-size:1.35rem;font-weight:700;color:#111827;line-height:1.15;word-break:break-word}
.kpi .l{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:#6b7280}
.kpi .h{font-size:.72rem;color:#9ca3af}
.kpi.red{border-left-color:var(--red)}.kpi.green{border-left-color:#16a34a}.kpi.amber{border-left-color:#f59e0b}
a.kpi:hover{background:#fafcfb}
.btn-primary{--bs-btn-bg:var(--g);--bs-btn-border-color:var(--g);--bs-btn-hover-bg:var(--g2);--bs-btn-hover-border-color:var(--g2);--bs-btn-active-bg:var(--g2)}
.btn-outline-primary{--bs-btn-color:var(--g);--bs-btn-border-color:var(--g);--bs-btn-hover-bg:var(--g);--bs-btn-hover-border-color:var(--g);--bs-btn-active-bg:var(--g)}
.btn,.form-control,.form-select{min-height:40px}
.btn-sm,.form-control-sm,.form-select-sm{min-height:34px}
.form-control-lg{font-size:1.15rem}
.table{font-size:.88rem}.table thead th{background:#f8faf9;color:#475569;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
.table td{vertical-align:middle}
.amt{font-variant-numeric:tabular-nums;white-space:nowrap}.amt.neg{color:var(--red)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}
.dl-row{display:flex;gap:12px;padding:6px 0;border-bottom:1px dashed var(--border);font-size:.9rem}.dl-row:last-child{border-bottom:0}.dl-row .k{width:120px;color:#6b7280;flex-shrink:0}.dl-row .v{font-weight:500;word-break:break-word}
.list-group-item{padding:.7rem .9rem}
.comment{padding:6px 0;border-bottom:1px dashed var(--border)}.comment:last-of-type{border-bottom:0}
.wa{background:#e7fbe9;border:1px solid #bbf7d0;border-radius:10px;padding:10px 12px;font-size:.92rem;white-space:pre-wrap}
.secret{font-family:ui-monospace,Menlo,monospace;background:#f1f5f9;border:1px dashed #cbd5e1;padding:8px 10px;border-radius:6px;word-break:break-all;font-size:.85rem}
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--g) 0%,#1d6b3a 100%);padding:20px}
.auth-card{background:#fff;border-radius:16px;width:100%;max-width:420px;padding:30px 28px;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.auth-card .brand{display:flex;align-items:center;gap:12px}.auth-card .brand .mark{background:var(--g);color:#fff;font-weight:800;border-radius:10px;padding:8px 10px;font-size:1rem}
.auth-card h1{font-size:1.25rem;font-weight:700;color:var(--g);margin:0}.auth-card .sub{color:#6b7280;font-size:.85rem}
@media print{.topbar,.tabbar,.no-print,form{display:none!important}body{padding:0;background:#fff}}

.light{display:inline-block;width:12px;height:12px;border-radius:50%;background:#9ca3af;vertical-align:middle;margin-right:4px}.light.red{background:#dc2626}.light.amber{background:#f59e0b}.light.green{background:#16a34a}.light.blue{background:#2563eb}.light.grey{background:#9ca3af}
