:root{--border:#d7dbe0;--muted:#667085;--accent:#1f5eff;--bg:#f7f8fa;--ok:#0a7a3d;--warn:#a15c00;--bad:#b42318}*{box-sizing:border-box}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;margin:0;background:var(--bg);color:#1a1f27;font-size:14px}a{color:var(--accent)}.app-header{background:#101828;color:#fff;padding:.6rem 1.25rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.app-header .brand{font-weight:700;font-size:1.05rem}.app-nav{display:flex;gap:.75rem;flex-wrap:wrap}.app-nav a{color:#cdd5e0;text-decoration:none;padding:.2rem .4rem;border-radius:4px}.app-nav a:hover{background:#24304a;color:#fff}.role-selector{margin-left:auto;display:flex;align-items:center;gap:.4rem;color:#cdd5e0}.banner{padding:.45rem 1.25rem;font-size:.85rem;border-bottom:1px solid var(--border)}.banner-mock{background:#fff8e1;color:#7a5900}.banner-safety{background:#eef4ff;color:#1b3a7a}.banner-live{background:#b42318;color:#fff;font-weight:500}.identity{margin-left:auto;display:flex;align-items:center;gap:.6rem;color:#cdd5e0}.login-page{max-width:380px;margin:3rem auto}.login-form{gap:.75rem;background:#fff;border:1px solid var(--border);border-radius:8px;padding:1.25rem}.login-form,.login-form label{display:flex;flex-direction:column}.login-form label{gap:.25rem;font-size:.9rem}.login-form input{padding:.45rem .6rem;border:1px solid var(--border);border-radius:6px}main{padding:1.25rem;max-width:1400px;margin:0 auto}h1{font-size:1.35rem;margin:.25rem 0 .75rem}h2{font-size:1.05rem;margin:1.25rem 0 .5rem}.muted{color:var(--muted)}.mono{font-family:ui-monospace,monospace;font-size:.85em}.error-text{color:var(--bad)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));grid-gap:.75rem;gap:.75rem;margin:.75rem 0}.card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:.75rem .9rem}.card .stat{font-size:1.5rem;font-weight:700}.table-wrap{overflow-x:auto;background:#fff;border:1px solid var(--border);border-radius:8px}table{border-collapse:collapse;width:100%}td,th{text-align:left;padding:.45rem .6rem;border-bottom:1px solid var(--border);white-space:nowrap}thead th{background:#f0f2f5;position:-webkit-sticky;position:sticky;top:0}.kv-table th{width:240px;color:var(--muted);font-weight:500}.filter-bar{display:flex;gap:.6rem;align-items:flex-end;flex-wrap:wrap;background:#fff;border:1px solid var(--border);border-radius:8px;padding:.6rem .75rem;margin:.6rem 0}.filter-bar label{display:flex;flex-direction:column;gap:.15rem;font-size:.8rem}input,select{padding:.3rem .45rem}.btn,input,select{border:1px solid var(--border);border-radius:6px;font-size:.85rem;background:#fff}.btn{display:inline-block;padding:.35rem .7rem;color:#1a1f27;text-decoration:none;cursor:pointer}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn:disabled{opacity:.6;cursor:not-allowed}.badge{display:inline-block;padding:.1rem .5rem;border-radius:10px;font-size:.75rem;font-weight:600}.badge-ok{background:#e6f4ec;color:var(--ok)}.badge-warn{background:#fff3e0;color:var(--warn)}.badge-bad{background:#fdecea;color:var(--bad)}.badge-pending{background:#eef0f3;color:var(--muted)}.bulk-bar,.pagination,.toolbar{display:flex;gap:.6rem;align-items:center;margin:.6rem 0;flex-wrap:wrap}.empty-state{background:#fff;border:1px dashed var(--border);border-radius:8px;padding:1.25rem;color:var(--muted);text-align:center}.json-block pre{background:#101828;color:#d7e3f4;padding:.6rem;border-radius:6px;overflow-x:auto;max-height:320px;font-size:.78rem}.json-block summary{cursor:pointer;color:var(--accent)}.proposal-form{display:flex;gap:.5rem;align-items:center;padding:.4rem 0;flex-wrap:wrap}.proposal-form>span{min-width:220px}.request-actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin:.75rem 0}.bulk-summary{padding:.6rem .9rem;margin-top:.6rem}.bulk-summary,.section{background:#fff;border:1px solid var(--border);border-radius:8px}.section{padding:.75rem 1rem;margin:.75rem 0}.readonly-note{background:#fdecea;border:1px solid #f5c6c0;color:var(--bad);border-radius:8px;padding:.6rem .9rem;margin:.6rem 0}.cols-picker{margin:.4rem 0}.cols-picker .cols-grid{display:flex;flex-wrap:wrap;gap:.5rem 1rem;padding:.5rem 0}.cols-picker label{display:inline-flex;gap:.3rem;align-items:center;font-size:.8rem}