:root{--ink:#1a1d23;--muted:#6b7280;--border:#e3e5e8;--bg:#f7f8fa;--accent:#2f6f4f;--red:#c0392b;--amber:#b7791f;--green:#2f6f4f}.shell.role-vendor{--accent:#1d4ed8}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg)}a{color:inherit}.shell{display:flex;min-height:100vh}.nav{width:220px;flex-shrink:0;background:#fff;border-right:1px solid var(--border);padding:16px 0}.nav-brand{font-weight:700;padding:0 16px 16px;border-bottom:1px solid var(--border);margin-bottom:8px}.nav-item{display:block;padding:10px 16px;text-decoration:none;color:var(--ink);font-size:14px}.nav-item.active{background:var(--bg);font-weight:600;border-left:3px solid var(--accent)}.nav-item.disabled{color:var(--muted);cursor:default}.nav-group-label{display:block;padding:10px 16px 2px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.nav-item.child{padding-left:32px;font-size:13px}.role-badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--accent);color:var(--accent);margin-left:10px}.main{flex:1 1;padding:32px 40px;max-width:980px}.placeholder-badge{display:inline-block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border:1px solid var(--border);border-radius:4px;padding:2px 6px;margin-left:8px}.card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px;margin-bottom:16px}table{border-collapse:collapse;width:100%}td,th{text-align:left;padding:8px;border-bottom:1px solid var(--border);font-size:14px}.rag-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}.rag-red{background:var(--red)}.rag-amber{background:var(--amber)}.rag-green{background:var(--green)}.btn,button{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:8px 16px;font-size:14px;cursor:pointer}input{padding:8px;border:1px solid var(--border);border-radius:6px;font-size:14px}.error-text{color:var(--red);font-size:13px}.muted{color:var(--muted);font-size:13px}