:root{--brand: #16A34A;--brand-dark: #15803d;--ink: #0B0E11;--bg: #f6f7f9;--card: #ffffff;--border: #e5e7eb;--text: #111827;--muted: #6b7280;--danger: #dc2626;--blue: #1DA1F2;--radius: 10px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}a{color:inherit;text-decoration:none}.center{display:flex;align-items:center;justify-content:center;min-height:100vh}.muted{color:var(--muted)}.row{display:flex;gap:12px;align-items:center}.spread{display:flex;align-items:center;justify-content:space-between;gap:12px}.wrap{flex-wrap:wrap}.shell{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--ink);color:#fff;display:flex;flex-direction:column;padding:16px 0;flex-shrink:0}.brand{font-weight:800;font-size:16px;padding:8px 20px 16px;color:#fff}.brand span{color:var(--brand)}.nav a{display:block;padding:10px 20px;color:#ffffffc7;font-weight:600;border-left:3px solid transparent}.nav a:hover{background:#ffffff0d;color:#fff}.nav a.active{color:#fff;border-left-color:var(--brand);background:#16a34a26}.sidebar-foot{margin-top:auto;padding:16px 20px;border-top:1px solid rgba(255,255,255,.1)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{background:var(--card);border-bottom:1px solid var(--border);padding:14px 24px;display:flex;align-items:center;justify-content:space-between}.topbar h1{font-size:18px;margin:0}.content{padding:24px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.stat .label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em}.stat .value{font-size:24px;font-weight:800;margin-top:6px}.stat .sub{color:var(--muted);font-size:12px;margin-top:4px}.tablewrap{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border);white-space:nowrap}th{font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:#fafafa}tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:700}.badge.ok{background:#dcfce7;color:var(--brand-dark)}.badge.warn{background:#fef9c3;color:#854d0e}.badge.bad{background:#fee2e2;color:var(--danger)}.badge.info{background:#e0f2fe;color:#075985}.badge.muted{background:#f3f4f6;color:var(--muted)}.tick{color:var(--blue);font-weight:700}.btn{display:inline-flex;align-items:center;gap:6px;cursor:pointer;border:1px solid var(--border);background:#fff;color:var(--text);padding:8px 14px;border-radius:8px;font-weight:700;font-size:13px}.btn:hover{background:#f9fafb}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-dark)}.btn.danger{background:#fff;border-color:var(--danger);color:var(--danger)}.btn.danger:hover{background:#fee2e2}.btn:disabled{opacity:.55;cursor:default}.btn.sm{padding:5px 10px;font-size:12px}input,select,textarea{font:inherit;padding:9px 11px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);width:100%}label{display:block;font-weight:600;margin-bottom:6px;font-size:13px}.field{margin-bottom:14px}.pager{display:flex;gap:8px;align-items:center;margin-top:14px}.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}.toolbar select,.toolbar input{width:auto}.toast{position:fixed;bottom:20px;right:20px;background:var(--ink);color:#fff;padding:12px 16px;border-radius:8px;box-shadow:0 6px 24px #00000040;z-index:50}.toast.bad{background:var(--danger)}.error{color:var(--danger);font-size:13px}.empty{padding:40px;text-align:center;color:var(--muted)}.login{max-width:380px;width:100%}.login .card{padding:28px}.login h1{margin:0 0 4px;font-size:20px}.toggles label.inline{display:flex;align-items:center;gap:10px;font-weight:600;padding:8px 0}.toggles input{width:auto}
